软件测试自动化的一些具体做法

因为软件测试的工作量很大(40% 到60% 的总开发时间),而又有很大部分适于自动化,因此,测试的改进会对整个开发工作的质量、成本和周期带来非常显著的效果。

   首先,谈谈在测试自动化的情况下,带有图形界面的产品的测试用例的设计问题。因为图形界面的输出显示不是很容易做到测试结果自动化比较,所以一般的做法是把图形界面输出的部分单独建立测试用例,以手工运行。而所有非图形输出则可进行自动测试。

   下面举出一些测试自动化的例子:

1.测试个案(test case ,或称为测试用例)的生成

   用编程语言或更方便的剧本语言(script language 例如Perl等)写出短小的程序来产生大量的测试输入(包括输入数据与操作指令)。或同时也按一定的逻辑规律产生标准输出。输入与输出的文件名字按规定进行配对,以便控制自动化测试及结果核对的程序易于操作。

   这里提到测试个案的命名问题,如果在项目的文档设计中作统一规划的话,软件产品的需求与功能的命名就应该成为后继开发过程的中间产品的命名分类依据。这样,就会为文档管理和配置管理带来很大的方便,使整个产品的开发过程变得更有条理,更符合逻辑。任何新手半途加入到开发工作中也会更容易进入状态。

2.测试的执行写控制

   单元测试或集成测试可能多用单机运行。但对于系统测试或回归测试,就极有可能需要多台机在网络上同时运行。记住一个这样的原则,在开发过程中的任何时候,如果你需要等候测试的运行结果的话,那就是一个缩短开发时间的机会。

   对于单个的测试运行,挖潜的机会在测试的设置及开始运行和结果的对比及显示。有时候,需要反复修改程序,重新汇编和重新测试。这样,每一个循环的各种手工键入的设置与指令所花费的时间,加起来就非常可观。如果能利用make或类似的软件工具来帮助,就能节省大量的时间。

   对于系统测试或回归测试这类涉及大量测试个案运行的情况,挖潜的的机会除了利用软件工具来实现自动化之外,就是怎样充分利用一切硬件资源。往往,就算是在白天的工作时间内,每台计算机的负荷都没有被充分利用。能够把大量测试个案分配到各台机器上去同时运行,就能节省大量的时间。另外,把大量的系统测试及回归测试安排到夜间及周末运行,更能提高效率。

   如果不购买商品化的工具的话,应当遵从正规的软件开发要求来开发出好的软件测试自动化工具。在实践中,许多企业自行开发的自动化工具都是利用一些现成的软件工具再加上自己写的程序而组成的。这些自己开发的工具完全是为本企业量身定做的,因此可用性非常强。同时,也能根据需要随时进行改进,而不必受制于人。当然,这就要求有一定的人力的投入。

   在设计软件自动测试工具的时候,路径(path)控制是一个非常重要的功能。理想的使用情况是:这个工具可以在任何一个路径位置上运行,可以到任何路径位置去取得测试用例,同时也可以把测试的结果输出放到任何的路径位置上去。这样的设计,可以使不同的测试运行能够使用同一组测试用例而不至于互相干扰,也可以灵活使用硬盘的空间,并且使备份保存工作易于控制。

   同时,软件自动测试工具必须能够有办法方便地选择测试用例库中的全部或部分来运行,也必须能够自由地选择被测试的产品或中间产品采作为测试对象。

3.测试结果与标准输出的对比

   在设计测试用例的时候,必须考虑到怎样才能够易于对此测试结果和标准输出。输出数据量的多少及数据格式对比较的速度有直接影响。而另一方面,也必须考虑到输出数据与测试用例的测试目标的逻辑对应性及易读性,这将会大大有利于分析测试所发现的不吻合,也有利于测试用例的维护。

   许多时候,要写一些特殊的软件来执行测试结果与标准输出的对比工作,因为可能有部分的输出内容是不能直接对比的(比如,对运行的日期时间的记录,对运行的路径的记录,以及测试对象的版本数据等),就要用程序进行处理。

