自动化测试:真是银弹?

时间:2022-07-08 01:40:53

自动化测试:真是银弹?

在我们梦想的中的测试自动化是这样的:只要启动测试程序就会自动输出测试结果,报告哪里有错误和错误的原因。

自动化测试的定义

首先,我们来谈谈什么是自动化测试,它的实现方法是用机器代替人的手工操作,完成一系列的测试过程。从原理上看测试自动化也是一个标准的操作流程。

测试自动化实际上是在模拟人的手工操作,在现阶段手工测试在很多公司是一种艺术行为,同样一个模块不同的测试员会发现不同的问题,这与测试员的直接能力成正比,同时还与测试员的心情有直接关系,这实际上是一种无序的操作行为,这种现象的最大问题是随着人员的变动产品质量也在进行相就应的波动。

用一个比较形象的比喻,每次我们对产品实施测试就好象是织一张网,然后用网去捕虫,但是我们每次织网的方法都不一样,网也就会不一样,有时密有时疏,这就导致了有时我们会抓到好多的虫,有时又抓不到虫。如果我们每次织的网是一样的,那么抓到虫的数量也是基本不变,同时我们对网进行不断的改进,将疏的地方加密,这样就能抓到更多的虫。

测试自动化是代替人的手工操作,自动的发现产品中的问题,这就好比自动织网自动捕虫,我们所要做只是不断的补网,但如果没有标准操作,我们就不能补网,不知道要在哪里进行修补。这会出现两种情况:网抓不到虫,这样这张网就没有任何意义;每次都要做一张新网,可以捕到虫了,但成本太高。

让测试自动化真正发挥出强大的威力,就要对这张进行不断的修补。如果我们每次的操作都是相同的,再通过对结果的验证和补充,不断的完善,这样才能将发挥自动化的强大的力量。

通常,软件测试的工作量很大(据统计,测试会占用到40%的开发时间;一些可靠性要求非常高的软件,测试时间甚至占到开发时间的60%)。而测试中的许多操作是重复性的、非智力性的和非创造性的,并要求做准确细致的工作,计算机就最适合于代替人工去完成这样的任务。

计算机大师布鲁克斯曾在1986的一篇题为《没有银弹》的文章中列举了人们对于软件工程技术发展的一些期望,并与现实进行了对比。他的论点归纳如下:没有一种单纯的技术或管理上的进步,能够独立地承诺在10年内大幅度地提高软件的生产率、可靠性和简洁性

布鲁克斯鼓励我们将技术和方法视作一种演进手段,而并非革命。将自动化技术引入测试工作时,我倾向于支持相同的观点。

在与自动化测试产品和解决方案的客户打交道的过程中,其间碰到了许多“银弹”思维方式。它们总以类似这样的设想出现:

1、所有的测试都能够实现自动化。

2、既然自动化测试能如此显著地提高生产率,我们就能以更少的人员完成所有的测试。

3、自动化测试如此简单,我们无需任何培训。

4、自动化方法将缩减整体测试工作量。

5、我们无需制订任何测试方案。

6、有了自动化测试,测试人员不就成了“过时的”或“多余的”的人。

7、以前的那种耗时的测试设计工作不再必要了。

尽管我不愿打破人们美好的幻想,但总觉得有责任帮助他们理解,实施自动化测试和得到梦寐以求的神兵利器之间的区别。通常这意味着解释自动化测试的真正含意,和自动化测试工具和解决方案的实际功能。

自动化测试不是银弹吗?

正是此意。自动化测试,或者说自动化测试策略及工具的实现,只是测试人员工具箱里的一件利器。注意我强调它是一个工具,位于工具箱中。我有意避免将自动化测试和试员人员等同起来,本来它也无法取代测试人员的地位。尽管如此,自动化测试仍然毫无疑问地具有强大功能,它能在测试效率和彻底性方面使我们获益匪浅。关键在于确定发挥其功效的最佳时机及方式。我们提出另一个问题来具体阐述一下。

有足够的时间测试每件事情吗?

