您当前的位置:首页 > 计算机论文>软件开发论文

软件自动化测试技术研究的技术分析

2015-08-05 09:04 来源:学术参考网 作者:未知

 作者简介:鲜征征(1977-),女, 广东金融学院计算机科学与技术系讲师,研究方向为软件开发、软件测试、数据挖掘。
  0引言
  软件测试是使用人工或自动化手段来运行、检测软件系统的过程,是软件开发必不可少的环节和软件工程实践的重要组成部分,自动化测试是软件测试发展的必然结果。成功实施自动化测试的关键是选用适合自己测试项目的自动化测试工具,然而,不管选用何种测试工具,都会带来相应的测试成本:商业测试工具昂贵,开源测试工具虽然免费,但却拥有较高的使用成本,且免费的测试工具性能比较单一,无法支持整个自动化测试的实施,有时,即使在付出了相应的测试成本后,测试效果依然不如人意。
  因此,开发适合自己项目的特定的测试工具将是一种行之有效的解决方案。其中“猴子”自动化测试工具也正是在这样的背景中提出的。由于项目资源投入有限,大型而通用的测试工具的开发和维护需要耗费项目组不少的资源,而具有简单功能的“笨猴子”的开发成本相对于收益是可以接受的。本文将在分析自动化测试的主要技术后给出一个“猴子”自动化测试工具的设计步骤和实现的关键技术,其中的方法可以为将来设计功能更强大的“猴子”测试工具奠定一定的基础。
  1自动化测试技术
  1.1自动化测试优势
  针对手工测试,自动化测试有着很强的优势,即借助计算机的计算能力可以重复、不知疲倦地运行,对数据能进行精确的、大批量的比较,而且不会出错。因此,自动化测试适宜用在需要重复执行机械化的界面操作、计算、数值比较、搜索等方面。应该充分利用自动化测试工具的高效率来帮助测试人员完成一些基本测试用例的执行,从而实现更加快速的回归测试,并提高测试的覆盖率。虽然,自动化测试的目的是帮助人工,但是手工测试仍有很多不可替代的地方,例如很多数据的正确性、界面是否美观、业务逻辑的满足程度等都离不开测试人员的人工判断。因此,为了让软件测试更加顺利和取得更好的效果,通常是自动化测试和人工测试相结合,让其充分发挥各自的优势。
  1.2自动化测试工具选择
  自动化测试工具可以将复杂的测试工作自动化或半自动化, 减少测试工作量, 提高测试工作效率、减少测试开销, 所以需要选择一个合适的且满足企业信息系统工程环境的自动化测试工具。从开发成本来说,自动化测试工具分为商业、开源和自制的测试工具。根据测试方法的不同,自动化测试工具分为白盒测试工具、黑盒测试工具和测试管理工具。工具和软件开发过程中相关活动的关系如图1所示。
  (1)商业测试工具。目前很多软件公司都具有一套自动化测试工具。白盒测试工具的代表有:Telelogic公司的Logiscope,PR公司的PRQA,Compuware公司的DevPartner,Rational公司的Purify,其中前两个是静态测试工具,后两个是动态测试工具。黑盒测试工具的代表有:Rational公司的TeamTest和Robot,Compuware公司的QACenter,Mercury Interactive的WinRunner、LoadRunner 和QTP等。测试管理工具的代表有Rational公司的TeamManager、Compuware公司的TrackRecord等。除此之外,还有专用于性能测试的工具有Radview公司的WebLoad,Microsoft公司的WebStress等工具,针对数据库测试的TestBytes对应用性能进行优化的EcoScope等工具。
  虽然,很多大型软件公司都有一套自动化测试工具,但没有一种通用的测试工具可以找到任何软件中的所有Bug。应该根据被测软件的特性来进行合理的选择,此外,上述的测试工具价格都相对较高,从整个软件开发的成本来说也是需要考虑的。
  (2)开源测试工具。开源测试工具作为开源软件的重要组成部分,但开源并不意味着完全免费,开源测试工具同样需要考虑使用成本。开源测试工具相对于商业测试工具的优势:相对成本较低,可以根据实际需求对其进行个性化改造。引入开源测试工具也需要考虑成本、选型等问题。
  常见的测试管理类开源测试工具有:Bugzilla、Mantis、BugFree。单元测试类开源测试工具有:Nunit、Nmock等。性能测试类开源测试工具有:Jmeter、TestMaker等。自动化功能测试类开源测试工具有:Abbot Java GUI Test Framework、White、Watir等。
  (3)自制测试工具。目前,很多软件测试组织其实都已经具备了自己动手开发测试工具的条件。自己动手开发测试工具的优势主要有:购买成本为0;可以有针对性地开发自己需要的那部分功能;可以自己定制需要的功能,随时修改,实现个性化;可扩展性好,可以随时增加新功能;可以充分利用项目组熟悉的语言来开发,从而利用自己的技术优势;可以使用自己熟悉的脚本语言,从而不必使用商业工具提供的“厂商脚本语言”。
  虽然,自制测试工具有很多好处,但是也必须考虑随之而来的成本问题。自制测试工具开发的成本主要是指开发时间、人员和维护方面的成本,还需考虑测试工具的实用性,不需要做一个大而全的、面面俱到的工具。因此,通常应当将自制测试工具最好定位在辅助测试、用于解决专门的问题、迫切的问题。在商用工具价格昂贵、开源测试工具也不适用的时候,可以考虑自制测试工具。本文下一章节将着重介绍一个“猴子”测试工具的设计与开发的关键技术。
