你一定不知道的自动化测试的9大规则

news2024/11/22 18:04:00

目录

前言

应该去做的事情

雇用合适的人

在寻找正确的测试自动化工具方面花点时间

轻装上阵

让开发人员参与到自动化过程中来

在ci/cd上投资时间

不应该做的事情

不要因为一个工具被追捧就选择它

不要试图将一切都自动化

不要太早实现自动化

永远不要用自动化来取代人工测试

总结


前言

看到了一篇不错的关于自动化测试文章,简单翻译了一下。

在我的软件测试生涯中,我听到了许多说法,如 "我们不需要团队中的测试人员!"到 "我们需要用100%的覆盖率来自动化一切!"。每当我听到这些时,我都会摇头。我打赌你知道为什么。这两个极端都是错误的,因为我认为每个软件开发团队都应该有一个测试人员在其中。当然,100%的测试自动化覆盖率也是不可能的,也是没有效率和要求的。

在这篇文章中,我将分享我在测试自动化方面学到的经验,这些经验是我在软件测试行业工作了13年以上的艰苦历程中总结出来的。我将分享我在过去几年中对测试自动化和要避免的陷阱的详细看法。我将分享我在测试自动化方面的注意事项,以帮助你不犯同样的错误。

 

应该去做的事情

雇用合适的人

雇用具有软件工程技能的人是必须的。没有正确的技能,你的测试自动化会失败。因此,需要在招聘过程中投入大量时间,以确定适合你的需求的人。我建议你写下你想通过新员工实现的目标。一旦目标明确,就从中引申出具体的技能。

现在是时候写一份朗朗上口、不太长的职位描述,并说明所需的核心技能。不要在长长的技能清单中过度使用技术术语和要求。这可能会对潜在的雇员产生负面的影响。

在面试过程中与人交谈时,技术能力是必须的。你可以在编码挑战或临时进行的代码审查中验证它们。然而,不要只看技术能力。检查是否适合团队或公司,以及在与人合作、沟通和解决问题时的正确心态也非常重要。

一旦你雇用了合适的人从事你的自动化工作,相信他们会做正确的事情。给他们尽可能多的上下文,让他们与公司的其他角色一起,如开发人员、设计师和产品人员。在最好的情况下,每个开发团队都有一个测试工程师加入。

在寻找正确的测试自动化工具方面花点时间

在公司拥有正确的测试自动化人员是一个很大的优势。下一个挑战是找到并选择正确的测试自动化工具。而这需要时间。在选择工具之前,与所有参与方坐下来,定义测试自动化的目标。在这个过程中,尽量提出尽可能多的关于工具、自身环境和将要建立的产品的问题。在这些问题的帮助下,你将创建一个长长的选择标准列表,以帮助你找到适合你需要的测试自动化工具。

该列表可以有以下标准。

  • 该工具是否支持不同的编程语言?
  • 该工具是否能够针对不同的操作系统进行自动化?
  • 该工具是否支持CI/CD?
  • 该工具是否提供报告功能?
  • 该工具是否有很好的文档,是否提供支持或有一个伟大的社区或干爹?
  • 该工具是否满足预算要求?
  • 配置该工具的复杂程度如何?
  • 该工具是否提供灵活的测试执行能力,例如在不同的操作系统或环境下?

上面的列表只包含了一些可能的问题,以找到合适的工具。因此,需要投入足够的时间来找到适合你需求和环境的工具。也可能是你需要一个以上的自动化工具用于你的技术架构中的不同层,或者是除了测试自动化工具之外,还需要一个测试自动化管理平台。那么你应该分别对每个工具进行选择。

轻装上阵

