软件测试 | 认识性能测试
1、性能测试的概念
性能测试是通过自动化的测试工具模拟多种正常峰值及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是负载逐渐增加时,测试系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或不能接受的性能点,来获得系统能提供的最大服务级别的测试。
在计算机领域,软件性能测试被用来判断计算机、网络、软件程序或者驱动程序的速度和效率。这一过程会在同一试验环境下进行大量测试,以便于衡量系统功能的响应时长或者MIPS(每秒执行指令数目)等指标。其他系统特性,如可靠性、可量测性、互用性等,也可以用性能测试来衡量。性能测试通常与压力测试一起进行。
2、性能测试的目的
性能测试的目的是验证软件系统是否能够达到用户提出的性能指标,同时发现软件系统中存在的性能瓶颈,以优化软件,最后起到优化系统的目的。性能测试包括以下几个方面:
- 评估系统的能力:测试中得到的负荷和响应时长数据可以被用于验证所计划的模型的能力,并帮助做出决策。
- 识别体系中的弱点:受控的负荷可以被增加到一个极端的水平并突破它,从而修复体系的瓶颈或薄弱的地方。
- 系统调优:重复运行测试,验证调整系统的活动是否得到了预期的结果,从而改进性能。
- 检测软件中的问题:长时间的测试执行可导致程序发生由于内存泄漏引起的失败,揭示程序中隐含的问题或冲突。
- 验证稳定性(Resilience)、可靠性(Reliability):在一个生产负荷下执行测试一定的时间是评估系统稳定性和可靠性是否满足要求的唯一方法。
3、性能测试的常见分类
性能测试包括负载测试、强度测试和容量测试等。
- 负载测试(Load Testing):负载测试是指通过测试系统在资源超负荷情况下的表现,来发现设计上的错误或验证系统的负载能力。子啊这种测试中,将使测试对象承担不同的工作量,以评测和评估测试对象在不同工作量条件下的性能行为,以及持续正常运行的能力。负载测试的目标是确定并确保系统在超出最大预期工作量的情况下仍能正常运行。此外,负载测试还要评估性能特征,如响应时长、事物处理速度和其他与时间相关的性能指标。
- 压力测试(Stress Testing):在软件工程中,压力测试是对系统不断施加压力的测试,是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。例如测试一个Web站点在大量的负荷下,何时系统的响应会退化或失败。
- 容量测试(Volume Testing):容量测试确定系统可处理同时在线的最大用户数。
4、性能测试的常见指标
在实际工作中我们经常会对两种框架的软件进行测试: B/S和C/S,它们关注的指标有哪些区别?
对于B/S架构的软件,一般会关注如下Web服务器性能指标
Avg Rps:平均每秒钟的响应次数=总请求测试/秒数。
Avg time to last byte per terstion(mstes):平均每秒业务脚本的迭代次数。
Successful Rounds:成功的请求。
Failed Rounds:失败的请求。
Successful Hits:成功的点击次数。
Failed Hits:失败的点击次数。
Hits Per Second:每秒点击次数
Successful Hits Per Second:每秒成功的点击测试。
Failed Hits Per Second:每秒失败的点击次数。
Attempted Connections:尝试连接数。
Throughput:吞吐率。
对于C/S架构的程序,由于软件后台通常为数据库,所以我们更注意数据库的测试指标。
User Connections:用户连接数,也就是数据库的连接数量
Number of Deadlocks:数据库死锁
Butter Cache Hit :数据库Cache的命中情况
注意,在实际性能测试过程中,需要观察的性能指标并不限于以上提到的这些,需要根据实际情况做出选择和权衡,有些指标如CPU占用率、内存占用率、数据库连接池等,也有非常重要的参与意见。
搜索微信公众号:TestingStudio霍格沃兹的干货都很硬核