测试项目实战--安享理财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

相关文章

Java 队列Queue从原理到实战指南

《Java队列Queue从原理到实战指南》本文介绍了Java中队列(Queue)的底层实现、常见方法及其区别,通过LinkedList和ArrayDeque的实现,以及循环队列的概念,展示了如何高效... 目录一、队列的认识队列的底层与集合框架常见的队列方法插入元素方法对比(add和offer)移除元素方法

Spring Boot基于 JWT 优化 Spring Security 无状态登录实战指南

《SpringBoot基于JWT优化SpringSecurity无状态登录实战指南》本文介绍如何使用JWT优化SpringSecurity实现无状态登录,提高接口安全性,并通过实际操作步骤... 目录Spring Boot 实战:基于 JWT 优化 Spring Security 无状态登录一、先搞懂:为什

C++11中的包装器实战案例

《C++11中的包装器实战案例》本文给大家介绍C++11中的包装器实战案例,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录引言1.std::function1.1.什么是std::function1.2.核心用法1.2.1.包装普通函数1.2.

Nginx概念、架构、配置与虚拟主机实战操作指南

《Nginx概念、架构、配置与虚拟主机实战操作指南》Nginx是一个高性能的HTTP服务器、反向代理服务器、负载均衡器和IMAP/POP3/SMTP代理服务器,它支持高并发连接,资源占用低,功能全面且... 目录Nginx 深度解析:概念、架构、配置与虚拟主机实战一、Nginx 的概念二、Nginx 的特点

Spring IOC核心原理详解与运用实战教程

《SpringIOC核心原理详解与运用实战教程》本文详细解析了SpringIOC容器的核心原理,包括BeanFactory体系、依赖注入机制、循环依赖解决和三级缓存机制,同时,介绍了SpringBo... 目录1. Spring IOC核心原理深度解析1.1 BeanFactory体系与内部结构1.1.1

requests处理token鉴权接口和jsonpath使用方式

《requests处理token鉴权接口和jsonpath使用方式》文章介绍了如何使用requests库进行token鉴权接口的处理,包括登录提取token并保存,还详述了如何使用jsonpath表达... 目录requests处理token鉴权接口和jsonpath使用json数据提取工具总结reques

Redis 命令详解与实战案例

《Redis命令详解与实战案例》本文详细介绍了Redis的基础知识、核心数据结构与命令、高级功能与命令、最佳实践与性能优化,以及实战应用场景,通过实战案例,展示了如何使用Redis构建高性能应用系统... 目录Redis 命令详解与实战案例一、Redis 基础介绍二、Redis 核心数据结构与命令1. 字符

在SpringBoot+MyBatis项目中实现MySQL读写分离的实战指南

《在SpringBoot+MyBatis项目中实现MySQL读写分离的实战指南》在SpringBoot和MyBatis项目中实现MySQL读写分离,主要有两种思路:一种是在应用层通过代码和配置手动控制... 目录如何选择实现方案核心实现:应用层手动分离实施中的关键问题与解决方案总结在Spring Boot和

CPython与PyPy解释器架构的性能测试结果对比

《CPython与PyPy解释器架构的性能测试结果对比》Python解释器的选择对应用程序性能有着决定性影响,CPython以其稳定性和丰富的生态系统著称;而PyPy作为基于JIT(即时编译)技术的替... 目录引言python解释器架构概述CPython架构解析PyPy架构解析架构对比可视化性能基准测试测

Python AST 模块实战演示

《PythonAST模块实战演示》Python的ast模块提供了一种处理Python代码的强大工具,通过解析代码生成抽象语法树(AST),可以进行代码分析、修改和生成,接下来通过本文给大家介绍Py... 目录 什么是抽象语法树(AST)️ ast 模块的核心用法1. 解析代码生成 AST2. 查看 AST