局部探索式测试法

发表于:2011-3-11 11:08

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:方敏/张胜 等译    来源:51Testing软件测试网采编

  “任何一个错综复杂的缺陷都与功能无异”。

  ——里奇·库拉维耶奇 (Rich Kulawiec)

  想不想测试软件?

  我非常喜欢前面的引言,这句话高度概括了软件测试的复杂性。如果无法区分软件功能和软件缺陷,怎么可能把软件测试工作做好呢?如果软件的规格说明书和文档不够全面,不能通过它们来分辨软件功能和软件缺陷,是不是就没有办法进行测试了呢?如果软件失效时表现出的症状不易察觉而逃过手工和自动化测试,是不是说明测试无用呢?

  假设有如下招聘广告,你想一想会不会去申请该职位?

  急需一名软件测试人员。该职位要求根据那些乱七八糟且只有半截的规格说明书(如果还找得到的话)来测试一个高度复杂且基本不带文档支持的软件产品。不要指望当初的开发人员,他们基本不愿也不会帮助你。该产品的使用环境广泛,支持多用户、多平台、多语言和其他很多必须支持的环境。我们不清楚如何定义它们,但安全性和性能是最重要的,而且该软件发布后不允许出任何问题,否则我们就玩完了。

  我必须承认,上面说的都是反话。但这里提到的情况,我敢打赌任何一个有多年经验的人都会欣赏这个招聘广告的精确性。如果你觉得前面说的像是天方夜谭,我得恭喜你!

  测试软件这种高度复杂的产品,如果不知道正确结果是什么,质量标准定义又很含糊不清,这活儿几乎没法干。确实,在缺乏必要信息的情况下,进行软件测试的困难度比它应有的要大得多,而且所有的测试人员都深受其害。但是,软件测试毕竟已经有几十年的历史了,而且从很大程度上可以说,现在的软件也已经的的确确改变了世界(即使还存在第1章所提到的各类软件缺陷)。虽然,对于软件测试也已经有了很多的了解。

  那么在软件测试人员面对这类“不可能完成的任务”时,他们究竟要做哪些事情呢?首先,欣赏软件测试的高度复杂性和艰巨性。掉以轻心,认为它很简单,势必会导致惨痛的失败。正确的态度是从一开始就要承认无论怎么做都是不够的。测试无涯,我们永远也做不完,所以必须要把所有要做的事情按照优先级排序,然后从最重要的事情做起。测试是没有尽头的,我们永远不可能完成所有任务。我们的目标是软件发布的时候可以达到如下的目标:所有重要的任务都完成了,而剩下没做的事情都是比较次要的。如果我们做到这一点,就可以较早尽可能地降低发布风险。

  测试是一个不停进行抉择的过程。测试人员必须理解运行测试用例时和分析现有信息时所牵涉的各种复杂性,这有助于他们在测试过程中,从多种可行方案中做出正确的选择。本章讲述的就是如何进行局部选择。它包括测试人员在使用探索式测试方法去探索软件功能时所要做出的各种细小决定,比如如何决定文本框的输入值,如何解释错误消息,如何理解前一次输入和后一次输入值之间的关系。在后面几章,我们还会讨论探索式测试中的一些全局问题。但我们必须先掌握这种可以辅助我们做出明智局部决定的工具。

  局部探索式测试法有一个好处是测试人员不需要知道很多信息就可以完成这些任务。局部性测试的重点是把测试经验、专业知识、软件在操作环境下如何构建和运行的知识结合在一起,使我们在测试中做出正确决定。这些都属于非常具体的技巧,用于解决测试人员每天都会遇见多次的各类细节问题。它们并不适用于建立一个完整的测试架构,也不应该用于测试用例的整体设计过程。

  根据软件的各种属性,我将决策分为5部分:输入(input)、状态(state)、代码路径(code path)、用户数据(user data)和执行环境(execution environment)。这些都是探索型测试人员在测试时必须关注的。即使把这5个部分分开来考虑,在资源有限的情况下,任何一个问题都不可能被彻底解决。如果把它们放在一起,整个测试过程更会变得繁杂无比,根本无从下手。幸运的是,对于如何解决这类问题已经有很多很好的指南,本章将讲述其中的一些指导技巧,还将讨论如何使用这些技巧来帮你做出局部性测试决定。

相关链接:

软件缺陷预防

软件缺陷检测

软件手工测试

浅谈探索式测试

《2023软件测试行业现状调查报告》独家发布~

精彩评论

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号