<<探索式软件测试>>第四章 全局探索式测试法

第四章 全局探索式测试法

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)

反反复复的执行同样的操作。

时间: 2024-09-29 11:30:14

<<探索式软件测试>>第四章 全局探索式测试法的相关文章

探索式软件测试--第三章 局部探索式测试法

1.想不想测试软件? 局部性测试的重点把测试经验.专业知识.软件在操作环境下如何构建和运行的知识结合在一起,是我们在测试中做出正确决定.决策分为5部分:a.输入(input)b.状态(state)c.代码路径(code path)d.用户数据(user data)e.执行环境(execution environment) 2.测试就是有所变,有所不变 测试人员进行测试时必须回答如下问题:a.软件运行时的表现是否符合设计预期?b.用户为了某个功能而购买了软件,可是软件是否实现了这个功能呢?c.软件

Android深度探索-卷1第四章心得体会

这一章的和三章的git用法有联系,so,吧上一章的git基本用法搞好了再来,具体的方法就是看书上网查,这里就不做详细步骤介绍了.这章就有点意思了,是源码的下载和编译,有能看的,能自己鼓捣的,本章介绍的是方法,可以类推其他.Android一直主要就是Linux内核的移植,Linux的移植有主要是Linux驱动的移植,所以我们在学习的时候要搭起码俩环境,一个Android的,一个Linux的.本章前半部分是介绍Android 的源码下载和编译,后半部分是Linux的内核源码下载和编译,Linux内核

Android深度探索-卷1 第四章

使用Git下载两套源代码,一套是Android 源代码,一套是Linux 内核源代码.由于Android移植主要就是Linux内核的移植,而Linux内核移植主要是Linux驱动移植,所以为了开发和测试Linux驱动,需要在Ubuntu Linux 下搭建两套开发环境:Android应用程序开发环境和Linux 内核开发环境. 一.下载.预编译.和测试Android源代码的核心步骤: 1.配置Android源代码下载环境 (1)创建一个用于存放下载脚本文件(repo)的目录 (2)下载repo脚

12.探索式软件测试

又是James的大作.相见恨晚,可惜出版5年之后才发现这本书.书中的大部分内容都在微软内部的大型项目上成功应用过. 不论是测试还是开发,都应该仔细读读,对提高自己的程序设计大有益处. 在微软公司,通过使用指南测试法和卖点测试法,可以提前确定那些关键的软件特性,也就是这里的地标.在选择地标后,要确定他们的前后顺序,然后从一个地标执行到另一个地标来探索应用程序,直到访问了列表中的全部地标.在这个过程中,需要记录使用过了哪些地标,并创建一个地标覆盖图来标识工作的进展(可以考虑使用思维导图). 1.全局

重温《STL源码剖析》笔记 第四章

源码之前,了无秘密  ——侯杰 第四章:序列式容器 C++语言本身提供了一个序列式容器array array:分配静态空间,一旦配置了就不能改变. vector: 分配动态空间.维护一个连续线性空间,迭代器类型为:Random Access Iterators 空间配置 typedef simple_alloc<value_type, Alloc> data_allocator 所谓动态增加空间大小,并不是在原空间之后接续新空间,而是以原大小的两倍另外配置一块较大 的空间,然后将原内容拷贝过来

&lt;&lt;探索式软件测试&gt;&gt;第二章 手工测试

第二章 手工测试 1.软件缺陷的根源 本书讨论两种缺陷: a.程序员引入 b.运行环境导致 2.缺陷预防和检测 (1)缺陷预防 缺陷预防技术一般是从开发角度来说的,包括: a.更好的设计规范 b.是时代码审核制度(code review) c.运行代码静态分析工具(static analysis tool) d.运行单元测试(unit testing) 所有缺陷预防技术都有以下根本问题: a.开分人员是糟糕的测试者 b.处于静止状态的软件 c.缺乏数据 (2)缺陷检测 测试人员一般使用两种形式的

探索式软件测试--第二章 手工测试

1.软件缺陷的根源 (1)本书讨论两种缺陷:a.程序员引入b.运行环境导致 2.缺陷预防和检测 (1)缺陷预防缺陷预防技术一般是从开发角度来说的,包括:a.更好的设计规范b.是时代码审核制度(code review)c.运行代码静态分析工具(static analysis tool)d.运行单元测试(unit testing) 所有缺陷预防技术都有以下根本问题:a.开分人员是糟糕的测试者b.处于静止状态的软禁c.缺乏数据 (2)缺陷检测测试人员一般使用两种形式的动态测试:a.自动化测试(通过编写

《探索式软件测试》读书笔记(上)

<探索式软件测试>读书笔记(上) 2015-05-12 一.局部探索式测试 1.如何测试用户输入  1)合法输入和非法输入    输入筛选器   输入检查   异常处理代码  2)常规输入还是非常规输入  3)默认输入或用户提供的输入  4)使用输出来指导输入选择 2.如何测试软件状态 3.代码路径 4.用户数据 5.运行环境二.全局探索性测试 分类 方法 商业区 指南测试法 卖点测试法  地标测试法  极限测试法  快递测试法  深夜测试法  遍历测试法  历史区 恶邻测试法  博物馆测试法

探索式软件测试

探索式软件测试: 在敏捷测试中应用非常广泛 没有固定的测试用例,有一些测试思想和固定的框架以及一些测试场景,来完成测试工作. 即不同的测试思想,不断的应用这些测试思想,本身就是一些策略 自动化测试 手工测试 局部探索性测试 全局探索式测试 混合探索式软件测试 漫游与测试中的棘手问题 手工测试 软件缺陷的根源: 来自软件开发本身! 两种缺陷: 程序员引入缺陷 运行环境导致的缺陷 测试环境和上线环境相差很大 缺陷预防和检测 1.设计更好的设计规范 2.实施代码审核制度 (代码review) 3.运行