测试计划
1、测试计划要素:
(1)脚本中测试计划只能一个
(2)至少要有一个线程组
(3)至少要有一个取样器
(4)至少要有一个监听器
2、如图设置:
默认的JMeter界面包含一个”测试计划“节点,我们更名如图并保存了文件。更名的“测试计划(Test plan)”节点包含测试计划的名称和用户定义的变量。如图,我也设置了一个变量,方便后续灵活调用。提供了一些勾选项或其他设置,如果不做改变,默认如下:
(1)默认运行方式:各个线程组默认并行或随机运行,并且结束时运行tearDown线程组
(2)函数测试模式:默认不开启。开启后,将每次请求保存到一个文件中,容易导致磁盘变满
(3)插件依赖路径:lib目录。可以通过” 添加目录或jar到ClassPath“加载更多依赖
线程组
1、线程组
一线程,一用户;线程组,即一组用户。相对于其他特殊线程组,多了一个”延迟创建线程直到需要“,默认不选择,即在测试开始时创建所有线程资源;如果选择,直到采样器开始执行时才会被创建,避免资源浪费。
2、setUp线程组
一种特殊类型的线程组,可用于执行预测试操作,优先于线程组。
3、tearDown线程组
一种特殊类型的线程组,可用于执行测试后动作,滞后于线程组。
(1)在取样器错误后要执行的动作
动作 | 效果 |
---|---|
继续 | 请求出错后继续运行,大量并发时,服务器出错是正常的事情,所以需要继续执行,记录出错作为性能依据 |
启动下一进程循环 | 如果出错,同一脚本余下的请求不再执行,直接重新开始执行。比如,登录失败了,发帖的操作不再执行,重新开始下一轮迭代,从登录开始 |
停止线程 | 如果出现请求失败,停止当前线程,不再执行;如果失败的事物增多,停下的线程也会增多,造成负载不够,一般不这么设置 |
停止测试 | 如果有线程请求失败了,正常停止测试场景 |
立即停止测试 | 如果有线程请求失败了,立即停止测试场景 |
(2)线程属性
属性 | 效果 |
---|---|
线程数 | 运行的线程数设置,一般一个线程对应一个模拟用户,即一线程,一用户 |
Ramp-up时间(秒) | 线程启动开始运营的时间间隔,单位是s。即所有线程在多长时间内开始运行。比如,设置线程数50,设置10s,那么每秒启动50/10个,如果设置为0,即开启场景后50个线程立即启动 |
循环次数 | 请求的重复次数,选择forever,请求将一直继续除非停止或崩溃;如果不选forever,输入数字,请求将重复指定的次数 |
Same user on each iteration | 同一用户迭代请求,也就是勾选后,即使同时请求1万次,实际是同一用户;反之,去掉勾选,也就真实的模拟了大量不同用户访问被测系统的实际情况。 |
调度器 | 1、持续时间: 脚本持续执行的时间(若持续时间到了,不能停止运行,检查是否有集合点错误,如,等不到50个线程,一直在等)2、启动延迟:脚本延迟启动的时间(点击启动,延迟多少时间才开始执行) |
取样器
如图,取样器元件有很多,主要用于模拟用户操作。可以向服务器发送http请求、java请求等等。
一、http请求取样器
如图界面是一个http请求取样器的界面,可以通过其发送Http请求。
1、基本
(1)协议:向目标服务器发送http请求时的协议,http/https,大小写不敏感,默认http
(2)服务器名称或IP:http请求发送的目标服务器名称或者IP地址,比如http://www.baidu.com
(3)端口号:目标服务器的端口号,默认值为80,可不填
(4)方法:发送http请求的方法,如get\post等等
(5)路径:目标的URL路径
(6)内容的编码方式:默认utf-8
(7)自动重定向:选中该项,如果发出的http请求得到响应是301/302,jmeter会重定向到新的界面
(8)跟随重定向:选中该项,如果发出的http请求得到响应是301/302,jmeter会重定向到新的界面(默认选中)
(9)使用 KeepAlive:jmeter 和目标服务器之间使用 Keep-Alive方式进行HTTP通信(默认选中)
(10)对POST使用multipart/from-data :当发送HTTP POST 请求时,使用表单请求
(11)与浏览器兼容的头: 勾选了与浏览器兼容的头,默认的 Content-Transfer-Encoding 会失效,并自动匹配header。
(12)参数:根据请求方式的不同,实际作用的地方也不同,如get方式作用域为URL;post方式作用域为表单。
(13)消息体数据:即请求报文里面主体实体的内容,一般我们向服务器发送请求,携带的实体主体参数,可以写入这里
(14)文件上传:如果接口需要上传文件,可通过该方式上传
2、高级
监听器
如图,监听器元件也有很多,主要用于采集测试结果。可以捕获服务器响应,并以指定方式呈现。
一、 查看结果树
如图界面是一个查看结果树监听器的界面,可以接收服务器的响应数据。
1、所有数据写入一个文件:指定一个文件,保存时将取样器结果保存到该文件中。可通过配置,自定义保存的信息。
2、查找:通过该方式查找匹配指定字段的所有请求。
3、筛选器
类型 | 效果 |
---|---|
Text | 以文本的形式展示响应结果 |
RegExp Trster | 使用正则表达式来获取页面内容,仅适用于文本响应,点击“test”按钮,系统将应用regexp对上面板中的文本进行查询,结果将显示在面板中。正则表达式引擎与正则表达式提取器中使用的正则表达式引擎相同 |
边界提取器测试 | 不需要写复杂的正则表达式,只要填写左右边界即可 |
CSS选择器测试 | 使用CSS选择器语法,获取页面结构的内容 ,在selector中输入对应的查找元素 |
JSON Path Tester | 适用于响应体为json,json路径测试视图将允许您测试json-path表达式,并从特定响应中查看所提取的数据 |
XPath2 Tester | |
JSON JMESPath Tester | |
HTML | 原生页面展示, 但没有加载css |
HTML Source Formatted | 透视表格式,只展示页面标签 。如果选择了html source格式化视图选项,则呈现由jsoup格式化和清理的html源代码,相对于第一种来说,更加简单,跟text模式并没有区别 |
HTML (download resource) | 原生页面展示, 且加载css |
XPath Tester | 使用xpath语法来获取页面内容,xpath仅适用于文本响应,上面板显示了纯文本,点击“test“按钮,系统将应用xpath对上面板中的文本进行查询,结果将显示在下面板中。 |
Document | 仅仅展示页面文本内容,去掉图片、链接等 |
JSON | json视图将显示树形风格的响应(也处理JavaScript中嵌入的json) |
XML | 适用于响应体为XML |