探索式测试--第六章(实践中的探索式测试)--读书笔记

本书为James Whittaker编写。本书写的是一种比其他任何缺陷都重要的特殊缺陷:即逃过所有各种检测手段而最终存在于发布产品中的缺陷。本书是作者设计“漫游”这个隐喻来指导软件测试。写本书对作者本人来说是一种享受,对读者来说也是一种享受。希望大家仔细品读。

漫游测试

本章的作者都是在有发布压力的真正软件项目中首批有意使用漫游隐喻的测试工程师。

使用漫游测试法来测试的项目涉及到很多产品线,这里选择其中很有特色的五个项目进行展示。

Dynamics AX 客户端的漫游

Dynamics AX是企业资源规划(ERP)解决方案。这里我们通过图形界面(GUI)来测试,之前我们团队主要是测试公共应用程序接口(API),所以这对我们是一种思维方式的转变。

学到了如下几件事情:

1、我们发现的很多缺陷都不是通过测试设计中所定义的测试用例找到的;

2、GUI测试引入的场景和复杂的用户交互似乎无穷尽,不容易使用自动化测试;

3、不管测试是自动的还是手动的,都必须放在回归测试中加以维护,必须不断考虑每一个新的测试用例所带来的投资回报率;

4、Dynamics AX是一个大型的应用程序,我们并不清楚其中的每一部分,更不用说应该如何对它进行测试。

探索式测试有助于我们解决以上所有的问题。最终我们使用下面的方法把它融入到我们的流程中。

1、在每个功能签入之前,测试人员对代码执行探索式测试;

2、探索式测试用于帮助我们在测试设计中开发出测试用例,它也可以帮助我们发现在规范说明书中可能漏掉的用户场景;

3、未经改动的手工测试很少能检测到新问题,但是对现有测试做哪怕是最细微的改动都可能发现许多缺陷;

4、在缺陷大扫除时,我们采取了探索式测试,以引导我们到当前功能以外的地方发现相关的缺陷。

有用的探索漫游

漫游测试方法使探索式测试更加具体、容易理解和可重复使用。

出租车测试法

同样的概念也适用于测试应用软件。要到达所需的屏幕、对话框或一些其他功能组件,用户通常有大量的路线可以选择。因此,测试人员的责任和出租车司机一样,他们必须熟悉到达指定位置的每条可能的路径。然后测试人员可以利用这方面的知识验证每条路径是否能安稳地将用户送至目的地。该测试方法的最终目标是要重复执行某项特定的操作。但是,不是重复执行完全相同的测试路径,重点是执行不同的测试路径。这是它和强迫症测试法的关键区别

与前面的测试法相反,还有一种出租车禁区测试法。这种漫游的目的是要验证无论选择哪一条路径用户始终都无法到达目的地。

多元文化测试法

多元文化漫游适用于测试,因为要为全世界不同国家提供软件,测试人员就必须考虑本地化测试。语言、货币、日期格式、日历类型等必须适当地修改以适用于最终用户的地域。

虽然产品的本地化测试可以非常复杂,但可以从几个基本思路开始。

  • 本地化的一个基本要求是没有硬编码的文本。测试本地化的一种极佳方式是更改应用程序和操作系统的语言,然后验证静态文本、异常消息、工具提示、菜单项、窗口标题等是否已经不再提示为英语。此外,很可能有些特定的词语不应该被翻译成其它语言,例如作为品牌名称中的部分单词。

  • 尝试在从右往左写的语言(如阿拉伯语)环境下启动应用程序,验证控件和窗口可以正常运行。此外,要测试控件,尤其是自定义控件,并确保它们就像在从左到右语言模式下一样,可以正常地工作。

收藏家测试法和收集缺陷

我们收集了很多缺陷,下面是钟爱的一些典型缺陷。

使用出租车禁区测试法收集到的一个缺陷

Dynamics AX有一个已知的局限性:它仅支持同时打开8个应用程序工作区。超过8个时应用程序就会崩溃。

可以采用“测一送一”测试法,发现缺陷;

可以采用出租车旅游,考虑打开一个新工作区的所有可能方法。用所有可能的方法打开第8个工作区。接着使用出租车禁区测试法,验证用户无法打开第9个工作区。

使用出租车测试法收集到的缺陷

Dynamics AX提供几个常见的菜单给用户。为了使测试更有趣,决定采用出租车测试法,使用下列路线执行菜单项漫游:1、使用鼠标单击菜单和菜单项;2、发送菜单项对应的热键;3、发送菜单的访问键,紧接着再按下某一菜单项的加速键。

使用多元文化测试法收集到的缺陷

Dynamics AX发行了多种语言版本,多元文化漫游有效地帮助发现了这方面的缺陷。

漫游测试提示

超模测试法

测试有图形界面的产品时,超模测试法是去除界面中明显缺陷的重要手段。

与配角测试法相结合

在配角测试中,为了获得整体效果,必须把注意力向左或向右转10度。

与深巷测试法和混合目的地测试法相结合

深巷测试法和混合测试法目的是测试不同特性之间是如何交互的。把他们应用到用户界面时,重要的是测试外部环境对应用程序外观的影响。

应用程序如果有大量的外观缺陷,虽然每一个单独看起来似乎没有害处,但它们合起来往往对可用性有一个负面的积累效应,因此这些缺陷不应忽视。

取消测试法

集中测试应用程序在功能终止后是否能继续正确工作。第一,在取消被测对象之前应该改变它的状态,这一点非常重要。第二,在进行取消操作后再次尝试同一场景也非常重要。

地标测试法

有些应用程序是如此之大,在某些情况下,测试人员甚至可能对他们负责范围之外的其他功能不是很熟悉。解决这个问题的办法是找一个互补的熟悉另一功能领域的专家,与其结伴测试。

利用漫游查找隐错

使用旅游的隐喻来组织我的测试思路帮助我发现了大量的可修复的缺陷。

某些测试法在一些特定的情况下最有效。

测试用例管理解决方案的测试

测试用例管理系统的客户端和服务器紧密联系。

取消测试法

缺陷:在我们取消和工程项目最初设置的连接后,我们就无法再通过手动方式连接到该项目。

缺陷:在删除一个配置变量时,无论选择取消或确认操作,都会被再次提示。

缺陷:计划内容,选择不同的测试套件时,如果正在加载的测试用例,该操作不会被取消。

缺陷:反复刷新几次后,刷新时间开始成倍增长。

缺陷:疯狂刷新测试设置管理器让测试套件Camano崩溃了。

破坏测试法

破坏测试法迫使你考虑应用程序所使用的资源,以便你可以调整可用资源,从而发现会导致其失败的场景。

缺陷:没有TFS连接却试图查看测试配置时,测试套件Camano会崩溃。

缺陷:启动时如果Camano.config被损坏或不存在,Camano会崩溃。在配置文件被修复前,Camano会持续出问题。

缺陷:配置文件很大时,Camano会崩溃。

缺陷的发现归于如下三点:研究配置文件、产生一些变化和修改其属性。破坏测试法建议把它变为一个只读文件,把文件删除,或改变它的类型等。Camano对我来说,有用的属性只是文件的大小。

快递测试法

缺陷:从工作项返回后,测试计划没有自动更新。

缺陷:从TAC中选择一个测试计划,然后修改其中一个项目,Camano会崩溃。

发现这个缺陷所用的策略与前一个缺陷相同:修改属性和项目,并确保他们在其他地方被正确刷新。

缺陷:测试计划使用已删除的版本总是会导致Camano崩溃。

测一送一测试法

可以发现应用程序在多用户同时使用时的缺陷。

缺陷:测试配置管理器,在设置“指定新的测试计划”属性时,如果使用的不是最新的配置文件,Camano就会崩溃。

 

在Windows Mobile设备中的漫游实践

我的测试方法和哲学

在其他人之前找到产品的弱点,并且确保能充分发挥产品的优点。

不论面对什么样的测试难题,我首先做的是准确描述这个问题。

和其他工程学一样,测试是一个不断进步的领域。为了不断提高产品质量,要向开发人员和设计人员公开你的测试方法。因此,你必须始终领先于开发人员。在他们了解你的测试方法且你也了解他们如何解决算法问题时,再破坏他们的代码就变得越来越困难,能做到这样,就算大功告成了!

漫游测试法找到的有趣缺陷

取消测试法

