
Apache JMeter
简介
JMeter 是开源软件 Apache 基金会基于 Java 开发的一个性能测试工具,用于测试部署在服务器端的应用程序的性能,用于对软件做压力测试。
JMeter 最初被设计用于 Web 应用测试,但后来扩展到了其他测试领域,可用于测试静态和动态资源,如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库和 FTP 服务器等等。
JMeter 可对服务器、网络或对象模拟巨大的负载,在不同压力类别下测试它们的强度和分析整体性能。
另外,JMeter 能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证程序是否返回了期望结果。
JMeter 是一种接口性能测试工具,主要用于接口测试和性能测试。
作用
1.能够对HTTP和FTP服务器进行压力和性能测试, 也可以对任何数据库进行同样的测试(通过JDBC)。
2.完全的可移植性和100% 纯java。
3.完全 Swing 和轻量组件支持(预编译的JAR使用 javax.swing.*)包。
4.完全多线程 框架允许通过多个线程并发取样和 通过单独的线程组对不同的功能同时取样。
5.精心的GUI设计允许快速操作和更精确的计时。
6.缓存和离线分析/回放测试结果。
部署
傻瓜式安装启动
简单的自动化测试用例
添加虚拟用户组
如下图所示,右击“Test Plan” > “Add” > “Threads(Users)” > “Thread Group”。JMeter 是由 Java 实现的,并且使用一个 Java 线程来模拟一个用户,因此线程组(Thread Group)就是指一组用户的意思。
设置线程组参数
Number of Threads (users):指虚拟用户数。默认为 1,则表明模拟一个虚拟用户访问被测系统。如果想模拟 100 个用户,则此处输入 100。
Ramp-Up period (seconds): 虚拟用户增长时长。举个例子:比如你测试的是一个考勤系统,实际用户登录使用考勤系统的时候并不是大家一起登录。实际的使用场景可能是 9:00 上班,那么从 8:30 开始,考勤系统会陆陆续续有人开始登录,直到 9:10 左右。如果完全按照用户的使用场景来设计测试,此处应输入 40(分钟)* 60(秒)= 2400。但实际测试一般不会设置如此长的 Ramp-Up 时间,原因是你难道想要等上 40 分钟吗?一般情况下,可以估算出登录频率最高的时间长度,比如此处从 8:55 到 9:00 登录的人最多,那么这里设置为 60秒。如果“线程数”输入为 100,则意味着在 1 分钟内 100 个用户登录完毕
Loop Count:循环次数。默认为 1,意味着一个虚拟用户做完一遍事情之后,该虚拟用户停止运行。如果选中“永远”,则意味着测试运行起来之后就根本停不下来了,除非手动停止。
添加被测页面
接下来的一步就是要加入实际被测页面,右击“Thread Group” > “Add” > “Sampler” > “HTTP Request”。
设置请求参数
接下来需要设置一下“HTTP Request”的属性,如下所示:
名称:输入“example”,就是被测试网页的描述性文字。
服务器名称或IP:输入 “www.example.com”。剩下的属性可以按照被测系统的属性按需配置,现在都可以为空。
保存与运行测试
现在的测试脚本已经可以运行了,先点击“保存”按钮;然后点击“运行”按钮。
然后点开“Options” > “Log Viewer”可以查看运行的日志。
这 JMeter 运行看起来也太不直观了吧?那如果我的测试有问题了,怎么发现啊?别着急,JMeter 提供了“Listener”让用户来观察测试结果。
添加结果监听器
如下图所示,右击“Thread Group” > “Add” > “Listener” > “View Results Tree”来查看性能测试过程中请求和响应信息。
添加完毕后,保存测试脚本,再次运行。
运行测试完毕之后,点击“View Results Tree” ,你可以看到一些测试期间一些有用的信息,比如发送的请求的信息和响应数据等。
至此为止,已经学会了如何编写一个最简单的 JMeter 性能测试用例。