JMeter基本使用方法
1 环境搭建
此部分是我借用LoadRunner的Sample程序作为服务器,通过JMeter进行Web性能测试的过程。希望对学习JMeter的朋友有所帮助。
2 使用JMeter录制脚本
2.1 建立JMeter测试计划(Test Plan)
打开JMeter,看到左边显示一个空的测试计划,把该测试计划改名为TestPlan1。右键单击该测试计划,选择“添加(Add)”-“线程组(Thread Group)”,添加一个线程组,改名为TestGroup1。如下图所示:
2.2 设置并启动JMeter代理服务器
右键单击在“工作台(Work Bench)”,选择“非测试元件(Non-Test Elements)”中的“Http代理服务器(HTTP Proxy Server)”,如下图所示:
设置该“Http代理服务器”(HTTP Proxy Server),“目标控制器(Target Controller)”选择刚才建立的线程组(Test Plan1>Thread Group1)。
点击“启动”,启动该代理服务器。
2.3 设置IE的代理服务器配置
测试工程师打开IE界面,选择“工具(Tools)”->“Internet选项(Internet Option)”
->“连接(connections)”->“局域网设置(LAN setting)”,如下图所示:
在局域网设置(LAN setting)界面勾上“为LAN使用代理服务器(Use a proxy server for your LAN)”,设置地址(address)为“localhost”,端口(Port)为8080,确定(OK)。
2.4 录制脚本
在浏览器的URL栏输入需要测试的地址,进行操作,操作完毕后,点击JMeter中的“Http代理服务器(HTTP Proxy Server)”的“停止(STOP)”按钮,你将能看到“TestGroup1”下面已经录制了刚才操作的内容。如下图所示:
2.5 样例文件
3 使用JMeter获取SessionID
前提:本章所使用的脚本录制请参见《使用JMeter自动录制脚本》
3.1 添加察看结果树(View Results Tree)
添加查看结果树,查看脚本运行情况:
Add->Listener->View Results Tree
3.2 确认SessionID的获得位置
根据录制情况确认SessionID的获得位置。我们在查看结果树(View Results Tree)中查找到SessionID的传送位置,如下图所示:
根据响应数据(Response Data)的内容可以确定,在本案例中SessionID出现在http://hostname:1080/WebTours/nal.pl页面中。
PS:由于nal.pl页面包含于http:// hostname:1080/WebTours/index.html中的子页面,所以需要对页面足够了解或者使用录制工具获得该页面的访问信息(本次测试使用的是JMeter的自动录制工具)。这一点区别于LoadRunner,LoadRunner可以直接处理包含的页面,不需要单独访问子页面。
3.3 添加正则表达式提取器(Regular Expression Extractor)
正则表达式的提取是在网页下载后进行的,所以正则表达式提取器(Regular Expression Extractor)在后置处理器(POST Processors)中进行选择。
操作步骤(在nal.pl页面中):
英文版:
右键点击”HTTP Request”中的”/WebTours/nav.pl”->”Add”->”POST Processors”->” Regular Expression Extractor”
中文版:
右键点击”HTTP请求”中的”/WebTours/nav.pl”->”添加”->”后置处理器”->” 正则表达式提取器”
如下图所示:
3.4 填写正则表达式(Regular Expression)设置信息
正则表达式(Regular Expression)的设置如下图所示:
在Response Field to Check栏目中选择Body项目,在返回网页的主体部分进行查找。
这里只是单个匹配的情况,如果要出现多个匹配建议修改正则表达式,也可以按匹配顺序引用数据,请参见JMeter User Manual内容。
3.5 添加断言(Response Assertion)检查匹配结果
为确定是否正确提取SessionID值,在”HTTP Request”(/WebTours/nav.pl)中添加断言,设置如下图所示:
Response Field Test中选择Tex Response对接受的文本信息进行检验。
Pattern Matching Rules中选择Contains,检验文本是否包含检验信息。选择Not,因为如果判断正确在View Results Tree看不到结果,所以使用No,这样在正确的时候将显示错误,测试人员可以在View Results Tree中查看结果,如下图所示:
Pattern to Test输入匹配数据${SID},此变量对应于前面正则表达式(Regular Expression)所获取的变量名称。
3.6 样例文件
4 JMeter参数化过程1
前提:本章所使用的脚本录制请参见《使用JMeter自动录制脚本》
4.1 选择函数位置
参数化是指在进行性能测试的过程中使用不同的参数来模拟系统的处理性能,从而使压力测试结果更加接近实际情况。
在本案例中,我们通过JMeter模拟多用户同时登录系统。根据对录制脚本的分析,用户登录名通过POST模式进行传递,所以测试人员确定位参数传递页面是HTTP Request(/WebTours/login.pl)中实现。如图所示:
4.2 添加_StringFromFile函数
_StringFromFile,这个函数是从一个文件中取到一个字符串,这个函数和LoadRunner中的File变量差不多,不过LoadRunner可以直接从数据库中查询记录,而JMeter需要我们借助第三方工具生成文本文件。生成文本文件后就可以设置这个函数的参数了,参数分别是
_StringFromFile函数也可以在其他位置直接使用,如断言(Assertion)位置:
4.3 数据文件制作
数据文件使用标准的TXT文件格式,每一行保存一个参数供函数调用使用。文件内容如附件所示:。
PS:在使用过程中根据实际存储情况更改“Enter full path to file”参数的设置路径。