探索性测试是一种软件测试风格,而不是一种具体的软件测试技术。探索性测试强调依据当前待测项目实际情况,选择合适的测试技术,而不局限于特定的测试技术。
测试人员探索软件、并尝试不同的场景、输入和交互,而不使用预先编写的测试用例以识别缺陷和问题。在探索性测试中,目标是发现尽可能多的缺陷,并向开发团队提供有价值的反馈。
不管花费多少时间使用严格的手动和自动化测试脚本进行测试,缺陷仍然会存在每个版本(测试是不可能被穷尽的)。
探索性测试没有测试人员必须遵循的一组严格的实践,而是为测试人员提供了完全的灵活性来探索产品或服务,并随着时间的推移对其进行改进。
探索性测试是一种动态测试方法,它在时间限制的测试阶段利用测试人员的专业知识和结构化方法。它涉及到并发的测试用例设计和执行,允许测试人员积极地探索在测试中的应用程序或系统,以寻找潜在的缺陷和漏洞。
在这里,测试人员的工作不是基于先前编写的测试用例。他们盲目地测试系统,寻找消费者在没有明确目标或方向的情况下访问网站或应用程序时可能遇到的缺陷。
从本质上讲,探索性测试试图复制最终用户的个人自由和偏好。这一切都是关于学习、研究和好奇。在现代的方法中,测试人员主动利用程序来衡量它提供的用户体验水平。
探索性测试需要最少的计划。测试人员不断地选择他们的下一个行动方案。这完全取决于测试人员的思维方式。
当涉及到识别正式测试可能遗漏的更细微的缺陷时,这种测试方法有时会更有帮助。
在软件开发中,探索性测试通常发生在单元或集成级别。在这些活动中,测试人员确定在开发过程的每个步骤中可用的设施。它通过输入各种数据或命令并观察或检查输出或缺陷来测试它们。由此得出的观察结果可能建议进行额外的测试。因为测试人员可以控制选择测试的内容以及何时停止测试(称为“验收标准”),探索性测试技术往往比脚本化技术更省力。
探索性测试也可以在系统或验收测试期间执行,如果还有时间,或者如果发现了以前脚本化测试用例没有解决的问题。
然而,探索性测试对于以下情况是必要的:
与传统的测试策略相比,执行探索性测试有许多优点。尽管如此,它们主要是指这种类型的测试可以让你更全面地了解人们在你的产品/网站/应用程序等方面的体验。
测试章程应包括:
脚本测试和探索性测试是软件测试中的一个小问题,特别是在敏捷开发和测试驱动开发方面。许多人坚信这两种方法之间的区别,以及哪种方法更适合寻找bug。尽管如此,脚本测试和探索性测试之间仍然存在一些关键的区别。
脚本测试 |
探索性测试 |
为了确定测试覆盖率,测试脚本可以追溯到最初的需求。 |
在这种类型的测试中,测试覆盖没有这样的可追溯性。 |
测试人员坚持测试用例的预定义顺序和步骤。 |
没有预先确定的过程或测试用例顺序。测试人员不断地测试软件。 |
根据需求,测试人员评估应用程序。 |
测试人员根据他们的知识、想象力和期望来评估应用程序。 |
反馈比较慢。 |
支持快速反馈。 |
可以在此测试类型中再现测试。 |
不能在此测试类型中复制测试。 |
设计测试用例需要大量的准备工作。 |
开发测试用例需要较少的准备工作。 |
因为测试人员只需要遵循指导方针,所以参与程度较低。 |
对于测试人员来说,这是一种难以置信的刺激,他们通常会觉得自己更多地参与到这个过程中。 |
可以获得有关已运行测试的详细信息。 |
这使得识别已运行的测试变得具有挑战性。 |
测试人员可以在测试周期后确认是否满足了所有需求。 |
没有办法验证和证明所有的条件都得到了满足,因为没有清晰和良好记录的测试用例。 |
这一战略非常强调远见和判断力。 |
这个策略的重点是灵活性和学习。 |
探索性测试通常用于对软件究竟要做什么或在实际情况下应该如何使用存在许多未知的情况。在这些情况下,目标是探索软件,而不是遵循一个严格的计划或测试一组特定的特性。测试人员可以选择在没有任何计划的情况下执行探索性测试,或者可以根据他们在探索过程中所学到的内容调整他们的方法。
在敏捷测试环境中,探索性测试是一项至关重要的活动,因为它使软件测试人员能够跟上敏捷软件项目的快速开发。探索性测试允许测试人员熟悉应用程序和领域。随着每一次迭代,这些知识都在增长,使测试人员更加有效。
敏捷项目受益于使用有效的探索性测试人员,他们使用这些技术来提醒项目团队注意潜在的产品缺陷。他们可以选择管理他们的临时测试,自由形式的方式或章程和测试会议。探索性测试可能会集中在高风险区域,以发现可能的问题,因为由于开发间隔短,测试本质上是风险驱动的。
探索性测试和敏捷方法是互补的技术,当它们一起使用时,可以显著增强测试过程。
要执行探索性测试,测试人员必须熟悉以下一些技能:
测试人员应该能够快速地完成任务并遵守最后期限。他应该了解应用程序的关键领域,并在这些领域投入更多时间。
当你使用创造性的、间接的方法来解决问题时,你使用的是横向思维,这通常需要更聪明地看待情况。横向思维的本质是从创造性的角度来处理一个问题。探索性测试的成功取决于这种创新和横向思维。
探索性测试专家必须具备的一个关键才能是传达故事的能力。找到bug后的下一步是向开发人员解释为什么修复它对项目的成功至关重要。你有责任创造一个虚构的用户,并向观众传达如果用户无法使用特定功能时的感受。
推理和分析思维的能力被称为批判性思维。通过这样的思考,你可以发现各种变量之间隐藏的关系。正因为如此,批判性思维也提高了发现高风险缺陷的可能性,否则这些缺陷将无法被发现。具有批判性思维能力的人可以考虑任何决策的风险和影响,包括寻找漏洞,并随时准备提供可行的解决方案。
在开始进行探索性测试之前,你必须具备有效的沟通能力。良好的沟通技巧对于告知其他测试人员你发现的缺陷,它们对公司的重要性,以及如何给予它们适当的优先级是必要的。你将能够深入和有针对性地描述你的发现,以及良好的沟通。对于探索性测试人员来说,沟通技巧是游戏规则的改变者。
它不需要测试者掌握太多的技术。另一方面,探索性测试则是完全不同的事情。虽然你不需要编写代码,但你应该具备全栈开发人员的技能。你必须能够理解代码的含义,以及不同的接口级别通常是如何编码的,从用户界面开始,到数据库体系结构结束。如果缺乏适当的技术理解,就有可能错过一些严重的bug。
探索性测试有很多好处,但它不是一种放之四海而皆准的方法。它可以用于许多情况和不同的目标,并且你希望根据你的需求定制探索性测试会话。
我们将着眼于一些探索性测试的通用方法,但请记住,这并不是一个全面的列表!如果你正在寻找更多的想法,看看我们的博客开始探索性测试。
下面是一些顶级的探索性测试工具,以及它们最受欢迎的特性。
Testpad
Testpad提供的灵活的测试计划格式是跟踪探索性测试的极好方法。允许员工在功能检查表的指导下辛苦地搜索bug,从而最大限度地发挥他们的作用。通过键盘驱动的编辑,Testpad提供了一个时尚的、现代的用户界面。报告过程很简单,但效率惊人,JIRA和其他问题跟踪器可以很容易地集成。
PractiTest
practictest是一个测试管理工具,具有完整的探索性测试功能。它描述了章程,列出了几种类型的注释,并允许你轻松地报告运行过程中的缺陷。为了获得完整的QA覆盖,可以毫不费力地将基于会话的测试添加到测试工作中。
探索性测试Chrome插件
Chrome扩展的功能便于web探索性测试。在整个过程中,会拍摄屏幕截图。你会发现报告缺陷、想法、评论和查询很简单。URL将被自动跟踪。你可以导入和保存会话。会话可以导出为JSON、CSV和HTML三种格式。这个附加组件报告缺陷、建议、注释等。
Bug Magnet
Bug Magnet是Chrome和Firefox的会话测试工具。你可以在工具的帮助下合并频繁的问题值和边缘情况。它是探索性测试期间最容易使用的工具之一。Bug-magnet的每页开销非常低。它独立于任何外部库。通过Bug Magnet,用户可以快速扩展他们的配置文件。Bug-Magnet支持相同域的输入字段、文本区域和多帧。
Session Tester
会话测试器是一种直接且免费的探索性测试工具。它控制并跟踪基于会话的测试。会话测试器的一个方面是计时器,它使你能够自定义测试会话长度以满足你的需要。使用Session测试器,你可以快速、轻松地捕获XML格式的会话记录。这种XML格式可以更改。
Zephyr
另一个有用的探索性测试工具是SmartBear Zephyr。它为各种规模的敏捷团队提供了完整的解决方案。此外,它还提供与JIRA、Jenkins、Bamboo和其他系统的一键交互。Zephyr为测试管理提供了工具。这些工具将提高软件测试的效率和速度。Zephyr提供了从敏捷到自动化,从DevOps到分析的持续测试敏捷性。使用Atlassian工具,它可以在JIRA内部本地运行。
Test Studio
Telerik Test Studio是针对所有Windows版本的web和桌面应用程序的探索性测试解决方案。它是探索性测试的最佳工具之一,它使你能够评估在线和移动应用程序的性能、负载和功能。它还提供了一个插件来检查跨浏览器兼容性问题。
qTest Explorer
测试人员可以在qTest(一个直观的、可扩展的测试管理系统)的帮助下巩固和加速测试管理。使用qTest探索性测试工具,QA过程的每一步都变得更加容易和高效。企业的敏捷测试管理平台叫做Tricentis qTest。它是一系列有效的敏捷测试工具。在这个平台的帮助下,你可以增加测试自动化,改进协作,并加快上市时间。
TestRail
作为一种基于web的探索性测试和测试用例管理工具,TestRail非常广泛。该工具有效地管理、跟踪和组织你的软件测试工作。
Azure Test Plans
Azure Test Plans是一个探索性测试工具,可以帮助你提高应用程序代码的质量。利用探索性测试会话使你能够同时创建和运行测试,从而在当代软件开发过程中最大限度地提高质量。当你运行探索性测试时,它会记录详细的场景数据。你可以通过在桌面和web应用程序上运行测试来测试应用程序。
尽管探索性测试有一些优势,但也存在一些挑战。
让我们着眼于探索性测试中的一些常见挑战以及如何克服它们。
不了解产品的人可以进行探索性测试。然而,这偶尔也会带来挑战。如果对产品没有透彻的了解,就有可能忽略一些关键的实例。因此,建议在测试团队中加入有经验的测试人员来进行该测试,以克服这一挑战。当一个或两个测试人员都熟练时,结对测试效果最好,但理想情况下,两个测试人员都应该熟练。
事实上,采用这种方法的测试人员经常利用证据的缺失作为不记录测试过程的理由!这是绝对不应该做的。
你必须考虑这将如何影响测试过程。任何测试项目的生产力都是一个关键问题,如果没有足够的文档和明确的时间框架,评估生产力是不可能的。
此外,为指定的测试系统生成的问题报告的数量可能会更少。在这种情况下,对于特定的测试人员来说,解释他的工作在指定的时间框架内是如何进行的可能是具有挑战性的。既然我们知道这是探索性测试的另一个问题,那么让我们检查一下如何减少它对生产力的影响。因此,适当的文档非常重要。
按照这种测试方法,测试人员不遵循任何预先确定的测试策略、计划或脚本。此外,它的文档也在不断发展。因此,它缺乏可追溯性,这就产生了一个问题。测试人员应该在运行测试时报告测试,以解决这个问题。另外,让涉众和其他测试人员了解情况。
在确保最佳标准的同时,不知道何时调整探索性测试是另一个典型问题。事实上,知道何时进行探索性测试比知道如何进行探索性测试更为重要。由于测试用例的短缺,这也是很重要的。因此,如果在不适当的时候实施,可能会产生负面影响。当时间紧迫时,企业应该使用这种测试方法来识别软件问题。
这种测试方法可用于确认已立即修复的任何缺陷。它不应该应用于需要更多的任务。这种独特的测试过程在很大程度上依赖于人类的智力。尽管企业继续使用测试自动化,探索性测试是否可以自动化的话题仍然存在。
探索性测试是提高软件产品质量的宝贵方法。它允许更好的缺陷检测,帮助确定改进的领域,并且可以用作在解决问题期间评估不同方法的方法。如果使用得当,探索性测试可以提供超过任何其他测试方法的价值。
然而,理解与探索性测试相关的最佳实践是很重要的,以确保它能带来最大的好处。本教程解释了其中一些最佳实践,包括如何使用探索性测试来识别缺陷,以及它与其他测试方法的区别。
探索性测试强调测试人员的自主性、参与性和责任感,因为他们自己选择在哪里以及如何进行测试。他们可以自由地专注于他们最看重的功能和路径。
因此,拥有必要的资源对于开始探索性测试阶段至关重要。测试人员需要广泛的bug搜索经验,因为这将帮助他们理解和分析被测试的数字产品,并检测和推断潜在的危险。确保测试员具备多种技能、想象力、好奇心和独立性是必不可少的。此外,他们应该能够即兴发挥和良好的观察。随着研究的深入,他们将需要根据他们所学到的知识来选择哪些额外的实验。
选择一种测试方法,使测试人员能够简单地执行测试,并使涉众能够分析结果。在你的计算中包括测试周期的时间、资源和测试设备的可用性。
如果没有价值,你不需要记录,但是你应该对所做的每件事、如何做以及发现的内容保持清晰而简洁的记录。这将向你展示会话的可靠性,并使你能够进一步改进测试过程。