一种自动化测试工具使用问题的分析与解决

时间:2022-08-22 09:49:04

一种自动化测试工具使用问题的分析与解决

摘要:随着信息科学技术的发展,如今的软件日益复杂。在如此严峻形势下为了保证软件质量,软件测试必然要扮演越来越重要的角色,尤其对在现代的商业公司开发的大型软件。现在,自动化测试在一定程度上可以将繁琐的测试更加高效。SilkTest就是一款自动化测试软件,它的优势显而易见,但是有时也会产生一些意想不到的错误。该文将给出一些解决方法,使该软件更加高效。

关键词:自动化测试;SilkTest;解决方法

中图分类号:TP27 文献标识码:A 文章编号:1009-3044(2013)01-0077-03

1 概述

软件测试的目的就是监测和排除缺陷,以确保软件产品在可用性、功能性以及可操作性等多方面满足软件需求[1]。自从软件危机之后,软件测试越来越受到人们的重视。现如今,软件测试是软件生命周期的一个重要阶段,测试工作量会占整个开发周期的40%甚至于60%[2]。IEEE在1983年给软件测试下的定义是:“使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别”[3]。软件测试不等同于程序测试。需求说明、概要设计说明、详细设计说明和源程序等都是软件测试的对象[4],这就更进一步地保证了软件质量。

软件自动化测试是件测试的一个分支,顾名思义,就是通过测试工具或者其他的手段,按照软件测试工程师的预定计划,让机器代替传统的手工测试,并且能够达到和手工测试一样的最终效果[5]。自动化测试在过去的20年已经有了很大的发展[6],但保证软件质量的重要使命始终没有改变。自动化测试的实施,可以比手动化测试更快地执行测试,缩短测试时间,可以更快地将软件推向市场[7],而对于企业的管理人员来说,他们也想通过自动测试来控制项目成本,提高软件质量,达到客户的满意度[8]。此外,自动化测试还具有可以参数化、可重用、低成本、一致性、有效利用资源以及解决测试与开发之间的矛盾等诸多优点[5],自动化测试工具应运而生并在软件测试中发挥重要作用。

本文就当前的一款优秀的自动化测试工具——SilkTest做简单的介绍,并就在使用过程中该工具出现的问题提出一些解决方法,以使该工具更好的为测试人员使用。

2 SilkTest介绍

2.1 SilkTest简介

SilkTest是一款业界领先的,用于对企业级应用进行功能测试的基于标准的测试平台,可用于测试Web,Java或者是传统的C/S结构。SilkTest本身提供了很多功能,使用户能够高效率地进行软件的自动化测试,比如测试的计划和管理;直接的数据库访问及校验;灵活强大的脚本语言;内置的恢复系统;以及具有使用同一套脚本进行跨平台及浏览器进行测试的能力[9]。

2.2 SilkTest的优势

2.2.1 灵活性

SilkTest的使用是很灵活的,主要表现在以下几个方面:

1)SilkTest支持既客户端/服务器模式,也支持Web模式。但是这两者是由不同的技术和编程语言来实现的。

2)测试人员可以根据自己的习惯使用不用的编程语言来编写测试脚本,比如, C#, Java。当然,SilkTest本身也提供了一种名叫4Test的脚本语言。

3)测试人员可以很好的组织管理SilkTest的图形用户界面(GUI)中定义的对象。这也是SilkTest一个很大的优势。SilkTest本身所提供的4Test脚本语言是一种类似于C++的面向对象的编程语言。它使用了很多诸如类,对象,以及继承等面向对象语言的概念。因此,所有GUI窗口的控件都可以以独特的字符串作为标签而唯一的指定。这些控件根据标签的相对位置关系而形成一种继承关系,之后所有控件的标签及其识别都在一个或多个.inc文件中定义。这样,如果控件发生变化,只需要修改.inc文件即可。

4)SilkTest可以很方便灵活地的模拟用户对界面的操作。同样的,由于4Test语言是一种类似于C++的面向对象的语言,因此GUI的对象提供了很多方法供测试人员使用,通过调用不同的函数,从而模拟对GUI对象的不同的操作,进而大大增强了SilkTest的实用性。

5)SilkTest可以很方便地管理和运行测试用例。在SilkTest中,一个脚本可以对应一个活多个测试用例。此外,测试人员还可以把测试用例放到test plan中。如图1所示。这样,当运行test plan时,其中的测试用例就可以一个接一个的自动运行。当然,测试人员也可以增加或删除test plan中的脚本,或者运行test plan中的部分脚本,这就大大提高了脚本运行的灵活性。

2.2.2 稳定性

使用自带的系统恢复机制,SilkTest可以很容易地让测试环境恢复到之前的状态。因此,当运行多个测试用例时,每个测试用例都不会影响到其他测试用例的执行,从而保证了该情况下运行结果的正确性。

2.2.3 强大的记录功能

对于在GUI上的操作,用户不仅可以手动编程,还可以使用SilkTest提供的强大的记录功能。SilkTest可以在不同的层次做记录,比如记录整个测试用例的执行过程,记录GUI上的一个操作,甚至于界面和界面上控件及控件标记的声明,以及窗口的定位等等。

