1 搭建ebusiness场景
1.1录制
1,打开Window IE浏览器代理
2,启动ebusiness服务
3,打开JMeter,右键点击 Test Plan->Add->Threads(user)->Thread Group 添加一个线程组
4,Thread Group->Add->ConfigElement->Http request Default
5,如图设置
6,右键点击 Test Plan->Add->Non-test Elements->Http(s) Test ScriptRecorder 添加HTTP代理服务器
7,如下图进行修改
8,加上过滤
(?i).*.(bmp|css|js|gif|ico|jpe?g|png|swf|woff|woff2)
9,点击start开始录制
10,录制完毕出现如下图所示
11,删除不需要的,修改一下名称
12. 把Simple Control换为LoopControl,
13,把编码改为utf-8
14,删除“HTTP(S) Test Script Recorder”。
15,删除“HTTP Header Manager”。
16,在头部加入“HTTP Header Manager”
17,在头部加入“HTTP Cookie Manager”
注意:一定必须为“标准(standard)”。
18,由于“登录验证界面”验证通过后自动进入“商品列表页面”,删除“商品列表页面”,然后调整一下“登录验证界面”。
19,关闭“HTTP Request Defaults”
20,加上“查看结果树”“Debug Sample”执行下脚本,进行验证。
Sample->Debug Sample
Listener->View Result Tree
运行
查看是403错误,没有权限。
1.2处理csrftoken
1.添加正则表达提取器:PostProcessors->Regular Expression Extractor
2. 添加cookies:Config Elements-> HTTP Cookies Manager
3. POST参数也是这样也用这个参数
4. 设置响应断言:Assertion->Response Assertion
5. 试运行
6. 设置BeanShell断言:Assertion-> BeanShell Assertion
代码语言:javascript复制response = prev.getResponseDataAsString();
Failure = true;
if (response.contains("电子商务系统")){
Failure = false;
}else{
FailureMessage="响应内容中没有找到电子商务系统";
}
1.3 多场景
1. 获得csrftoken
2.设置csrftoken
3. 建立两个Throughput Controller:Logic Controller->ThroughputController,分别为“查询商品”“查看商品详情”。用户分配分别为:
二者与“登录界面”“商品列表界面”处于同等位置。
5. 建立“查询商品”事务。
6,建立验证查询商品是否成功
通过验证是否进入到/search_name/目录下。
7. 建立“查看商品详情”事务。
通过${__Random(1,5,num)}随机查看编号为1、2、3、4、5的商品。
8. 加入验证
9. 设置线程为2
10.设置循环5次
11. 加入Summary Report
12. 运行
13.“查询商品”“查看商品详情”符合设置比例,是否符合预期的80%和20%。
1.4参数化
1.3.1使用cvs参数化
建立参数文件:user.dat
代码语言:javascript复制linda,knyzh158
cindy,123456
jerry,654321
susan,qwert
peter,zxcvb
加入参数化:Config Element->CSVData Set Config
- user.dat为文件名。
- UTF-8为编码格式。
- username,password为获取后的参数。
- ,为分割符号。
2.修改POST参数
3. 设置Loop Control循环次数为5
4. 试运行
并且通过Debug Sample查看参数是否正确。
- username=peter
- password=zxcvb
1.3.2 使用函数助手做参数化
1,点击
进入函数助手
2,选择random
产生从0-2之间的整数
3,建立type.txt
代码语言:javascript复制茶,测试,包
4,选择csvread函数
- type.txt为参数文件
- ${__Random(0,2,num)}为0,1,2随机之间任意一个随机数。
5,在查询商品页面进行参数化,
- 查询参数为{__CVSRead(type.txt, {__Random(0,2,num)})}
6,试运行,通过Debug Sample查看参数是否正确。
1.3.3通过MySQL参数化
1,mysql-connector-java-5.1.7-bin.jar放入%JMeter_HOME%libext。然后重新启动JMeter。
2,Config Elements-> JDBCConnection Configuration
其中:
- Search:为连接JDBC Request的参数;
- jdbc:mysql://localhost:3306/sec中3306为mysql的端口号,sec为访问的数据库名。
- root为登录名
- 123456为密码,不明文显示。
3,Sample->JDBC Request
- Search必须与JDBCConnection Configuration一致
- name,password为查询参数的名称,通过Debug Sample可以看见:
name_#=5
name_1=cindy
name_2=linda
name_3=jerry
name_4=susan
name_5=peter
password_#=5
password_1=123456
password_2=knyzh158
password_3=654321
password_4=qwert
password_5=zxcvb
- result为结果集,通过DebugSample可以看见:
result=[{name=cindy, password=123456}, {name=linda,password=knyzh158}, {name=jerry, password=654321}, {name=susan,password=qwert}, {name=peter, password=zxcvb}]
4,下面我们通过result来提取用户名和密码。
建立正则表达提取器
- 从变量result中获取。
- 获取完毕存入变量parm中。
- 正则表达提取式为:{name=(.*?),password=(.*?)}。
- 由于有两个变量,所以Template为:12。
- 随机取数,Match No.输入:0
5,在POST请求中修改参数。
username、password分别为{parm_g1}、{parm_g2}。
6,运行
到此位置接口设置的部分结束,开始与性能相关的部分。
1.5 性能相关的设置
1. 设置线程组
- 50个在线用户,在5秒内加载完毕。测试持续600秒(10分钟),启动后5秒后开始执行。
2.设置无限循环
3. 在登录请求后加入同步集合点:Timer->Synchronizing Timer。
- 并发用户为5
- 4秒后,如果达不到并发条件,立即执行。
4. 同样在“查询商品”“查看商品详情”也加入同步集合点。
1.6 设置报表
1.6.1 Summary Report
Listener->Summary Report
1.6.2 Aggregate Report
Listener->Aggregate Report
1.6.3 Aggregate Graph
Listener->Aggregate Graph
Aggregate Graph比Aggregate Report多了个图显示
1.6.4 Response Time Graph
Listener->Response Time Graph
1.6.5 Graph Results
Listener->Graph Results
强烈要求在测试执行的时候不要打开报表,用命令行执行,然后产生执行报告后导入JMeter。
1.6 整体运行
1.6.1 仅运行登录
将“查询商品”“查看商品详情”吞吐量控制器设置为0%
查看Summary Repoer,仅有“登录页面”和“商品列表页面”
1.6.2 仅运行查询商品
“登录”并发设置为0
“查看商品详情”吞吐量控制器设置为0%。
1.6.3 仅运行查看商品详情
“登录”并发设置为0
“查询商品”吞吐量控制器设置为0%。
1.6.4 多场景运行
“查询商品”吞吐量控制器设置为80%。
“查看商品详情”吞吐量控制器设置为20%。
2 使用Http Put请求
1,打开Tomcat put请求,%TOMCAR_HONE%/conf/web.xml。
代码语言:javascript复制<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
2,启动WEB服务器
3,启动JMeter。Sample->Httprequest
4,运行,查看结果树。
Listener->View Result Tree
Sample->Debug Sample
3 上传多个文件
1,config Element->CSV Data SetConfig
2,修改Http request
3,增加循环次数
4,运行,查看服务器端