探索软件测试

james 惠特克是合作伙伴开发经理在堆,Microsoft。 他是一位之前工程主任到测试镶边、映射和 google web 负责 apps 的 google。 james 是一个在测试 the world 的最解除誉的名称和创作在软件测试的多个畅销书。 他还承载常用。MSDN 博客上

2012 年 7 月

本主题是从书籍 探索测试软件的摘要 :。

应用于

应用程序生存周期管理,Visual Studio TFS,

探索测试的目标

探索测试–计划,则测试

探索测试敏捷团队的

探索测试可以同时与项目的为其编写脚本测试

方案基于探索

探索测试的浏览

在探索测试,测试人员可与应用程序交互在任何方式他们希望并使用应用程序提供响应的信息,更改 course 和一般测试应用程序的功能,而无需克制。 它可能会特别似乎到某些代码,但是,在一个具有体验和经验探索测试人员的手牌,此方法可证明为有效。 提倡者争辩显示,探索测试在发现 bug 和验证允许完整功能人脑被利用功能,而无需预想的限制。

对探索测试的缺点是浪费长时间的该测试人员风险漫步在托管应用程序的查找内容测试和查找 bug。 缺少准备、结构和指南可能导致许多无效率地的小时和多次重新测试相同功能。 一个可以轻松地了解完全临时测试不明确的最佳方式是转到测试。 了解输入、软件环境和其他元素可以更改在测试期间通过的测试人员将较为附带精良的测试其与用途和用途的应用程序。 这些知识将帮助他们测试更好和更智能"和"最大化其发现严重的设计和实现缺点的机会。

探索测试的目标

  • To gain an understanding of how an application works, what its interface looks like, and what functionality it implements: 这样的目标由测试人员通常采用新添加到项目或要标识的那些测试访问点,标识特定测试的难题,因此,编写测试计划。 因为它们测试应用程序了解其的测试需求的深度和查找新的未探测函数,这也是有经验的测试人员使用的目标。

  • To force the software to exhibit its capabilities: 该目的是使该软件工作工作并将其节奏其放在的难题。 这可能或不可能发现 bug,但是,它必须将提供证据软件以满足模型的功能,并满足其要求。

  • 测试 应用程序的边缘和命中潜在的容易受到伤害的位置的To find bugs: 了主要探索测试。 其目标是具有目的,而不是取消目的,研究标识未经测试和以前多虫的功能。 探索测试人员不应在 bug 中这些,它们应考虑它们与用途和用途。

探索测试–计划,则测试

软件测试由变体可能性超加载输入和代码路径指定,存储的数据和工作环境的问题。 确实,则选择是否在任何测试之前解决此差异通过编写由允许计划和测试交错的一个探索方法中,该测试计划或为一个不可能的任务。 无论如何最终 执行 测试,但它完全太过复杂而无法完全执行此操作。

但是,建议方法具有其优点它们鼓励测试人员计划,则这些测试,并使用在测试收集的信息影响期间物理方式运行测试。 这是一个关键优势计划第一个方法。 托管 Imagine 在季节之前预测超级杯的赢利区域或英格兰足球 super 联赛启动。 这很难执行,在显示之前团队如何使用,他们如何处理竞争,主要种是否可以避免伤害。 产生的信息,当季节个包含键的预测与任意数量的准确性的结果。 同样是测试 true 的软件,并且,探索测试。尝试计划,将测试和重新计划在所有的完整了解用于以及测试过程中,它提供的软件如何对应的信息执行、提前期引导小进行的增量拥抱此操作。

探索测试敏捷团队的

使用敏捷方法,探索测试尤其适合于现代 Web 应用程序开发。 开发周期是短,从而使正式脚本编写和维护的 ACE 时间。 功能快速不断演变,因此,最小化依赖的项目 (如预先开发的测试用例) 是理想的属性。 如果测试用例具有不需的一个好的机会原因,编写它首先? 不要对花费更多时维护的测试用例与实际 执行 测试设置?

(有关探索测试的敏捷工具的示例在 Visual Studio 和 TFS,请参见 使用 Microsoft 测试管理器执行探索测试使用探索测试窗口测试在设备上运行的 Windows 应用商店应用程序在 Microsoft 测试管理器中运行测试。)

