为什么学习JMeter?学习jmeter应该具备什么基础知识?
JMeter介绍
Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序)。它可以用来测试静态和动态资源的性能,例如:静态文件,Java Servlet,CGI Scripts,Java Object,数据库和FTP服务器等等。JMeter可用于模拟大量负载来测试一台服务器,网络或者对象的健壮性或者分析不同负载下的整体性能。
同时,JMeter可以帮助你对你的应用程序进行回归测试。通过你创建的测试脚本和assertions来验证你的程序返回了所期待的值。为了更高的适应性,JMeter允许你使用正则表达式来创建这些assertions.
JMeter 可以用来做什么
- 能够对 HTTP 和 FTP 服务器进行压力和性能测试,也可以对任何数据库进行同样的测试(通过 JDBC)。
- 完全的可移植性和 100% 纯 Java,对 JavaWeb 项目兼容性好。
- 完全 Swing 和轻量组件支持(预编译的 JAR 使用 javax.swing.*)包。
- 完全多线程框架允许通过多个线程并发取样和通过单独的线程组对不同的功能同时取样。
- 精心的 GUI 设计允许快速操作和更精确的计时。
- 缓存和离线分析/回放测试结果。
以上内容来源于“360百科”。
JMeter 的优劣
优势
- 轻量级、体积小、免安装;
- 开源软件、扩展性好,我们可以根据自己的需要修改源代码;
- 支持代理录制,支持第三方软件 Badboy 录制的脚本,脚本可移植性好;
- 对 JavaWeb 支持性好,符合当前形势,Java 语言编写的系统和项目多;
- 支持分布式性能测试;
- 容易与 Jenkins 进行集成。
劣势
当然工具没有绝对性的好坏,它也有其劣势,我们只有认清它的劣势,才能更好的使用它。缺点如下:
- 不支持自动关联,必须手动书写关联脚本;
- 不支持 HTTPS 的脚本,但是可以直接测试 HTTPS 的请求;
- 不支持模拟浏览器的用户行为,每个用户只能代表一个并发;
- 没有自带的资源监控体系,需要借助第三方插件;
- 支持的协议较少(这里要说一点,支持的协议虽然少,但是确精)。
- 不支持录制的脚本和回放脚本进行比较。
当然这些所谓的劣势如果反过来想,它支持的不好,那就说明它支持的功能一定非常完备,并且我所列举的劣势是和强大的 LoadRunner 作的比较,如果读者有足够的时间,我个人也鼓励研究下 Loadrunner。
Jmeter工具涉及的基础知识
常见的接口协议
- Http 超文本传输协议
- Https 安全超文本传输协议
- FTP 文件传输协议
- TCP 网络控制协议
- IP 互联网协议
- UDP 用户数据协议
Http协议响应码(测试可定位错误)
- 1XX:信息响应类,表示接收到请求并且继续处理(中间状态,瞬间)
- 2XX:处理成功响应类,表示动作被成功接收、理解和接受 eg:200(处理成功)
- 3XX:重定向响应类,为了完成指定动作,必须接受进一步处理 eg:329(重定向)
- 4XX:客户端错误,客户请求包含语法错误或者是不能正确执行 eg:响应码404>我们请求的资源不存在
- 5XX:服务端错误,服务端不能正确执行一个正确的请求 eg:500
- 响应码在服务端日志中会显示,在之前业务中出现过服务端抛出异常,遗留bug没处理,大错误。
Http协议请求响应模型(一次请求的生命周期或简单的软件分层)
客户端发起请求 到 API层(逻辑处理后)将数据发送 到 DB层(数据库)
常用HTTP请求方式
- get
- post
- options
- head
- connect
- put
- delete
- trace