软件压力测试
基本的质量保证行为
软件压力测试是一种基本的质量保证行为,它是每个重要软件测试工作的一部分。软件压力测试的基本思路很简单:不是在常规条件下运行手动或自动测试,而是在计算机数量较少或系统资源匮乏的条件下运行测试。通常要进行软件压力测试的资源包括内部内存、CPU 可用性、磁盘空间和网络带宽。
定义
压力测试是给软件不断加压,强制其在极限的情况下运行,观察它可以运行到何种程度,从而发现性能缺陷,是通过搭建与实际环境相似的测试环境,通过测试程序在同一时间内或某一段时间内,向系统发送预期数量的交易请求、测试系统在不同压力情况下的效率状况,以及系统可以承受的压力情况。然后做针对性的测试与分析,找到影响系统性能的瓶颈,评估系统在实际使用环境下的效率情况,评价系统性能以及判断是否需要对应用系统进行优化处理或结构调整。并对系统资源进行优化。
软件系统的负载压力是指系统在某种指定软件、硬件及网络环境下承受的流量,例如并发用户数、持续运行时间、数据量等。其中并发用户数是负载压力的重要指标。
负载测试是通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足性能指标的情况下,系统所能承受的最大负载量的测试。其中还有一种特定类型的负载测试,它是通过逐步增加软件系统的负载,测试系统性能的变化,并最终确定在什么负载条件下系统性能处于失效状态,以此来获得系统提供的最大服务级别。
并发性能测试通过逐渐增加并发用户数负载,直到系统的瓶颈或者不能接收的状态,综合分析交易执行指标、资源监控指标等来确定系统并发性能的过程。并发性能测试是负载压力测试的重要内容。
疲劳强度测试是指构建系统稳定运行情况下能够支持的最大并发用户数或者日常运行用户数,使其在持续一段时间内执行业务,保证到达系统疲劳强度需求的业务量,通过综合分析交易执行指标和资源监控指标,来确定系统在处理业务上的最大工作强度的过程。大数据量测试包括针对系统存储、传输、统计、查询等业务进行的独立数据量测试,以及结合压力性能测试、负载性能测试、疲劳性能测试相结合的综合数据量测试。
软件性能
软件的性能可以通过响应时间、并发用户数、吞吐量、资源利用率等性能指标来衡量。
(1)响应时间:
是指用户从客户端发出请求到接收完服务器返回结果的整个过程所需花费的时间,包含网络传输时间以及服务器处理时间。从用户角度来看,响应时间应该从客户端计算机处理用户操作并发出请求到客户端程序收到服务器端返回结果并显示出来的时间。
(2)并发用户数:
是指在一定时间内,某一时刻同时与服务器进行会话操作的用户数,并发用户数的类型包括:系统用户数、同时在线用户数,业务并发用户数。
(3)吞吐量:
是指单位时间内,系统处理用户的请求数或页面数量,可以直接反映出软件的承载能力。一般来说,利用每秒钟的请求数或页面数量衡量吞吐量;从业务的角度来看,也可以用每天的访问人数或每小时处理的业务数来衡量。
(4)资源利用率:
是指系统资源(CPU、内存)的利用率,通常用资源的实际使用量与总的资源可用量比值来衡量,包括网络、操作系统、数据库等方面。
以上四种性能指标主要可分为系统资源利用率和系统行为(响应时间、吞吐量等)两个方面。它们之间存在一定的相关性,共同反映出性能的不同方面。比如,响应时间、最大并发用户数、吞吐量和资源利用率可以分别用来衡量软件的及时性、扩充能力和容量、处理能力、运行状态。响应时间越短、承受的并发数越多、吞吐量越大、占用的资源越少,表明系统性能越好,反之性能越差。
测试流程
★编写压力测试计划
编写压力测试计划分为三个阶段:分析数据库应用系统、定义压力测试对象与目标、评审修改压力测试计划。
分析应用系统:一要搞清系统对各个资源的分布和使用情况,它将帮助确定可能系统性能的瓶颈;二是用户在事务中的分布,它将确定压力测试的针对点。定义压力测试目标:测定终端用户事务的响应时间、定义主机最优配置(如内存、CPU、缓存、适配等)、寻找瓶颈(通过压力测试,要找到降低系统响应时间的因素。是资源竞争导致死锁,还是数据库服务器数据锁设置不好,还是网络传输问题?)。评审修改压力测试计划:压力测试计划完成后,要对其进行评审。压力测试计划书的评审人员应包括有经验的用户,软件需求分析员,系统设计员,系统开发员,软件测试员,然后根据评审意见修订并完成测试压力计划书。
★编写压力测试案例
压力测试案例是完成一个测试目的的一组测试时间的序列,测试案例要包括以下几个要素:测试目的,测试环境,测试数据,测试运行程序(可以是脚本),预期结果等。
★多进程模拟多用户
压力测试的执行通常是通过自动化工具执行脚本语言,或通过发包程序发送数据包实现的。前者是通过多进为程运行相同或不同的测试脚本,来模拟多个用户执行相同或不同的任务,实现压力测试。后者要求熟悉数据包的格式,并进行设置。
★设置并发
一个测试脚本常常包含多个事务,即使多个进程同时运行一个脚本,也难以保证脚本内的某个事务同时运行,这将影响对这个事务的响应时间的测试。为了解决这个问题,需要没置并发点,先运行到并发点的进程将等待,当所有进程都运行到并发点时,进行释放,使所有的进程同时运行同一个事务,这样就可以测定与实际比较接近的响应时间。
★运行测试程序并监测系统资源
运行压力测试时还需监测系统资源,监测的对象有:网络阻塞情况、主机CPU使用情况、内存使用情况、缓存使用情况、数据库系统中的数据锁、回滚段、重做日志缓冲区等。监测的结果包括图像与数据文件,并且图像可以实时显示,也可运行结束后分析。
★分析结果
压力测试运行结束后,把所有记录的数据汇总并记录剑文什中。必须对测试的结果进行分析,才能得到结论。可以使用一些图形来比较、观察测试结果。
★优化调整设置
CPU问题:在CPU受到限制的系统中,CPU资源全被使用,并且服务响应时间会很长。这种情况下,必须提高系统的处理能力;
内存与高速缓存问题:内存的优化包括操作系统,数据库,应用程序的内存优化;磁盘(I/O)资源问题:磁盘读写速度对数据库系统是至关重要的,数据库对象在物理设备上的合理分布能改善性能。
调整配置参数:参数配置包括操作系统和数据库的参数配置:优化应用系统网络设置。
★提交测试报告
当压力测试结果可以满足预期需求,或优化和调整已无法改善结果时,最后提交测试报告。在报告中要包括测试提要、测试环境和测试结果,提要应该简单说明测试方法策略范围内容;测试环境应包括资源开销,环境配置等。结果测试必须包括测试是否通过或拒绝,及对测试的结论应进行说明,对系统的性能做出评价。
测试自动化
压力测试可以采取手工测试和利用自动化工具测试两种方式。采用手工测试不仅需要大量的测试人员和机器设备,还要考虑同步操作和对被测系统的同步监控的问题,所以执行起来有一定的局限性,测试结果不一定能够有效地为系统调优提供服务,而且还会耗费巨大的人力和物力。
相比之下,在压力测试中采用自动化测试工具能更快捷地解决问题。自动化测试工具可以在一台或多台机器上模拟成百上千的用户同时执行业务操作的场景,并可以很好地同步用户的执行时间,进行有效的实时监测。因此越来越多的压力测试项目中都用到了自动化的测试工具,自动化测试工具也在压力测试多方面的要求中得到了发展和改良。
利用自动化测试工具进行压力测试是压力测试发展的主流趋势。在实际的测试项目实施中,大都使用三类自动化测试工具,它们分别是商业化压力测试工具、开源压力测试工具和自主研发的压力测试工具。
参考资料
最新修订时间:2023-04-28 11:35
目录
概述
定义
参考资料