1.Window下的安装:
安装JDK之后,设置JDK环境
1). 桌面上选择“我的电脑”(右键)属性/高级/环境变量, 在“系统变量”栏中点击“新建”, 在变量名中输入:CLASSPATH,变量值中输入:C:\JDK安装目录\lib\dt.jar; C:\JDK安装目录\lib\TOOLS.jar;点击确定即可。如我的CLASSPATH设置中就为 C:\Program Files\Java\jdk1.7.0_13\lib\dt.jar;C:\Program Files\Java\jdk1.7.0_13\lib\tools.jar;(别忘了后面的‘;’号)
2) . 再在用户变量中点击“新建”,在变量名中输入:java_home,变量中输入:C:\JDK安装目录;我的JAVA_HOME为 C:\Program Files\Java\jdk1.7.0_13
3). 修改系统变量path的值,在前面增加%java_home%\bin;然后确定即可。我的path变量为 C:\Program Files\Java\jdk1.7.0_13\bin;C:\Program Files\Java\jre7\bin;
4) . 检查JDK安装是否OK
具体是:点击“开始”/“运行”,输入命令cmd进入dos操作界面,输入命令:
java –version 查看java版本,如果显示版本信息则安装OK
2.安装jmeter
解压jmeter文件至你想要放置的盘,本文解压至D:\apache-jmeter-2.9目录下。但是jmeter2.9不需要设置环境变量,使用时点击D:\apache-jmeter-2.9\bin下的jmeter.bat文件就行。它会先弹出一个后台命令框,这个cmd.exe在整个测试环境中都不能关闭
图1 后台命令框
等待一段时间之后,就会弹出jmeter的工作框,我们就可以进行性能测试了。
图2 jmeter的测试框
3.使用jmeter进行性能测试(通过手机号验证码登录举例)
1).准备工作-造数据
该接口是将用户输入的账号和后台账号匹配,然后判断是否允许用户登录,然后进行页面转跳进行下一步工作。
先看参数要求中需要输入哪些参数,必传参数必须有数据,非必传可造可不造,但是有时为了测功能就需要造。
图3登录接口的参数要求
在此处有两个必传参数:phone和verify_code,这两个参数的前提就是phone必须在数据表中,verify_code必须是phone对应的验证码(如果需要大量的有效数据的话,可以通过代码写入redis中,如果只是测试访问有效性的话,出现验证码失效的提示也行);
图5显示列出的是部分测试数据,数据造好后,另存为csv格式文件,名字为登录(也可以是其他任意名字),本csv文档的名字如图6所示。参数文件格式可以为:csv或者txt文件,txt文件中里面保存变量要读取的参数值,每个变量间用逗号相隔。csv则每行表示每一组参数值,每列表示同一种变量;
图5 csv文件的测试数据
图6 文档另存为格式事例
).jmeter设置
①.添加线程组,如图7所示:
图7 添加线程组
②.添加HTTP COOKie 管理器
网站有登录限制的需要用到记录用户信息,也可不用添加
③.线程组中添加HTTP请求,这是由于我们公司的接口大多是通过HTTP协议传输,如图9所示。
图9 添加HTTP请求
④.添加csv数据处理配置元件,如图10所示。使用该处理元件调用我们前文造的数据。
图10 添加csv Data set config
⑤.添加查看结果树,帮助判断功能和性能是否正确,如图11所示
图11 添加查看结果树
⑥.添加聚合报告,统计该接口的性能,帮助测试人员判断性能的优劣,如图12所示。
图12 添加聚合报告
3).参数设置
①.HTTP参数设置,如图13所示
该测试项的地址为http://mars.test.xiaojukeji.com:13001/app/login/login;
所以服务器地址填写mars.test.xiaojukeji.com,端口号:13001(如果测试项无端口号,则可以填写80:http的端口号),Implementation选择HttpClient4,方法是POST(是向HTTP服务器传数据),路径填写测试地址除了网址的其他部分: /app/login/login,最后需要做的是添加同请求一起发送的参数,名称 填写参数要求中的参数名称(填写造了数据的参数,没造数据的就不用填了,必传项必须填),值 如果是csv传进来则使用 ${参数名称} 格式,如果输入固定值就在此输入固定值,需要注意的是如果输入数字就需要在数字前加上英文逗号“,”,如以后输入年月日的时候,参数输入固定值时就必须输入“,2014-07-12”。
图13 HTTP请求
参数解释:
名称:本属性用于标识一个取样器,建议使用一个有意义的名称。
注释:对于测试没有任何作用,仅用户记录用户可读的注释信息。
服务器名称或IP :HTTP请求发送的目标服务器名称或IP地址。
端口号:目标服务器的端口号,默认值为80 。
协议:向目标服务器发送HTTP请求时的协议,可以是http或者是https ,默认值为http 。
Implementation(实现方式):一般选择HttpClient4
方法:发送HTTP请求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。
Content encoding :内容的编码方式,默认值为iso8859
路径:目标URL路径(不包括服务器地址和端口)
自动重定向:如果选中该选项,当发送HTTP请求后得到的响应是302/301时,JMeter 自动重定向到新的页面。
Use keep Alive : 当该选项被选中时,jmeter 和目标服务器之间使用 Keep-Alive方式进行HTTP通信,默认选中。
Use multipart/from-data for HTTP POST :当发送HTTP POST 请求时,使用Use multipart/from-data方法发送,默认不选中。
同请求一起发送参数 : 在请求中发送URL参数,对于带参数的URL ,jmeter提供了一个简单的对参数化的方法。用户可以将URL中所有参数设置在本表中,表中的每一行是一个参数值对(对应RUL中的 名称1=值1)。
同请求一起发送文件:在请求中发送文件,通常,HTTP文件上传行为可以通过这种方式模拟。
② csv Data Set Config配置,如图14所示。
其中filename填写该测试需要调用的csv文件的位置和名称。
Variable Name填写需要读取的参数列名(和CSV文件的列要对应,否则参数会读取错误)。
将Recycle on EOF选为False,避免出错时重新执行
图14 CSV Data Set Config
4).保存现有配置
.保存现有配置,可以防止以后进行该接口测试时再次配置,对于参数多的接口来说是一件非常麻烦的事情,可以另存为到一个专门的文件夹,命名可以和csv文件一致,方便以后找寻。如图15所示。(注意:一定要从线程组级别处保存)
图15 保存测试配置
5).功能测试
先将线程组中的线程数设置为1(其他不变),点击上面的“进行”按钮功能测试,如果功能测试的结果符合要求,则进行性能测试。如图16所示。
图16 配置线程组,并运行
线程组主要包含三个参数:线程数、准备时长(Ramp-Up Period(in seconds))、循环次数。
线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户数在这里也就是设置多少个线程数。
准备时长: 设置的虚拟用户数需要多长时间全部启动。如果线程数为20 ,准备时长为10 ,那么需要10秒钟启动20个线程。也就是每秒钟启动2个线程。
循环次数:每个线程发送请求的次数。如果线程数为20 ,循环次数为100 ,那么每个线程发送100次请求。总请求数为20*100=2000 。如果勾选了“永远”,那么所有线程会一直发送请求,直到选择停止运行脚本。
除了固定循环次数与永远外;也可以灵活的选择设定测试运行时间。勾选“调度器”,进行调度器配置。
由于运行了一个线程,所以在查看结果树中存在一个HTTP请求,是读取了csv文件的第一行,如图17所示,系统通过会员手机号和手机验证码登录。若成功返回用户信息的字符串,否则返回相应的错误文案。图17可以看到响应数据的结果为{"errno":"020027","error":"\u9a8c\u8bc1\u7801\u5931\u6548"},将该结果转换一下{
"errno": "020027",
"error": "验证码失效"
},如果其结果是我们需要的,我们就可以进行性能测试了,如果不是,则必须检查配置中是否有问题。
图17 功能测试结果
在该功能测试中,如果返回了功能包的正确结果如图18所示
图18 正确提示
转换信息为:
{
"errno": 0,
"error": "",
"data": {
"user_id": 202,
"company_id": 244,
"username": "杨测试",
"name": "杨测试",
"password": "",
"phone": "18510239280",
"email": "",
"status": 0,
"is_delete": 0,
"_create_date": "2016-07-21 18:20:10",
"_update_date": "2016-07-21 18:22:42"
}
}
看到这个则代表该功能OK,使用清除所有按钮清除原来的运行结果,点击图19中的红
图19 清除按钮
再次修改线程组内的配置,将循环次数设为永远,持续时间设为900s。
图20 线程组设置
等测试结束后,先抽样检查一下查看结果树中的结果是否符合要求,如果抽样中不符合的基数太大,则可能根据实际情况需要重新测试,如果OK,则查看聚合报告结果,如图21所示,一般来说samples越大越好,一般也最好测试900s,或者10000条。然后根据性能测试统计表填写数据,性能统计表格如图22所示。
图21 性能测试聚合报告
图22 性能测试参数解释
一般必须根据经验判断测试出来的结果是否符合实际情况,如果偏差太大,得进行性能优化或者其他操作。到此性能测试就结束了。
最后需要说明的是在一个空白的测试计划页面打开以前保存的测试项目时(打开框如图23所示),当弹出图24所示时选择否。如果选择‘是’,则将后面的空白页覆盖了以前保存的配置。
图 23 打开框