探索测试可以同时与项目的为其编写脚本测试

查看探索测试作为强替换为基于脚本的手动测试并不是必需的。 实际上,这两个可能占用恰好共存。 有形式脚本可以提供 framework 为帧,研究,并探索方法可以添加变体的元素添加到可以放大其效果的脚本。 我找到将两种方法的最佳方法是从开始正式脚本和使用探索技术插入变体到它们。 这样,单个脚本可以关闭强制转换为任意数量的实际探索测试用例。

传统的基于脚本的测试通常涉及的用户情景或文档的端到端方案我们希望我们的最终用户执行。 这些方案可能来自用户在使用,从应用程序的早期版本中的数据,、和用作脚本测试该软件。 探索测试的添加了元素为传统方案测试扩展该脚本大小插入变体、调查和选项用户路径。

方案基于探索

基于方案的研究将包括用例测试简单的方案和更准确地不会模拟真实的用户,从主方案通常迷路:终究该产品允许许多可能的变体。 我们应不仅需要使用它们的访问,我们应测试处理这些。

因为实际资源管理器使用映射通过原野或其他不熟悉的地形,引导自己在基于方案的探索测试后的目的是使用现有方案。 方案,如映射,正是若要在测试过程中,的一般性准则输入选择,并且,代码路径遍历,但是,它们不是严格。 映射来描述您的目标的位置,但提供了多种方法来获取存在。 同样,那么,当执行方案时,提供了探索测试人员重新进路甚至鼓励考虑多种可能的路径。 实际上,这是探索测试的此窗体的确切的目的:测试方案中描述的功能,添加任意多的变体尽可能。 我们的“映射”不应标识近路,它用于计算 许多 方法。 越多我们可以测试,首选;这将导致更多 confidence 软件以可靠地将执行该方案,而只在从我们的预期可以和之间的用户的手动中时。

通常,一种有用的方案将执行以下一种或多种:

  • 用于用户情景

  • 描述一个要求

  • 演示如何将功能工作原理

  • 演示集成方案

  • 描述一组和安装

  • 描述可能出现的错误的注意事项和

探索测试人员应尽可能地工作以确保它们收集多个方案尽可能从所有这些类别。 是然后我们的任务遵循方案和插入变体,我们根据为。 是我们如何选择插入使此任务探索性质,是该主题我们变为接下来的此差异。

(有关示例探索测试使用敏捷工具在 Visual Studio 和 TFS,请参见 如何:在 Microsoft 测试管理器中启动探索测试会话。)

探索测试的浏览

假定您访问与 london,英语的大型城市,首先次的。 它是新游人的大型,忙,scrum 的地方,具有看到的许多事情和。 确实,如伦敦必须提供,即使最丰富,会有困难时间看到所有的大多数时间不受约束的游人城市。 同一个可以尝试添加了精良的测试人员测试复杂软件;在该世界上的所有项目不会确保完整性。

旅游业受益于结构和免费的组合,所以执行探索测试。 具有全面比可用样式将帮助我们快速地添加该结构。我们的研究并获取我们通过此应用程序和单独测试的许多浏览的形式。 其中的许多浏览放入一个更大的测试方法,并可能甚至将与将正确标识的传统的基于方案的测试浏览如何组织。

所有讨论测试计划需要从该软件的启动分解为更易于管理的小部分。 但是,测试功能可以独立地以查找图面的 bug,只有 + 当功能彼此进行交互。 幸运的是,旅游形式保持不存在这样的决策。 相反,因此建议根据 用途 的分解而不是在应用程序的所有内部框架下测试。 与进程她的休假以目的尽可能地发现相同短时间尽可能将游人,因此,该测试人员也将组织她浏览。 物理游人将选择访问的标志查看和站点的组合,并且,测试人员还将选择组合搭配软件的某个功能。这个 目的执行特定的操作。 此目的通常需要使用方法和函数将合并的任意数目的应用程序功能它们不是,如果对强功能测试模型的建议。

浏览准则

