第四章 全局探索式测试法
1.探索软件
探索式测试有以下几个目标:
a.理解应用程序如何工作,他的接口看起来怎样,他实现了哪些功能
b.强迫软件展示其全部能力
c.找到缺陷
2.旅游者比喻
(1)商业区测试类型
a.指南测试法(The Guidebook Tour)
旅游手册--用户说明书
指南测试法要求测试人员通过阅读用户手册并严格遵照手册的建议执行操作。
这个测试法不仅可以验证软件确实实现了手册所描述的各种特性,同时也验证了用户手册的准确性。
这个测试法的变种:
*博客测试法(Blogger‘s Tour),这种方法要求测试人员遵循第三方的建议来测试。
*专家测试法,这种方法要求测试人员根据那些怒气冲冲的评论者的抱怨(论坛、社区等)来创建测试用例。
*竞争对手测试法(Competitior‘s Tour),这种方法要求测试人员遵循这些专家或博客为竞争对手们提供的建议来测试。
指南测试法(包括其各个变种测试法)强迫测试人员按用户的使用方式把软件特性串联起来测试,同时还要求这些特性按用户的真实使用方式相互交互。
所以这时发现的缺陷很可能都是极其重要的。
b.卖点测试法(The Money Tour)
令旅游者向往的任何一个地方一定有吸引他们的理由。
软件也类似:用户买它自然是有其原因的。如果确定某些特性能够吸引用户,那就是软件的卖点,软件就能从那上面赚钱。
销售人员是为卖点测试法提供信息的绝佳来源。
这个测试法的变种:
*质疑测试法(Skeptical Customer Tour),就是在测试人员执行卖点测试法时,假想有一个爱问问题的客户,不断打断演示,提出一些苛刻的问题。
这个测试法中发现的缺陷都是非常重要的,因为它们可能被真正的用户遇到。
c.地标测试法(The Landmark Tour)
使用指南针定位一个大致位于目的地方向上的地标(树、岩石、崖面等),走到那里、然后确定下一个地标,如此往复。只要所有的地标都在一个方向上,就能走过那片繁茂的森林。
通过使用指南测试法和卖点测试法,可以提前确定那些关键的软件特性,也就是这里的地标。
在选择完地标后,需要确定他们的前后顺序,然后从一个地标执行到另一个地标来探索应用程序,直到访问了列表中的所有地标。
在这个过程中,需要记录已经使用过那些地标,并创建一个地标覆盖图来标识工作的进展。
d.极限测试法(The Intellectual Tour)
极限测试法采用的途径是向软件提出很多难以回答的问题。
比如:
*如何使软件发挥到最大程度?
*哪个特性会是软件运行到其设计极限?
*哪些输入和数据会耗费软件最多的运算能力?
*哪些输入可能欺骗它的错误检测例程?
*如果软件用于产生某些特定输出时,使用哪些输入和内部数据可以不断挑战软件的这种能力?
根据被测应用程序的不同,提出的问题也会不同。
这个测试法的变种:
*找麻烦测试法(Arrogant American Tour)
该方法要求测试人员故意设置各种障碍来看软件如何应对。
这个测试法及其变种能发现各种类型的缺陷,从非常重要的缺陷到简单甚至愚蠢的缺陷。它取决于探索式测试人员的驾驭能力。
测试人员必须可以区分哪些是纯属发难的问题,哪些是可以让软件正确运行的问题。
在测试中,应尽力去创建那些用户真正实用的复杂文档、订单或其他数据,这么做的结果是让人们知道所发现的那些缺陷确实会影响到最终用户,并且应该被及时修复。
e.深夜测试法(After-Hours Tour)
这个测试法的变种:
*清晨测试法(Morning-Commute Tour)
f.遍历测试法(The Garbage Collector‘s Tour)
对软件来说,这好比有计划地进行抽查。
我们可以决定抽查用户接口,比如一个屏幕接一个屏幕,一个对话框接一个对话框(最好就是可以像垃圾车司机那样采用最短路径来测试)。
测试中不追求细节以免影响测试速度,而只是检查那些明显的东西。
也可以用这个测试法来执行一个个特性和模块,或者如果适用,还可以挨个测试该特定应用程序的某些地标。
遍历测试法通过选定一个目标(例如所有菜单项、所有错误消息或所有对话框),然后使用可以发现的最短路径来访问目标包含的所有对象。
(2)历史区测试类型
软件中的“历史区”指的是那些遗留代码,或是在前几个版本就已经存在的软件特性,也指那些用于修复已知缺陷的代码。
历史区测试方法主要针对老的功能和缺陷修复代码。
a.恶邻测试法(The Bad-Neighborhad Tour)
每个值得旅游的城市都有不好的社区,旅游者通常会被告知应避免访问那里。
软件也有这样的情况--就是那些缺陷横行的代码段。
前者试图避开这些区域,后者则应该在这些区域尽量多花时间。
缺陷通常扎堆儿出现,因此产品缺陷多的地方值得反复测试。
一旦确定了某个代码区域缺陷很多,建议对临近功能使用遍历测试法进行测试,以此来验证那些修复已知缺陷的代码没有引入新的缺陷。
b.博物馆测试法(The Museum Tour)
展示古董的博物馆深受旅游者的喜爱。
代码中的老古董(遗留代码)也同样值得测试人员多加关注。
翻翻代码库、程序二进制代码文件或者程序集文件,只要看看它们的创建时间,很容易找到那些很长时间没有动过的遗留代码。
那些老代码或者重新修改,或者是没有改动就放到新环境中运行,很容易发生失效的情况。
许多源代码库也保留代码修改记录。
在这个测试法中,测试人员应该找出那些遗留代码和老的可执行文件,并确保它们在测试中受到了和新代码同样的遭遇。
c.上一版测试法(The Prior Version Tour)
如果当前版本是对先前版本的更新,很重要的一点就是必须运行先前版本上支持的所有场景和测试用例。
这样可以验证用户已经熟悉的功能在新产品上依然可行,,可以正常工作。
如果新版本重新实现或者删除了一些功能,测试人员应选择新版本定义方法来输入数据和使用软件。
应该仔细检查那些在新版本中无再在运行的测试用例。
(3)娱乐区测试类型
娱乐区测试法帮助测试人员测试那些辅助特性,而不是主线特征,并确保这两种特性能够使用而有意义的结合在一起。
a.配角测试法(The Supporting Actor Tour)
配角测试法鼓励测试人员专注于某些特定的特性,他们虽然不是那种我们希望用户使用的主要特征,但和那些主要的特征一同出现在显示器上。
他们越紧邻那些主要功能,越容易被人注意,所以我们必须基于这些特性足够的重视,不能犯忽视他们的错误。
b.深巷测试法(The Black Allery Tour)
指的是最不可能被用到或是最不吸引用户的特性。
深巷测试法就是建议测试人员应该测试使用情况列表排在最下面的几项特性。
这个测试法的变种:
*混合测试法(Mixed-Destination Tour):试着把最流行喝醉不流行的特性放在一起混着测。
c.通宵测试法(The All-Night Tour)
应用程序能坚持到最后吗?它能多长时间持续运行,处理数据而不崩溃?
使用通宵测试法的测试人员会让程序一直保持运行,而不去关闭它。
(4)旅游区测试类型
a.收藏家测试法(The Collector’s Tour)
建议我们收集软件的输出,收集的越多越好。
测试人员到达所有那些可到达的地方并把观察到的输出结果记录下来。
测试人员应该确保能观察到软件能生成的任何一个输出。
b.长路经测试法(The Lonely Businessman Tour)
到达目的地之前尽量多的在应用程序中穿行。
c.超模测试法(The Supermodel Tour)
要求测试人员去关心那些表面的东西。
重点不是在功能或测试功能间真的互相作用,而只是测试界面。
d.测一送一测试法(The TOGOF Tour)
测一送一(Test One Get One Free)
测试同时运行同一应用程序多个拷贝的情况。
e.苏格兰酒吧测试法(The Scottish Pub Tour)
适用于大规模的复杂应用程序。
(5)旅馆区测试类型
a.取消测试法(The Rained-Out Tour)
启动操作然后停止它。
寻找应用程序中最耗时的操作来充分实施这种攻击方法(如查询能力)。
取消按钮、ESC键、程序中的回退按钮、Shift+f4、关闭按钮。
在这个测试法中,测试人员见到的失败绝大多数与应用程序自我清除能力不足有关。
b.懒汉测试法(The Couch Potato Tour)
接受所有默认值。
软件必须接受默认值,它必须运行处理空白输入的代码。
(6)破旧区测试类型
a.破坏测试法(The Saboteur Tour)
试图利用每个可能的机会暗中破坏应用程序。
*强迫软件做一些操作
*掌握软件成功完成操作必须使用的资源
*在不同程度上移除那些资源或限制使用那些资源
b.反叛测试法(The Antisocial Tour)
要求输入最不可能的数据,或者已知的恶意输入。
*逆向测试法(Opposite Tour):输入最不可能的数据
*歹徒测试法(Crime Spree Tour):输入一些不应该出现的数据
*错序测试法(Wrong Turn Tour):以错误的顺序做事情
c.强迫症测试法 (The Obsessive-Compulsive Tour)
反反复复的执行同样的操作。