这几天在看多线程的知识,看到一些书中给出的一些问题代码和优化代码,自己想着做一下测试来检测在多线程的情况下不同的优化方法到底能有多大的性能提升。可是想到测试就无从下手,于是乎就想着补充一下web性能测试的知识,为以后学习和工作之用。刚刚到图书馆借了一本《零成本实现web性能测试——基于Apache Jmeter和Gatling》,主要想看看Jmeter是怎么做测试的。这里做一些笔记,以便日后复习用。
1 性能测试基础
1.1 性能测试的常见分类
- 负载测试:通过使测试对象承担不同的工作量,以评估测试对象在不同工作条件下的性能行为,以及持续正常运行的能力。负载测试的目标是确定并确保系统在超出最大预期工作量的情况下仍能正常运行。
- 压力测试:压力测试是给软件不断加压,强制其在极限的情况下运行,观察它可以运行到何种程度,从而发现性能缺陷。软件系统的负载压力是指系统在某种指定软件、硬件及网络环境下承受的流量,例如并发用户数、持续运行时间、数据量等。其中并发用户数是负载压力重要指标。
负载测试不同于压力测试,负载测试不强调极限施压,而是依据测试人员的最大预期工作量来进行测试,目的是尽可能的模拟系统的真实运行环境,测出现实情况下系统最大负载程度;而压力测试宗旨就一个:把服务器往死里测,测死为止。
1.2 性能测试指标
2 Jmeter框架
2.1 汇总报告(Summary Report)
- Label:发出的请求的名称,在一个线程组下面可以创建多个请求(种类可以不同)。
- Samples:样例个数,就是发起请求的线程个数。
- Average:所有线程请求的响应时长的平均值(单位是毫秒)。
- Min:单个线程请求响应时长的最小值(单位是毫秒)。
- Max:单个线程请求响应时长的最大值(单位是毫秒)。
- Std.Dev(Standard Deviation):线程请求响应时长的标准偏差。
- Error%:所有请求的错误率。
- Throughput :吞吐量,每秒钟处理的请求数的平均值。
- Received KB/sec:吞吐量,每秒钟接受的kb数。
- Sent KB/sec:吞吐量,每秒钟发送的kb数。
- Avg . Bytes:请求响应的平均字节大小。