4.不吻合的测试结果的分析、分类、记录和通报

   上一点所谈到的,用于对测试结果与标准输出进行对比的特殊软件,往往也同时担任对不吻合的测试结果进行分析、分类、记录和通报的任务。

   “分析”是找出不吻合的地方并指出错误的可能起因。“分类”包括各种统计上的分项,例如,对应的源程序的位置,错误的严重级别(提示、警告、非失效性错误、失效性错误;或别的分类方法),新发现的还是已有记录的错误,等等。“记录”,是按分类存档。“通报”,是主动地对测试的运行者及测试用例的“负责人”通报出错的信息。

   这里提到测试用例的“负责人”的概念。是用以指定一个测试用例运行时发现的缺陷,由哪一个开发人员负责分析(有时是另外的开发人员引进的缺陷而导致的错误)及修复。在设立测试用例库时,各用例均应有指定的负责人。

   最直接的通报方法是由自动测试软件发出电子邮件给测试运行者及测试用例负责人。邮件内容的详细程度可根据需要灵活决定。

5.总测试状况的统计,报表的产生

   这些都是自动测试工具所应有的功能。目的是提高过程管理的质量,同时节省用于产生统计数据的时间。

   产生出来的统计报表,最好是存放到一个约定的路径位置,以便任何有关人员都知道怎样查阅。同时,可按需要用电子邮件向适当的对象(如项目经理,测试经理和质量保证经理)寄出统计报表。

6.自动测试与开发中产品每日构建(build )的配合

   自动测试应该是整个开发过程中的一个有机部分。自动测试要依靠配置管理来提供良好的运行的环境,同时它必须要与开发中的软件的构建紧密配合。

   在开发中的产品达到一定程度的时候,就应该开始进行每日构建和测试。这种做法能使软件的开发状态得到频繁的更新,以及及早发现设计和集成的缺陷。

   为了充分利用时间与设备资源,下班之后进行自动的软件构建,紧接着进行自动测试(这里多数指的是系统测试或回归测试),是一个非常行之有效的方法。如果安排得好,到第二天上班时,测试结果就已经在各人的电子邮箱里面面了,等待着新的一天的开发工作。

时间: 2024-10-14 18:30:36

软件测试自动化的一些具体做法的相关文章

qtp自动化测试实践:【软件测试自动化-QTP系列讲座 46】== JScript在QTP中的终极探究

上一次讲座我们简单介绍了下QTP中如何执行javascript,其实说穿了也就是借助QTP的封装方法来进行执行javascript,主要还是想照顾下新手所以简单介绍一下这块内容,可能对一些测试高手们来说不值一提,但是今天这次讲座相信一定会让你眼前一亮,应该可以说本次课程是领先技术讲座的高潮.擦亮你的眼睛,来看如何真正意义上在QTP编辑器中直接执行JAVASCRIPT,并把try catch应用到实际应用中.从此摆脱vbs那种渣一样的错误捕获. 在这之前请允许我来介绍一个组件,它就是MSHTML组

使用VS 2010提高软件测试自动化的水平(3)

自动布置/还原测试环境 目前,我想我们绝大部分开发团队都是通过人力来布置或者说搭建测试环境的,假设我们要测一个用ASP.NET开发的SNS网站,在准备好相关的硬件之后,我们肯定要找一个测试人员,或者开发人员,有条件的单位可能会找一个专门的IT人员,总之是找一个人(我们就叫他小王吧)来安装操作系统.为操作系统打必要的Service Pack.在线或离线升级一些Hotfix,然后安装数据库系统.为数据库系统打必要的Service Pack,继而安装.NET Framework.配置IIS,最后拷贝.

使用VS 2010提高软件测试自动化的水平(1)

Visual Studio 2010最大的亮点恐怕要数集成在Visual Studio Ultimate 2010和VS Test Professional 2010中的MS Test Manager这套工具了,它可以说是为承担绝大部分测试工作(有统计说是70%左右)的手工测试人员提供了一套专门为他们量身定制的IDE (集成开发环境),我擅自把它叫作ITE(集成测试环境),从某种意义上讲,这套ITE的出现,意味着手工测试人员将从目前"大刀长矛"的时代一步跨入"半自动步枪&qu

