测试项目实战--安享理财2(Jmeter接口测试)

说明:

1.访问地址:

本项目实战使用的是传智播客的安享理财项目(找了半天这个项目能免费用且能够满足测试实战需求)

前台:http://121.43.169.97:8081/

后台:http://121.43.169.97:8082/

(点赞+收藏+关注====》》获取后台账号密码)

2.只写了部分核心模块,接口API文档资源已上传,接口测试部分可以先看接口文档

3.上一篇关于测试用部分请点击查看----》》http://t.csdnimg.cn/ELvQw

4.本篇主要JMeter实现接口自动化测试,下一篇将分享测试数据的清理和JMeter测试报告的生成

如有不足之处欢迎小伙伴们在评论区指出来哦,我们一起讨论,一起进步

最最最重要的是记得点赞+收藏+关注哦~~~

一、理论回顾

1.手工执行接口测试:

  • 目的:尽早的发现问题
  • 时机:在后端代码转测试、前端代码未转测时,先进行手工接口测试执行

2.自动化执行接口测试:

  • 目的:保障项目在迭代过程中的质量,不引入新问题
  • 时间:在系统测试结束后,根据时间来编写自动化接口测试

3.金融项目测试特点

  • 业务复杂
  • 涉及第三方接口,需要用到Mock技术模拟第三方接口的返回结果

4.接口设计的要点

单接口测试用例设计

多接口测试用例设计

5.Mock技术简介

【代码资源已上传】

作用:用于在测试时无第三方测试服务器,通过代码的方式自己模拟第三方的测试服务器

实现:

  • 编写代码,按照第三方接口请求url来接收请求的所有参数;
  • 按照第三方系统接口API文档的描述,来编写对应的响应数据,并按照第三方系统接口文档的要求返回给对应的地址;
  • 如果涉及到数据存储,需要自己创建一个测试数据库,来模拟第三方系统进行数据的存储。

举个栗子:

模拟⼀个:登录接⼝

