软件测试工程师求职面试准备-第5天(Jmeter)

1、Jmeter-What
一般情况下,我们提压力测试,通常指是指负载测试和压力测试.
我们做压力测试,基本上会使用到工具进行测试,我常用的工具,一个是 jmeter,另外一个是 loadRunner。
我先介绍一下 jmeter 吧,jmeter 是 Apache 组织开发的基于 java 的压力测试工具,支持接口测试,压力测试,还可以做录制回放操作,操作比较简便。

 

2、Jmeter-How
2.1、整体流程
我先说一下 JMeter 的操作的整体流程吧,我们测试的时候,通常是创建一个线程组,指定并发的线程数量,然后指定要测试的接口,创建相应的监听器,比如表格结果,结果树和聚合报告信息,通过监听器来监听测试是否通过或者接口是否存在什么问题
其中在结果树中可以监测到整体的请求信息,就拿 Http 请求这种来讲,其实就是整个 http 协议的所有信息,包括请求头,请求参数,请求路径,还有响应头,响应结果等信息。 对于表格查看结果,可以看到每个请求的简单信息,本次请求的时间,以及平均的时间。
在聚合报告中,我们就可以看到整体的信息了。比如可以看到平均响应时间,90%Line  也就是 90%的用户请求低于的时间。还有吞吐量  TPS,还有错误率,还有用流量来计算的吞吐量。这些都可以看到。通常,聚合报告就是反应整体的数据。

2.2、Jmeter 参数化
做压力测试时,我们经常需要替换参数,在 Jmeter 中,有多种参数化的形式。可以在测试计划中设置全局参数,可以设置用户参数,还可以在前置处理器中设置用户参数。在进行多线程并发的时候,如果需要多个参数,可以使用 csv 配置元件。比如做登陆操作,后台有可能会限制一个用户不能重复登陆多次,如果
演示登陆的并发操作,可以使用 Jmeter 中 csv 配置元件,将用户信息导出来,放到文件中,就可以让线程共享这些数据。另外,对于一些随机变化的参数,可以使用 Jmeter 中的函数助手,生成随机函数,进行参数化测试。比如注册这样的操作,用户名要求唯一的,那就可以使用随机函数来模拟出来。

2.3、Jmeter 断言-检查点
在测试中,断言操作经常用到,jmeter 的断言操作可以在请求后边设置一个断言结果,判断响应结果或者是响应状态码是否和预期的一致。

2.4、Jmeter 逻辑控制器
在 Jmeter 中,逻辑控制器的应用比较广泛,我们可以把一组操作放到简答控制器中,用来声明范围。也可以设置循环控制器,比如我们注册 1 次,登陆 10 次,就可以使用循环控制器。还有事务控制器,对于一个完整的事务,可以使用事务控制器来控制。

2.5、Jmeter 定时器
在 Jmeter 中定时器类型也比较多,我们会经常用到固定定时器,可以设置启动线程组的延迟时间是固定的。
还有高斯定时器,这种时间是可以设置随机值。另外,还有同步定时器,同步定时器可以用来做集合点,比如设置某个线程数,等并发到了该线程值的时候,才开始执行并发任务。

2.6、Jmeter 后置处理器,
我们常用到的是正则表达式提取器,可以用来提取上一个请求的响应结果,用在
下一个请求中。比如项目中会有条目展示,如果我们想要继续查看详情,就需要提取条目 id,用来做下一个请求。这里还可以用到 foreach 循环控制器来完成。

2.7、Jmeter 插件
对于 Jmeter 插件,常用的有场景设计插件,这个还是非常不错的一个功能。我们创建线程的时候,会设置线程组,而线程组太死板,不灵活。可以安装场景控制的插件,比如一开始延迟启动多少线程,如何递增启动线程,线程总数多少,总的测试时间多长,都可以使用场景控制插件来完成。
对于结果监听,结果树,表格,聚合报告都不够直观,我们可以通过安装图表插件来进行结果收集。看起来更加直观一些。比如可以获取到每秒事务量的图表,获取到平均响应时间的图表,都比较人性化。
这里有一点需要注意,就是监测服务器数据的时候,需要在服务器上启动一个插件,serverAgent,才能看到服务器的 cpu 和内存等数据。

2.8、Jmeter 脚本录制
对于 Jmeter 脚本录制,我掌握的有两种方式,第一,可以使用 Jmeter 内置的 http 代理服务器录制脚本,这种配置方便,但是会录制无用信息。不过好处式可以录制手机端的请求。 也可以使用第三方工具,badboy 录制,这种录制相对人性化一些,也会过滤掉一些请求,比如 jpg,css 等。

2.9、Jmeter 数据库压力测试
有些时候,还会用到 Jmeter 去压测数据库,当然我们不会随便压测数据库。一般是当我们压测接口的时候,发现某个接口性能比较差,再进一步判定问题的时候,会压测数据库。
压测数据库,需要配置驱动,需要设置连接池大小,需要使用 sql 去操作数据库。如果我们想要看具体的哪条 sql 问题的话,还需要从开发那里拿到具体的 sql 进行压测。

2.10、NON GUI 形式测试
所谓 non GUI,就是我们不需要通过页面进行测试,这个也是我们推荐的测试方式,会提高测试机性能。或者在 linux 上,我们也没法打开图形化页面,就可以使用 NON GUI 形式的指定进行。
可以指定脚本,可以指定生成 jtl 文件的位置,还可以生成 html 报告文档。
Jmeter -n -t xxx.jmx(脚本文件) -l xx.jtl(生成结果文件) -e -o xxx.html

2.11、Jmeter分布式压力测试
在进行压测的时候,如果我们进行大并发的压测
,往往一台测试机是达不到这么高的并发量的。那就可以使用分布式压测方式,设置一台控制器,然后几台压力机,咱们通常叫“肉鸡”,进行压测,这种压测也并不复杂,只需要做一些简单配置。比如在肉鸡身上配置连接的端口,配置启动jmeter server ,就可以被连接测试了。在控制机 master 上我们,关联上肉鸡的 ip 和端口,就可以控制肉鸡进行分布式压力测试了。

软件测试工程师求职面试准备-第5天(Jmeter)_第1张图片


 

 

 

 


 

 

你可能感兴趣的:(软件测试工程师求职面试准备-第5天(Jmeter))