响应时间是指对请求作出响应所需要的时间。我们常说某个软件的性能好不好,从用户的角度来说,主要是指响应时间是否足够快。响应时间是软件性能测试中用户直接感受的性能指标。一般情况下,响应时间越短,系统的性能越好。然而,响应时间却没有一个标准的值来参考。合理的响应时间取决于实际的应用场景与人们可以接受的程度来确定,而不能依据测试人员自己的设想来决定。如我们点击一个网站上的新闻关键词,如在2秒内能迅速看到新闻内容,感觉性能是非常好了。如果我们的oce(online charging engine在线计费引擎系统)计费平均响应时间为2秒的话,相信移动早将oce项目转给其它开发商了。

  吞吐量:单位时间内系统处理的客户请求的数量。该性能指标直接体现了软件系统的性能承载能力。一般可以用请求数/秒或字节数/秒等来度量。

  并发用户数:同时向系统(服务端)发送请求的数量。该性能指标直接体现了软件系统(服务端)承受大的并发访问的能力。针对我们的oce,则用caps来度量。实质是并发用户数请求/秒在我们通信计费领域中的对应指标。

  资源利用率:主要是指系统的各种资源使用状态。这里资源主要是指系统cpu占用率,内存占用率以及系统的I/O统计情况。通过这些资源占用率可以评估所测系统对资源的要求以及相应可能出现的瓶颈。从而为系统调优提供方向指导。

  一般来说,用户对各项指标提出的明确需求是性能测试指标的主要来源,如果用户没有明确提出性能指标,则要根据行业标准以及相关的经验并结合具体的实现过程,通过分析后提供适合的性能指标值。

  4性能测试一般过程

  性能测试工程师从接收到一个性能测试project后,一般要经过下面六个过程。即“性能测试需求分析→制定性能测试计划→测试设计→测试开发→测试执行→测试结果评估”这六个基本阶段。

  性能测试需求分析:主要是明确我们性能测试的目的。通常情况下,性能测试工程师会接收到类似“给oce做一下性能测试,测试一下免费资源赠送进程的处理能力”等测试需求不是十分明确的测试任务。面对这样的测试任务,需要我们对这样的测试需求进行分析,将非常抽象的测试需求转化为相应的性能指标值。获取相应的性能指标值是我们的测试目的。如“测试一下免费资源赠送进程的处理能力”,根据我们免费赠送进程的设计与实现应转化为“免费资源赠送进程每秒插入多少条赠送记录,免费资源进程运行时资源消耗等”测试目的。

  制定性能测试计划:性能测试需求分析阶段主要是明确我们测试目的,性能测试计划阶段为实现这个目的而必须要做的规划与设计。它是整个性能测试过程的成功执行的指引、监控与保证。在性能测试计划中应包含测试目的(测试性能指标值),测试策略,测试环境的要求(软硬件),测试数据准备,测试资源需求(人力与财力),测试进度,测试风险评估,测试需完成的相关文档等关键要素内容。其中的关键要素内容,可查阅相关文档。

  测试设计:在本文主要是指测试用例设计。性能测试用例的设计依据是业务建模。业务建模是指对系统各种关键业务场景的抽取以及它们之间比例的确定。业务模型的成功建立是成功执行性能测试的关键。业务建模的方法一般是采用两种方法。一是借鉴相同系统已有的模型。二是分析历史数据。有时候,在这两个方法都无法展开时,根据2-8原则进行建立。

  测试开发:性能测试一般是借助于性能测试工具进行的。但工具是需要通过开发相应的脚本才能完成相应的任务。即使有的项目可以采取录制的手段获得脚本,但在绝大多数情况下,需要对脚本进行相应修改与调试才能满足我们性能测试目的。另外,工具不是的,有些项目不适用于已有的工具。此时需要我们进行必要的软件与脚本开发,如开发动态库使目前的工具能支持我们的测试需求,或者是重新开发相关的模拟器与挡板程序以及相应性能统计分析工具。

  测试执行:测试执行相对来说比较简单,在测试环境与测试数据准备妥当之后,根据业务模型建立的业务场景直接运行相应的测试用例。测试执行过程要注意的地方有3个,每次测试前的环境恢复,测试过程与结果的监控,测试后环境的清理。其中,测试过程的监控,主要是指系统资源使用情况的监控,如(cpu利用率,mem占用率,I/O频度),同时也包括特定要求的其它监控,如磁盘占用率等。

  测试结果评估:根据每次测试过程中监控到的系统资源使用情况,以及借助于自动化工具给出的测试结果分析报告或采用脚本(或分析程序)对日志文件进行统计分析的结果分析报告,对照测试目的,从而得出测试的结果是否通过的结论。同时对测试分析与统计的结果要进行评估,评估测试结果与真实理论结果之间的偏差。并写成测试报告。如果测试结果与期望值差距太大,要在测试报告中分析原因并写出自己的改进建议供研发人员参考。

  5总结

  本文主要从性能测试的基本概念、测试目的、性能测试的指标以及性能测试的一般过程进行了相应的论述。重点阐述了几个易混淆的几个基本概念与性能测试的一般过程。因篇幅关系,性能测试的一般过程中的部分概念与内容没有进行更深入的探讨与实例说明。本文旨在明辨概念与如何进行性能测试提供一般的方法指导。与实践相结合的部分,准备在后续的小文中单独进行总结。另外,上述性能测试的一般过程是我在实际性能测试过程中的总结,有些小的项目不一定完全适合这个过程。因此,具体的性能测试项目可根据实际情况进行相应的裁剪。