【接口/性能】Jmeter-01

测试需求跟上一篇实践一样,区别是之前用python-requests去实现,现在用Jmeter实现。

使用Jmeter测试授权流程,https请求,步骤描述如下

1)用户名密码登录CAS服务器,拿到TGT

2)使用TGT,拿到ST

3)通过接口url+ST,向应用服务器请求数据


打开Jmeter后自动生成一个测试计划,在测试计划下新建线程组(一个线程组可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户)。先把这个用户组将要执行的动作添加进去,如下步骤。

一、Jmeter发送HTTPS请求

成功地发送HTTPS请求,关键之处就是代理的设置。首先我们要在线程组里添加一个录制控制器,不然无法生成Jmeter的CA证书文件。然后在工作台右键添加-〉非测试元件-〉HTTP代理服务器。选择默认端口是8080即可。我电脑8080端口被占用了,用8888也可以。直接点击启动。

【接口/性能】Jmeter-01_第1张图片

接着找到工具栏“选项”-〉SSL管理器。打开bin目录下的ApacheJMeterTemporaryRootCA.crt,开启Jmeter代理。

二、添加HTTP请求头

出于服务器安全方面的考虑,在设计的时候,公共请求头还添加了一个自定义的特殊的字段。在这里加上就好了。

【接口/性能】Jmeter-01_第2张图片

三、添加HTTP请求

因为是HTTPS,将端口号填写443。协议:https。方法我这里用的是POST。将服务器名称和路径填入。并添加请求参数username和password。底部代理服务器填写本机地址和之前设置的端口号8888。(后面会发现运行后,录制控制器那里会记录下通过该代理服务器的请求)

【接口/性能】Jmeter-01_第3张图片

这里的HTTPS请求实现了第一步:用户名密码登录CAS服务器,拿到TGT,可以看到响应信息中TGT的值。

【接口/性能】Jmeter-01_第4张图片

四、正则表达式提取器

接下来需要实现第二步:使用TGT,拿到ST。怎么在新增的HTTP请求中用到上一请求的返回值呢?这里就用到正则表达式提取器。右键后点击:添加>后置处理器>正则表达式提取器。

正则表达式括号中表示提取的内容。

【接口/性能】Jmeter-01_第5张图片

正则表达式提取器说明如下:

【接口/性能】Jmeter-01_第6张图片

然后添加新的HTTP请求,填入相应路径和参数。这里路径里需要用到刚才提取的TGT值,使用${TGT}进行引用。

【接口/性能】Jmeter-01_第7张图片

最后的两个请求实现第三步:通过接口url+ST,向应用服务器请求数据。需要用到getTicket中的ticket返回值。也是使用正则表达式提取器就好了。

【接口/性能】Jmeter-01_第8张图片

五、扩展

1)性能测试

实现单独某个接口测试后,可以进行该接口的性能测试。比如测试系统的及时性、处理能力等特性。通过响应时间、吞吐量、并发用户量去衡量服务器性能。

这里可以在线程组的参数中调整。最开始说到,线程组中的每个线程都可以理解为一个虚拟用户。

线程数:虚拟用户数

Ramp-up Period:设置的虚拟用户数需要多长时间全部启动。如果线程数为10 ,准备时长为2 ,那么需要2秒钟启动10个线程。也就是每秒钟启动5个线程。

循环次数:每个线程发送请求的次数。如果线程数为10,循环次数为100,那么总请求数为1000。

【接口/性能】Jmeter-01_第9张图片

运行后查看聚合报告,也有其它类型的比如图形结果、结果树等。

衡量指标一般有:平均响应时间,90%Line值(指90%请求响应时间不会超过这个值),错误率(一般要求为0或<0.01%),吞吐量等。

【接口/性能】Jmeter-01_第10张图片

2)Cookie管理器

对于软件或web中一些需要登录后才有权限的操作,当进行接口测试时不可能每一次都登录一次。这时候可以在最开始登录后,获取Cookie信息,以便其它操作直接用到。可以用Cookie管理器。这个还没仔细研究,所以仅作为可能的扩展写在这里。

你可能感兴趣的:(【接口/性能】Jmeter-01)