游人的准则确定最佳旅馆,最好的事务和顶部,吸引力,而无需访问许多细节或严重影响游人有许多选项。 探索测试的类似的项目是用户手册,它是否打印或实现为联机帮助 (在中,我通常称为此 F1 浏览 表示快捷方式。大多数帮助系统) 情况下。 此浏览,我们通过不会偏离遵循用户手册的建议。注意的记录,从其主管。

Money 浏览

垂涎游人的每个位置必须具有将这些充分的理由可以是。 对于拉斯维加斯,它是娱乐场和条,并且,对于埃及它是金字塔。 对探索测试人员发现货币功能生成直接销售代码行数。 销售保存合作者需要为应用程序的演示长时间是意想不到的信息源 Money 浏览的。 若要执行浏览,请通过演示运行并查找问题。 当产品代码的 bug 修复、新功能的修改,这可能是演示中断,并且您不仅找到了多 bug,但是,您保存了一些严重的困窘保存了销售代码行数。

标志浏览

作为长大在肯塔基的字段、草甸和林的男孩,我学习了如何通过注意我的较早的同级使用指南针。 处理很简单。 使用指南针找到标志 (节点构树、岩石,峭壁文本,等等) 要转到的方向,尝试访问该标志,然后找到下一个标志,等等。 只要标志都在同一个方向,通过大量的肯塔基林修补程序可以访问。

探索测试人员的 标志浏览 类似的我们将选择标志并将该软件执行相同的标志卖力我们通过林将。 选择设置标志,决定一个命令它们的,然后测试以转到从标志的应用程序到标志,直到您访问的所有在列表。 记录标志使用并创建标志复盖率映射跟踪进度。

alpha 浏览

我使用位于参考线是一个绅士在他的五十 + 年代内声明在先进先出伦敦住所有他的生存期伦敦的徒步浏览中。 一个游人碰巧是名知识渊博在英语历史记录和通常与参考线的难题的学者。 他不意味着是反映,但是,他是好奇的,因此,这将与他的知识已完成是一个非常危险组合…至少参考线的。 在对探索测试,此浏览可以 询问该软件引导方法。 我们如何使该软件的工作工作尽可能? 哪些功能会为其限制? 哪些输入,并数据是否将导致它执行处理? 哪些输入可能欺骗其错误检查的实例? 和内部数据的输入将基础其功能生成任何特定输出?

联邦快递公司浏览

联邦快递公司是过程包提供世界上的图标。 它们选取程序包,则它们的各种分发中心附近移动它们,然后将它们发送到其最终目标。 对于此浏览,而不是将行星的程序包通过联邦快递公司系统,浏览软件的某个思考数据。 此浏览时,测试人员必须更改此数据。 在同一存储的输入,并“在软件周围在”它们。 例如,在中,当地址中输入一个购物站点时,在何处获取它显示? 哪些功能使用它? 如果它用作布告地址,请确保功能的执行。 如果它用作送货地址,请确保功能的使用。 如果可以更新,更新其。 它是否印出或清除或处理? 尝试查找相关数据的每个功能,以便,就象联邦快递公司自行程序包,可以在数据的生命周期的各个阶段参与。

垃圾回收器的浏览

集合镶边石垃圾的人通常知道即使邻居更好地居民和警察,因为它们由街道转到街道,由建筑中,并熟悉道路的每爆沸。 但是,在中,因为它们使用时,它们不在一个位置很长时间保持。 对于软件,这与有条不紊的现地检查。 我们可以决定到现地检查我们由屏幕转到屏幕,对话框是由对话框的接口 (支持,如垃圾回收器,近路) 和不停止详细测试,但是,检查清单的内容 (可能与 super 名模浏览)。 我们还可以使用此浏览由函数、模块按模块,或者让我们的特定应用程序有意义的其他标志转到功能。

错误邻居浏览

每个城市值得访问有坏邻居和区域游人是审慎的避免。 软件也有代码邻居这些部分由 bug 填充的错误。 显然,我们事先不知道函数可以表示错误邻居。 但,当找到 bug 并报告,我们将 bug 计数连接某些功能,可以跟踪 bug 在我们的产品的位置发生。 由于 bug 往往聚合,重新访问该产品的多虫的部分是浏览需要带有。 确实,在代码中对多虫的部分标识,建议通过周围的函数采用垃圾回收器的浏览验证解决不引入任何新 bug。

