软件测试(实验五)——Jmeter的使用

发布于:2024-05-06 ⋅ 阅读:(32) ⋅ 点赞:(0)

目录

实验目的

一、使用JMeter演示取样器、监听器、配置元件、断言的使用;

1、取样器

2、监听器

3、配置元件的使用

① 用户定义的变量

②HTTP信息头管理器

③HTTP请求默认值

④CSV数据文件设置

4、断言

①响应断言

②JSON断言

③断言持续时间

二、使用JMeter演示前置处理器、后置处理器、逻辑控制器、定时器的使用。

1、前置处理器

2、后置处理

①正则表达式提取器

②Xpath提取器

③JSON提取器

3、逻辑控制器

①if逻辑控制器

②for each控制器

4、定时器

①同步定时器

②常数吞吐量定时器

③固定定时器

实验目的

上机练习主要针对本章中需要重点掌握的知识点,以及在性能测试中容易出错的内容进行练习,通过上机练习可以考察同学对知识点的掌握情况,对JMeter工具的使用的熟练程度。

上机:(考察知识点为取样器、监听器、配置元件、断言、前置处理器、后置处理器、逻辑控制器、定时器

形式:单独完成

 题目:

通过不同的小案例演示取样器、监听器、配置元件、断言、前置处理器、后置处理器、逻辑控制器、定时器的使用,要求如下:

一、使用JMeter演示取样器、监听器、配置元件、断言的使用

1、取样器

使用路径传递GET请求参数

②使用参数列表传递GET请求参数

③使用消息体数据传递POST请求参数

2、监听器

①测试计划结果树

②线程组结果树

③聚合报告-案例itcat.com

HTTP请求配置

线程组配置

聚合报告结果

3、配置元件的使用

① 用户定义的变量

②HTTP信息头管理器

③HTTP请求默认值

④CSV数据文件设置


结果如下

⑤计数器


查看结果


4、断言

①响应断言

案例:要求使用JMeter发送一个GET请求,请求地址为http://www.baidu.com,检查响应数据中是否包含“百度一下,你就知道”字符串

百度一下,你就知道,改为英文逗号,出错


②JSON断言

要求使用JMeter发送一个GET请求,

请求地址为http://www.weather.com.cn/data/sk/101010100.html,检查响应的JSON数据中,city对应的内容是否为“北京”


③断言持续时间

案例:

要求使用JMeter发送一个GET请求,请求地址为https://www.jd.com,检查响应时间是否超过100毫秒



二、使用JMeter演示前置处理器、后置处理器、逻辑控制器、定时器的使用。

1、前置处理器

要求使用JMeter发送一个GET请求,请求地址为https://www.baidu.com/S,第一个用户携带参数为:name=张三&age=28; 第二个用户携带参数为:name=李四&age=30


2、后置处理

①正则表达式提取器

本案例要求使用JMeter发送两个请求,具体要求如下

请求一:请求地址为https://www.itcast.cn,获取网页的<title>标签的值。

请求二:请求地址为https://www.baidu.com/S,把请求一的<title>标签的值作为请求参数。

百度请求itcast的title并匹配第一个字符串


②Xpath提取器

以前面正则表达式提取器中的案例为例,同样发送两个请求,要求使用XPath提取器提取请求一中的title值。将正则表达式提取器替换为XPath提取器。

另两个过程与上图一致

③JSON提取器

下面通过一个案例演示JSON提取器的使用。本案例要求使用JMeter发送两个请求,具体如下。

请求一:请求地址为http://www.weather.com.cn/data/sk/101010100.html,获取返回结果中的城市名称“北京”。

请求二:请求地址为https://www.baidu.com/S?wd=北京,把请求一返回的城市名称“北京”作为请求参数

3、逻辑控制器

①if逻辑控制器

本案例要求使用用户定义的变量定义一个变量name,name有两个可选值:baidu和itcast。如果name的值为baidu,则请求https://www.baidu.com;如果name的值为itcast,则请求https://www.itcast.cn。

分析上述要求,根据 name 的值判断发送哪个请求,需要使用如果(If) 控制器实现。确定了核心元件之后,构建测试计划目录树,如下图所示。

用户变量

百度


Itcast


结果如下:

②for each控制器

本案例要求使用用户定义的变量定义一组关键字:hello、pyhton、测试。依次取出这一组关键字,将其作为请求参数请求百度网站(https://www.baidu.com/S?wd=hello)。

分析上述要求,要想逐个读取用户定义的变量并定义一组关键字作为请求参数,可以使用 ForEach 控制器。

结果如下

1

2

3

4、定时器

①同步定时器

例题:

使用JMeter模拟100个用户同时访问百度首页(https://www.baidu.com),统计各种高并发情况下的运行情况。


②常数吞吐量定时器

例题:

本案例要求使用JMeter发送请求访问百度首页(https://www.baidu.com),QPS为20,持续运行一段时间,观察、统计运行时的性能指标变化。

QPS=20代表每秒处理20个请求

③固定定时器

例题:

要求使用JMeter模拟登录iHRM人力资源管理系统

请求地址:http://ihrm2-test.itheima.net/api/sys/login。

请求方式:POST。

请求头:Content-Type:application/json;charset=UTF-8。

请求体:{"mobile":"13800000002","password":"888itcast.CN764%..."}。

当模拟用户登录时,登录出现3次输入错误后,锁定300ms,等待300ms后重新输入正确的用户名和密码,登录成功。

建议:进入网站直接复制密码

密码123456有时正确,有时错误

步骤如下:

1、请求头信息

2、用户名正确,密码错误


3、用户名错误,密码错误

4、用名错误、密码正确

5、用名正确、密码正确

6、固定定时器300ms

结果如下

前3个错误,最后一个正确