最近在学习性能测试,整理了下一些知识点。
首先从ISO9216质量模型切入,这个模型展示了去完整测评一个软件的时候,需要从哪些维度去考虑。如下图所示,一般需要从功能性、可靠性、易用性、效率、维护性、可移植性这6个维度去测评。软件的性能测试就是从效率这一维度去测评软件。
简单的对效率这一维度里的内容进行解读:
- 时间特性:就是软件的快慢,能否达到用户的需求?
- 资源利用率:在达到时间特性以后,对资源的利用率是否在用户的期望之下?
那么,给出性能测试的定义:
观察系统在一个给定的环境和场景中的性能表现是否与预期目标一致,评判系统是否存在性能缺陷,并根据测试结果识别性能瓶颈,改善系统性能的完整的过程。
在定义里,需要特别关注标红的部分,在描述性能测试时,需要基于给定的环境和场景。给定的环境涉及: 硬件服务器、操作系统、网络、数据库、Web服务器、应用服务器。场景就是指用户如何使用。
在做性能测试时,目标是很多的,针对不同的目标就会采用不同的测试策略。
- 负载测试
在一定的软件、硬件及网络环境下,通过改变负载方式、增加负载等来发现系统中所存在的性能问题。
这种测试主要用于确定系统所能承载的最大用户数(系统不崩溃),最佳用户数(用户体验最好,系统能支撑的最大的数量)。和在不同用户数(常见用户数)下的系统响应时间及服务器的资源利用率。
- 压力测试
在一定的软硬件及网络环境下,通过模拟大量的虚拟用户向服务器产生负载,使服务器的资源处于极限状态(超出能力范围)下长时间连续运行。
目的测试服务器在高负载情况下是否能够稳定工作,找出系统最薄弱环节。然后可以进行正对性优化。
- 并发测试
通过模拟多个用户并发访问同一个应用、同一存储过程或数据记录以及其他并发操作。
测试是否存在死锁、数据错误等故障。并发抢资源很容易发生问题。
- 稳定性测试
在一定的软件、硬件及网络环境下,模拟一定数量虚拟用户运行一种或者多种业务,长时间的运行(7*24)系统。
目的是检测系统在长时间运行下的稳定性和性能指标是否符合预期。可以发现资源泄露这类问题。