很多时候,我们都知道软件有黑白盒测试,但往往还遗漏掉了一个性能测试。
性能测试种类:
- 负载测试
- 压力测试
- 并发测试
- 配置测试
- 可靠性测试
- 容量测试
1、负载测试
(1)定义
负载测试是指逐步增加系统负载,测试系统性能的变化,并最终确定在满足系统性能指标的情况下,系统所能够承受的最大负载量。
(2)举个例子
负载测试类似于举重运动,通过不断给运动员增加重量,确定运动员身体状况保持正常的情况下所能举起的最大重量。
对于负载测试来说,前提是满足性能指标要求,例如一个软件系统的响应时间要求不超过 2s ,则在这个前提下,不断增加用户访问量,当访问量超过1万人时,系统的响应时间就会变慢,响应时间会超过 2s 。因此,可以确定系统响应时间不超过 2s 的前提下最大负载量是1万人。
2、压力测试
(1)定义
压力测试也叫强度测试,它是指逐步给系统增加压力,测试系统的性能变化,使系统某些资源达到饱和或系统崩溃的边缘,从而确定系统所能承受的最大压力。
(2)压力测试与负载测试的区别
负载测试是在保持性能指标要求的前提下系统能够承受的最大负载,而压力测试则是使系统性能达到极限的状态。
压力测试可以揭露那些只有在高负载条件下才会出现的 Bug ,如同步问题、内存泄露等。
(3)峰值测试
性能测试中还有一种压力测试叫做峰值测试,它是指瞬间(不是逐步加压)将系统压力加载到最大,使测试软件系统在极限压力下的运行情况。
3、并发测试
(1)定义
并发测试是指通过模拟用户并发访问,测试多用户并发访问同一个应用、同一个模块或者数据记录时是否存在死锁或其他性能问题。
(2)举个例子
并发测试一般没有标准,只是测试并发时会不会出现意外情况,几乎所有的性能测试都会涉及到一些并发测试,例如多个用户同时访问某一条件数据,多个用户同时在更新数据,那么数据库可能就会出现访问错误、写入错误等异常情况。
4、配置测试
(1)定义
配置测试是指调整软件系统的软硬件环境,测试各种环境对系统性能的影响,从而找到系统各项资源的最优分配原则。
(2)举个例子
配置测试不改变代码,只改变软硬件配置,例如安装版本更高的数据库、配置性能更好的CPU、内存等,通过更改外部配置来提高软件的性能。
5、可靠性测试
(1)定义
可靠性测试是指给系统加载一定的业务压力,使其持续运行一段时间(如 7*24h ),测试系统在这种条件下是否能够稳定运行。
6、容量测试
(1)定义
容量测试是指在一定的软硬件及网络环境下,测试系统所能支持的最大用户数、最大存储量等。
(2)举个例子
容量测试通常与数据库、系统资源(如 CPU 、内存、磁盘等)有关,用于规划将来需求增长(如用户增长、业务量增加等)时,对数据库和系统资源的优化。
性能测试流程
1、性能测试流程分析
(1)分析性能测试需求
在性能测试需求分析阶段,测试人员需要收集有关项目的各种资料,并与开发人员进行沟通,对整个项目有一定的了解,针对需要进行性能测试的部分进行分析,确定测试目标。
例如客户要求软件产品的查询功能响应时间不超过 2s ,则需要明确多少用户量情况下,响应时间不超过 2s 。对于刚上线的产品,用户量不多,但几年之后可能用户量会巨增,那么在性能测试时是否要测试产品的高并发访问,以及高并发访问下的响应时间。
(2)制定性能测试计划
确定测试环境: 包括物理环境、生产环境、测试团队可利用的工具和资源等。
确定性能验收标准: 确定响应时间、吞吐量和系统资源(CPU、内存等)利用总目标和限制。
设计测试场景: 对产品业务、用户使用场景进行分析,设计符合用户使用习惯的场景,整理出一个业务场景表,为编写测试脚本提供依据。
准备测试数据: 性能测试是模拟现实的使用场景,例如模拟用户高并发,则需要准备用户数量、工作时间、测试时长等数据。
(3)设计测试用例
性能测试用例是根据测试场景为测试准备数据,例如模拟用户高并发,可以分别设计 100个 用户并发数量、 1000个 用户并发数量等,此外还要考虑用户活跃时间、访问频率、场景交互等各种情况。测试人员可以根据测试计划中的业务场景表设计出足够的测试用例以达到最大的测试覆盖。
(4)编写性能测试脚本
正确选择协议。
根据工具的支持情况和测试人员熟悉程度选取脚本语言。
编写测试脚本时,要遵循代码编写规范,保证代码的质量。
做好脚本的维护管理工作。
(5)测试执行及监控
1)了解几个指标
性能指标: 本次性能测试要测试的性能指标的变化。
资源占用与释放情况: CPU 、内存、磁盘、网络等使用情况。性能测试停止后,各项资源是否能正常释放以供后续业务使用。
警告信息: 一般软件系统在出现问题时会发出警告信息,当有警告信息时,测试人员要及时查看。
日志检查: 经常分析系统日志,包括操作系统、数据库等日志。
2)结果影响
性能测试监控对性能测试结果分析、对软件的缺陷分析都起着非常重要的作用。
在测试过程中,如果遇到与预期结果不符合的情况,测试人员要调整系统配置或修改程序代码来定位问题。
由于性能测试执行过程需要监控的数据复杂多变,它要求测试人员对监控的数据指标有非常清楚的认识,同时还要求测试人员对性能测试工具非常熟悉。作为性能测试人员,应该不断努力,深入学习,不断积累知识经验才能做的更好。
(6)运行结果分析
性能测试完成之后,测试人员需要收集整理测试数据并对数据进行分析,将测试数据与客户要求的性能指标进行对比,若不满足客户的性能要求,需要进行性能调优然后重新测试,直到产品性能满足客户需求。
(7)性能测试报告
性能测试完成之后需要编写性能测试报告,阐述性能测试的目标、性能测试环境、性能测试用例与脚本使用情况、性能测试结果及性能测试过程中遇到的问题和解决办法等。软件产品不能只进行一次性能测试,因此性能测试报告需要备案保存,作为下次性能测试的参考。