探索性测试是一种特定类型的软件测试,对一个应用程序有许多好处,使其充分发挥潜力。
一个团队将探索性测试整合到他们的常规检查中的方式甚至可以决定软件的功能如何,特别是当这以新的和意想不到的方式接近测试程序。 这有助于测试人员发现应用程序中的问题,否则这些问题在启动前可能不会被注意到,并导致关键功能无法工作。
了解探索性测试的过程、类型和方法,可以帮助你指导组织和其测试团队如何将其纳入他们的常规检查。
也有一些免费的工具可以用来促进这些检查,并在问题可能成为发展的路障之前注意到它们。
在本指南中,我们展示了探索性测试的好处,以及团队在实施前应考虑的关键因素。
什么是探索性测试?
探索性测试结合了测试设计和执行阶段,确保了测试人员的完全操作自由,并允许他们不断简化工作。
当这些团队检查软件时,他们很可能会发现需要彻底检查的新组件,并可能很容易提出有利于应用程序的新测试。
探索性测试类似于临时性测试,但遵循更严格的文件,也包含了一个更积极的学习过程。
这种结构化程度较低的方法可以帮助测试人员确定应用程序如何对现实场景和测试用例作出反应,并作为脚本测试的一个重要补充。
一个团队的探索性测试的质量往往取决于单个测试人员的技能,因为检查需要创造力和对软件的全面理解。 这是一个不断发现的过程–测试人员使用演绎推理来指导其整体技术。
探索性测试特别有帮助,因为它反映了用户可能会如何使用软件。 大多数用户是偶然发现错误和问题的,所以这些无脚本的过程可以帮助测试人员发现预先确定的检查可能无法发现的问题。
一个团队也有可能将这一程序自动化,以确保更高的效率水平。
1.什么时候需要做探索性测试?
探索性测试通常在几乎所有的软件测试过程中都是有用的,尽管它特别擅长于提供关于应用程序的快速反馈。
如果他们用完了脚本测试,团队也可能纳入这些检查。 如果没有明确的软件检查方向,探索性测试可能有助于发现符合标准检查之外的问题。
确保多样化的测试程序让测试人员在任何阶段都能更深入地了解这个软件,但尽早进行测试可能会带来更多好处。
团队有可能在以后根据需要重新进行探索性测试,以获得额外的安心。
2.当你不需要做探索性测试时
有一些情况下,探索性测试没有提供任何好处,尽管对于测试人员来说,等到软件有了核心功能之后,会更加有用。
一个应用程序的功能通常是相互交叉或相互作用的,这意味着一旦开发团队在这个软件上增加了更多的功能,对一个功能的探索性测试可能会被淘汰。
也可以在进行这些测试的同时进行脚本检查,而不存在问题,前提是测试人员可以确保有强大的文档水平以避免混淆。
与其他测试类型相比,探索性测试具有高度的通用性,使这些检查具有高度的适用性。
3.谁参与了探索性测试?
探索性测试在某些方面涉及许多工作人员,包括:
– 任何技能水平的软件测试人员都可以进行这些测试,尽管对软件有更好理解的团队成员可以设计更多种类的检查。
经验也可能影响他们确定最有用的测试的能力。
– 软件开发人员如果承认这些测试的结果,就会对任何建议采取行动,并经常开发自己的解决方案。
他们对测试的反应是使应用程序达到适合成功发布的状态。
– 项目经理负责监督整个过程,甚至可以决定团队采用何种测试类型。
他们还可能负责为团队采购可以简化甚至自动测试的软件。
探索性测试的生命周期
探索性测试过程非常注重测试人员的自由,但仍然遵循特定的结构。
这种方法的主要三个阶段是:
第一阶段:学习
测试人员首先要对软件及其功能有一个深刻的理解–批判性地分析它,以确定它是如何组合的。
这使得测试人员能够弄清用户可能可行的通常输入,尽管他们可能已经知道该应用程序和它的功能。
学习阶段甚至可以要求提供关于如何操作软件的教程。 这是探索阶段,使测试人员具备所有必要的信息,以便他们设计出广泛的有用的测试。
第二阶段:测试设计
探索性测试设计确实涉及各种规则和参数,但与脚本测试相比,仍然提供了明显更多的自由度–在测试开始前就已经知道其具体内容。
测试人员可以设计出他们认为更适合应用的检查,并有可能为开发团队发现有价值的数据,包括值得注意的错误供他们修复。
测试团队利用这一阶段来确定采取哪种方法,以及如何在不同的测试人员之间进行分工,以发挥他们的优势。
第三阶段:执行
在设计好要使用的检查后,测试人员现在可以用他们认为最有效的方式检查应用程序–他们可以在设计好具体的测试后立即进行。
这是测试人员积极寻找问题的阶段,以及他们发现的任何问题如何能够反馈到其他特性和功能中。
虽然在探索性测试的执行过程中,有一定程度的直觉工作,但它仍然遵循既定的流程和目标,允许一个流动的测试,可以很容易地适应具体的测试目标。
探索性测试与脚本化测试
探索性测试实际上是脚本测试的反面,尽管两者对于确保应用程序为发布做好准备都很重要。 后者通常更加正式和结构化,与探索性检查相比,包括许多广泛的测试,后者通常对应用程序的功能更加具体。
作为其中的一部分,探索性测试的适应性也明显更强,而如果软件有重大变化,脚本测试就会陷入困境。 探索性测试可能会发现错误,并更快地对其采取行动,使前者在快速反馈至关重要的情况下特别有用。
1.主动探索性测试
主动探索性测试包括一个测试人员为他们的检查设计一个自动脚本,由另一个测试人员执行。 这些脚本会考虑到之前的测试,如果适用的话。
两个测试人员通常在整个检查过程中交换角色,以反复检查这些脚本和流程的可靠性。
主动测试具有更广泛的覆盖面,而不牺牲探索性检查的商标特异性。 这些脚本还可以提供更好的文档,使测试人员发现的任何问题更容易重现。
文档是主动测试的一个重要组成部分,因为这也有助于利益相关者看到应用程序的整体进展。
2.被动的探索性测试
被动的探索性测试只需要一个测试员,尽管成对工作可以进一步简化过程。
这种方法涉及记录测试人员行动的特定软件–为他们提供简单的步骤来复制他们发现的任何问题。 这通常是以视频的形式,由测试人员进行评论,逐步解释他们的行动。
记录测试过程还可以深入了解应用程序的性能,包括它对输入请求的响应速度。
被动测试为测试人员和开发团队提供了大量关于软件功能的详细信息。
探索性测试技术
探索性测试通常采用 “参观 “的形式–测试人员以最有效的方式探索软件。
团队可以选择的旅游项目有很多,包括:
– 旅游指南
这种方法优先考虑应用程序的突出功能,密切复制普通用户与软件的接触方式,并发现他们会自然发现的问题。
– 历史之旅
这次巡视检查了应用程序最古老的功能,以确保它们仍在运行;如果开发人员增加了与之冲突的新功能,这一点就特别重要。
– 金钱之旅
这种探索性测试检查关键的应用程序功能,特别是那些客户和顾客付钱访问的功能–这些通常是测试团队中最优先的。
– 疯狂犯罪之旅
测试人员有时会积极工作,以破坏一个应用程序或诱发负面情况,例如通过输入无效的信息和调查应用程序如何响应。
– 后巷之行
这个过程涉及到较少客户可能会使用的功能;这些功能对于任何测试方法都是同样重要的,尤其是它们会与其他功能进行交互。
– 智力之旅
这次参观进一步推动了应用程序,用更高(有时是最大值)的数值测试最复杂的功能,以确定软件的处理速度。
探索性测试方法
探索性测试有两种主要方法:
1.基于会话的探索性测试
这是一种基于时间的技术,旨在通过将其划分为 “会议 “来量化测试过程,有两个组成部分:任务和章程。
任务是该特定会议的目的和持续时间,为探索性测试人员提供一个明确的重点。
章程规定了每个环节的范围,并详细说明了测试人员打算实现的任何具体目标。 这导致了更高层次的问责制(和文件),将这些检查分割成更容易管理的组件。
基于会话的测试还能提高生产力,并为测试人员提供清晰的指标和故障排除信息。
2.基于配对的探索性测试
基于配对的测试类似于主动探索性测试,因为它主要涉及成对工作–通常在同一设备上–同时连续检查应用程序。 在这种安排中,一个测试人员提出一系列的测试案例,并在另一个人测试软件时记录进展。
在整个配对测试中,沟通是必不可少的,因为这可以确保两个测试人员都知道检查和他们的目的。
如果你自己分配这些对子,确保适应每个测试人员的长处和短处,因为这让你建立更强大的探索性测试过程。
哪些因素影响探索性测试?
可能影响团队探索性测试质量的因素包括:
– 该软件的总体目标和核心功能。
– 一个应用程序的现阶段的具体测试目标。
– 团队中每个测试员的个人角色和能力。
– 可用的工具,如用于自动化测试的免费软件。
– 测试人员从同行或管理层得到的支持。
– 客户的要求和市场目前的大趋势。
– 应用程序的易用性,如界面的流畅性。
– 测试人员完成测试阶段所需的时间。
– 测试人员打算使用的输入和其他各种数据。
– 开发人员随着时间的推移向软件添加的功能。
探索性测试的类型
一个团队可以纳入的探索性测试的三个主要类型是:
1.自由式探索性测试
自由式测试包含了检查应用程序的临时方法。 这种方法没有什么规则可言,所以其效果可能会有所不同;有些软件和组件需要采用更强大的方法。
这些检查仍然可以提供大量的好处,帮助测试人员熟悉这个应用程序,并验证以前测试人员的工作。
即使没有严格的规则,有经验和熟练的测试人员也可以很容易地利用这一点,将其格式化为自己的优势。 他们可以轻松地通过软件的每一个方面–在某些情况下,测试规则是限制性的,可能会在无意中限制团队的结果。
2.基于情景的探索性测试
基于场景的测试使用现实情况作为每项测试的基础,例如通过检查用户在这个软件的典型操作中可能做出的输入。
测试人员努力工作,以确保他们设计的每个场景与用户与应用程序的接触方式相匹配。
时间可能是一个限制因素,因为团队的目标是测试尽可能多的方案;根据未来的最后期限,这可能无法涵盖每一种可能性。
测试人员应在不同类别中采用广泛的测试。
3.基于策略的探索性测试
基于策略的测试涉及广泛的具体方法,包括边界值测试、等值技术、基于风险的技术等等。 这通常优先考虑那些已经熟悉应用程序的测试人员,因为他们可以开发出包含这些个别方法的定制策略。
基于策略的方法主要关注的是软件的功能(和内部运作),而没有关注可能导致用户遇到出现的问题的情况。 这可能会导致对一个应用程序及其各种功能的更广泛的分析,可能比其他各种方法更深入。
手动或自动探索性测试?
测试团队可以手动进行探索性检查,也可以将其自动化。 两种选择都有能力提供巨大的好处;正确的选择往往取决于项目的具体情况。
手动探索性测试
人工探索性测试可以进行更大范围的定制检查。 尽管由于人类测试人员的速度比计算机慢,这可能需要更长的时间,但人工检查可以在确定用户体验方面起到作用。
测试员的工作不仅仅是确保一个应用程序的功能都能正常工作,而且还要确定用户群是否能够轻松地操作它。 这也许是最常见的探索性测试形式–尽管这并不一定使它最有效。
1.手动进行探索性测试的好处
手工探索性测试的好处包括:
更加专注于实用性
自动探索性测试可能会注意到软件中的差异,但可能无法像人类测试员那样解释这些问题。
这包括了解软件的用户可能如何浏览或与应用程序互动,这是自动化无法考虑到的。
手动探索性测试人员可以提供更高水平的反馈,包括他们发现的问题如何影响整个软件或一般体验的具体细节。
可以进行实时修改
探索性测试的关键优势之一是,在拍卖必要的改进之前,有可能确定测试的需要,并相对快速地执行测试。
自动测试通常是一个更快的过程,但测试人员必须等到一切都完成后再进行修改–手动测试人员可以在探索性测试过程中进行修改。
然而,这往往只适用于影响软件次要部分的错误。
更加关注细节
探索性测试主要是在了解一个应用程序的同时发现新的测试方法;这有时意味着一个测试通过给测试者提供想法而导致另一个测试。
自动测试可能没有考虑到这一点,因为对测试团队来说,自动测试是相对放手的。 手动测试人员不断提高他们对软件的认识,并设计新的但同样重要的测试–但如果第三方软件将其自动化,这可能是困难的。
能够发现代码之外的错误
人工探索性检查让测试人员查看应用程序和软件的每一个方面,包括超越代码本身。
许多自动化方法仅限于代码和它的功能,这可能导致测试团队没有注意到可能在应用程序的其他部分出现的问题。
这主要取决于你的自动化软件,因为一些解决方案可以提供更广泛的探索性测试方法。
确保整个项目的质量
自动探索性检查只寻找应用程序中的错误和指标;而手动测试人员可以检查软件并提供自己的全面反馈。
例如,他们可以测试代码并确定其过于复杂–这一点尤其重要,因为死代码会降低性能,但实际上会被自动化流程所忽略。
测试人员对软件的了解可能有助于诊断在其他测试阶段出现的问题。
2.手工探索性测试的挑战
手工探索性测试的挑战包括:
发生人为错误的可能性
自动探索性测试可以根据需要多次运行完全相同的检查,而不需要改变确切的进度,确保一致性和可靠的结果。
人工探索性测试很容易出现人为错误,也就是说,测试人员可能会输入错误的数值。 通常可以对这些测试进行反复检查,并修复任何差异,因为即使在第一眼看到时,它们也可能显得很明显。
然而,在注意到一个错误后重做一次测试可能会占用更多时间。
一般来说更耗费时间
即使测试人员正确地进行每一次探索性检查,没有人为的错误,与自动化软件相比,这个整体过程也需要大量的时间,因为自动化软件可以更快地计算测试。
这至少是几个小时的差别;测试人员可以把时间花在应用程序的某些部分,而这些部分不会从自动化中获得任何好处。
探索性测试也需要持续的监督,而自动化允许测试在夜间运行。
冗长的文件过程
沿着类似的思路,在人工测试期间和之后的人工文档可能会对探索性测试过程造成不必要的压力。
这使得跟踪变化和软件编辑随着时间的推移变得更加困难–自动化软件通常能够在运行测试时直观地考虑到这一点。
这是另一个行政问题,它占用了其他事项的时间和精力,这实际上减少了整个软件测试程序的范围和广度。
必须对软件有深入的了解
任何技能水平的手动测试人员都可以检查应用程序并对其进行彻底测试。 这是因为他们为了解软件所做的工作–探索过程的第一阶段。
然而,如果测试人员努力或忽略了学习这个应用程序的工作原理,他们很可能会努力设计和执行一系列合适的测试。
对软件的充分了解让测试人员超越了通常的测试参数。
维护成本高
对人工探索性测试的依赖通常需要一个更大的测试团队,与自动检查相比,这可能导致更高的长期成本。 进行这些探索性测试的第三方软件可能提供巨大的价值,甚至可以完全免费。
根据任务的复杂性,一个公司可能需要具有多年经验的高度熟练的测试人员来全面检查应用程序。 与使用免费的自动化软件相比,这可能会大大增加测试费用。
3.何时使用人工探索性测试
人工探索性测试往往伴随着一些挑战,但仍然是彻底的软件测试的一个重要组成部分。 这是因为有些方面的软件是自动化无法完全考虑到的,这也需要一个强有力的关注。
例如,软件不能可靠地提供关于用户界面或用户体验测试的反馈。 测试人员只有通过手动测试,才能很好地了解一个应用程序的实际工作情况。 这意味着开发人员和测试团队都必须考虑将至少某种程度的手动探索性测试纳入他们的检查。
自动探索性测试
自动测试使用第三方软件来自动进行某些检查–测试人员通常可以对其进行定制,以适应几乎任何测试。
然而,这通常需要团队至少手动运行一次检查以校准自动化。 这可以大大简化测试和开发团队的流程。
尽管自动化探索性测试可能并不常见,但这样做对你的应用程序及其性能有几个明显的好处。
1.探索性测试自动化的好处
探索性测试自动化的主要好处包括:
一致的测试执行
人为错误很容易导致测试错误,需要时间和金钱来修复;自动探索性检查允许测试团队规避这个问题。
测试人员有效地教导自动化软件如何正确地执行测试,确保它每次都能进行相同的测试。 这提高了测试的整体可靠性,减少了开发人员等待结果的时间–尤其是测试人员可以轻松地将其设置为通宵运行。
为每个人节省了时间
自动测试让开发人员更快地开始修复问题,同时也让测试人员能够覆盖更广泛的探索性检查。 无论他们的截止日期是什么时候,团队可以考虑的情况只有这么多,这意味着测试人员在允许的时间范围内尽可能多地检查是很重要的。
自动化有助于以比手动测试人员更快的速度进行这些探索性测试。
一个具有成本效益的方法
根据团队选择的软件,自动化可能比人工测试的成本效益高得多 – 这甚至可能是免费的。
虽然雇用手动测试人员仍然是关键,而且他们中的一些人将负责校准自动化程序,但在实际可能的情况下将尽可能多的探索性测试自动化,使公司有机会降低人员成本。
一旦团队了解了自动化软件,他们就可以使其适应广泛的任务。
可适应多种设备
人工测试可能需要具有各种设备经验的工作人员,例如,如果建立一个移动应用程序,需要了解各种手机操作系统,包括Android和iOS。
自动化软件可以考虑到这一点,并在多个设备上进行测试,以确保应用程序能够始终保持良好的性能。 对这些设备有了解的测试团队会发现这个过程很乏味;自动化再次能够简化通常的探索性测试过程,同时测试每个迭代。
可重复使用的脚本
如果团队正在测试同一软件的几个版本,甚至是具有类似架构或功能的多个产品,就有可能从一个测试周期重复使用脚本到下一个。
如果有任何调整是必要的,以确保兼容性,手动测试人员可以比编写一个全新的脚本更快地做出这些调整。
自动化几乎优化了探索性测试过程的每一个阶段,在整个不同的软件配置中易于设置。
2.探索性测试自动化的挑战
这一过程也涉及各种挑战,例如:
只代表测试的一个方面
在测试应用程序时,将每项检查都自动化是不现实的,也是不明智的,因为有些方面只有手动测试人员可以可靠地提供反馈。
这包括用户体验,尽管有可能通过自动化获得彻底的性能和负载测试分析,这取决于你选择的软件。
探索性测试自动化缺乏人的判断力,可以与手动测试员一起进行一些检查,效果最好。
对能力的不切实际的期望
沿着类似的思路,自动探索性测试程序可以为一个应用程序和整个项目提供巨大的好处。
然而,这种方法并不总是答案。 在每个阶段都严重依赖自动化的组织会对软件有一个不完整的看法。
自动化可以识别问题,但测试和开发团队负责修复它们。 定义一个总体的自动化战略是很重要的,这样项目中的每个人都能理解其能力和局限性。
更高的技能要求
自动化通常包括知道如何执行复杂的检查,以及如何编程并实际实现自动化。 这往往需要多年的脚本编写经验,尽管自动化软件可以帮助大大优化这些流程。
至关重要的是,公司招聘的测试人员要有多样化和强大的技能,以促进有效的自动化。
在自动化方面有经验的测试人员也知道在从现有的第三方软件选项中选择时要优先考虑的功能,确保团队得到一个好的产品。
不恰当的策略和沟通
沟通一个连贯的策略对于任何成功的自动化都是最重要的;开发人员、测试人员,甚至项目经理都必须在整个测试过程中保持一致。
各小组必须共同合作,确定其即将进行的程序的范围和时间表。 任何测试过程都是如此,但由于自动化的复杂性增加,这一点尤其重要。 更好的沟通渠道和缺乏信息孤岛让你的团队更有效地进行测试。
选择正确的自动化软件
自动化通常涉及到选择一个与团队的测试目标相匹配的第三方应用程序。 每个选项都有不同的定价计划和功能。 这可能是一笔巨大的长期开支,即使软件成功地执行了自动化测试,同时提供了大量的价值。
有一些免费的选择,其提供的功能令人印象深刻,可与高级替代品相媲美。 测试团队必须研究所有可用的选项,包括免费软件。
结论:探索性测试自动化与人工探索性测试的比较
很少有项目能从完全手工测试或完全自动化测试中受益,因为各种应用在两者的结合下表现更好。
虽然自动测试可以为开发和质量保证团队优化流程,但设计的某些方面需要手动探索性测试;这是获得用户意识反馈的唯一途径。
随着时间的推移,更多的组织正在努力实施超自动化,这是一个旨在智能地最大化自动化的过程,确保企业有一个高效的策略–这仍然可以与人工测试同时存在。
由于自动化软件的日益盛行,自动化测试对公司来说正变得越来越容易获得,特别是有几个具有丰富功能的免费选项。 这使得公司更容易采用手动/自动相结合的探索性测试方法。
敏捷(一种专注于渐进但重要的进展的项目管理技术)在开发中的日益普及也是一个因素,因为它需要短的测试周期。 一个综合的测试策略可以适应这一点和其他各种开发策略,如持续集成,这同样需要重复测试,以确保同一软件的多次迭代成功。
开始探索性测试需要什么
探索性测试的先决条件是:
1.明确的测试目标
尽管探索性测试是自由的同义词,有时与临时测试相混淆,但这仍然遵循具体规则或可定义的目标。 QA团队成功驾驭几乎所有测试结构的唯一方法是知道每个测试的预期结果,尤其是测试人员通常自己设计这些检查。
2.创造性的、直观的测试人员
探索性测试的重点是设计新的和创造性的测试,可能会发现应用程序的问题。 即使是经验有限的测试人员也能做到这一点,前提是他们了解软件。
重要的是,测试人员要了解应用程序和它的工作方式;这使他们能够凭直觉开发一系列有用的检查。
3.连贯的文件
每种类型的测试都必须有强有力的文件,以确保每个团队成员都遵循预期的测试时间表,没有人意外地重复检查。
这是整个单一部门和多个部门之间沟通的重要方面,例如开发人员需要定期测试更新,以弄清如何修复问题。
4.客户的观点
探索性测试涵盖了许多策略和场景,包括那些反映用户如何实际参与应用程序的策略和场景。 测试团队在检查中考虑到这一点至关重要,即使他们没有进行基于场景的测试。
采用这种方式可以让测试人员从不同的角度来进行测试,提高这些检查的质量。
5.自动测试软件
由于团队可能会将他们设计的大量测试自动化,因此在执行阶段之前,他们能够采购高质量的自动化测试软件是非常重要的。
开发人员和测试团队可以利用他们对项目的理解来确定适合他们自己要求的第三方应用程序。
探索性测试过程
探索性测试的具体步骤如下:
1.对测试程序进行分类
探索性测试的第一步是让相关的团队成员了解如何对待这些检查,例如通过对常见的故障进行分类并进行根本原因分析。
这是测试人员自己发展他们的测试想法的地方;根据他们的具体方法,他们也可以设计一个测试章程。
这规定了该会议或工作日的范围和测试。
2.开始测试
虽然确切的参数(如每个测试的时间或整个会议)取决于团队自己的偏好和项目的要求,但所有探索性都遵循某些共同点。
在对相关检查进行分类后,质量保证人员开始进行测试并记录任何结果。
如果检查需要自动化,测试人员可以将此设置为通宵工作,或在白天自己监控。
3.审查结果
下一个阶段是审查结果,将其与默认和预期结果进行比较。 如果这些测试结果出现任何形式的重大意外偏差,测试人员可以重复检查,或立即开始想办法修复。 他们向开发者提出的建议可能有助于确定采取正确的方法–他们的错误报告可以详细说明这一点。
4.测试情况汇报
在拍卖测试结果后,质量保证团队开始审查测试程序本身,并以此来确定他们的探索性测试方法是否合适。
这份测试总结报告甚至可能得出结论,在检查过程中存在操作错误,需要重新进行测试。 一旦开发人员修复了这些问题,测试团队也可以再次检查应用程序,以确定他们是否成功。
探索性测试的最佳实践
探索性测试的最有效做法包括:
1.结对测试人员
许多形式的探索性测试都得益于测试人员的合作–这进一步简化了流程,并允许从多个角度进行同一检查。
结对测试也避免了隧道视野的可能性,鼓励了更多创造性的测试设计。
几个人在同一个测试上工作可能会使整个测试更加准确,分担工作量也有助于使整个团队的测试更加快速。
2.混合手动和自动测试
一些公司仍在努力采用自动化,而另一些公司则过度使用自动化,甚至在人工视角可能更有利的情况下。 平衡这些检查让测试团队覆盖更多的基础,确保整个应用程序的质量,包括更多的主观方面,如软件的界面。
一起进行手动和自动测试是保证对每个特征或功能进行完整测试覆盖的唯一方法。
3.了解市场
在测试过程中,测试人员了解他们的目标受众和竞争对手是很重要的;这有助于他们评估人们可能对应用程序的当前功能作出何种反应。
某些功能的需求量很大,测试团队可以在检查过程中对这些功能进行优先排序,从而受益。 尽管他们也必须保持广泛的测试覆盖面。 这可能决定了测试的方向,同时也决定了该软件在推出时可能取得的成功。
4.使用真实的设备进行测试
软件测试团队可能会利用仿真器来促进他们的探索性检查;这可能是有用的,但很少反映实际的用户环境。
真实的设备通过产生更真实的体验来帮助提高探索性测试的可靠性–仿真器是不完美的,可能有客户不存在的错误。
仿真是测试多个平台的快速方法,但它不能替代实际设备。
探索性测试的产出类型
测试人员在进行检查后可以得到各种输出,包括:
1.测试结果
结果本身有许多形式,因为探索性测试可以包括数百个独特的测试。 这些结果构成了测试程序的大部分输出,提供了关于应用程序的状态及其满足用户需求的能力的重要信息。
测试人员可以在收到这些结果后重新检查系统并验证信息,以确定他们的下一步行动。
2.测试日志
在测试过程中,应用程序自己的日志往往会显示出错误和问题;这些日志为软件为什么不能通过测试提供最有力的线索。 高级测试人员特别善于解释应用程序的日志,让他们确定复杂问题的原因。
测试人员从这些日志中收集的信息越多,他们就越能帮助开发者。
3.测试报告
根据团队的自动化程序,他们的输出可能会自动生成一个错误报告。 这列出了应用程序中存在的任何错误,可能包括其原因和任何其他与开发人员有关的数据。
测试人员可以借此对软件是否准备好推出提供自己的意见,这就是通常所说的去/不去的决定。
探索性测试的例子
下面是一个公司如何使用探索性测试的三个例子:
1.一个移动游戏应用程序
如果一家游戏公司希望发布一个移动应用程序的重大更新,探索性测试人员可以同时检查新旧功能,以确定应用程序是否仍然稳定。 这可能会增加软件的复杂性,以至于它无法在某些设备上运行。
测试人员努力将这种影响降到最低,同时确保在尽可能多的平台上的可用性。
探索性测试人员彻底检查游戏及其许多复杂的场景,以确保每个功能都能按预期工作;这个过程通常需要一个手动测试人员。
2.一个服务提供商的网站
网站还要进行探索性测试,以确保它们对用户和工作人员都有效,因此测试人员可以从登录网站开始。 这将测试网站创建新用户配置文件的能力,并检查用户是否不能访问管理功能。
然后,测试者进入检查服务的阶段,其形式可能是预约或下订单。 然后,他们将完成购买,以确保结账功能充分,接着是查看订单的电子邮件确认和账户的历史。
3.一个医院的管理制度
所有类型的应用程序和系统都可以从探索性测试中受益。 对于医院管理系统,测试人员可能会查看支付模块如何与其他功能互动。
如果没有严格的测试,更高层次的整合可能会导致重大错误。 这些检查可能涉及到跟踪系统的许多组件以及它们如何交叉的架构图。
测试人员还查看了系统先前迭代中的问题,并专门测试这些问题是否仍然存在,如果发现任何错误,则迅速采取行动。
通过探索性测试发现的错误和缺陷的类型
测试人员在探索性测试中可能发现的错误包括:
1.不兼容的特征
应用程序中的某些功能可能无法像预期的那样相互作用–这可能导致用户无法完成购买或使用该应用程序。 测试人员在孤立的情况下检查各项功能,并将其相互串联,以确保所有的东西都适合在一起。
2.不当的用户界面设计
一个应用程序的用户界面决定了某人究竟如何使用该软件。 例如,如果重要的功能对客户来说并不明显,他们可能不会注意到这些功能的存在,这就限制了他们对应用程序的喜爱。
手动UI测试可以识别和纠正对用户不友好的设计。
3.认证错误
许多应用程序和网站允许创建一个具有某些权限的用户档案。 至关重要的是,测试人员要检查普通用户在以意想不到的方式使用软件时是否能以某种方式访问敏感数据甚至管理功能。
4.死亡代码
测试人员可能会发现过时的代码仍然存在于应用程序中,这甚至可能是显著的性能问题的原因。 死代码使应用程序的内部工作过于复杂,可能导致可避免的错误。 识别和优化这一点使软件对工作人员和用户的反应更加灵敏。
常见的探索性测试指标
测试人员在探索性测试中可能遇到的通常指标包括:
1.性能测试指标
观察应用程序一般性能的探索性测试可以产生广泛的指标。 这可以包括最小、平均和最大响应时间,以及失败和成功率,以确定稳定性。
2.测试覆盖率指标
测试覆盖率是很重要的,因为这决定了测试包括多少类别和应用程序的方面。 例如,需求覆盖率,评估是否有任何功能需要进一步的测试回合。
3.整体测试效率
追踪成功和失败的检查数量有助于测试人员弄清一个应用程序的总体健康状况。 在此基础上,团队可以跟踪他们检测到的错误中有多少是关键的。
4.缺陷的分布
沿着类似的思路,检查缺陷分布显示最容易出错的组件或功能。 这些可能是应用程序中经常与他人互动的部分,因此必须对这些测试进行优先排序。
5.回归度量
探索性回归测试让测试人员看到同一软件的不同迭代的行为,以及这将如何影响性能。
缺陷注入率和每次构建的缺陷是有助于此的具体指标。
澄清一些混淆:探索性测试与临时性测试
由于强烈关注测试人员的自由度,一些人经常将探索性测试与临时性测试混淆。 这两种格式有几个关键的相似之处,但最终服务于不同的目的。
1.什么是专项测试?
临时测试是一种完全非结构化的方法,它打破了传统的测试设计,以发现那些可能不会出现的缺陷。
这种形式的测试通常不涉及任何文件,除非测试人员对原因有绝对把握,否则很难重现问题。
这方面的一个例子是 “猴子测试”,这种检查涉及随机输入,最终目的是破坏系统。
与探索性测试类似,许多临时测试人员成对工作来完成这些检查;这提高了他们的可靠性。 在正式的测试执行后,临时的方法可能是有用的,以确保检查考虑到每一种可能性;这也有助于在有限的时间内进行进一步的测试。 在正确的执行下,临时测试是非常有益的。
2.探索性测试和专项测试的区别
临时测试一般不涉及正式文件。 这与探索性试验形成鲜明对比,在探索性试验中,这些检查的即兴性质使得记录的保存更加重要。
探索性测试采用了更多的正式测试技术,而临时检查则通过在传统的测试礼仪之外寻找避免了这一点。 这有助于他们发现测试人员否则永远不会发现的错误。
探索性测试有明确的目标和界限,但仍然允许团队成员使用创造性的测试。 临时测试通常没有可定义的最终目标,只是想尽办法推动软件的发展。 专项测试往往也涉及到对软件及其功能的预先了解,而探索性测试则是将学习应用程序纳入其通常的过程。
敏捷中的探索性测试
敏捷方法论大力提倡持续改进。 这意味着它与探索性测试搭配得很好,尤其是在对软件频繁更新的需求增长时。
将探索性测试与敏捷结合起来,可以给团队成员一个更强大的测试结构,将发布计划和冲刺执行纳入他们的日程安排中。 一个接受敏捷技术的公司可以通过与探索性测试配对来进一步利用这一点;这是一个测试应用程序的每个单独的软件组件的好方法。 由于测试人员可以在没有脚本的情况下进行探索性检查,这为质量保证人员和开发人员节省了大量的宝贵时间。
自动探索性测试使这些节约变得更加复杂,帮助公司更快地检查其应用程序的最新迭代,可能是一夜之间。 探索性检查提供了快速、可用的结果,开发人员可以在下一次冲刺中对任何必要的变化采取行动。
人工探索性测试由于能够识别自动化方法可能遗漏的问题,因此在与敏捷的结合中仍然提供了许多好处。 其他形式的测试只是花费太长的时间或提供太少的好处,以舒适地适应敏捷框架。 探索性检查可以确保每个敏捷阶段都能显著改善软件及其功能。
实施探索性测试要避免的7个错误和误区
下面是公司在实施探索性测试时经常犯的七个常见错误,以及公司如何避免这些问题:
1.手工/自动测试不平衡
弄清楚哪些测试用人工检查效果最好,哪些测试可以从自动化中受益,这需要时间,但可以让团队的测试效率大大提高。
过多的自动化测试可能会导致应用程序不方便,或者由于缺乏人类测试员而不便于使用。
2.时间限制
探索性测试比许多其他形式的测试更快,但项目期限的现实意味着团队可以进行多少次测试仍有限制。
时间管理和对测试覆盖率的承诺有助于测试团队在许多广泛的类别中执行尽可能多的检查。
3.不灵活的测试人员
虽然探索性测试人员不需要预先掌握软件的知识或特别深的技能,但检查仍然依赖于个别团队成员的能力和主动性。
项目经理必须明智地分配这些测试角色,必要时将其保留给团队中更具创造性和直觉的成员。
4.难以复制失败的案例
哪些行为会导致测试失败并不总是很明显;也可能不清楚应用程序的哪些方面应该受到责备。
这就是为什么许多探索性方法涉及将测试人员配对在一起,甚至直接记录测试人员的屏幕,以更清楚地了解问题和它们的确切原因。
5.文件不明确
无论是自动的错误报告还是手动记录完成的测试,好的文档使开发人员更容易根据测试团队的发现采取行动。
测试团队必须致力于确保在每一次检查中保持高质量的记录,为每一份报告提供尽可能多的细节。
6.高期望值
探索性测试对几乎所有的软件项目都是有益的,但其范围仍然有限–它最好与其他测试方法一起使用。
测试团队必须在通常的脚本测试的同时进行这些检查;这是质量保证部门能够确保持续广泛的测试覆盖率的唯一方法。
7.不适当的自动化
重要的是,测试团队和项目经理要了解哪种自动化软件为该特定应用提供了最大的好处。
不同的第三方选项提供了自己独特的功能,所以团队的选择可能决定了他们的机器人流程自动化的成功;他们必须考虑前面的每个选项。
5个最好的免费探索性测试工具
质量保证团队可以免费使用的五个最好的探索性测试工具包括:
1.ZAPTEST免费版
ZAPTEST免费版以绝对零成本提供高级别的功能,使任何组织都能从轻松的探索性测试实施中受益。
这个应用程序可以通过创新的1SCRIPT技术实现任何平台、设备和浏览器的自动化。
ZAPTEST还提供灵活的RPA自动化,让您将其与人工方法相结合。
2.XRAY探索性应用
XEA让用户创建全面的测试章程,并轻松地记录他们的进展,简化了探索性测试的错误报告阶段。
这个选项完全专注于用户的角度,并提供一个集中的结果中心来更新其他测试人员。
然而,XRAY目前没有集成自动化,这可能会限制它的长期有效性。
3.虫子磁铁
一个提供彻底探索性测试的浏览器扩展,Bug Magnet允许测试人员检查边缘案例和其他问题值。
这个扩展还提供了简单的虚拟文本、电子邮件地址和多个字符集的整合。
然而,这只适用于基于Firefox和Chrome的浏览器,使其成为一个不如其竞争对手那样通用的选择。
4.Azure测试计划
Azure测试计划是微软Azure平台的一个关键部分,允许测试人员在许多场景中捕获丰富的数据。
这种方案适用于基于桌面和网络的应用程序,同时也提供了端到端的可追溯性,它对软件的开发有一个清晰的记录。
然而,这种方法往往需要与Azure进行更深入的整合,因此要以牺牲灵活性为代价。
5.试验性的
Testiny专门从事手动探索性测试,提供一个智能编辑器,让测试人员使用树状结构设计检查,以获得最大的灵活性。
对运行或测试用例的每一个改变都保留在应用程序的历史中,以确保完全的责任和可追溯性。
然而,这只对小型团队和开源项目是免费的。
什么时候应该使用企业级与免费的探索性测试工具?
虽然探索性测试是一项值得的投资,而且高级应用程序通常提供更大的功能,但也有许多免费的选择,提供足够多的功能。
如果你承诺采用高级模式,探索性测试可能是一项重要的运营费用,但不是每个软件开发公司或团队都有这个资金。 最佳第三方软件的选择往往取决于公司的具体要求。
付费的解决方案可能是满足该项目需求的唯一途径;团队必须在承诺应用之前调查各种选择。
拥有较小团队的公司可能从免费的测试工具中受益最多,因为许多选项对有限的用户是免费的。
或者,他们可以选择没有这种限制的选项,以及能够适应测试团队规模的选项。 这可以使探索性测试人员结成对子以确保更准确的结果更加可行–团队自然需要更少的用户资料。
许多服务提供免费的软件试用,以便组织可以看到它是否符合他们的需求;这些通常只持续几个星期。
探索性测试的清单、技巧和窍门
在开始探索性检查时,测试人员还可以考虑许多其他的提示,包括:
1.适当地划分功能和模块
为了避免沟通不畅,测试团队应该明确列出每个功能和他们打算运行的检查。 这也意味着要确保测试充分地分布在软件功能中。
为了获得最佳效果,最重要的是测试团队根据各自的技能和优势,协商由哪些成员进行每项测试。
2.努力了解该软件
学习阶段是探索性测试的一个关键部分。 这意味着测试人员必须积极接触软件,在设计测试之前弄清楚它是如何工作的。
学习这个软件的内部运作可以是一个合作的过程,确保整个团队有更多的了解。 这让测试人员开发出更好的检查和测试案例。
3.弄清有问题的领域
每个应用程序都有与其他应用程序相交的功能或组件。 随着软件越来越复杂,它更有可能出现错误;这可能需要更多的测试。 团队必须积极工作,弄清哪些部分需要额外的帮助。
他们可能会采用特定的测试路线,这最能反映应用程序的需求和团队的整体测试重点。
4.从基本的用户场景开始
如果有必要,质量保证团队可以按任何顺序进行探索性测试,但在深入研究更复杂的功能之前,从更容易的检查开始可能更有帮助。
这允许在复杂性方面平稳发展,给测试人员一个了解软件的机会。 这也有助于测试基本功能是否按预期运行。
5.将测试人员配对在一起
成对的探索性测试既简化又验证了质量保证阶段,让测试人员在每次检查时都有绝对的信心。 协作通过提高每个团队成员对软件的熟悉程度,使任何形式的测试都更加有效。
由于他们的个人观点,他们还可以提供更有深度的错误报告,让开发人员有更多的信息可以利用。
6.运行几个测试
团队重新测试一个应用程序的能力取决于他们面前的时间表和截止日期。 但如果有可能的话,对特别有问题的部件进行反复检查可能是有用的。
在此基础上,重复测试可以验证以前检测到的问题现在已经修复,不会进一步影响软件。 这种勤奋有时是必要的,以确保测试的成功。
结论
探索性测试可以为各类软件开发公司提供很多东西,作为脚本测试和许多其他检查的补充。
在探索性测试的帮助下,质量保证团队可能以更高的标准测试应用程序,提高最终软件的质量,并帮助开发人员修复任何存在的错误。
手动和自动探索性测试的结合可以确保最大的利益,允许对所有的软件组件给予同等的关注。
如果你的公司需要探索性的自动化软件,ZAPTEST免费版提供了比其他高级应用程序更广泛和更灵活的功能,让测试人员轻松优化这些检查。
常见问题和资源
1.关于探索性测试自动化的最佳课程
新的和有经验的探索性测试人员都可以从提高其技能的课程中受益。 这包括弄清楚如何接近新软件。
可以帮助这一点的有用课程包括:
– Udemy的完整的2023年软件测试训练营;该训练营在28小时内教授广泛的软件测试。
– Coveros的探索性测试;这主要是指如何开发章程并将探索性测试应用于API。
– Polteq为期两天的探索性测试培训;该培训着眼于探索性测试在敏捷背景下的运作。
– LinkedIn的探索性测试;这表明现代软件测试是如何接受探索性检查的。
– Coursera的《软件测试入门》;这有助于首次测试人员了解典型程序。
2.关于探索性测试的前5个面试问题是什么?
在面试探索性测试职位时,招聘经理必须提出好的问题以准确评估候选人的技能和经验。
要问的前五个问题是:
– 包括它们的适用性,脚本式测试和探索式测试的主要区别是什么?
– 作为探索性测试人员,你遇到过什么挑战,你是如何克服的?
– 举出探索性测试的例子,这些测试将从机器人流程自动化中受益最大。
– 在您看来,对于一个探索性测试人员来说,最重要的技能(技术或其他方面)是什么?
– 对于一个正在努力理解软件和如何检查软件的测试人员,你会给他什么建议?
3.关于探索性测试的最佳YouTube教程
在YouTube等视频分享网站上有许多免费的教程,可以帮助未来的测试人员了解其核心原理。 有些是系列的一部分,而有些则是对该主题的单一视频深入研究。
提供这些教程的渠道包括:
– 测试学院,提供数百个视频,涵盖软件测试的各个方面。
– 软件测试导师,同样提供大量关于软件测试基础知识的视频。
– QAFox,它还提供真实世界的例子和现场项目,以补充他们所有的视频。
– SDET-QA Automation Techie,它有几个关于不同测试方法的综合视频。
– GlitchITSystem,它通过探索性测试查看各种网站,试图发现故障。
4.如何维护探索性测试?
执行良好的探索性测试包括强大的文档,开发人员和未来的测试人员在软件的更新迭代中可以参考。
当应用程序有重大更新时,有必要重新测试其主要功能,以确保这些新增功能不会对原有的功能产生负面影响。
这是保证探索性试验长期保持成功的唯一方法。 它还有助于在设计原始应用程序及其检查时考虑到未来的计划,如初步的功能。
QA人员必须充分计划这些测试,并弄清楚何时重新检查应用程序;自动测试工具可以帮助团队完成这项工作。
5.探索性测试是黑盒测试吗?
探索性测试与黑盒测试非常相似,黑盒测试是指在不直接检查代码的情况下,通过观察应用程序的功能来检查它。
对于探索性测试中的检查类型没有明确的限制;这种方法可能包括软件的每一个方面,包括代码。
这两种测试类型的关键相似点之一是测试者缺乏预知能力。 黑盒测试人员在测试前通常不熟悉软件,探索性测试人员学习软件的工作方式,作为其初步检查的一部分。
虽然一般来说探索性测试并不总是归类于黑盒测试,但这两种方法之间确实有大量的交叉。