性能测试是为了保证产品发布后其性能能够满足用户的需求,本文结合具体案例介绍了应用
我们都知道系统存在性能问题的时候,我们就要要在性能测试过程中查找形成系统瓶颈和故障的根本原因,可是如何做呢?有如下步骤。
1.确定明确的测试目标
性能调优是是无止境的,所以在测试之前应确定一个明确性能调优目标,这也是后面“评估性能验证”的一个基准,也是测试终止的一个基准。在本案例中目标设定为:在相同系统环境配置下30个并发用户在1~5秒钟内完成各类在线操作。
2.测试需求分析
性能调优的测试分析主要目的是要挖掘出可能造成系统瓶颈的因素,并为后面的测试用例设计提供保证。影响系统性能有很多种原因,在此应关注如下几个关键点:
● 应用配置需求: 例如应用整体框架、涉及到哪些第三方的组件、应用层与数据库层的接口、使用了什么数据库等。
● 系统配置需求: 例如用户客户端配置、客户端与服务器端的网络配置、应用服务器或数据库服务器操作系统等。
● 用户使用情况需求: 例如用户分布情况; 哪些模块用户使用比较频繁; 在用户操作的数据有哪些特点等。
这方面工作是非常繁杂的,而且要求测试人员具有挖掘可能造成系统瓶颈因素的洞察力和敏锐感,但是很多测试人员在接手测试之后,很快进入到测试用例设计阶段。实践证明,这样做往往都适得其反,要么工期延期,要么项目开发失败。这个过程在测试整体过程中是非常关键的一环。性能测试分析有个特点: 它关注的是应用的整体,或者会仔细分析围绕着应用的各种外部因素,比如说它所涉及到的硬件、第三方软件,而不会深入到项目具体的内部。这是因为性能测试关注的是项目整体、是一种黑盒测试方法,我们关心一个项目的整体在运行时所暴露出来的问题。在此案例中我们获取到如表所示需求。
3.测试用例设计
此过程主要目的是设计出一些合理的场景去验证在需求分析阶段获得的可能影响性能的因素是否是造成系统瓶颈的因素。测试用例设计一般包括测试策略、测试案例、测试内容。
测试策略一般包括对比测试环境与真实的业务操作环境,真实业务操作环境又可能涉及局域网测试环境与机房测试环境等
测试案例主要是根据测试需求分析的结果制定出在测试执行时系统的执行方法,比如本案例中“5个人同时录入不同的新客户信息,以及具体的模拟步骤”。在测试案例设计时应注意如下几点:
● 虚拟用户的操作步骤要尽量类似于真实用户的操作。
● 操作的数据要类同于真实用户实际使用数据,例如在案例中用户录入客户信息时,根据需求得到的结果,我们可以设计有3~4个虚拟用户在录入一些小客户的信息,1~2个虚拟用户在录入大客户的信息等。
● 在案例设计时要充分考虑到需求中用户对模块的使用频率。使得在模拟时每个模块使用情况尽量地类似于真实环境。
测试内容一般包括并发性能测试、疲劳强度测试、大数据量测试以及系统资源监控等,我们在做性能调优测试时主要是做并发性能测试以及系统资源监控这些方面的工作。从对系统产生并发性能测试过程中监控系统中各种资源的变化,来判断导致性能瓶颈的原因。
4.脚本开发数据的准备以及测试执行与监控
测试执行与监控的主要目的是根据设计方案去验证系统是否存在瓶颈,给测试分析提供各种分析数据。此过程会与下面的“测试分析”过程不断进行重复执行,直至真正确定出系统瓶颈所在。
笔者认为,在此过程中如果有测试工具能够满足测试要求,那么应尽量使用测试工具,不要手工去开发测试程序,因为做企业项目往往时间紧张,而且测试工具毕竟是一个成熟的产品,在各方面都得到验证。使用工具将会缩短测试周期,而且现在市场上有很多成熟的测试软件。例如: Mercury的LoadRunner、IBM的Robot、Compuware的QALoad等。在这个案例中笔者使用的是Mercury的 LoadRunner。关于一些技术细节笔者就不再赘述了,在这里主要提两点。
一是数据的准备。数据准备一定要关注数据的质量和数量,不要出现一些不符合业务逻辑的废数据,并且数据量要满足测试运行的需要。例如测试需要100组数据,但是实际只准备了50组,从而导致测试执行结果出现大的偏差。
二是测试执行。除了正确按照设计的要求去设置各种参数之外,还要关注系统是否存在功能问题,这往往成为性能测试的“盲点”。原则上性能测试之前必须确保功能测试已经完备,但是任何事情都不绝对,所以一般做性能测试之初,都会模拟一个用户去运行设计的场景,主要是确保“测试脚本正确性”、“在设计的场景中应用系统不存在功能上的问题”。很多性能测试过程往往因为功能问题导致性能测试失败,或者是测试延期的现象。
文章来源于领测软件测试网 https://www.ltesting.net/