传统认知中的软件测试是利用测试用例设计技术设计并执行测试用例的过程。测试用例技术的目的是确保更大的覆盖率、检测软件/硬件错误并减少冗余测试。自动化测试或多或少被认为是机械地执行测试脚本,将预定义的测试用例输入被测系统,将系统输出与预期结果进行比较。然而,在实际的工程实践中,我们会发现,真实世界的测试很少基于严谨、系统、完整的记录来运行预定义的测试用例。与传统的测试方法相比,探索性测试(exploratorytesting,ET)方法更具创造性。测试设计、执行和学习并行,不断学习、反馈、优化测试方法并在实践中应用。然而,ET通常被认为是一种经验方法或错误猜测方法,它更多地依赖于隐含的经验知识。我们不否认ET的这个特性。很容易理解:积累的经验知识可以帮助我们更好地进行测试设计,可以帮助我们更好地识别测试过程中的异常或故障(例如,如何判断从日志中观察到某个WARNNING输出是否为异常由软件故障引起的输出)。这也是本文讨论ET的核心问题:如何识别故障。问题的症结在于:如何利用经验知识扩展ET测试技能来识别故障。那么,我们需要什么样的经验知识呢?这里总结出三类经验,是我们提高ET测试技能所需要的,即:领域知识、系统知识和通用软件技术知识。1.领域知识领域知识可以分为用户视角和应用领域视角。什么是用户视角?我们在测试设计过程中经常提倡的一种想法是从用户的角度来使用我们的产品。1.用户视角用户视角需要我们了解真实用户的使用习惯和使用方式,以及我们产品在真实场景下的交互方式和内部运作方式。因此,用户视角可以分为:与产品使用过程相关联的情境、情境中的信息内容和表示、用户的真实用例。(1)与产品使用过程相关的情境场景测试人员通常是系统本身的频繁用户,具有丰富的使用经验。当测试人员意识到他们使用程序的方式与实际用户的使用方式发生冲突时,他们会迅速改变测试策略或测试方法,所有的测试失败都与测试场景和测试上下文相关联。因此,基于此,我们在进行ET测试时,可以利用“与产品使用过程相关的情境场景”的经验知识来提高我们的测试技能。具体来说,主要有两点:模拟用户真实的使用场景,尽可能准备真实的测试数据进行测试。(2)上下文中的信息内容和表现形式测试人员在模拟真实场景进行测试时,需要理解和观察场景中呈现的上下文信息内容和表现形式。当软件系统以“不尽如人意”的方式呈现数据、结果或错误或有缺陷的数据时,可以提醒测试人员选择更多的测试数据样本进行测试,观察软件系统的性能。表达方式。例如:在Web系统页面点击按钮没有反应,或者在输入框中输入特殊字符导致页面布局紊乱等。这些案例都可以成为激发测试人员发散思维的闪光点。(3)客户真实案例揭示的问题测试人员在进行探索性测试时,通过了解具体的真实案例和客户位置,根据客户的使用习惯对软件系统进行测试,可以提高识别软件系统风险的能力。例如:测试人员在测试一个新特性的前向兼容性时,导入一个历史复杂的数据导致软件系统出现异常。此类案例在真实的客户场景中屡见不鲜,利用真实的客户案例来评估或测试变更的特征,有助于揭示软件设计或开发中隐藏的风险。2.应用领域视角应用领域视角代表了应用领域的相关知识,包括测试人员掌握的自然知识和应用的理论、规则和技术细节,而不是使用上下文。我们将这种视角分为两种类型:知识学科的概念内容,以及学科的实践知识物质和工具。(1)概念知识和学科内容概念知识和学科内容可以理解为测试人员掌握的一些逻辑推理知识和测试经验。例如:根据某个web系统的页面提示,测试人员推理过滤,判断是应用前端问题还是应用后台程序问题。(2)工具实用知识工具可以帮助测试人员提高测试效率,对工具的熟悉程度和操作的熟悉程度直接影响到测试效率和测试结果分析。使用工具进行测试,测试结果可以作为测试人员的参考。一般来说,培养测试人员的探索性测试思维需要测试人员了解相关领域知识。图表归纳,这部分知识如下:2.系统知识应用系统知识主要有两个视角:交互特性和系统视角,以及单一特性和功能视角。测试人员对系统及其相关知识的知识和理解的特征又可以进一步划分为知识系统的工作机制、逻辑和交互相关知识。1.系统内的交互功能和视角测试人员对系统及其相关特性的认识和理解,可以进一步分为知识系统的工作机制、逻辑和交互、历史版本故障等。测试人员知道这些功能如何协同工作以及系统的基本工作逻辑。测试人员了解系统应该如何对某些事情做出反应,输入数据或配置的各种变化,并可以基于这种理解来识别故障。重点不一定是细节的准确性,而是系统应该如何响应,系统是否响应,响应是否正确。示例:测试人员正在测试基于工程模型的模拟现实生活系统。在这种情况下,通过观察系统的响应,测试人员意识到系统没有正确响应模拟参数和模型性能的变化。系统要么根本不响应,要么只响应部分。值得注意的是:理解工作机制、逻辑和交互是通过观察对系统配置、状态或数据变化的整体响应,或者通过模拟真实的使用场景来应用的。此知识还用于识别在不直接属于测试重点的区域中发生的无意更改。最后,当系统知识是测试者的新属性时,一致性启发式是基于相似特征和故障识别,同一系统的新属性与相似属性不一致。2.单一特性和功能视角单一特性和功能视角是几乎每个测试人员经常测试的类别,测试用例都是针对单一特性设计和测试的。在这里,我们在讲解探索性测试技巧时,建议大家:锻炼测试人员分析日志的能力,要有灵敏的“嗅觉”,能够及时发现日志中的异常打印和错误信息,并向后追溯导致系统故障的原因。异常场景、代码等。综上所述,这部分系统知识的分类、知识类型和使用方法如下表所示:3.软件工程通用知识软件工程通用知识是指可以明确的错误没有深入分析就发现了。例如:GUI层面的功能性错误、布局错误,测试人员很容易一眼就判断是否是故障。又如:功能层面的可用性,可以让测试人员参考用户手册,轻松判断是否满足用户需求,是否简单易用。它可以分为一般正确性视角、可用性视角和直接错误视角。详见下表:总结探索性测试是一种自由灵活的测试方式,近年来受到了很多测试人员的推崇,并相应地诞生了一些测试技术,如局部探索性测试方法和全局探索性测试方法方法。虽然我们一直在强调探索性测试不是纯粹的经验测试,但我们不能否认丰富的经验对探索性测试的好处。本文从三个角度简单阐述了如何丰富探索性测试经验,加强探索性测试技能,希望对大家有所帮助。
