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

2024-05-14 03:36

本文主要是介绍测试项目实战--安享理财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

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

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

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

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

这篇关于测试项目实战--安享理财2(Jmeter接口测试)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/987639

相关文章

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

滚雪球学Java(87):Java事务处理:JDBC的ACID属性与实战技巧!真有两下子!

咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE啦,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~ 🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!! 环境说明:Windows 10

Java 后端接口入参 - 联合前端VUE 使用AES完成入参出参加密解密

加密效果: 解密后的数据就是正常数据: 后端:使用的是spring-cloud框架,在gateway模块进行操作 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.0-jre</version></dependency> 编写一个AES加密

springboot实战学习(1)(开发模式与环境)

目录 一、实战学习的引言 (1)前后端的大致学习模块 (2)后端 (3)前端 二、开发模式 一、实战学习的引言 (1)前后端的大致学习模块 (2)后端 Validation:做参数校验Mybatis:做数据库的操作Redis:做缓存Junit:单元测试项目部署:springboot项目部署相关的知识 (3)前端 Vite:Vue项目的脚手架Router:路由Pina:状态管理Eleme