和服务器有一次完整交互才会对系统产生压力,web性能测试应该分层来看:
1.客户端
2.接口层
3.数据库层
通常,对服务器端应用程序开展性能测试,是为了验证软件系统是否能够达到预期的性能指标,同时发现软件系统中存在的性能瓶颈,从而实现优化系统的目的。
根据不同的测试目的,性能测试可以分为多种类型,常见的有如下几类:
- 基准测试(Standard Testing)
- 负载测试(Load Testing)
- 压力测试(Stress Testing)
- 稳定性测试
1.基准测试
在单一用户的场景下,对系统的功能进行验证,并且观察系统指标,将基准测试时采集得到的系统性能指标,作为基准测试结果,为后续并发压力测试的性能分析提供参考依据。
2.负载测试
在用户期望的最大负载量场景下进行测试,观察系统性能指标是否正常,通过负载测试,目的是验证系统是否能满足预期的业务压力场景。
3.压力测试
对系统进行逐步加压,观察系统的性能指标,查找系统性能拐点以及瓶颈,压力测试是为了发现在多大并发压力下系统的性能会变得不可接受,或者出现性能拐点(崩溃)的情况。在加压策略上,压力测试会对被测系统逐步加压,在加压的过程中考察系统性能指标的走势情况,最终找出系统在出现性能拐点时的并发用户数,也就是系统支持的最大并发用户数。
4.稳定性测试
在用户期望的负载量场景下进行长时间的测试,观察系统的性能指标,其更关注系统在长时间运行情况下系统性能指标的变化情况,例如,系统在运行一段时间后,是否会出现事务处理失败、响应时间增长、业务吞吐量降低、CPU/内存资源增长等问题。
5.容量测试
在一定性能目标的前提下,系统能够处理的最大能力。
6.配置测试
通过对被测软件的软硬件配置的测试,找到系统各项资源的最优分配原则。
性能指标主要包括业务性能指标和系统资源性能指标:
1.业务性能指标
并发用户数、事务吞吐率、事务平均响应时间、事务成功率
2.系统资源性能指标
- 服务器:CPU利用率、处理器队列长度、内存利用率、内存交换页面数、磁盘IO状态、网卡带宽使用情况等;
- 数据库:数据库连接数、数据库读写响应时长、数据库读写吞吐量等;
- 网络:网络吞吐量、网络带宽、网络缓冲池大小;
- 缓存(Redis):静态资源缓存命中率、动态数据缓存命中率、缓存吞吐量等;
- 测试设备(压力发生器):CPU利用率、处理器队列长度、内存利用率、内存交换页面数、磁盘IO状态、网卡带宽使用情况等。