软件测试 | JMeter
Apache JMeter 是 100%的 Java 桌面应用程序,用于对软件做压力测试。它最初被设计用于 Web 应用测试,但后来扩展到其他测试领域。另外,JMeter 能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证被测程序返回了期望的结果。为了保证最大限度的灵活性,JMeter 允许正则表达式创建断言。
Apache JMeter 可以用对于静态和动态资源(文件、Server、Perl 脚本、Java 对象、数据库和查询、FTP 服务器等)的性能进行测试。它可以用于对服务器、网络或对象模拟繁重的负载来测试他们的强度或分析不同压力类型下的整体性能。测试人员可以使用它做性能图形分析或者测试服务器/脚本/对象在大并发负载下的表现。
1.JMeter 的历史
Apache Software Foundation 的 Stefano Mazzocchi 是 JMeter 的最初开发人员。起初是为了测试 Apache JServ 的性能(一个后来被 Apache Tomcat 项目替代的项目)。后续的开发者重新设计了 JMeter,增强了 GUI 并添加了对功能测试的支持。
2.JMeter 远景
随着开发人员利用插件架构的优势,JMeter 的能力迅速扩展。将来开发的主要目标是使得 JMeter 尽可能地变成一个有用的衰退测试工具,而无损 JMeter 的压力测试能力。
JMeter 主要特点
JMeter 的主要特点包括如下。
(1)支持对多种服务类型进行测试,包括:
Web-HTTP,HTTPS
SOAP
Database via JDBC
LDAP
JMS
Mail-POP3(S)and IMAP(S)
(2)支持通过录制/回放方式获取测试脚本
(3)具备高可移植性,是 100%纯 Java 程序。
(4)采用多线程框架,允许通过多个线程并取样及通过独立的线程组对不同的功能同样取样。
(5)精心设计的 GUI 支持高速用户操作和精确计时。
(6)支持缓存和离线的方式分析/回放测试结果。
(7)具备高扩展性,包括:
插拔式的取样器支持无限制扩充测试能力。
提供各种负载统计表和可插拔的计时器。
数据分析和可视化插件提供动态输入数据,以及通过预置函数对测试数据进行操作。
支持用脚本构造采样器(1.9.2 及以上版本支持 BeanShell).
尽管从 Web 服务器或者其他远程服务的角度,JMeter 看上去很像是一款浏览器,但实际上它并不是浏览器,因为它仅支持浏览器的部分操作。例如,JMeter 不会执行 HTML 页面中包含的 JavaScript,而且 JMeter 对于 HMTL 页面的处理方式也与浏览器不同(JMeter 有可能会以 HTML 方式读取服务器响应,但其所耗时间不会被计算到任何一次采样中)。
JMeter 常用术语
采样器(Samplers):采样器是 JMeter 测试脚本的基础单元,用户可以用它来向服务器发出一个特定的请求,采样器会在超时前等待服务器的响应。
逻辑控制器(Logic Controllers):用户通过逻辑控制器来控制 JMeter 测试脚本的执行顺序,以便测试能够按照用户期望的顺序和逻辑执行。
监听器(Listeners):监听器被用来手机测试结果信息,并以用户指定的方式加以展示。
配置元件(Configuration Elements):配置元件被用来设置一些 JMeter 测试脚本公用的信息。
断言(Assertions):断言被用来验证服务器实际返回的信息与用户期望的情况是否相符。
定时器(Timers):定时器被用来保存 JMeter 测试脚本与时间相关的一些信息,例如思考时间(Think Time)
前置处理器(Pre-Processors):在前置处理器的作用范围内,任何采样器被执行前,都要先执行前置处理器。
后置处理器(Post-Processors):在后置处理器的作用范围内,任何采样器被执行后,都要执行对应的后置处理器。
测试计划(Test Plan):测试计划是 JMeter 测试脚本的根节点,关于整个测试脚本的一些基础设置,可以在测试计划中设定,例如用户定义变量。
线程组(Thread Group):线程组定义了一个虚拟用户池,其中每一个虚拟用户都使用同样的测试脚本。
工作台(WorkBench):工作台被用来保存暂时不适用的测试元素,当测试人员保存测试计划时,工作台中的内容不会被一起保存。
JMeter 测试结果字段的意义
JMeter 测试结果字段的意义如下,
Label:定义 HTTP 请求名称
Samples:表示这次测试中一共发出了多少个请求。
Average:平均响应时长——默认情况下是单个 Request 的平均响应时长,当使用了 Transaction Controller 时,也可以以 Transaction 为单位显示平均响应时长。
Mediam:中位数,也就是 50%用户的响应时长。
90%Line:90%用户的响应时长。
搜索微信公众号:TestingStudio 霍格沃兹的干货都很硬核
评论