一旦你确定了适合你的需求的自动化工具,现在是在你的团队或公司内进行配置和实施的时候了。在最初的几天或几周内,试着学习所有关于这个工具和它的功能。一旦你和你的团队熟悉了它,就开始进行第一个自动化方案的工作。但开始时一定要简单! 看看那些容易自动化的产品功能,并帮助团队专注于质量的其他部分。当这个测试是强大的并提供可靠的结果时,就可以进入下一个自动化阶段。开始在更复杂的情况下工作,看看结果。我们也建议在产品的某些部分进行测试,这些部分每天或每周都不会改变。通常一个产品的核心功能是自动化的完美起点。

让开发人员参与到自动化过程中来

编写测试自动化代码并不容易。它的复杂性与编写生产代码的复杂性相同,这一点永远不应该被低估。通常一个软件开发团队有3-5个软件开发人员和至少1个软件测试工程师。这个比例是可以的。然而,测试工程师很难赶上所有对产品进行的代码修改。他/她不仅需要手动测试软件,而且还需要编写复杂的自动化。这一切对团队中的一个人来说是不可能做到的。因此,软件开发人员也必须负责编写测试自动化代码。不仅在单元测试层面,其他层次的自动化测试也可以涉猎。

每个团队都应该坐在一起讨论自动化过程。每个人都必须清楚,产品的质量是每个人的责任。这种心态要求团队中的每个人都支持自动化。如果不是这样,你的自动化过程很可能会失败。

在ci/cd上投资时间

与工具选择的时间投资类似。一个软件开发团队必须在cicd的配置上投入足够的时间。pipeline的配置方式必须支持开发团队的需求。例如,在每次提交时运行,在拉代码时运行或在夜间执行整个测试套件。

同样重要的是,定义哪一层的哪些测试应该在什么时候被自动化。在最好的情况下,团队正在制定一个cicd策略。一旦pipeline策略被实施,重要的是结果对团队中的每个人都是透明的,甚至更好的是对公司中的每个人都是透明的,例如用一个dashboard。

cicd工作和投入的时间不应该被低估。根据项目或产品的规模,这可能是一个人甚至整个团队的全职工作。 

不应该做的事情

不要因为一个工具被追捧就选择它

我的不做清单的第一点是,当选择一个新的测试自动化工具时,不要因为它在软件开发或测试社区中被炒作而盲目地选择一个工具。如果你真的很幸运,这个工具可能对你有用,但在大多数情况下,你会用它失败。正如我在前面提到的,选择一个工具需要时间。如果没有在选择过程中的这种投资,从长远来看,你可能会损失更多的钱,因为在产品开发过程中的某个时刻,你会发现这个工具不支持某个特殊功能,或者不能按照你需要的方式进行扩展。

在选择工具时,最好检查一下目前什么工具被炒得很热,为什么?也许这种追捧有一个合理的理由,你可能会从中受益。跟上新的工具,并与社区保持联系,获得最新的消息,这总是好的。

不要试图将一切都自动化

我在前面已经提到了这一点。每当你的团队或公司里有人告诉你要把所有事情都自动化的时候,你就装聋作哑好了。这个人很可能是一个从未从事过软件开发的人,或者对测试自动化毫无概念。我见过一些没有经验的人,他们是自动化的新手,试图把所有的东西都自动化,但他们很快就发现,这是不可能的。当你看到有这种观点的人时,和他们谈谈,并解释其消极的一面。

你应该做的是看一下你的产品和代码架构,并确定你的应用程序的关键部分。然后花时间为这些部分创建一个自动化战略。

有了明确的重点和策略,少量的自动化方案可以对产品的整体质量产生更大的影响。

不要太早实现自动化

在产品开发团队中开始使用自动化时,一个典型的错误是开始的太早了。如果团队正在开发一个全新的功能或产品,真的很有可能功能会改变。在这种情况下,开始实施自动化是没有意义的。投入的时间可能会被浪费掉。相反,团队应该从基础开始。例如,建立CI/CD pipeline,考虑功能所需的数据结构。从中得出一个测试数据策略,也许准备测试数据生成的脚本。

