如何利于自动化测试脚本进行运行控制

发表于:2009-05-27来源:作者:点击数: 标签:自动化脚本运行
软件自动化测试技术的出现,大大减轻了 测试人员 的压力,显著提高了测试的效率,但是自动化测试脚本的管理是 测试自动化 所面临的又一难题。本文提出了一种自动化测试脚本运行控制方法,对测试脚本进行统一协调管理,力求解决大型业务系统软件自动化程度低,自动

软件自动化测试技术的出现,大大减轻了测试人员的压力,显著提高了测试的效率,但是自动化测试脚本的管理是测试自动化所面临的又一难题。本文提出了一种自动化测试脚本运行控制方法,对测试脚本进行统一协调管理,力求解决大型业务系统软件自动化程度低,自动化测试脚本无法有效管理等问题。这种方法在一定程度上减轻了测试人员管理自动化测试脚本的压力,增强了脚本的可维护性,从而有效的提高了自动化测试的效率。由该方法支持的自动化测试脚本运行控制平台已经在一些大型金融系统得到应用,并取得了良好效果。
关键词:自动化测试;测试脚本;运行控制

0 引言

软件测试作为保证软件质量和可靠性的关键技术,正日益受到广泛的重视。而软件测试自动化,已经成为国内软件工程领域受到广泛关注的课题。不言而喻,软件测试从业者都意识到软件测试这项工作走向成熟化、标准化的一个必经之路就是要实施自动化测试。

本文结合自动化测试框架、创建运行控制点、实现运行控制机制等技术,设计了一套面向行业应用的自动化测试运行控制方法,很好地解决了自动化测试中面临的脚本运行控制问题。

1自动化测试流程

1.1自动化测试

自动化测试就是通过测试工具或其他手段,按照测试工程师的预定计划对软件产品进行自动的测试,它是软件测试的一个重要的组成部分,能够完成许多手工无法完成或者难以实现的一些测试工作。正确、合理地实施自动化测试,能够快速、全面地对软件进行测试,从而提高软件质量,节省经费,缩短产品发布周期。 1.2自动化测试流程

自动化测试工具标准流程提供了一套完整的测试流程框架,软件测试团队可以以它为基础,根据业务发展的实际要求,定制符合团队使用的软件测试流程。自动化测试工具标准流程中的软件测试流程如图1所示。

 


2行业应用面临的运行控制问题及对策

2.1面临问题

目前,行业应用系统越来越多,这些系统可能包括EPR系统,CRM系统等。这些系统在发布之前或升级之前都要经过测试,确保主要功能都能正常运行,错误最少。如何有效地测试不断升级和不断更换应用环境的应用系统,是每个公司都会面临的问题。

同时,目前企业的网络应用环境都必须支持大量用户和不同的软硬件应用环境。难以预知的用户负载和越来越复杂的应用环境使公司时时担心会发生用户响应速度过慢、系统崩溃等问题。这些问题都将不可避免地导致公司收益的损失。

在大型业务系统的测试过程中大都采用了自动化测试工具,但是这些工具只提供了测试的基本手段,缺乏-个可用的自动化测试管理框架,导致自动化测试往往无法得到有效的实施和进行。其根本原因是由于自动化测试建立在业务基础上,具有强烈的行业相关性,而自动化测试工具是与业务无关的,不能自动适应各个行业具体业务需求,测试过程的实施还需要大量的人为干预,自动化测试的实施效果往往很难达到人们的预期目标。如何管理好自动化测试工具脚本,是测试自动化所面临的一大难题。

2.2方法思路

构建自动化测试运行控制平台,首先需要理解业务特点,根据自动化测试框架,设计测试用例,创建控制点,运行测试脚本控制模型,完成自动化测试。

自动化测试运行控制实施步骤如下: (1)根据行业应用自动化测试框架,设计测试用例脚本;
(2)向目标脚本中嵌入若干控制点,取得控制权;
(3)使用测试管理工具和程序实现运行控制机制;

3面向行业应用的软件测试运行控制方法

3.1自动化测试框架

手工测试一般不会涉及到测试脚本。在自动化测试中,需要采用自动化测试工具,每种自动化测试工具都有自己的测试脚本,通过编写测试脚本,实现某个测试用例,运行测试脚本,既可执行该测试用例,并可以通过脚本自动检查测试用例的执行结果。

根据行业应用的诸多复杂特点,我们提出构建自动化测试框架。根据框架,利用行业业务规则和自动化测试脚本语言可以设计测试用例脚本。具体框架如图2所示。

在软件自动化测试中,涉及到回归测试。回归测试是对同一个测试用例的不同版本进行质量检查评估,是一个反复迭代的过程。在这样一个过程中,同一个业务对象在多次测试中反复出现的现象大量存在,测试用例的复用显得尤为重要。根据自动化测试框架,反复迭代可以实现自动化回归测试,直到测试完毕。

3.2创建运行控制点

为了实现对测试脚本的运行控制,需要对各个测试脚本创建运行控制点。而实现这个运行控制,需要知道测试脚本运行的人口和出口,根据测试脚本运行的机制对其进行控制。具体方法如下:

在理解业务规则的基础之上,根据各个测试脚本之间的联系,创建脚本控制点。在生成的目标脚本中嵌入若干控制点(control point),其位置分别位于测试脚本的入口(前置控制点)、出口(后置控制点)和内部(内部控制点),其中前置、后置控制点在生成测试用例时直接置于目标脚本的入口和正常出口,内部控制点则按照需要置于目标脚本一些关键位置:如耗时无法预计的语句前,非正常出口等,以便实施控制。

控制的基本手段是信号灯,信号灯位于创建的中心数据库(DB)的控制表run_signal中,控制点的基本行为就是检查自己的信号灯,并对之做出反应。控制点通过DB接口访问控制信号灯。控制点只对信号灯做出反应,如果是运行信号,则运行,如果是等待信号,则轮询等待,如果是中止信号,则中止运行。前置控制点负责检查运行条件,运行条件由运行控制系统确定;内置控制点检查暂停和中止信号;外置控制点则接受信号灯控制指令(用于协调与其它用例的关系,例如排队)。

在自动化工具目标脚本中,控制点以工具检查点的形式实现。所有的控制点都在运行日志中留一条通过信息,以便审计。

控制表run_signal结构如下:

3.3实现运行控制机制

运行控制发生在测试脚本层面,它针对所有已经发布并且形成测试脚本的用例。分布式环境下的运行控制通过图3实现。

管理端:管理端用JAVA编写,测试用例脚本由测试工程师提交。管理端主要完成以下任务:运行控制的决策系统,负责建立并维护运行队列,控制运行策略和信号灯;管理端将测试用例集加入运行队列中。运行队列中包含所有已经提交运行但未运行完成的用例。

执行端:执行端根据管理端的决策系统,来执行运行队列中的测试脚本,其中运行控制的执行系统,负责分配测试脚本,并按照指定策略启动脚本等也是执行端的功能;

信号灯组:信号灯组主要描述的是准备运行的测试脚本首先判断自己的信号灯,其中信号灯的结构在run_signal结构中已经给出。通过对控制点进行判断,来决定是否运行脚本。主要功能包括:一个受管理端控制的表,里面有针对不同用例的信号灯;

运行队列;通过连接数据库DB,得到测试脚本排队表。再根据执行端确定的顺序执行自动化测试。其中,运行队列中应包含对运行过的脚本和未运行的脚本进行判断处理。主要功能包括:由管理端建立的等待运行的测试用例(脚本)排队,中心数据库(DB)的表。

表1是工作设计文档。

运行队列是可维护的,可以通过改变某个用例的状态(启动、等待、暂停、挂起)来控制用例的运行行为,还可以改变(属于自己的)用例的运行顺序。管理员可以对队列中所有用例的状态和顺序进行调整。运行后的用例加入另一个队列(已运行队列),运行失败的用例将标记为"失败"状态,等待修改或重新启动。

4实例分析

在大型业务系统的测试过程中,自动化测试工具只提供了测试的基本手段,不具有强烈的行业相关性。通过业务规则可以生成不同的测试脚本。根据运行控制机制,我们以银行金融系统"储蓄用户取款"脚本为例说明运行控制机制。

4.1问题描述

大型金融系统都是基于终端界面的,通过对UI界面进行录制,生成基于业务流程的脚本,进行控制管理。

银行金融系统"储蓄用户取款"描述:储蓄用户输入账户密码合法后,先查询储蓄余额,若有余额,则用户可以对其进行取款操作。若取款金额超过储蓄余额,则提示"余额不足";若取款金额小于储蓄余额,则操作成功。最后用户注销退出。

4.2脚本运行控制

通过业务描述,根据规则和经验,我们创建以下简单业务测试脚本:

测试脚本A:用户登陆>查询余额>退出;(用于登陆查询) 
测试脚本B:取款>余额充足>操作成功;(在登陆状态下) 
测试脚本C:取款>余额不足>操作失败;(在登陆状态下)

设计好A、B、C三个测试脚本后。通过运行控制平台,我们可以实现对脚本的运行控制。在数据库DB中创建测试脚本排队表,并创建运行队列Q。对每个测试脚本设置自己信号灯,如余额充足条件下,设置脚本B为运行信号等;并通过管理类Mamgerment中创建Lights实例。可以得到一个储蓄取款的测试用例运行脚本:

其中,脚本A,B共享脚本A运行过程中传递的登陆帐号和密码。在运行控制中增加各个脚本运行的判断条件,采取不同的路径完成自动化测试。然后用自动化测试工具进行测试,得到分析结果。

通过组合各个基础测试脚本,可以实现不同用例采取基础测试脚本组合而成。这样可以实现用例脚本的高可复用性。

5结 论

软件测试尤其是以自动化测试为代表的软件质量保证伴随着行业应用系统的整个生命周期。自动化测试方法的应用大大提高了软件测试工作的效率,当然,自动化测试也存在着一些缺陷:自动化测试不能发现软件新出现的问题,不能根据实际的情况及时调整测试流程,而且自动化测试脚本的编写和管理工作也是一项比较繁杂的工作。本文就自动化测试脚本管理中遇到的问题,提出一种运行控制方法。这种方法在一定程度上减轻了测试人员管理自动化测试脚本的压力,增强了脚本的可维护性。

原文转自:http://www.ltesting.net