我想人们会异口同声地回答“没有!”。总有更多的东西可以测试,或者在另一个平台上或以其他配置再试一次。但是随着最终期限和产品交付日期的日益迫近,分配给每个测试周期的时间缩短了。那么,软件开发项目经理和测试团队如何处理这种情况呢?通常,他们削减软件前每一个测试周期的测试量。您经历过这种情形吗?理想情况下需要做一些基于风险的分析,以便决定排队哪些风险。然而更常见的情况是,测试团队只是将整个测试周期的注意力集中到验证已修复的缺陷上。更有甚者,连这样的缩减之后的测试计划也没有足够时间来完成。

多少产品是在完整测试之后交付的?这种情况我所知不多。开发团队往往根据其他因素做出是否交付软件的决定:

1、时间到了吗?

2、预算超了吗?

3、资源用尽了吗?

4、还有比萨和啤酒吗?

图1:自动化测试生存周期方法学结构

不幸的是,由于测试工作被任意删减,开发团队无法完全清楚地知道产品的总体质量,他们面临所交付的软件带有严重问题的风险。借助于自动化测试的力量我们能够摆脱这种困境吗?我们接着探讨一下。

自动化测试如何帮助我们?

在计划实施自动化测试之前,您需要理解自动化测试的定义。换句话说,它对您意味着什么?这里有一些我听到的其他人对自动化测试的描述:

1、完全无人干预的测试。

2、测试脚本。

3、测试工具。

4、不清楚。

有时人们将自动化测试的概念理解得过于狭窄,只关心由工具或编程产生的测试脚本。实际上自动化一词包含了更为广阔的含义。看看一个Quality Engineering团队在构建一套自动化测试准则时对自动化测试的这个定义:在我们的环境中,"自动化"指的是对策略、工具和工件的使用,它增加或减少了手工或人为参与或干预非技巧性、重复或冗长工作的需要。除该定义之外,准则还为该团队提供了应用自动化方法的例子。

现在,定义自动化对于您和您的团队意味着什么是至关重要的。然后您就可以使用该定义开始构建一套自动化准则,从而团队中的每个人都可以使用相同的方法、快速评诂一项任务是否适合应用自动化。

让测试自动化真正发挥出强大的威力,就要对这张进行不断的修补。如果我们每次的操作都是相同的,再通过对结果的验证和补充,不断的完善,这样才能将发挥自动化的强大的力量。

软件测试实行自动化进程,绝不是因为厌烦了重复的测试工作,而是因为测试工作的需要,更准确地说是回归测试和系统测试的需要。

将测试的操作标准化不是简单的写个用例就可以解决,它要包括很多详细的内容,要包括数据的准备,系统环境的准备,标准的操作流程,以及结果的标准判断方法。最佳实践效果就是一个只要会操作计算机的人都可以执行测试,并且结果是相同。那么,这时实施自动化才能够发挥最大的功效。

从上面可以看出测试自动化的实现成本较高,我们不能单纯的出于技术的目标而实施自动化,自动化的实施只有在产品的被测试部分相对稳定后才可以实施自动化.在业界暂时还没有通用的判定标准。

合理的运用自动化测试可以大大提高工作效率,反之则会是无何止的噩梦.无论测试自动化多么强大,在现阶断仍然是以手工测试为主.我想不需要人工设计的测试自动化只有在斯皮尔伯格的“人工智能”实现后才会真正的出现。

现在您已知道什么是自动化测试以及它能胜任哪些工作,我希望您能运用这些知识为您的产品进行更多更好的测试。尽管自动化测试不是银弹,但它仍不失为一件优秀工具;如果能够将其应用于适合的工作,将为您带来巨大收益。

自动化测试的好处

缩短软件开发测试周期,可以让产品更快投放市场;测试效率高,充分利用硬件资源;节省人力资源,降低测试成本;增强测试的稳定性和可靠性;提高软件测试的准确度和精确度,增加软件信任度;软件测试工具使测试工作相对比较容易,且能产生更高质量的测试结果;手工不能做的事情,自动化测试能做,如负载、性能测试。

上一篇:反驳ASP无用论 下一篇:转向以客户为中心