一旦功能越来越成熟,就慢慢开始自动化。我建议与产品所有者保持密切的关系,以了解即将到来的产品功能和变化。使用这些信息来创建你的自动化策略。

永远不要用自动化来取代人工测试

最后但并非最不重要的是,不要用自动化来取代人工测试!人工测试是自动化的重要组成部分。在产品的开发过程中,手工测试是如此强大的一部分,它永远不应该被机器取代。为什么呢?嗯,自动化测试将由机器/计算机执行。机器所做的正是测试自动化代码中的内容,仅此而已。这并不坏,我们都知道这是有用的信息,但软件同学进行手工测试时,会发现更多的问题。首先,测试人员的行为就像一个用户。使用产品的用户会使用它,例如用鼠标、键盘或用手指在使用产品时使用他/她的所有感官。在大多数情况下,手工测试会发现没有人想到会发生的问题。

因此,测试自动化是人工测试的重要补充。

总结

正如你在这篇文章中所看到的,一个人在从事测试自动化时可能会犯很多错误。在雇佣自动化专家、寻找合适的工具和寻找合适的时机开始自动化时,有许多话题需要记住。

如果你有一个明确的目标和重点,知道你想通过测试自动化实现什么,并遵循本文中要做的内容,摒弃不要做的事情,那么你将在你的产品团队或公司的测试自动化方面取得成功。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/749851.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言-报错集锦-02-munmap_chunk(): invalid pointer: 0x0000000001d2e150 ***

一、报错信息 [2023-7]--[ Debug ]--Destroy DqlResult Struct OK [2023-7]--[ Debug ]--Destroy Moia Base Job : OK [2023-7]--[ Debug ]--Destroy Moia Base Job : OK [2023-7]--[ Debug ]--Destroy Moia Base Job : OK [2023-7]--[ Debug ]--Destroy Mo…

Redis学习(二)线程安全、分布式锁、消息队列

文章目录 优惠券秒杀全局ID生成器优惠券秒杀下单超卖问题一人一单 分布式锁基于Redis的setnx指令实现分布式锁解决锁误删问题基于Lua脚本实现多条指令原子性Redis调用Lua脚本Java中使用Lua脚本 RedissonRedisson快速入门Redisson可重入锁原理Redisson的锁重试和Watchdog机制Red…

【经济调度】基于多目标宇宙优化算法优化人工神经网络环境经济调度研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

适配各类大模型应用!手把手教你选择 Zilliz Cloud 实例类型

作为大模型时代备受关注的细分赛道,向量数据库可以不仅为大模型提供存储和向量检索的功能,还能适配各种 AI 应用场景,例如聊天机器人、内容审核、增强 LLM 知识库等。 不过,对于向量数据库的开发者而言,成本是绕不开的…

Spring学习笔记---SpringBoot快速入门

Spring学习笔记---SpringBoot快速入门 Spring学习笔记---SpringBoot1 SpringBoot简介1.1 SpringBoot快速入门1.1.1 开发步骤1.1.1.1 创建新模块1.1.1.2 创建 Controller1.1.1.3 启动服务器1.1.1.4 进行测试 1.1.2 对比1.1.3 官网构建工程1.1.3.1 进入SpringBoot官网1.1.3.2 选择…

(二)springboot实战——springboot基于多端内容协商适配实现json、xml、yaml等格式数据统一返回

前言 在实际应用开发场景中,我们有需求实现多端内容请求的适配,例如某些客户端需要返回json数据,有些客户端需要返回xml数据,有些客户端要返回yaml数据,这个时候就需要服务端做内容返回的适配,如果按照提供…

搭建vsto的clickonce一键发布IIS环境FTP

要在 Windows 上启用 IIS(Internet Information Services),可以按照以下步骤进行操作:1. 打开“控制面板”:点击 Windows 开始菜单,然后在搜索栏中输入“控制面板”,并选择相应的结果。2. 打开“…

Maven 项目构建生命周期