需求 : ⽤户名为 admin 密码为: 123456 , 请求参数 格式为:form
1 登录成功反馈:状态码 :200 {"status":200,"msg":" 登录成
功! ","token":"XXX1213123123"}
2 、登录失败反馈:状态码 :200 {"status" 100 “msg”:" ⽤户名或密码错误! "}

from flask import Flask , request
app = Flask ( __name__ )
# 定义接⼝ 模拟返回结果
@app . route ( "/login" , methods =[ "post" ])
def login ():
# 提取数据
userrname = request . form . get ( "username" )
pwd = request . form . get ( "password" )
# 判断
if userrname == "admin" and pwd == "123456" :
return { "status" : 200 , "msg" : " 登录成功! " , "token" : "xxxx123123123" }
else :
return { "status" : 100 , "msg" : " ⽤户名或密码错误! " }
# 运⾏
app . run ()

6.JMeter接口测试常用的测试原件

  • 取样器-HTTP请求:发http请求
  • 配置元件-HTTP请求默认值:设置HTTP请求url中的字段(协议、域名、端口)的默认值
  • 配置元件-用户定义的变量:定义的全局变量,方便脚本中数据的修改
  • 配置元件-HTTP Cookie管理器:Jmeter自动对HTTP消息中cookie进行管理(提取-赋值)
  • 后置处理器-JSON提取器:针对响应格式为JSON的数据,提取出指定字段的值
  • 后置处理器-正则表达式提取器:针对任何响应格式的数据,按照正则表达式规则提取对应的值
  • 断言-响应断言:检查响应结果是否正确,可以适用于任何格式
  • 断言-JSON断言:钳对ison格式的数据,检查响应结果是否正确
  • 监听器-察看结果树:脚本调试时,查看测试结果

二、测试数据构造

1.手动操作系统进行测试

要求对应功能已经实现

优点:操作简单

缺点:效率比较低

建议:适合在不需要频繁构造的数据的场景使用

2.调用其它接口构造

优点:速度快, 相对于数据库构造要简单,可以通过自动化方式来循环构造
缺点:接⼝耦合度高(接⼝之间依赖性强,⼀个失败,后⾯全失败),依赖数据准备接口的正确性
建议:适合依赖3个以内接⼝就⾏构造
 

3.通过数据库构造

优点:灵活度⼤,执⾏速度最快。
缺点:对数据库的表结构熟悉程度要求比较高(某一个接口的数据准备可能涉及到多张表操作)
数据库表结构发生变化了,可能会导致之前的用例执行失败
建议:适合表结构相对简单的业务数据
三种方式各有优劣,在工作中根据实际情况来选择:
从难度上讲:手工构造<接口构造<数据库构造
从灵活度上讲:手工构造<接口构造<数据库构造

三、接口测试用例

四、手工执行接口测试

手工执行的过程

  • "HTTP请求默认值 -- 设置URL里的IP+port等,方便后续修改"HTTP消息头管理器 -- 对所有的请求消息头进行统一设置
  • IHTTP Cookie管理器 -- 同一个业务操作中多个接口请求可以通过,cookie管理来自动管理令牌
  • 线程组 -- 一个线程组可以对应一个用例;(多个用例组合成一个完整的业务过程,可以将多个用例放在同一个线程组)
  • ”当前HTTP请求中有多消息体时,需要在HTTP请求取样器勾选“multi-part"设置
  • ”在开户等第三方业务时,需要提取返回中“HTML代码”里部分字段,通过正则表达式提取器进行数据提取,并赋值后后续请求

1.创建HTTP信息头管理器,HTTP Cookie管理器,HTTP缓存管理器,HTTP请求默认值,查看结果树

2.创建线程组,创建http请求

2.创建请求

执行之后可以在结果树中查看执行结果

3.手工测试计划示例

4.特殊情况说明

【这个项目是有bug的,在执行的过程中不会全部符合预期】

(1).注意注册输入的手机号需要是没注册过的

(2)注意定时器的作用域

(3)认证请求的请求头

(4)开户请求

使用正则表达式提取器

【这块大家可以试一下,结果可能和我的不一样】】

五、自动化

获取图片验证码

1、参数化

【注意:Random只能生成随机整数】

2、添加响应断言

默认状态码不是200就执行失败,可以勾选【忽略状态】避免执行失败

3.执行,查看结果

获取短信验证码

1.参数化

在用户自定义变量值定义好手机号和验证码

2.断言

预期结果:

1、响应状态码:200
2、响应数据:{"status":200,"description":"短信发送成功"}

响应状态码-----响应断言

返回数据-----JSON断言

3.执行,查看结果

获取短信验证码失败

图片验证码为空,图片验证码错误,未调用图片验证码,手机号为空

同样的操作方式添加参数化和断言就行

断言信息

status: 100

description :图片验证码错误

失败/错误的测试数据由于只用一次,可以提前定义变量也可以不用参数化

注册成功

按照上面的方法执行参数化,断言,执行

注意手机号需要未注册的,前面短信验证码的手机号也要和后面一样

【其他功能模块的接口测试按照上面的方法进行参数化和断言就可以了】

注意:

  • 对于第三方接口的断言:是在mock代码中return的字符串
  • 在写断言的时候,要根据API文档或者测试用例来写,如果确定代码,参数都没有问题,断言出错导致测试请求失败,那就是一个bug

业务流程的接口的自动化:

只需要在单接口自动化调试时将脚本调通(完成参数化和断言)

然后根据业务的执行流程将涉及到的单接口组合到一起

注意:组合的顺序,前后的数据要搭配好就行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/697234.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue3 - 150

目录 vue优势使用方式编写vue代码指令响应式数据其他 vue优势 功能全面生态好&#xff0c;语法简洁效率高&#xff0c;免去 DOM 操作苦&#xff0c;开发重任一肩挑&#xff01; 使用方式 1.通过cdn引入来将 Vue 应用到整个页面 2.或通过官方脚手架 create-vue来创建完整的v…

AI可以成为重新点燃数字化转型的催化剂

你是如何陷入困境的 数字化转型对很多人来说意味着很多事情。是为了变得更有效率吗&#xff1f;升级工具&#xff1f;向客户提供新的数字产品&#xff1f;采用数据驱动策略&#xff1f;改变内部文化&#xff1f;我们并不总能看到这些能够团结组织的统一目标。这种缺乏重点常常…

迄今为止最全- 前端性能优化

简介 当我们说前端性能优化的时候&#xff0c;指的可能是不同场景的性能优化。前端涉及性能优化的场景主要有&#xff1a; 项目构建性能优化 页面性能优化 加载时性能优化 运行时性能优化 构建性能主要指构建速度&#xff0c;优化方法和打包工具直接相关&#xff0c;主要…

【React】redux开发者工具redux-devtools-extension的安装和使用

前言 redux-devtools-extension: 是一个用于Redux的开发者工具扩展。适合用于需要调试和监控Redux应用的状态管理。特点是可以提供实时的状态查看、行动日志和错误检测等 安装 chrome安装redux-devtools-extension 项目中安装并引入redux-devtools-extension yarn add re…

十一、Redis持久化-RDB、AOF

Redis提供了两种持久化数据的方式。一种是RDB快照&#xff0c;另一种是AOF日志。RDB快照是一次全量备份&#xff0c;AOF日志是连续的增量备份。RDB快照是以二进制的方式存放Redis中的数据&#xff0c;在存储上比较紧凑&#xff1b;AOF日志记录的是对内存数据修改的指令文本记录…

解双曲型非线性方程的Harden-Yee算法(TVD格式)

解双曲型非线性方程的TVD格式Harden-Yee算法 算法如图 该算法可以很好地压制震荡&#xff0c;并且耗散很小。具体算法如图所示 import matplotlib import math matplotlib.use(TkAgg) import numpy as np import matplotlib.pyplot as plt def Phiy(yy,epsi):#phi(y)if a…

2024 年中国大学生程序设计竞赛全国邀请赛(郑州)暨第六届CCPC河南省大学生程序设计竞赛 problem K. 树上问题

//先找一个美丽的树&#xff0c;然后遍历树找节点,分析是否符合条件。 //画几个图&#xff0c;思考下。 #include<bits/stdc.h> using namespace std; #define int long long const int n1e611; int a,b,c[n],d,l,r,k,w,an; vector<int>t[n]; void dfs(int x,int…

【吃透Java手写】5-RPC-简易版

【吃透Java手写】RPC-简易版-源码解析 1 RPC1.1 RPC概念1.2 常用RPC技术或框架1.3 初始工程1.3.1 Productor-common&#xff1a;HelloService1.3.2 Productor&#xff1a;HelloServiceImpl1.3.3 Consumer 2 模拟RPC2.1 Productor2.2 模拟一个RPC框架2.2.1 HttpServer2.2.2 Http…

如何通过香港站群服务器高效实现网站内容的快速更新?

如何通过香港站群服务器高效实现网站内容的快速更新? 在当今激烈的数字市场竞争中&#xff0c;网站内容的快速更新对于吸引用户和保持竞争优势至关重要。而利用香港站群服务器实现这一目标&#xff0c;则具备诸多优势。下面将详细探讨如何通过香港站群服务器高效实现网站内容…

ARM架构安全特性之隔离技术

安全之安全(security)博客目录导读 目录 一、保护代码和数据 二、TrustZone 三、安全世界之间的隔离 四、Secure-EL2扩展 五、保护主流计算工作负载 六、领域管理扩展(RME) 七、内存密集型可信应用程序 八、Arm动态TrustZone技术 强制执行明确定义的安全边界是安全工程…

华为eNSP Pro模拟器最新版R001C10(普通账号可用)

eNSP Pro 最新版 R001C10下载&#xff1a;&#xff08;支持AP、AC、m-lag等&#xff09; eNSP-Pro_V100R001C10_Software_X8664_qemu_release.tar.gz eNSP-Pro_V100R001C10_Software_X8664_VirtualBox_release.tar.gz 好消息&#xff01;华为终于开放了普通账号使用权限&#…

智能制造数字工厂未来三年规划方案(80页ppt下载)

一、资料介绍 智能制造数字工厂未来三年规划方案是一份全面而深入的战略性文件&#xff0c;旨在指导我们公司在未来三年内实现智能制造领域的跨越式发展。这份80页的PPT资料&#xff0c;以“智能制造、智能制造系统、数字化工厂、数字孪生工厂、智能工厂和数字化车间”为核心关…