性能测试 --模拟多个用户进行接口测试,jmeter 提供聚合报告, jmeter的执行是从上到下执行的,所以测试计划的流程要注意。

一个简单的接口和断言

 

加断言:

 

 

 当接口返回的数据有很多很多时,断言该怎么写呢? 比如说一个接口返回书城页面,书城页面有很多书而不是具体的某本书,断言怎么写?

接口的数据从sql里来,所以expect value 直接从sql里来,断言的expect value 让介么特荣誉数据库联系,没请求一次,先获取数据库的数据。

jmeter数据库的链接和配置

 

测试计划加一个jar包 

 线程组add jdbc request来请求数据库

 

 

 expect value设置数据库读取的数据

将数据库返回的数据存到变量里面,断言验证变量内容:

 

 

 

 变量没有被赋值,排查

 

debug sample,来debug一下数据

变量名加个_1,    强行赋值的variable name, 一个sql 语句在执行之前不知道会返回几个数据,有可能返回1条数据,也有可能返回 > 1条数据。jmeter 变量名的命名规则, 变量名(自己定义的变量名)_顺序递增的数字。  比如 ids_1, ids_2.....ids_100  (一百条数据等)

所以断言的变量名改一下:

 

 随机抽取一本书进行测试(随机抽样检查):

 

 

 

 多随机数断言校验

比如查询10本书出来。

 加一个逻辑控制器 - 循环控制器:

 请求参数也要进行循环:

 

 循环控制器加个计数器:

 

 变量和变量的关系,如果要用到两个变量的拼接,就要用到V 函数。 ${__V(ids_${n})}

工具下面

 

 

 

 

测试片段: 就是对于用例的描述,模块化封装

比如说登录测试片段,吧登录需要的测试请求,包在测试片段里,为什么不在线程组里面添加? 是因为线程组的目的是负责执行,没办法去复用。可以将某个片段模块化的导出来供别的人使用。

 

 其他人使用的时候,在线程组里面添加一个include控制器,吧别人的测试片段加载进来。可以复用别人的测试片段

 

 

接口测试中的环境变量管理(配置原件 - 用户定义的变量),讲公共数据,以变量的形式统一维护起来。

 

 线程组添加模块控制器

 执行某个模块的片段。比如说执行一个订单的测试片段,或者执行登录模块。所以登录的测试片段首先加在线程组前面,线程组在添加一个模块控制器去执行这个登录的测试片段。

 

加密接口:通过算法,对数据进行加密 - 密文 (请求的数据和返回的数据都进行加密处理)

普通接口: 

 

https: 

 https接口为什么不够安全:   

  1.  自签名证书的信任问题‌:自签名证书未经证书颁发机构(CA)审核,浏览器和客户端无法自动信任。这可能导致中间人攻击(MITM),攻击者可以伪造自签名证书,窃取数据。此外,域名或IP不匹配也会导致浏览器持续提示“不安全”,误导用户忽略真实风险‌1。

  2. ‌证书吊销机制缺失‌:自签名证书无法被吊销,若私钥泄露,无法通过证书吊销列表(CRL)或OCSP协议及时失效证书。相比之下,可信证书可以通过API快速吊销被破解的证书‌1。

  3. ‌安全配置易疏忽‌:开发者可能使用弱加密算法(如SHA-1、RSA-1024)或未禁用过时协议(如SSLv3、TLS 1.0),导致安全性降低。此外,忽略证书链完整性也会导致浏览器提示“证书链不完整”‌

加密接口: 所以端对端的加密方式才是最安全的方式,不经过第三方,直接对发起请求和数据进行加密

 jmeter 利用第三方网站处理加密接口:

在线工具软件网址: 在线工具大全

 

 

 

 

 

 

添加请求头管理

 把加密后的user和psw 存在json取样器中

 

加密接口直接参数用json取样器的参数值

 

这种方式只适用于接口数少的,接口数多或者请求次数错了,第三方加密工具需要手工验证之后才会处理。

所以,需要自己实现。前置处理器 - beanshell.postprocessor 后置处理器,用写脚本的方式完成加密解密。加密解密的方式需要问接口开发(aes加密或者MD5等),beanshell 是用java 脚本的片段。片段没法调试,需要在idea里面调试好之后在用这边。

 

 

 OS 进程取样器,用来加密用户名密码:用python的脚本来实现加密解密,执行python脚本

 

 

 添加个提取器(正则表达提取器)

 

 

 python aes加密解密

 

同一个接口,正反向边界值等等的数据测试,jmeter支持csv文件,测试数据按照规则,放在csv文件里面,

 

cvs数据文件设置: jmeter去动态读取csv文件内容, 吧数据动态定义为变量

 

 逻辑处理器-循环控制器,用来反复执行,循环发起多次登录,要不然只执行csv第一行。注意循环体,有上下级关系,控制反复执行的范围

 Jmeter中的断言机制:

很多断言:

 大多数用json断言。

添加一个json断言。格式:

 

 接口测试中的token管理与接口依赖

后置处理器 - json提取器: 把json返回的数据提取出来, 比如说,登录之后的token提取出来,变成变量

 

 

 

 

jmeter生成测试报告:jmeter.bat 连输入命令

 

posted on 2025-07-02 10:09  小海海宁宁  阅读(24)  评论(0)    收藏  举报