使用 RFT 能够高效准确自动的对应用软件的操作响应速度进行测试。本文以测试一个普通文档管理软件打开和保存文档的速度为例,介绍了使用 RFT 进行此类测试的基本流程框架和通用的方法,以及通过使用 RFT API 等方法快速准确的查找到 TestObject 及其属性或调用其方法,从而得到准确的软件操作响应速度的过程。
软件操作响应速度测试的利器——Rational Functional Tester
在一个普通的应用软件开发过程中,我们需要了解应用软件执行操作的响应时间,并由此判断和分析软件在运行时带给用户在响应速度上的体验,从而为用户提供更完善更友好的软件产品。
那么如何才能准确的对软件的操作响应时间进行准确的测量以达到我们的目的呢?如果仅仅通过人工手动的方式,凭借掐秒表,算时间的方法,是很难进行准确高效的测量的,而且由于软件版本的 daily build,我们还需要保证软件不同 build 之间性能的延续性,如果都是通过人工测试来完成这样的工作的话,将会耗费大量的人力物力和时间,而且测试的准确性也很难得到保证。
因此,我们不可避免的要通过自动测试方式对软件的性能进行测量。在 IBM Rational 提供的一系列软件自动测试产品中,首先映入我们眼帘的就是 IBM Rational Performance Tester (RPT) ,但是,RPT 是一个为测试 web 应用软件而设计的自动测试平台,它通过模拟并发用户的数量,产生一系列的报告,标识出 web 页面的性能、URL 和事务等信息,从而帮助查明 web 系统的瓶颈。因此它并不能适用于普通的非 web 应用软件的性能测试。
而 IBM Rational Functional Tester (RFT) 却恰恰是用于测试 Java、Web、.NET 等各种应用软件的一个自动化测试工具。通过 RFT,可以访问到应用软件中的各个对象以及对象的方法和属性,并以此为依据产生测试脚本,让应用程序自动运行,并校验程序运行的结果,从而完成自动测试。
在 RFT 中要获得软件的一个操作所花的时间非常简单:
startTime = System.currentTimeMillis();
……Operation process……
endTime = System.currentTimeMillis();
operationCostTime = endTime – startTime
由于调用的是 System.currentTimeMillis() 函数,因此得到的 operationCostTime 也是精确到以毫秒为单位。
那么,下面让我们以一个普通的文档管理软件为例,一起来探讨一下如何使用 RFT 对应用软件进行操作响应方面的自动性能测试吧。
要通过 RFT 自动测试一个操作的响应时间,首先需要精确定义操作起始以及操作完成的标识。
操作的起始往往都比较容易决定,比如说按下某个按钮,点击某个菜单等等;而判断某个操作的结束却往往需要更仔细的斟酌:
因为操作的结束对于用户来说可能只是某个界面上的改变,但对于程序本身来说,却包含着许多对象的创建或者删除,更多对象状态和属性的改变。那么要在 RFT 中通过程序脚本来判断操作是否结束 , 要使得程序脚本具有可执行性,在程序中就需要明确的对某个对象的某个属性或方法进行判断,才能由此准确的测试出应用软件的响应时间。
因此,操作完成的 RFT 判断标识,往往都需要与软件的开发设计人员进行充分的讨论交流,根据程序中的具体实现流程,分析总结出软件中哪一个对象的创建或显现或是哪一个对象的哪一种状态的改变能够最恰当的标识出操作的结束。
一般的操作响应时间判断流程如下: