探索性测试(四):探索性测试并不是快速测试

简介:

快速测试也是一种测试的方法,它既可以照本宣科的进行,亦可以探索的方式进行。尽管一个使用高度探索性方法进行测试的测试员可能会执行很多快速测试,而快速测试也通常是运用探索性测试方法时的重要因素。但是,快速测试和探索性测试并不是一样的。

  快速测试是需要少量时间或一点精力去准备和执行的廉价测试。这类测试甚至不需要具备与待测试的应用程序相关的大量知识或相关的业务领域知识,但它们有助于快速地获取新的信息。快速测试不是强调广泛和完整,它的目的是用最低的成本快速揭示信息。

  快速测试是了解产品、识别区域风险及薄弱环节和困惑部分的一个好方法。一个测试员几乎总是在某个测试活动中同时进行一两个其它测试活动。作为最开始的活动,一组快速测试有助于一个冒烟测试或正确测试的进行。几轮相对无计划、非正式的快速测试可以帮助你发现或制定出一个更全面或更正式的测试计划。

  在快速软件测试类别中,James Beach 和我提供了许多快速测试的例子。你将会注意到其中的一些例子被成为旅行。注意,并不是所有的旅行都是快速进行的,而且并非所有的快速测试都是旅行。

  幸福的路径

  以你预计的、终端用户可能进行的方式,从开始到结束完整地执行一个任务。以最简单的、用户最可能的方式、最直截了当的方式使用该产品,正如最乐观的程序员或设计师想象的用户可能进行的方式。寻找可能使一个通情达理的人困惑、迟缓或不快的任何问题。Cem Kaner 有时称这种测试为“认同测试”。 倾向于去了解该产品,而不是发现故障。如果你的确发现明显的问题,那能对于该产品来说是个坏消息。

  变化的旅行

  使用一个产品,寻找可变因素并使其发生改变。使其在每个层面尽可能不同。如果你使用快速检测的方法来了解,那就要寻找和把重要的变量归类。寻找他们潜在的关系。当我们第一次接触一个产品时,识别和探索变化是我们测试基本结构的一部分。

  抽样数据旅行

  利用任何你能用到的所有的抽样数据。对于某一种类型的快速测试,最好使用一个简单的值,它的效果是容易理解或计算的。而对于另一种类型的快速测试,选择复杂的或者极端的数据集。观察数据输入的单元或者格式,并且试图改变它们。挑战程序设计器认为会拒绝或者不恰当的数据。一旦你关于合理或者中度质疑数据得到处理,你可以选择尝试去做。。。。。。

  攻击性输入

  发现输入的来源并企图违反限制的输入。尝试一些异常数据的例子:期望大批输入却输入零;期望正数却使用负数;期望大小合适的数却输入巨大的数;仅支持处理数字的地方使用字母;反之亦然。在一个领域使用几何扩展字符串。双倍长度直到产品崩溃。以不同于你想“正常”或“预期”想法的使用字符。给系统注入任何类型的噪音,看看会发生什么。

  人们偏向去讨论非常多的攻击性输入。或许是由于攻击性输入被黑客使用来破坏系统;或许由于攻击性输入相对更直截了当。或许由于它相对比较容易描述。或许由于攻击性输入会产生巨大的意想不到的结果。然而它们绝不是唯一一种快速测试,当然也不是使用探索性方法去测试的唯一方法。

  文档旅行

  查阅联机帮助或用户手册,并找到一些关于如何完成一些有趣活动的使用说明。明确的做这些。然后通过使用说明即兴发挥并尝试去做。如果你的产品有一个用户说明,那就按照说明操作。你可能发现产品或者文档的问题。无论哪种方式,你已经发现一个潜在的很重要的不一致性。即使你不暴漏一个问题,你仍然会了解这个产品。

  文件旅行

  看看存在exe 文件的文件夹。检查目录结构,包含的分支。寻找Read ME、帮助文件、日志文件、安装脚步、conf 、ini 、rc文件。审视DLLs的名字,并推断它们可能包含的功能或它们的缺失可能会破坏应用程序的方式。使用任何你有的辅助材料来引导和集中你的行为。另一种为这类测试收集信息的方法是:使用工具去监控这个安装,把工具的输出作为一个起点。

  复杂的旅行

  使用一个产品,寻找最复杂的特性、最有挑战的数据集、最大的依赖关系。不仅要寻找隐藏的角落和缝隙,而且要寻找程序类似的主要交通区域,繁忙市场,办公大楼,火车站,这些地方有大量的互动,bug 可能混迹于人群之中。

  菜单、窗口和会话旅行

  使用一个产品并寻找所有的菜单(主菜单和上下文菜单)、菜单选项、窗口、工具栏、图标和其它的控制栏,把所有的都运行一遍,对它们进行分类,或者构建一个思维导图。

  键盘和鼠标旅行

  使用一个产品,寻找所有你需要用到鼠标和键盘的地方。在键盘上敲击所有的键,敲击所有f键,Enter 键、Tab 键、Esc 、Backspace; 通过字母顺序运行,结合每个键与转变Ctrl 、Alt、 Windows键CMD或其它选项,在其它平台上,欧洲的AltGr键。单击(右,左,左右同时,双击,三重)任何东西。按键的时候与shifted一起按。

  中断

  开始一个活动并在中途停止它们。在不合适的时候终止它们。使用Cancle按钮,O/S级中断(ctrl-alt-delete或任务管理器)。安排其他程序中断(比如屏幕保护程序或病毒检查)。同时尝试暂停一个活动并返回。把你的笔记本电脑进入睡眠或休眠模式。

  破坏

  当系统在一个正常的状态,开始使用一个功能,然后改变其状态。当文件处于编辑状态时删除它;弹出磁盘;拔出网线或电源线,通过类似的方法获得机器的不正常状态。这和中断相似,除非你期望功能自己通过检测不再能安全运行来自我中断。

  调整

  设置一些参数到一个特定的值,然后,在随后的任意时候,在没有重置或重新创建包含文档或数据结构的情况下,重置那个值为其它别的东西。程序员通常期待通过GUI进行对配置和变量进行调整。黑客和有创见的人希望找到其他方法来改变这些值。

  机器打桩

  不管你在做什么,做更多的事,以及在这些事情上做其它的标注。获得更多的过程;尝试建立更多目前同时存在的状态。调用对话框和非模式对话框嵌套。在多用户系统情况下,让更多的人使用该系统或使用工具模拟这种状态。如果你的测试似乎引发奇怪的行为,在同一个地方堆积,直到让这个异常变得更极端。

  连续的使用

  测试时,不要重启系统。让窗口和文件打开,让磁盘和内存使用量挂载。你希望随着时间的推移,系统表现出失去了对任务的跟踪或者陷入了困境。

  功能相动

  发现各个功能互动或共享数据交互的地方。寻找任何相互依赖性。探索它们,开发它们和给它们加压。寻找程序重复的地方或允许你在不同的地方做同样的事情的地方。例如,对于数据显示在不同的方法和不同的地方,寻找不一致性。再比如,把所有的表单中的字段设置到它们的最大值,然后遍历报告生成器。

召唤帮助

  在一些操作或活动中使用调出上下文相关的帮助功能。查看这个文件的帮助文件是否有效地解答了问题,或者是否它通过在屏幕的简单重述低估了用户的智商;甚至这种帮助是否切实可用。

  疯狂点击

  你有没有注意到一只猫或一个孩子可以轻松是系统崩溃?测试不只是“敲打键盘”,但这句话也并非空穴来风。试着去敲打键盘。尽量到处点击。屏幕上每平方厘米都要点击到,直到你找到一个秘密按钮。

  鞋测试

  对于一个非常廉价的压力测试,使用键盘上的自动重复键。寻找按一个键可用进行的对话框,例如,另一个对话框(可能是一个错误消息),这个对话框的按键与能返回到第一个对话框的按键相关。给键盘穿上鞋并让其行走。让这种测试运行一个小时,如果有一个资源或内存泄露,这种测试可以暴漏它。注意,一些轻量级的自动化可你为你提供虚拟的鞋。

  闪烁测试

  找出产品的某一个方面,这个方面能产生大量的数据或能够迅速进行一些操作。浏览一个长日志文件过浏览数据库记录,故意滚动太快而看不到细节。注意线长度的趋势,或数据的外观及形状。使用Excel 的条件格式特征来突出数据细胞之间的有趣的差异。软化你的注意力。如果你有一个具有银行显示器的测试实验室,扫描或浏览它们;不正常的行为模式能出人意外的容易识别。

  错误消息的遗留

  实现功能是对程序员的奖赏。而由于一些错误或例外会导致一个心理问题:标签本身表明某处出错了。人们往往会主动避免思考故障或错误,因此,程序员有时会糟糕地处理一些错误。这时候,使错误信息发生并仔细检测。注意错误和正常路径之间的细微的行为差异。使用自动化使相同的错误出现成千上万次。

  资源匮乏

  逐步降低内存、磁盘空间、显示分辨率和其他资源。保持产品资源匮乏,直至它崩溃,或者优雅的降低功能(这是我们希望的)

  多个实例

  同时运行大量的应用实例。开放、使用、更新和保存相同的文件。在不同的窗口操作。注意对资源的竞争和配置。

  疯狂配置

  用非标准的或非默认的方式来修改操作系统的配置。这种操作在安装这个产品之前或之后都可以进行。打开“高对比度”可访问性模式,或改变本地话默认。改变系统硬盘的字母。把东西放在分默认目录。使用注册表编辑器(用于注册中心条目)或文本编辑器(用于初始化文件)的方式来破坏你程序的设置,这都将引发一个错误消息,恢复或引出一个正常的默认行为。

  重述:快速测试有可能是高度探索性的,但它们只是探索性测试的一个种类。不要轻信快速测试或某些类型的快速测试都是探索性测试。

====================================分割线================================

最新内容请见作者的GitHub页:http://qaseven.github.io/

目录
相关文章
|
3月前
|
测试技术 持续交付 UED
探索性测试
探索性测试
|
测试技术
什么是探索性测试?探索性测试有哪些方法?
什么是探索性测试?探索性测试有哪些方法?
152 0
|
测试技术
短视频软件开发,测试分层及探索性测试的优势
短视频软件开发,测试分层及探索性测试的优势
|
测试技术 敏捷开发
|
敏捷开发 测试技术 定位技术
敏捷开发模式下的利刃:探索性测试(ET)
探索式软件测试是一种强大的黑盒测试思考方法,但却被广泛误解。在某些情况下,它可以比自动化测试更加有生产力。它是一种经过深思熟虑的测试方式,没有测试脚本,可以使你的测试超出各种明显已经测试过的场景。 什么是探索式测试 探索式测试(Exploratory Testing)是一种软件测试方法,也可以说是一种测试思维方法,最先是 Cem Kaner 在 1983 年提出的。
2160 0
|
测试技术 数据挖掘