2.2.4 调试

SilkTest也提供了较强大的调试功能。比如,可以通过单步调试从而确定当前脚本的执行状态。

2.3 SilkTest的测试过程

在SilkTest的使用过程中,SilkTest Agent是一个很重要的组成部分, 正是由于SilkTest Agent将脚本语言中的语句转换成对GUI控件的操作,从而实现自动化测试。SilkTest提供了两种类型的Agent,分别是Classic Agent和Open Agent。现以Classic Agent为例,简单介绍一下SilkTest的使用。如图2所示:

1)和C++类似,首先,要建立一个工程,其中.vtp文件保存了该工程所创建的文件的名字和位置,.ini文件则是工程的初始化文件。

2)使扩展可用。这里,扩展就是一个.inc文件,它用来使在开发环境中使用了非标准控件的基本程序可用。

3)设置系统恢复。设置系统恢复将会创建一个frame.inc文件,该文件确定了开始测试时所调用的应用程序。之后,测试人员可以在该文件中设置基本状态,同时,也可以定义GUI中的控件。

4)读写测试用例。一般情况下,测试人员在frame.inc中定义GUI中的控件,在.t文件中编写脚本程序。此外,测试人员还可以通过添加.inc文件定义自己的函数,从而在方便编程的同时也减少了代码重复。

5)如果有很多测试用例要运行,则可以通过创建test plan以提高效率。

3 SilkTest的问题

在提供诸多优异功能的同时,有时,SilkTest表现却不尽如人意。SilkTest也有着其他自动化测试工具的一个显著问题:在进行界面操作时,经常会发生控件不能识别的情况。也就是说在frame.inc中所定义的控件无法与GUI 中相应的控件对应起来,从而不能在GUI中不能识别出该控件,从而导致对该控件的操作无法进行,如图3所示。尤其是在较为复杂的脚本中,要对界面做连续操作时(如安装应用软件时,需要输入相应的参数并不断点击“下一步”来获取新的操作界面),如果发生该问题,则会导致后续操作无法进行,进而导致整个脚本运行的失败。

4 SilkTest常见错误的解决方法

该问题在SilkTest的使用中发生的概率比较高,并在脚本运行失败的原因中占据着很大的比重,因此解决该问题对于充分发挥自动化测试的优势有着重要的意义。

对于该问题的发生,测试人员的疏忽是一个重要的原因。因此,测试人员可以采取多种措施,避免该问题的出现。

4.1 使扩展可用

通过使扩展可用,可以使得在运行环境中使用了非标准控件的程序正常运行,并使SilkTest正确识别出这些非标准控件。

4.2 操作之前确定该控件是否可用

由于自动化测试中,对GUI的操作速度比较快,因此,会发生两个操作之间的时间间隔过短 的情况。此时,如果前次操作的结果还没正常显示而下次操作已经开始,就会发生控件不能识别的情况。通常,这也是测试人员经常疏忽的一个情况。此时,如果通过调用控件的成员函数IsEnabled()来确定该控件是否可用,如果不可用,则再调用sleep()函数做适当的等待,之后再做相应的操作,则可以杜绝该情况的发生。当然,也可以自己定义一个完整的确认函数,置于.inc文件中,需要时可以直接调用,从而可以大大减轻测试人员的负担,提高代码的可重用性。具体代码如图4所示。

4.3 激活要使用的窗口

在有些测试中,可能会同时打开多个窗口,如果当前窗口是活跃的,但此时需要对另一窗口的控件做操作,则会导致控件确认失败。因此,如果要对某一窗口的控件做第一次操作时,通过调用窗口的成员函数SetActive()激活该窗口,从而避免问题的发生。

5 总结

由于SilkTest本身所具有的灵活性,稳定性,强大的记录功能,以及可调试等易于使用的优势,在自动化测试中,SilkTest是一个很好的选择。然而,在使用过程中,一个比较严重的控件确认失败的问题也是经常出现的。该文对此提出了三种可能解决的方法,在使用过程中对解决这一问题起到了重要作用,很大程度上避免了该问题的发生,从而减轻测试人员的负担,更进一步发挥了自动化测试的优势,保证了测试的质量。

参考文献:

[1] 应杭.软件自动化测试技术及应用研究 [D].杭州:浙江大学,2006.

[2] 王娜. 软件自动化测试的研究与应用[D].大连:大连理工大学,2008.

[3] 张瑾, 杜春辉.自动化软件测试 [M].北京:机械工业出版社,2004.

[4] Robin F.Goldsmith, Proactive Test[EB/OL].http://.

[5] 陆登.自动化测试在大型软件系统的应用于研究[D].杭州:浙江大学,2010.

[6] Dustin.自动化软件测试-入门、管理与实现[M].北京:机械工业出版社,2006.

[7] Binder.Class modality and testing [J].Object Magazine,1997,6(2):61-62.

[8] 刘群策.LoadRunner和软件项目性能测试[M].北京:机械工业出版社,2006.

[9] 百度百科[EB/OL].http:///view/5136325.htm.

上一篇:浅谈燃气工程的造价控制 下一篇:浅谈轨道交通中桥梁质量控制