自动化测试: 真的是银弹?

发表于:2015-12-23来源:uml.org.cn作者:不详点击数: 标签:自动化测试
没有一种单纯的技术或管理上的进步,能够独立地承诺在10年内大幅度地提高软件的生产率、可靠性和简洁性。Brooks鼓励我们将技术和方法视作一种演进手段,而并非革命。将自动化技术

  没有一种单纯的技术或管理上的进步,能够独立地承诺在10年内大幅度地提高软件的生产率、可靠性和简洁性。Brooks鼓励我们将技术和方法视作一种演进手段,而并非革命。将自动化技术引入测试工作时,我倾向于支持相同的观点。

  简介

  Frederick P. Brooks, Jr. 曾在1986年写过一篇题为《没有银弹:软件工程的根本和次要问题》的文章(No Silver Bullet - Essence and Accidents of Software Engineering)。这篇文章列举了人们对于软件工程技术发展的一些期望,并与现实进行了对比。他的论点归纳如下:

  没有一种单纯的技术或管理上的进步,能够独立地承诺在10年内大幅度地提高软件的生产率、可靠性和简洁性

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

  我与自动化测试产品和解决方案的潜在客户打交道已有5年时间,其间碰到了许多"银弹"思维方式。它们总以类似这样的设想出现:

  所有的测试都能够实现自动化!

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

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

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

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

  有了自动化测试,测试人员不就成了"过时的"或"多余的"了吗?

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

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

  自动化测试不是银弹吗?

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

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

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

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

  时间到了吗?

  预算超了吗?

  资源用尽了吗?

  还有比萨和啤酒吗?

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

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

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

  完全无人干预的测试。

  测试脚本。

  测试工具。

  不清楚。

  有时人们将自动化测试的概念理解得过于狭窄,只关心由工具或编程产生的测试脚本。实际上自动化一词包含了更为广阔的含义。看看一个Quality Engineering团队在构建一套自动化测试准则时对自动化测试的这个定义:

  在我们的环境中,"自动化"指的是对策略、工具和工件的使用,它增加或减少了手工或人为参与或干预非技巧性、重复或冗长工作的需要。

  除该定义之外,准则还为该团队提供了应用自动化方法的例子。表1列举了一些。

原文转自:http://www.uml.org.cn/Test/200502013.htm