好久没来,这本书看了好久了,接着第7章...
1.软件测试的五个棘手问题
软件测试作为控制和减少软件错误的过程,本身也具有严重的不足。包含5种令人担忧的棘手问题。
1)漫无目的
软件测试不是简单地拿起来就做的事情,它要求有计划、有准备、有策略和有多变的战术,这是成功进行软件测试的前提。
a)决定测试什么
软件测试开始通常是把一个应用程序分成组件或特性,然后把测试人员或测试小组分配到每一个组件或每一个特性。但用户关心的是功用,即如何通过组件和特性做希望做的事。如果根据功用来进行测试,我们的测试就会更接近于实际的使用情况。
b)决定何时测试
发现一个输入字段应该只接受数字输入却接受了字符输入,或经常发现同一种缺陷反复出现,这种被称为“错误噪音”。在最理想的情况下,所有这类问题应该已经在前期的开发人员自我测试、单元测试或代码审核过程中被发现。
对于每一个被发现的缺陷,明确地讨论它应该在什么时候被发现。基于缺陷的历史数据分析,我们将学会如何在代码审查、单元测试或其他方面有针对性地进行工作。
c)决定如何测试
许多团队做了大量的研究工作来寻找测试技术与缺陷之间的对应关系,可以将某些缺陷类别和某些漫游路径或测试技术联系在一起,从而让测试人员知道:“这种功能或特性最好用这种给定的方法来测试”。
2)重复性
a)知道已经运行过哪些测试
农药悖论:一旦测试套件发现了大量缺陷后,那些没被发现的缺陷会对测试套件的未来效用产生免疫力。
b)知道什么时候注入变异
漫游测试时,使用不同顺序、不断变化的数据和环境也会起到变化的作用。杀虫剂上的标签显示了该杀虫剂对哪些虫子有效果,测试方法也可以贴上类似的标签。
3)暂时性
大多数测试人员不生活在软件中,他们只是“暂住”而已。把用户带入测试实验室,这种“带入”可以是亲自带入用户或是从概念上加以考虑。
应用程序出厂后项目就结束,这样的假设是完全错误的。我们忽略了保修期,这段时间仍然是测试环节的一部分。
4)单调性
测试需要决定测什么,知道如何把多种功能和环境考虑结合在一个测试中,设计出更高级的测试技术和概念,搞清楚一组测试如何帮助总体的测试策略。
乐意花时间进行测试分类和测试策略设计的测试人员更注重于测试的有效性,因而在测试运行上花的时间就比较少。
5)健忘性
我们计划测试、设计测试、运行测试、分析结果,测试结束后马上就忘。测试用例并不是解决这种记忆问题的最好方法,而杀虫剂悖论也降低了现有测试用例的价值。
漫游测试在一定程度上效果更好,因为一条漫游路径可以代表任何数据的实际测试用例。如果我们努力地把漫游路径映射到软件特性和缺陷上,我们会留下有关产品的记录,它会帮助下一任测试人员了解内部情况,包括我们所做的测试哪些有效、哪些无效。
2.总结
拥有测试策略和规范的技术使得测试人员在处理他们的任务时目标更明确,这直接解决了无目标的问题。漫游路径又迫使测试用例的产生具有更多变化,使重复性问题和单调性问题得到积极的处理。另外,漫游测试提供了测试技术的讨论平台,可以促进知识交流和建立测试文化,从而改善暂时性(没有实际用户时,尽量模拟实际情况)和健忘性问题。

网友评论