想要进行测试自动化的团队都会遇到这个问题:自动化的成功和编码能力有多大的关联?现在更多的招聘信息越来越偏重于对测试人员的编程能力的要求,似乎这个问题的答案是极大的正关联性。
测试人员可以将编码能力用于与测试相关的各种目的。例如,如果测试人员希望更多地参与代码审查,那么知道如何以测试人员的身份阅读代码将非常有帮助。在许多情况下,知道如何在源码级别上阅读(甚至编写)代码可以帮助测试人员测试自动化有更全面的了解。但是,我们相信还有其他一些技能很重要,甚至对于您的测试自动化工作真正蓬勃发展至关重要。
我们相信,有效的测试自动化的主要关键在于测试设计。正确地设计测试,不仅可以为发现软件中的漏洞做好最充分的准备,而且还可以帮助扩展自动化测试的范围。无论使用哪种工具和框架满足自动化需求,良好的测试设计最终都会对将来的测试性能产生正向影响。
考虑到这一点,在有效设计测试时,可以考虑以下一些最佳实践:
在考虑如何设计测试时,请确保它们遵守KISS原则:保持简单。无论是刚开始进行更基本的测试还是进入更复杂的场景,在整个测试自动化过程中保持简单的测试,对于最终的结果都有非常大的帮助。这不仅使测试更加容易,而且还可以帮助团队将来将测试更多地集成到公司的DevOps生命周期中。
无论要测试什么,我都建议将自动化测试保持在 5 到 15 个语句之间,以使它们变得简单易懂。这些测试中的每个组件也应明确说明其功能。当多个团队看到并提供有关这些测试的反馈时,这一点尤其重要。作为基准,请与另一个对测试不太熟悉的团队的人共享测试用例。如果该人可以理解测试用例要完成的任务以及为达到该目标而要采取的步骤,那么就可以放心,测试组件是清晰的。
使测试保持简单的一种好方法是在构建它们时重用相同的组件。无需每次要设计新的测试方案时都重新创建轮子。一旦构建了最初的几个简单的测试,就应将这些组件用于将来的场景。
考虑以下示例:设计了一个检查登录过程的测试。在要求某人登录其帐户的所有其他测试方案中,例如帐户创建测试,修改帐户测试或其他复杂的方案,都可以在所有这些测试选项中将此步骤作为步骤重用。
出于多种原因,重用组件是非常有好处的。首先,它可以确保在测试不同功能时测试通过相同的元素。通过扩展某人可以与应用程序交互的不同方式,这可以更紧密地模仿真实的用户。其次,它对测试维护有很大帮助。特别是在,如果多次创建测试用例以测试同一功能,则平台将自动合并两个元素。此外,某一个元素所做的更改将自动应用于使用该元素的其他测试,这可以帮助您大大减少总体维护时间。
设计测试时要考虑的另一个重要点是,它们应该独立于环境中的其他测试。然后可以在不依赖外部因素的情况下隔离执行测试。使测试保持独立还可以防止不必要的测试中断。如果功能 B 在测试中的应用程序中发生更改,则无需更新功能 A 的测试以确保其继续运行。
即使重用组件,测试也应该是独立的。例如,如果您要测试最终用户修改其帐户的方案,则该测试应包括上述作为测试步骤的登录和帐户创建方案。由于修改帐户首先需要创建一个帐户,因此创建帐户需要成为测试的一部分。
为了确保所有测试都是独立的,请检查一下测试用例是否包含以下三个组件:前置、操作和验证。每个测试都应前置到应用程序的必要部分,在执行该操作之后再执行某种操作,然后验证任务是否已完成或未完成的原因。从长远来看,牢记这三个组成部分将使测试更持久。
要记住的另一个重要的最佳实践是,设计的每个测试应始终具有明确的目的。尽管这看起来似乎很明显,但是随着时间的流逝,或者当多个测试人员或团队参与构建测试时,测试的目的常常会变得模糊。在设计过程开始时定义目的,并将其确定为整个设计的明确目标,将确保测试用例继续保持相关性和有用性。
为了防止测试偏离正常轨道,最好在测试创建时把自己想象成为下次不会再测试应用程序的人。这种心态会在未来几天甚至在几个月后不知所措的情况下,甚至连自己都不知道的时候发挥巨大的作用。这将明确测试的目的,并巩固其在其余环境中的作用。
最后但并非最不重要的一点是,最终用户在设计测试时应始终排在第一位。尤其是作为业务测试人员,对应用程序的使用情况最了解的人。了解用户或潜在用户与应用程序交互的不同方式,以及他们的需求和痛点。在进行有效的测试自动化时,考虑客户的需求来设计测试最终将引导测试工作朝正确的方向发展。
在降低风险时,牢记最终用户也将有所帮助。在设计测试时,重点关注用户使用该功能的不同场景。最终用户可以打破测试的某些方式可能是显而易见的,而其他方式可能是由于最终用户永远不会看到但会引起问题的技术因素所致。提前知道这些将确保同时选择正确的测试来设计和巧妙地设计它们。