目录
前言
应该去做的事情
雇用合适的人
在寻找正确的测试自动化工具方面花点时间
轻装上阵
让开发人员参与到自动化过程中来
在ci/cd上投资时间
不应该做的事情
不要因为一个工具被追捧就选择它
不要试图将一切都自动化
不要太早实现自动化
永远不要用自动化来取代人工测试
总结
前言
看到了一篇不错的关于自动化测试文章,简单翻译了一下。
在我的软件测试生涯中,我听到了许多说法,如 "我们不需要团队中的测试人员!"到 "我们需要用100%的覆盖率来自动化一切!"。每当我听到这些时,我都会摇头。我打赌你知道为什么。这两个极端都是错误的,因为我认为每个软件开发团队都应该有一个测试人员在其中。当然,100%的测试自动化覆盖率也是不可能的,也是没有效率和要求的。
在这篇文章中,我将分享我在测试自动化方面学到的经验,这些经验是我在软件测试行业工作了13年以上的艰苦历程中总结出来的。我将分享我在过去几年中对测试自动化和要避免的陷阱的详细看法。我将分享我在测试自动化方面的注意事项,以帮助你不犯同样的错误。
应该去做的事情
雇用合适的人
雇用具有软件工程技能的人是必须的。没有正确的技能,你的测试自动化会失败。因此,需要在招聘过程中投入大量时间,以确定适合你的需求的人。我建议你写下你想通过新员工实现的目标。一旦目标明确,就从中引申出具体的技能。
现在是时候写一份朗朗上口、不太长的职位描述,并说明所需的核心技能。不要在长长的技能清单中过度使用技术术语和要求。这可能会对潜在的雇员产生负面的影响。
在面试过程中与人交谈时,技术能力是必须的。你可以在编码挑战或临时进行的代码审查中验证它们。然而,不要只看技术能力。检查是否适合团队或公司,以及在与人合作、沟通和解决问题时的正确心态也非常重要。
一旦你雇用了合适的人从事你的自动化工作,相信他们会做正确的事情。给他们尽可能多的上下文,让他们与公司的其他角色一起,如开发人员、设计师和产品人员。在最好的情况下,每个开发团队都有一个测试工程师加入。
在寻找正确的测试自动化工具方面花点时间
在公司拥有正确的测试自动化人员是一个很大的优势。下一个挑战是找到并选择正确的测试自动化工具。而这需要时间。在选择工具之前,与所有参与方坐下来,定义测试自动化的目标。在这个过程中,尽量提出尽可能多的关于工具、自身环境和将要建立的产品的问题。在这些问题的帮助下,你将创建一个长长的选择标准列表,以帮助你找到适合你需要的测试自动化工具。
该列表可以有以下标准。
- 该工具是否支持不同的编程语言?
- 该工具是否能够针对不同的操作系统进行自动化?
- 该工具是否支持CI/CD?
- 该工具是否提供报告功能?
- 该工具是否有很好的文档,是否提供支持或有一个伟大的社区或干爹?
- 该工具是否满足预算要求?
- 配置该工具的复杂程度如何?
- 该工具是否提供灵活的测试执行能力,例如在不同的操作系统或环境下?
上面的列表只包含了一些可能的问题,以找到合适的工具。因此,需要投入足够的时间来找到适合你需求和环境的工具。也可能是你需要一个以上的自动化工具用于你的技术架构中的不同层,或者是除了测试自动化工具之外,还需要一个测试自动化管理平台。那么你应该分别对每个工具进行选择。
轻装上阵
一旦你确定了适合你的需求的自动化工具,现在是在你的团队或公司内进行配置和实施的时候了。在最初的几天或几周内,试着学习所有关于这个工具和它的功能。一旦你和你的团队熟悉了它,就开始进行第一个自动化方案的工作。但开始时一定要简单! 看看那些容易自动化的产品功能,并帮助团队专注于质量的其他部分。当这个测试是强大的并提供可靠的结果时,就可以进入下一个自动化阶段。开始在更复杂的情况下工作,看看结果。我们也建议在产品的某些部分进行测试,这些部分每天或每周都不会改变。通常一个产品的核心功能是自动化的完美起点。
让开发人员参与到自动化过程中来
编写测试自动化代码并不容易。它的复杂性与编写生产代码的复杂性相同,这一点永远不应该被低估。通常一个软件开发团队有3-5个软件开发人员和至少1个软件测试工程师。这个比例是可以的。然而,测试工程师很难赶上所有对产品进行的代码修改。他/她不仅需要手动测试软件,而且还需要编写复杂的自动化。这一切对团队中的一个人来说是不可能做到的。因此,软件开发人员也必须负责编写测试自动化代码。不仅在单元测试层面,其他层次的自动化测试也可以涉猎。
每个团队都应该坐在一起讨论自动化过程。每个人都必须清楚,产品的质量是每个人的责任。这种心态要求团队中的每个人都支持自动化。如果不是这样,你的自动化过程很可能会失败。
在ci/cd上投资时间
与工具选择的时间投资类似。一个软件开发团队必须在cicd的配置上投入足够的时间。pipeline的配置方式必须支持开发团队的需求。例如,在每次提交时运行,在拉代码时运行或在夜间执行整个测试套件。
同样重要的是,定义哪一层的哪些测试应该在什么时候被自动化。在最好的情况下,团队正在制定一个cicd策略。一旦pipeline策略被实施,重要的是结果对团队中的每个人都是透明的,甚至更好的是对公司中的每个人都是透明的,例如用一个dashboard。
cicd工作和投入的时间不应该被低估。根据项目或产品的规模,这可能是一个人甚至整个团队的全职工作。
不应该做的事情
不要因为一个工具被追捧就选择它
我的不做清单的第一点是,当选择一个新的测试自动化工具时,不要因为它在软件开发或测试社区中被炒作而盲目地选择一个工具。如果你真的很幸运,这个工具可能对你有用,但在大多数情况下,你会用它失败。正如我在前面提到的,选择一个工具需要时间。如果没有在选择过程中的这种投资,从长远来看,你可能会损失更多的钱,因为在产品开发过程中的某个时刻,你会发现这个工具不支持某个特殊功能,或者不能按照你需要的方式进行扩展。
在选择工具时,最好检查一下目前什么工具被炒得很热,为什么?也许这种追捧有一个合理的理由,你可能会从中受益。跟上新的工具,并与社区保持联系,获得最新的消息,这总是好的。
不要试图将一切都自动化
我在前面已经提到了这一点。每当你的团队或公司里有人告诉你要把所有事情都自动化的时候,你就装聋作哑好了。这个人很可能是一个从未从事过软件开发的人,或者对测试自动化毫无概念。我见过一些没有经验的人,他们是自动化的新手,试图把所有的东西都自动化,但他们很快就发现,这是不可能的。当你看到有这种观点的人时,和他们谈谈,并解释其消极的一面。
你应该做的是看一下你的产品和代码架构,并确定你的应用程序的关键部分。然后花时间为这些部分创建一个自动化战略。
有了明确的重点和策略,少量的自动化方案可以对产品的整体质量产生更大的影响。
不要太早实现自动化
在产品开发团队中开始使用自动化时,一个典型的错误是开始的太早了。如果团队正在开发一个全新的功能或产品,真的很有可能功能会改变。在这种情况下,开始实施自动化是没有意义的。投入的时间可能会被浪费掉。相反,团队应该从基础开始。例如,建立CI/CD pipeline,考虑功能所需的数据结构。从中得出一个测试数据策略,也许准备测试数据生成的脚本。
一旦功能越来越成熟,就慢慢开始自动化。我建议与产品所有者保持密切的关系,以了解即将到来的产品功能和变化。使用这些信息来创建你的自动化策略。
永远不要用自动化来取代人工测试
最后但并非最不重要的是,不要用自动化来取代人工测试!人工测试是自动化的重要组成部分。在产品的开发过程中,手工测试是如此强大的一部分,它永远不应该被机器取代。为什么呢?嗯,自动化测试将由机器/计算机执行。机器所做的正是测试自动化代码中的内容,仅此而已。这并不坏,我们都知道这是有用的信息,但软件同学进行手工测试时,会发现更多的问题。首先,测试人员的行为就像一个用户。使用产品的用户会使用它,例如用鼠标、键盘或用手指在使用产品时使用他/她的所有感官。在大多数情况下,手工测试会发现没有人想到会发生的问题。
因此,测试自动化是人工测试的重要补充。
总结
正如你在这篇文章中所看到的,一个人在从事测试自动化时可能会犯很多错误。在雇佣自动化专家、寻找合适的工具和寻找合适的时机开始自动化时,有许多话题需要记住。
如果你有一个明确的目标和重点,知道你想通过测试自动化实现什么,并遵循本文中要做的内容,摒弃不要做的事情,那么你将在你的产品团队或公司的测试自动化方面取得成功。