软件测试自动化框架的基本构成

所谓自动化测试框架,可以解释为自动化测试的整体解决方案,是由一些假设.概念和为自动化测试提供支持的系统及其最佳实践等构成的集合.对不同的应用领域或不同的测试水平,自动化测试的框架具有不同的构成,但我们必须清楚如何满足自动化测试的基本要求,了解自动化测试框架的基本构成,从而在此基础上,根据自己组织的实际情况来进行扩充,从而构造适应性更强.效率更高.功能更强的自动化测试框架. 为了能开展自动化测试的工作,首先需要基础设施(infrastructure)来支撑测试工具的运行,这包括Web 服务器.邮件

使用VS 2010提高软件测试自动化的水平(5)

一般来说,当开发人员根据测试人员的报告把Bug修复之后,测试人员都要再度进行确认,也就是说,需要把发现某个Bug的测试用例再执行一遍,以确认那个被发现的Bug确实已经消失.而且,很多软件企业都会要求测试人员在每个里程碑或者迭代结束时反复执行那些曾经"揭露"出Bug的测试用例,以防止那些已被修复的Bug再度"显灵".显然,这意味着很多手工测试都要一遍又一遍地被重复执行. 为了减少手工测试人员这种无谓的重复劳动,VS 2010在它的测试工具中引入了一种类似"录

使用VS 2010提高软件测试自动化的水平(4)

自动筛除不相干的回归测试 为了实现某个新的功能,或为了修复一个Bug,开发人员通常需要在现有的代码上进行修改,当一个开发人员改动了部分代码之后,他往往需要把所有的单元测试统统再运行一遍,以确保他所做的改动不会带来"蝴蝶效应",也就是导致意想不到的地方出现问题.如果是到了项目后期,即便是一个中等规模的系统可能也会有上千个单元测试,把上千个单元测试都跑一遍,再快可能也得要个把小时.实际上,每次代码改动的影响面是有限的,一次代码改动可能也就会影响到几个.十几个.至多几十个单元测试.每改动一次

使用VS 2010提高软件测试自动化的水平(2)

上文书说到测试人员小张给开发人员小李发来了一份淋漓尽致的Bug报告,果不其然,小李根据小张的这张"画影图形"没费什么周折就将那个潜伏很深的Bug捉了出来.可此Bug究竟是不是彼Bug呢?小张恐怕还得再跑一遍她发现彼Bug的测试以确认问题确实已经得到解决.其实,即使不是为了确认Bug是否已被剪灭,小张也得经常把她做过的很多测试重新跑跑,以确保代码在被程序员们改来改去的情况下,以前跑得通的测试现在也还仍然跑得通,这也就是所谓的回归测试. 不断单调重复地做同样的事情总是会让人感到很郁闷,而V

2009年国内软件测试的十大热点预测

2009年悄悄地来到了,送走了艰难的.折腾的2008年.人们对2009年会充满更多的期望,9是一个吉祥的数字,天长地久,而且农历是牛年,牛年更牛. 到了2009年,该为软件测试写点什么.顺民意,预测一下2009年国内软件测试的十大热点. 基于云的测试将是新的课题,包括测试方法.技术和工具.而且,云环境下的测试也是减少测试成本的一个途径. 基于Web 2.0/Ajax 的软件测试技术还是热点.Java/Javascript技术变化很快,系统开发框架也是层出不穷. 软件测试自动化也还是热点,包括更多

使用STAF/STAX 实现测试自动化和持续集成

关于回归和增量测试 回归测试往往用于确保软件变更不会在软件中引入新的问题或故障.另外,还可以用它来确 保您不会重新引入之前修复的错误.如果软件对第三方组件和库有诸多依赖项,比如 XML 处理 API 或 JPA 等数据库提取 API,那么新问题的引入会非常常见.在这些情况下,数据库架构的一个小小的改动就可能会导致难以预测的应用程序行为 变更.如果软件本身很复杂,对常见代码段的一个小小的更改都会招致不可预测的副作用. 当需要对某个中间件软 件的先前版本或不同平台提供持续支持时,这提高了在维护或开发