2“猴子”测试工具设计与实现
  2.1“猴子”测试技术的概念
  所谓的猴子测试(Monkey Test),即搞怪测试、随机测试,通俗来讲是一种系统对信号因子输入稳健性的测试方法,一般用于计算机软件程序这样的逻辑严密性要求较高的系统。测试者可以进行各种稀奇古怪的操作模式,用以测试软件的稳定度。该测试技术泛指任何形式的,不需要任何人工干预的,随机进行的自动化测试。这种类型的工具之所以称为“猴子”是源于“无限猴子定理”,即“让一只猴子一直在打字机上按键,最终能完成莎士比亚的全部工作”。由于系统的“可重复性”以及系统输入因子“有限性”和“单纯性”,“猴子”测试被广泛用于软件Bug测试。
  根据“猴子”测试的原理,有很多可以实现“猴子”测试的方法,一个简单的实现方式是一个能随机产生鼠标点击和 键盘输入来模拟用户操作的“猴子”测试工具。 而复杂的实现方式是实现一个“聪明”的“猴子”,构建聪明“猴子”测试工具需要开发和测试资源,而最昂贵的代价是创建模型或状态表[2]。
  2.2“猴子”测试工具开发使用的技术
  一个“猴子”测试工具的开发主要是语言的选择和接口驱动的设计。本文基于对被测软件(C#语言开发的软件)的考虑,故选用了 C#语言。“猴子”测试工具的实现原理是利用产生鼠标点击和键盘输入事件来模拟用户操作,而Windows GUI 驱动是直接驱动Windows底层的API完成查找GUI控件、驱动鼠标和键盘操作的方式实现对软件的测试。故可以利用Windows系统提供的Windows API完成工具的实现。
  2.3“猴子”测试工具的具体实现
  (1)功能简述。该“猴子”测试工具主要功能:随机点击界面,输入随机字符和键盘按键,对于某些类型(按钮、可编辑框等)的控件做出特定的动作,监视被测试程序的进程信息,能识别出程序是否出现异常,持续记录内存和CPU使用情况,方便发现是否存在内存泄漏问题,持续截屏,方便追溯和问题定位。
  (2)设计原理。“猴子”测试的工作原理是利用测试工具随机产生键盘敲击和鼠标单击事件。因此,利用Windows系统的本机原生函数实现对键盘输入,鼠标点击的模拟,从而创建一个”猴子”进行简单测试。
  (3)设计流程。本文的“猴子”测试工具的设计流程如图2所示。
  在设计过程中,鼠标操作功能和截屏功能是开发的难点,“猴子”动作规则的设计则是整个工具的核心。
  (4)具体实现。
  界面设计:“猴子”工具的界面主要包含Bug报告存储地址选择、源字符集、被测程序选择、测试时间间隔选择等。作为一个运用于软件开发过程中以测试相对应的项目而实现的辅助性小工具,其界面的实现不需要太复杂的功能。
  实现鼠标操作功能主要有以下步骤:
  首先,引入鼠标触发事件的函数。该函数原型为:
  public static extern void mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);
  其次,设计鼠标相关操作的类MouseAPI,该类定义了鼠标的各种操作,考虑到篇幅有限,这里仅列出该类的主要函数原型及功能说明,如表1所示。
  (6)“猴子”动作规则。将该工具之所以用“猴子”来命名,最关键的是它具有猴子天性好动的特性,“猴子”的动作规则主要包含:随机完成鼠标移动和键盘输入、具备一些智能、连续不断地完成一些指定动作。
  “猴子”随机完成鼠标移动和键盘输入实现分析:首先获取某个范围内是随机数,然后通过其得到一个当前屏幕中任何一个点的坐标,接着实现鼠标的随机移动。最后使用将指定的字符串数组中某个字符串以键盘输入的方式发送给应用程序。
  让“猴子”具备一些智能实现分析:首先将获取光标所在点的窗口类的类名与指定的控件类类名进行比较,进而判断当前鼠标点击的控件,然后做出相应的动作。使用雷同的方法,“猴子”可以识别出按钮控件、静态控件,如标签、出错提示对话框等控件并做出相对应的动作。
  让“猴子”连续不断地完成一些指定的动作的实现分析:为使“猴子”能连续不断地完成指定动作,利用Timer控件实现一个计时器,然后通过一个按钮来控制定时器的启动和停止。而“猴子”工作时的所有动作规则都被封装于Timer控件的Tick时间中,这样,在每一个指定的时间段,“猴子”便会执行一次指定动作。
  3实验及结果分析
  (1)被测对象的选择。为了有效地完成对“猴子”测试工具的有效性检查,被测对象的选择应该是拥有可编辑控件和若干按钮控件的小型软件。本次测试选了一个仅具有加、减、乘、除的简单计算器。
  (2) 实验过程。整个实验过程分为如下步骤进行:①设置测试报告存储的位置;②设置键盘输入的字符集。指定字符集所在的文本文件的位置,指定键盘输入的字符串;③指定被测程序;④根据测试的需要,设置“猴子”操作程序的时间间隔;⑤启动被测程序;⑥开始“猴子”测试。
  (3)测试结果及分析。考虑到篇幅有限,这里仅给出部分测试结果,分别如图3、图4、图5所示。
  通过对实现的“猴子”测试工具的实验,该工具达到预期效果,可以实现一定的自动化测试。“猴子”测试工具开始工作后,“猴子”每隔一段指定的时间就会随机点击被测程序主界面,并在识别到可编辑控件时会随机键入某些字符串,字符串是事先准备好的字符集文本文件中的一部分字符。在连续进行的多次试验中,基本上,在“猴子”进行操作了若干有限步操作后,被测程序的bug便将会被检查出来。当测试进行了一段时间,被测程序的大部分Bug便会被找出并纠正。这之后,再进行“猴子”测试时,Bug的发现变得越来越困难。