Maven 项目构建生命周期 一句话: Maven 构建生命周期描述的是一次构建过程经历了多少个事件 生命周期的3 大阶段 clean 清理工作 default 核心工作,例如编译,测试,打包,部署等 site 产生报告,发布站点等 生命周期…

zsh自定义命令行提示符

环境: oh-my-zsh 插件 效果: 本来的样子:感觉元素很多,比较挤占地方 现在的样子:简洁了很多 步骤: 打开主题的配置文件(我的主题是agnoster ) cd /Users/你的家目录/.oh-my-zsh/the…

Windows操纵kafka

这里写目录标题 启动kafk创建一个测试主题查看所有主题查看first详细信息修改分区数(分区数只能增加 不能减少)删除主题生产者生产数据消费命令 启动kafk 安装目录下 .\bin\windows\kafka-server-start.bat .\config\server.properties创建一个测试主题 安装目录下 .\bin\wi…

【Unity2D像素风格小游戏】期末考考完,和搭档一个月从零开始的Unity速成作品!

游戏实况视频 六月十八号,期末考完后,大佬搭档和我开始自学unity,并在七月一号正式开始一个unity2D像素小游戏的制作,这是一段很有意义,很有收获的日子。 这个项目由搭档提出,另一位超级大佬进行前期指导…

【分布式系统案例课】计数服务之存储设计

存什么? 两种存储内容,各有优劣 综合:耽搁时间和聚合数据都分别进行存储,可以得到两者的好处。 数据库选型 SQL数据库客户端嵌入代理 因为B站的数量级,单个数据库肯定是扛不住的。然后为了满足扩展性需求&#xf…

Python入门级语法详解以及实战练习

来源:投稿 作者:起酥松松 编辑:学姐 python基本语法元素 变量命名原则: 首字符不能是数字; 中间不能有空格; 不能是python保留字; 字母 ,数字 ,汉字 ,下划…

【学会动态规划】三步问题(2)

目录 动态规划怎么学? 1. 题目解析 2. 算法原理 1. 状态表示 2. 状态转移方程 3. 初始化 4. 填表顺序 5. 返回值 3. 代码编写 写在最后: 动态规划怎么学? 学习一个算法没有捷径,更何况是学习动态规划, 跟我…

骨传导耳机好不好,盘点五款当下最流行的骨传导耳机

其实早在几年前,骨传导耳机就已经出现在大众视野了,由于使用的人数不多,所以一直不温不火的,最近这几年,骨传导耳机的热度才开始兴起,其最大的特点就是,不用入耳佩戴,不用担心运动过…

HOT60-单词搜索

leetcode原题链接:单词搜索 题目描述 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成&#…

分体式骨传导,为敏感耳朵打造的舒适体验,南卡OE上手

骨传导蓝牙耳机这两年很受运动玩家的欢迎,不过标准的骨传导耳机用起来并不算方便,最近我看到南卡新推出一种分体式骨传导耳机,叫南卡OE,和普通的骨传导耳机有很大不同。上周我也入手了一款,这几天试了试,感…

基于YOLOv8开发构建目标检测模型超详细教程【以焊缝质量检测数据场景为例】

超详细教程系列在我前面的文章中也有不少的实践记录,感兴趣的话可以自行阅读即可: 《基于yolov7开发实践实例分割模型超详细教程》 《YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程》 《基于yolov5-v7.0开发实践实例分割模型超详细…

实现java参数非必传

1、路径参数: PathVariable(required false)实现参数aaa非必传 2、非路径参数: RequestParam(required false) 实现参数aaa非必传 3、实体参数: RequestBody(required false)实现实体aaa非必传

Java基础---集合类

目录 典型回答 Collection和Collections有什么区别 Java中的Collection如何遍历迭代 Iterable和Iterator如何使用 为什么不把Iterable和Iterator合成一个使用 哪些集合类是线程安全的 典型回答 什么是集合 集合就是一个放数据的容器,准确的说是放数据对象引用…