2 通过JMeter本身录制脚本
1)进入控制面板,选择“网络和Internet->Internet选项”,在打开的窗口中选择连接标签,接下来点击【局域网设置】按键,从而打开Window浏览器代理。勾选为LAN使用代理服务器(这些设置不用于拨号或VPN连接)(X),在地址栏中输入:127.0.0.1,端口输入一个本地没有被占用的端口,比如1234,最后勾选对于本地地址不使用代理服务器(B)前的复选框。如图12所示。
图12 Window设置浏览器代理
2)启动ebusiness被测软件。
3)打开JMeter,右键点击测试计划,选择“添加->线程(用户)->线程组”,添加一个线程组。对于测试计划的
详细解释参见第4.2-1节介绍;对于线程组的详细解释参见第4.2-7节介绍。
4)右键点击线程组选择“添加->配置元件->HTTP请求默认值”。对于HTTP请求默认值的详细解释参见第4.2-5节介绍。在高级选项卡中确保不要勾选从HTML中获取所有内容资源。如图13所示。
图13 HTTP请求默认值配置
5)右键点击测试计划选择“添加->配置元件-> 用户定义的变量”。在里面加入2个变量。username值为“cindy”,password值为“8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92”(123456经过SHA-256散列后的值,可以利用一些在线工具获得这个值,比如https://crypot.51strive.com/sha256.html),即为我们等一下录制登录功能所使用的登录数据。
6)右键点击测试计划选择“添加->非测试元件->HTTP代理服务器”。对于“HTTP代理服务器”的详细解释参见第4.2-5节介绍。
7)在HTTP代理服务器按照图14进行修改。
图14 设置HTTP代理服务器
l端口号改为第1)步设置的端口号,这里为1234。
l目标控制器设为“测试计划>线程组”。
l分组设为“不对样本分组。
8)在Request Filtering标签中的Exclude加上过滤字符串“(?i).*\.(bmp|css|js|gif|ico|jpe?g|png|swf|woff|woff2)(.*?)”,通过这个过滤,录制过程中产生的对css、js、png等格式的文件都产生了过滤。如图15所示。
图15 设置录制过滤
9)点击【Start】按键开始录制。在图4-16的弹出菜单中选择【OK】按钮。
图16 JMeter录制根CA认证创建确认菜单。
10)出现如图4-17窗口,打开浏览器开始进行录制。
图17 录制界面
11)在浏览器中输入192.168.1.3:8000,进入登录界面。(注意必须用真实的IP地址,而不能用127.0.0.1或localhost,因为如图12,对于本地地址不使用代理服务器)。这个真实的IP地址可以在被测机器中,通过命令行中输入ipconfig命令获得。
C:\Users\xiang>ipconfig Windows IP 配置 . . . . . . . 无线局域网适配器 WLAN: 连接特定的 DNS 后缀 . . . . . . . : IPv6 地址 . . . . . . . . . . . . : 240e:388:622d:9200:6848:cfef:33d2:36b1 临时 IPv6 地址. . . . . . . . . . : 240e:388:622d:9200:a0f2:caec:19c1:359 本地链接 IPv6 地址. . . . . . . . : fe80::6848:cfef:33d2:36b1%6 IPv4 地址 . . . . . . . . . . . . : 192.168.1.3 子网掩码 . . . . . . . . . . . . : 255.255.255.0 默认网关. . . . . . . . . . . . . : fe80::1%6 . . . . . . .
由于我这里面使用的是WIFI,所以找“无线局域网适配器 WLAN”中的信息,这时可以看出,无线局域网适配器给我的机器分配的IP地址为192.168.1.4。
12)在用户名中输入“cindy”,密码栏中输入“123456”,按【登录】按钮,当商品列表弹出以后,点击图4-17中的【停止】按钮,结束录制。
13)录制完毕出现如图18所示。
图18 用JMeter本身录制功能后产生的原始树结构
可以看到,由于在第8)步进行了过滤设置,所以css,png等格式的文件都没有被捕获。
14)录制完毕千万不要忘记关闭第1)步设置的代理,否则你可能就上不了外网了。
接下来,同Badboy一样,也要在这基础上进行修改。
15)删除HTTP代理服务器元件。
16)删除不需要的,修改一下名称。
17)修改名为“/-12”的HTTP请求为“登录”,其他信息按照图4-8修改。
18)修改名为“/login_action/-13”的HTTP请求为“商品列表”,其他信息按照图4-9修改。由于在第5)步设置了“用户定义的变量”,又由于录制过程中输入的用户名和密码与第5)步设置的数据一致(密码必须为经过SHA-256散列后的数据,也就是发给HTTP请求的数据),所以这里的用户名和密码以${username}和${password}显示,如图19所示。
图19 HTTP请求中用户名和密码以变量方式显示
在JMeter中,如果变量名为var,获取其值的方法为${var}。
19)删除名为“/goods_view/-14”的HTTP请求,因为在请求名为“商品列表”HTTP中已经通过“跟随重定向”自动跳转到/goods_view/界面了。
20)保留一个HTTP信息头管理器,并且把它移动到线程组下面,如图20所示。
图20 移动“HTTP信息头管理器”到“线程组”下
21)右击线程组在弹出菜单中选择“添加->配置元件- >HTTPCookie管理器”,把它拖到“登录”元件上面,并且确认为标准(standard)格式。
22)右击“线程组”在弹出菜单中选择“添加->逻辑控制器- >循环控制器”,把它拖到登录HTTP请求元件上面,HTTP Cookie管理器下面。
23)接下来把登录和商品列表两个HTTP请求元件作为循环控制器的子元素。如图21所示。
图21 登录和商品列表元件作为循环控制器的子元素。