在mobile智能拨号功能中找到一种可能出现竞争条件的情况。在这个功能里,我们知道系统使用了一个后台搜索进程根据搜索条件进行查询,这样就可以提高搜索性能。数据集越大,此进程所运行的时间就越长。这显示是一个使用”取消测试法“的极佳机会。

另一个例子是在mobile中蓝牙连接向导中,找到了一个缺陷,该缺陷随后被修复。

使用破坏测试法

联系人列表与许多其他功能有关:电话历史记录、短信消息、快速拨号等。了解了这一点,我就想到破坏测试法。

使用超模测试法

探索不同屏幕分辨率下的用户界面中心点和定位点。

破坏测试法实例

如果测试的是使用网络连接的应用程序,那就是使用破坏测试法的好地方。另一种捣乱方法是打开该手机的飞行模式,这将关闭所有的无线信号。

超模测试法实例

地图程序,启动应用程序,这个用户界面没有一种直观的方式让我把当前的位置设为起点。有趣的是,另一个程序可以标识出我的起始位置。如果简单加上预填起始位置的功能却可以产生天壤之别:一个深受大众喜爱而另一个是在网络上饱受批评。

我们发现超模、破坏和强迫症这三大测试法最为有用。

 

Windows媒体播放器的漫游测试实践

Windows 媒体播放器

简称为WMP。是以用户界面为中心的应用程序。所以我使用了与这方面相关的漫游测试法。

遍历测试法

根据功能的相似程度进行分类,然后可以开始按规定次序进行测试了。对应用程序进行分类的好处是测试人员可以有系统地测试和识别其他方法可能忽视的功能。

超模测试法

如果以发现的缺陷数量作为成功标准,就应该使用这样的测试法。在超模测试法的例子中,我把文字拼写错误归纳为”唾手可得“的错误。产品开发早期,这种类型的缺陷比较普遍。

极限测试法

执行手动测试时,多问一些”如果这样?如果那样?“的假设性问题是非常有价值的。

极限测试法:边界之旅

边界之旅涉及的是在上下边界附近进行测试,只为寻找一个突破点。

典型的例子如下:

使用文本框所允许的最大数量的字符或空字符来填充它;

建立一个有嵌套很多层的文件夹结构,然后将媒体文件放入最内层的一个文件夹,然后试图播放该媒体文件;

单击一个按钮上非常接近边缘的地方,看看点击是否仍可识别。

停车场测试法及其在Visual Studio Team System测试版的应用

Sprint中的测试

在我获得了新的应用程序的各个部分是如何协同工作的时候,我把那些值得深入关注和后续测试的区域记录下来。下一步任务的重点就是针对每个特性进行测试,通常在测试中还会有意识地加强某一方面的测试,比如可访问性,或触发所有的错误对话框,或强迫采用所有的默认值。使用停车场测试法和破坏软件测试法之后,一般情况下,最容易摘取的低枝头果实基本都会被找到。

我的最后一轮测试更有针对性,也更加彻底。通过几天对被测产品反应的观察,现在时候使用一些更具有破坏性的测试法了,我们要挑战在产品开发时所作出的种种假设。我最终使用最多的是深巷测试法和强迫症测试法,这些测试法都是基于我过去几天对产品行为的观察理解以及我和开发人员关于具体代码实现的相互交流。

找到的缺陷进行了分类:

9%,出租车测试法(键盘、鼠标等);9%,遍历测试法(在释放或消除资源后,再进行检查);15%,深巷测试法(试图进行某种已知的不良操作,如关闭对话框两次);18%,强迫症测试法;19%,地标测试法;30%,超模测试法。

每当我要重新测试以前测试过的一个功能,我会再运行一次停车场测试法。

停车场测试法

主要目标:在测试范围内确定所有功能的入口点和那些有可能发生问题的地方。

次要目标:确定各种具体的漫游测试法能有施展所长的地方。

幸运目标:在第一轮测试中能枚举出一些可能招致产品撤回的缺陷。

在某种程度上,停车场测试法就像地标测试法和超模测试法的结合体。

 

漫游测试中的测试规划和管理

定义地貌

在工作中还没有使用过探索式测试法的人们经常有两个担心。第一是担心要测什么。第二是担心这种知识的可延续性。

