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

相关文章

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

MybatisPlus service接口功能介绍

《MybatisPlusservice接口功能介绍》:本文主要介绍MybatisPlusservice接口功能介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录Service接口基本用法进阶用法总结:Lambda方法Service接口基本用法MyBATisP

Java Spring 中的监听器Listener详解与实战教程

《JavaSpring中的监听器Listener详解与实战教程》Spring提供了多种监听器机制,可以用于监听应用生命周期、会话生命周期和请求处理过程中的事件,:本文主要介绍JavaSprin... 目录一、监听器的作用1.1 应用生命周期管理1.2 会话管理1.3 请求处理监控二、创建监听器2.1 Ser

Apache 高级配置实战之从连接保持到日志分析的完整指南

《Apache高级配置实战之从连接保持到日志分析的完整指南》本文带你从连接保持优化开始,一路走到访问控制和日志管理,最后用AWStats来分析网站数据,对Apache配置日志分析相关知识感兴趣的朋友... 目录Apache 高级配置实战:从连接保持到日志分析的完整指南前言 一、Apache 连接保持 - 性

Java中的Closeable接口及常见问题

《Java中的Closeable接口及常见问题》Closeable是Java中的一个标记接口,用于表示可以被关闭的对象,它定义了一个标准的方法来释放对象占用的系统资源,下面给大家介绍Java中的Clo... 目录1. Closeable接口概述2. 主要用途3. 实现类4. 使用方法5. 实现自定义Clos

MQTT SpringBoot整合实战教程

《MQTTSpringBoot整合实战教程》:本文主要介绍MQTTSpringBoot整合实战教程,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录MQTT-SpringBoot创建简单 SpringBoot 项目导入必须依赖增加MQTT相关配置编写

python多线程并发测试过程

《python多线程并发测试过程》:本文主要介绍python多线程并发测试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、并发与并行?二、同步与异步的概念?三、线程与进程的区别?需求1:多线程执行不同任务需求2:多线程执行相同任务总结一、并发与并行?1、

JavaScript实战:智能密码生成器开发指南

本文通过JavaScript实战开发智能密码生成器,详解如何运用crypto.getRandomValues实现加密级随机密码生成,包含多字符组合、安全强度可视化、易混淆字符排除等企业级功能。学习密码强度检测算法与信息熵计算原理,获取可直接嵌入项目的完整代码,提升Web应用的安全开发能力 目录

Redis迷你版微信抢红包实战

《Redis迷你版微信抢红包实战》本文主要介绍了Redis迷你版微信抢红包实战... 目录1 思路分析1.1hCckRX 流程1.2 注意点①拆红包:二倍均值算法②发红包:list③抢红包&记录:hset2 代码实现2.1 拆红包splitRedPacket2.2 发红包sendRedPacket2.3 抢

java对接第三方接口的三种实现方式

《java对接第三方接口的三种实现方式》:本文主要介绍java对接第三方接口的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录HttpURLConnection调用方法CloseableHttpClient调用RestTemplate调用总结在日常工作