博物馆浏览

显示上古的博物馆是游人收藏夹。 在基本代码中的上古必需的同一从测试人员) 的注意。 在这种情况下,软件的上古是旧代码。 执行版本或放入新环境的旧代码文件往往需要的错误。 通常差原始开发人员长转到和的文档,旧式代码难以修改,难检查,并逃避测试开发人员的 net 该单元 (这些编写此类为新代码通常只测试)。 此浏览时,测试人员应确定旧代码,并可执行项目并确保这些接收测试注意一个公平份额。

卑劣的浏览

在许多人民的,但好浏览是您访问常见的封送处理一个。 这些属性是浏览您访问使任何人都可以转到的一个。 使用探索测试的术语,这些是最不构成的给用户的不大可能的功能将使用的和一个。 如果您的组织跟踪功能用法,此浏览将处理测试于列表底部。 如果您的组织跟踪代码复盖率,此浏览调用发现无法测试将包含的代码。

完全 Nighter 浏览

也称为 聚为棍棒状一团浏览,这是一个用于捆绑在外部后期并按夜总会的那些合作者。 此处的关键 整夜。 在 完全 Nighter 浏览中的 探索测试人员会保留它们的应用程序运行,而不结束它。 打开这些文件和不关闭它们。 通常,他们甚至不需要保存它们以避免重新设置可能发生的影响的任何潜在保存时。 这些控件连接到远程资源而绝不会断开连接。 此外,当所有这些资源在常数使用时,他们甚至可能运行测试使用其他浏览继续软件工作和移动数据。 如果用户已禁用太长,它们可以找到其他测试人员不会发现的 bug,因为该软件拒绝发生的干净的重置,则在重新启动时。

super 名模浏览

此浏览,我希望表面上考虑。 您看到的,不要超过肤浅范围。 此浏览不是有关函数或 material;它是有关查找和第一次版式。 在 super 名模浏览时,焦点不在函数或物理交互。 它只在接口。 采用浏览并注意界面元素。 无论看起来好? 它们是否正确呈现,因此,性能是否是好? 因为您进行更改,GUI 是否正常刷新? 它是否因此正确执行或是否在屏幕上不悦目的项目? 如果该软件在方式使用颜色表示某含义,则一致地执行? GUI 是否面板内部符合按钮和控件您将希望它们的位置? 接口是否违反任何约定或标准?

终日懒散"主页"的用户浏览

始终有就不参与的组浏览中的人。 他在有他的已越过的二进制文件臂的返回重要。 他乏味,不主动,并正确完成一奇迹他原因首先需要支付浏览。 教练 potato 浏览 意味着完成相同影响实际工作情况。 这意味着接受任何默认值 (应用程序传递预填充的值),将输入字段保留为空。,加载在作为一点窗体数据,从未单击广告,分页通过屏幕不单击任何按钮或输入任何数据,等等。 如果有转到的任何在应用程序中选择一种或另一种方法,教练 potato 始终采用最低电阻路径。

强迫性的浏览

OCD 测试人员多次将在同一输入。 它们多次将执行相同的操作。 它们将重复,重复,复制,粘贴,借用,然后执行某些所有。 首先,游戏的名称为重复。 对购物网站的项目再对它检查多个购买折扣适用。 输入有关屏幕的某些数据,然后立即返回重新输入它。 这些是开发人员通常不程序错误情况的事件。 它们可以下怒重大浩劫。

开发人员通常考虑执行操作按特定顺序和使用目的用户软件。 但是,用户发生错误,并且必须回溯,并且,它们通常不了解特定路径开发人员能够在当初它们的,并且,它们将其。 这可能导致开发人员仔细将使用模式快速步入歧途。

测试是复杂的,但是,对探索技术的有效地使用可帮助复杂性和导致优质软件的生产的温驯。

请参见

其他资源

如何:在 Microsoft 测试管理器中启动探索测试会话

如何:从探索测试会话中新建手动测试用例

使用 Microsoft 测试管理器执行探索测试