漫游测试法描述了测试内容和测试过程。漫游只定义了缺陷类型和产品行为,具体用于确认缺陷的方法则由测试人员来决定。这样就使得管理者可以自由指定需要使用什么测试策略,而让测试人员负责选择适合于功能探索的具体测试战术。

第二个担心不仅仅是探索式测试法的问题,或者更是整个测试行业的难题。对于这种情况,漫游测试法正好可以发挥作用。因为漫游测试定义了测试什么和如何测试,所以任何正常的测试人员都能够执行类似的漫游,发现类似的缺陷。

成功的漫游测试会刻意揭示某一类型的缺陷,提供足够的细节让测试变得更有针对性,但又不至于太偏,不至于限制了被测功能的范围或是限制了所发现缺陷的种类。为了达到这个目标,尤其重要的一点是把从预先定义的漫游计划中衍生出来的顺道游和配套游记录下来。

旅行计划

可能意味着先进行一个调查之旅(使用地标测试法或停车场测试法),以了解从开发应用程序到维护它的全过程中需要负责的所有功能。在完成调查之旅之后,你将能够做到分辨和上报阻止产品发布的缺陷,并且了解用户运行程序时会使用到的各种路径是否畅通。这意味着我们提供的漫游路径首先必须覆盖核心场景,同时也要提供一些覆盖面非常广泛的机会之旅,这样可以避免遗漏某些冷僻不寻常的特殊情况。

许多漫游测试法天生适合开发周期从开始到结束的整个过程。一个能够探测到控件没有被正确实现的测试法(如出租车测试法),需要在更早期使用。

早期开发阶段适用的漫游方法包括地标测试法和出租车测试法。这些探索式测试注重于把事情做成而不是以某种特殊的方式做事情。

后期开发阶段适用的漫游法包括深巷测试法、遍历测试法、超模测试法和取消测试法。这些探索式测试注重于一种特定方式来探索某一特定的东西。

对漫游测试法的调整应该是有意识的,并要提前计划好。

最后,无论使用何种测试技术,从刚开始就要有效计划和调剂测试资源,以保证团队成功的机会。

让漫游测试运转起来

虽然不断地进行探索和变化是探索式测试过程中很重要的一部分,但是整个路径和指导测试的方针在整个过程中不能偏离目标。抓住目标意味着把握住测试的最终目的。

我们要求一条漫长路线应该简洁,最多运行几个小时长,所以中断一个已经开始的漫游不会有什么好处。指导性的漫游测试提供了一个很好的框架,其他测试人员可按照这个框架找到类似的缺陷。

漫游结果的分析

因为漫游测试会让观察者在测试中具有一些偏见,所以它不仅为软件中已经使用漫游测试法测过的部分提供了很多有价值的信息,还指出对于这些功能是否需要添加新的漫游测试法。在漫游路线之外发现缺陷的报告可以提醒大家:现在需要调整一下路线,它应该和前面使用的漫游路径类似,但是重点在于那些意料之外的缺陷。

最后,当多个测试人员采取相同的漫游时,他们报告的缺陷会发生一些重叠。即使漫游可以极为有规律地揭示一类特定的缺陷,它仍然可以发现不同的缺陷。

判断:里程碑和发布

在需要汇报产品质量的时刻,如果使用基于漫游的测试方法,就能得知产品中哪些部分可以正确运行以及正常工作的程度。基于漫游测试的方法能够确定应该优先寻找哪几类缺陷,这样可以为风险预估提供早期检测手段。

在实践中

具体情况决定着策略的选择,从具体情况出发,决定如何把工作分解并使用基于漫游的测试方法。必须在初期就要建立起那种”坚持沿着漫游路线前进“的原则,找到需要将来进行深入测试的方法。首先,把自己负责的区域划分出来,然后把精力集中于会带来有趣结果的地方,或者故障高发地带。

小结

微软内部使用的漫游概念有助于软件测试人员更好地组织他们的手工测试,让他们的测试更一致、针对性更强、目的性更强。所有参加这些活动以及其他案例研究的测试人员们都觉得此概念很有用,他是一种用于描述测试技术和交流测试技巧的优秀方法。现在测试人员们已经很少把注意力集中于底层单个的测试用例,而更专注于较高层的测试设计及测试技术等概念。

猜你喜欢

转载自blog.csdn.net/zimingzim/article/details/81488413
今日推荐