一、性能测试概述
所谓性能测试就是通过性能测试工具模拟正常、峰值及异常负载状态下对系统的各项性能指标进行测试的活动。性能测试能够验证软件系统是否达到了用户期望的性能需求,同时也可以发现系统中可能存在的性能瓶颈及缺陷,从而优化系统的性能
1、性能测试目的:
1)验证系统性能是否满足预期的性能需求,包括系统的执行效率、稳定性、可靠性、安全性等
2)分析软件系统在各种负载水平下的运行状态,提高性能调整效率
3)识别系统缺陷,寻找系统中可能存在的性能问题,定位系统瓶颈并解决问题
3)系统调优,探测系统设计与资源之间的最佳平衡改善并优化系统的性能
二、性能测试目标
1、响应时间(响应时间越短,表明软件的响应速度越快,性能越好)
响应时间指系统对用户请求作出响应所需要的时间。这个时间是指用户从软件客户端发出请求到用户接收到返回数据的整个过程所需要的时间,包括各种中间件(如服务器、数据库等)的处理时间
2、吞吐量(吞吐量是软件系统衡量自身负载能力的一个很重要的指标,吞吐量越大,系统单位时间内处理的数据就越多,系统的负载能力就越强)
吞吐量是指单位时间内系统能够完成的工作量,他衡量的是软件系统服务器的处理能力
3、本法用户数(并发用户数量越大,对系统的性能影响越大)
并发用户数是指同一时间请求和访问的用户数量
4、TPS
TPS是指系统每秒钟能够处理的事务和交易的数量,它是衡量系统处理能力的重要指标
5、点击率
点击率是指用户每秒向Web服务器提交的HTTP请求数,这个指标是Web应用特有的一个性能指标,通过点击率可以评估用户产生的负载量,并且可以判断系统是否稳定。点击率只是一个参考指标,帮助衡量Web服务器的性能
6、资源利用率
资源利用率是指软件对系统资源的使用情况,包括CPU利用率、内存利用率、磁盘利用率等,资源利用率是分析软件性能瓶颈的重要参数
三、性能测试种类
1、负载测试
负载测试是指逐步增加系统负载,测试系统性能的变化,并最终确定在满足系统性能指标的情况下,系统所能够承受的最大负载量
2、压力测试
压力测试也叫强度测试,它是指逐步给系统增加压力,测试系统的性能变化,使系统某些资源达到饱和或系统崩溃的边缘,从而确定系统所能承受的最大压力
压力测试可以揭露那些只有在高负载条件下才会出现的Bug,如同步问题、内存泄露等
3、压力测试与负载测试:
负载测试是在保持性能指标要求的前提下系统能够承受的最大负载,而压力测试则是使系统性能达到极限的状态
4、峰值测试
性能测试中还有一种压力测试叫做峰值测试,它是指瞬间(不是逐步加压)将系统压力加载到最大,使测试软件系统在极限压力下的运行情况
5、并发测试
并发测试是指通过模拟用户并发访问,测试多用户并发访问同一个应用、同一个模块或者数据记录时是否存在死锁或其他性能问题
6、配置测试
配置测试是指调整软件系统的软硬件环境,测试各种环境对系统性能的影响,从而找到系统各项资源的最优分配原则。配置测试不改变代码,只改变软硬件配置,例如安装版本更高的数据库、配置性能更好的CPU、内存等,通过更改外部配置来提高软件的性能
7、可靠性测试
可靠性测试是指给系统加载一定的业务压力,使其持续运行一段时间(如7*24h),测试系统在这种条件下是否能够稳定运行
8、容量测试
容量测试是指在一定的软硬件及网络环境下,测试系统所能支持的最大用户数、最大存储量等
四、性能测试流程
性能测试流程图
分析性能测试需求->制定性能测试计划->设计性能测试用例->编写性能测试脚本->测试执行及监控->运行结果分析->性能测试报告
1、分析性能测试需求
在性能测试需求分析阶段,测试人员需要收集有关项目的各种资料,并与开发人员进行沟通,对整个项目有一定的了解,针对需要进行性能测试的部分进行分析,确定测试目标
2、制定性能测试计划
1)确定测试环境:包括物理环境、生产环境、测试团队可利用的工具和资源等
2)确定性能验收标准:确定响应时间、吞吐量和系统资源(CPU、内存等)利用总目标和限制
3)系统调优,探测系统设计与资源之间的最佳平衡改善并优化系统的性能
4)准备测试数据:性能测试是模拟现实的使用场景,例如模拟用户高并发,则需要准备用户数量、工作时间、测试时长等数据
3、设计测试用例
性能测试用例是根据测试场景为测试准备数据,例如模拟用户高并发,可以分别设计100用户并发数量、1000用户并发数量等,此外还要考虑用户活跃时间、访问频率、场景交互等各种情况。测试人员可以根据测试计划中的业务场景表设计出足够的测试用例以达到最大的测试覆盖
4、编写性能测试脚本
1)正确选择协议
2)根据工具的支持情况和测试人员熟悉程度选取脚本语言
3)编写测试脚本时,要遵循代码编写规范,保证代码的质量
4)做好脚本的维护管理工作
5、测试执行及监控
1)性能指标:本次性能测试要测试的性能指标的变化
2)资源占用与释放情况:CPU、内存、磁盘、网络等使用情况。性能测试停止后,各项资源是否能正常释放以供后续业务使用
3)警告信息:一般软件系统在出现问题时会发出警告信息,当有警告信息时,测试人员要及时查看
4)日志检查:经常分析系统日志,包括操作系统、数据库等日志
6、运行结果分析
性能测试完成之后,测试人员需要收集整理测试数据并对数据进行分析,将测试数据与客户要求的性能指标进行对比,若不满足客户的性能要求,需要进行性能调优然后重新测试,直到产品性能满足客户需求
7、性能测试总结
性能测试完成之后需要编写性能测试报告,阐述性能测试的目标、性能测试环境、性能测试用例与脚本使用情况、性能测试结果及性能测试过程中遇到的问题和解决办法等。软件产品不会只进行一次性能测试,因此性能测试报告需要备案保存,作为下次性能测试的参考



