3.JMeter测试计划要素
JMeter中一个脚本即是一个测试计划,也是一个管理单元。JMeter的请求模拟与并发数(设置线程数,一个线程代表一个虚拟用户)设置都在脚本文件中一起设置。
要素一:脚本中测试计划只能有一个
JMeter测试计划类似LoadRunner Controller中的测试场景,同一时刻场景固然只能有一个,JMeter脚本在GUI中显示时是树形结构,测试计划是根节点,根节点当然只能有一个。
要素二:测试计划中至少要有一个线程组
JMeter负载是通过线程组驱动的,所以计划中至少要出现一个线程组。JMeter测试计划支持多个线程组,把不想管的业务分部在不同的线程组中。
要素三:至少要有一个取样器
测试的目的就是要模拟用户请求,没有取样脚本就毫无意义。
要素四:至少要有一个监听器
测试结果用来衡量系统性能,我们需要从结果中分析系统性能。
4.JMeter运行逻辑
第一,利用取样器模拟用户请求,如果需要做一些数据及环境的准备,那么久使用配置管理器,如果需要对响应的数据做处理,使用后置处理器。
第二,控制运行,使用线程组来设置运行场景,利用逻辑控制器来控制业务(实际就是控制取样器)。
第三,收集结果,利用断言来验证测试结果,利用监听器来收集显示测试结果。
同时JMeter也支持远程运行,弥补单台机器负载不够的情况。
5.JMeter Http协议录制
Http代理方式进行录制的原理是解析网络数据包。
5.1 Badboy进行录制
Badboy录制的脚本可以直接导出为.jmx格式,jmx正是JMeter脚本保存的格式,jmx实际上是一个XML格式的文件。
Badboy的录制方式有两种:一种是Request方式,一种是Navigation方式。这两种方式区别如下:
request:模仿浏览器发送表单信息到服务器,每个资源都将作为请求发送;
Navigation:记录用户鼠标操作,类似于自动化测试工具QTP,回放时模拟一个个点击。
5.2 界面详解
通过Badboy录制后的脚本导入到JMeter,以树形结构显示脚本,执行时原则上按节点先后顺序往下执行。详细界面如下:
A. Test Plan:测试计划,JMeter测试脚本根节点,每一个测试脚本都是一个测试计划,名称可以自己定义。
(1)设置用户全局变量,即在“用户定义变量”中定义。
(2)独立运行每个线程组,如果一个测试计划中有多个线程组,设置此项可以生效。不设置时每个线程组同时运行。
(3)Run teardown Thread Groups after shutdown of main threads,关闭主线程后运行teardown程序来正常关闭线程组(运行的线程本次迭代完成后关闭)。
(4)函数测试模式,在调试脚本的过程中我们可能需要获取服务器返回的详细信息就可以选择此项,此项记录较多的数据会影响测试效率,所以在执行性能测试时关闭此项。
(5)Add diretory or jar to classpath,把测试需要依赖的jar包或包所在的目录加入类路径。不过还是建议大家把依赖的jar包添加到%JMETER_HOME%lib目录下。
B. Thread Group:线程组模拟虚拟用户的发起点,在此可以设置线程数(类似LoadRunner中的多少个虚拟用户)及运行次数或者运行时间,还可以定义调度时间和运行时长。
C. HTTP Cookie Manager:我们知道在用IE访问Web页面时会记录Cookie信息,JMeter通过加入HTTP Cookie Manager来自动记录Cookie信息,这里选择默认即可。