Web应用在部署前,最好进行压力测试,以衡量其是否达到设计指标,判断其在何种极限条件下应用功能会失效。下面即介绍软件测试中压力测试,尤其是Web应用压力测试的相关知识。
压力测试
压力测试(英语:Stress testing)是针对特定系统或是组件,为要确认其稳定性而特意进行的严格测试。会让系统在超过正常使用条件下运作,然后再确认其结果。进行压力测试的原因可能包括:
- 确认系统在什么条件下会损坏,以及安全使用条件。
- 确认预测系统在什么条件下会损坏或其安全使用条件的数学模型是否准确。
- 确认是否符合预期的规格。
- 确认失效原因。
- 确认系统在正常工作条件以外,是否可以正常运作。
软件测试中的压力测试是在超过正常运作条件以外的条件下运作系统,以确认健壮性的方式。压力测试对于关键任务软件格外的重要,但可以适用于各种的软件。压力测试一般较强调软件在高负载下的健壮性、可用性及异常处理,以及哪些在一般使用环境下算是正常行为。
例如一个网站设计容量是100个人同时点击,压力测试就要是采用120个同时点击的条件测试。
性能指标
web应用的性能指标主要有响应时间,吞吐量,并发量,性能计数器。
响应时间
响应时间指应用执行一个操作需要的时间,即从发出请求到最后收到响应数据所需要的时间。例如:打开一个网站的响应时间、数据库查询一条记录(有索引)的响应时间等等。
实践中通常采用的办法是重复请求,比如一个请求操作重复执行1万次,测试一万次执行的总响应时间之和,然后除以1万,就得到单次请求的响应时间。
吞吐量
吞吐量指单位时间内系统处理的请求数量,体现系统的整体处理能力。对于网站,可用“请求数/秒”、“页面数/秒”或“访问人数/天”、“处理业务数/小时”等来衡量。重要指标有TPS(每秒处理的事物数)、QPS(每秒查询的请求数)、HPS(每秒HTTP请求数)等。
并发量
并发量指系统能够同时处理的请求的数目,这个数字反映了系统的负载性能。对于网站而言,并发数指网站用户同时提交请求的用户数目。
性能计数器
性能计数器描述服务器或操作系统性能的一些数据指标。如System Load、对象与线程数、内存使用、CPU使用、磁盘与网络I/O等使用情况。通过对这些指标设置报警阈值,当监控系统发现性能计数器超过阈值时,就向开发人员和运维报警,及时发现异常并处理。
测试工具
压力测试工具有http_load、apache ab、siege。
参考链接
- 压力测试,by wikipedia.
- 压力测试 (软件),by wikipedia.
- 网站性能测试指标及网站压力测试,by 呦呦鹿鸣.
- Web 性能压测工具 ApacheBench(ab)使用总结,by juejin.