4结语
  软件测试是软件工程实践中的重要组成部分,自动化测试是软件测试发展的大方向。软件自动化测试实施的关键是自动化工具的选用,而当所有的工具都不适用,或自己开发一个跟项目相适应的工具比应用现有的工具更
  能节约成本时,自制一个自动化测试工具便也是一种可供选择的方法。本文设计的“猴子”测试工具是对应于简单的软件进行测试“猴子”原型,针对具体的项目程序的环境,可以进一步完善“猴子”,使其更加智能,从而能发现更多的Bug。
  参考文献:
  [1]张建,徐宝文.软件测试专辑前言[J].计算机学报,2011(6).
  [2]陈技能.软件测试技术大全[M].北京:人民邮电出版社,2011.
  [3]胡铮.软件自动化测试工具实用技术[M].北京:科学出版社,2011.
  .北京:清华大学出版社,2012.
  [5]徐进.自动化软件测试的分析[J].信息技术,2010(3)
  [6]单锦辉,姜瑛,孙萍.软件测试研究进展[J].北京大学学报:自然 科学版,2005(1).
  [7]王雅文, 宫云战, 杨朝红.软件测试工具综述[J].北京化工大学学报:自然科学版,2007(S1).
  [8]石红霞.软件测试运行规划及自动化测试工具的研究[D].成都:成都理工大学,2011.
  [9]宋洁.软件测试技术及自动测试工具的实现[D].北京:北京邮电大学,2007.
  . ICEET2012, HongKong, 2012.
  .Academy of Mathematics and Systems Science,2010.
  .ICIMS 2011,Singapore,2011.

相关文章
学术参考网 · 手机版
https://m.lw881.com/
首页