自动化方案不合理的原因浅析

前言

  一直以来,测试团队都面临一个迫在眉睫的问题:自动化测试收效甚微,甚至被认为是”为了实现自动化而自动化“。之前写过一篇博客自动化测试的评价维度,其实自动化的评价不乏有其他的评价指标。但这里想说的一点是,自动化方案产出低的一个重要原因是自动化整体方案的不合理。

  下面根据自己的经验,做下总结,个人之见,不免有不足之处,欢迎补充交流!!!

  自动化整体方案不合理的证据

  1、自动化发现bug率太低/甚至很长一段时间没有发现过bug

  可能你会说自动化本来就不如手工测试容易暴露问题,况且有些业务本来bug就不多。但注意了,这里强调的是自动化发现bug的占比,如果这个比例趋向于0,那自动化实现的价值还有多少呢

  2、没有减少手工成本/或时间成本

  自动化虽然也不断暴露问题,但自动化测试一次,与手工测试一次相比,并没有节省多少 人工成本和时间成本(例如,执行过程中还需要人工参与等),甚至反而增加了自动化的维护成本。那么这样算起来,自动化可能成为了一种”摆设“。

  这种情况流行的一种说法是:”为了自动化而自动化“。将不适合做自动化的地方,强行自动化实现后,是得不偿失的。

  3、自动化运行失败, 极大概率并不能说明真的bug存在

  这在实际业务中,是大多数实现自动化的测试同学比较痛心疾首的情况了。日常的工作就是不断调试自动化,确保运行时不再那么频繁失败了。很早之前,自己也曾经历过这样的痛苦。

  这种情况除了白白浪费很多时间精力外,还会让参与自动化建设的同学丧失继续实现自动化的信心。 说白了,自动化实现的目标是帮测试同学干活的,如果失去这个作用,还不如果断放弃自动化。

  4、自动化执行后仍然需要重复投入手工测试

  这种自动化运行类似于”空跑“一样,并没有起到什么作用,其实这种情况也是”为了自动化而自动化“的一种证明了。目前很多团队评价自动化好坏的重要指标就是自动化case数量、运行稳定性/成功率,其实这两个指标对评价自动化并没有那么的有说服力。

  自动化整体方案不合理的几个原因

  根本原因是自动化整体方案与实施不合理,具体说来,有几点值得注意:

  1、自动化方案与手工测试流程千差万别

  不会做手工测试的同学,真心很难做好自动化测试(当然了,这里的自动化排除掉压测)。不敢想象,如果自动化方案与手工测试流程完全不在一个维度上,自动化怎么能像手工测试一样大量暴露问题呢!!!

  2、实现的自动化只能”一条腿走路“

  这里说的”一条腿走路“是说,只实现了半自动化,并没有实现100%的自动化,运行前/中/后需要人为参与。 半自动化的例子,在实际的业务中,还是挺多见的。比如,自动化执行前输入人为输入一些参数、或自动运行前需要人为准备一些数据、或自动化运行后需要人为check一些东西。

  3、试图将一切自动化

  所谓过犹不及,试图将一切自动化的后果是自动化变得臃肿不堪,要么常常失败,要么成了摆设。

  4、没有根据业务实现特点进行自动化

  各个公司/团队的业务、实现千差万别,哪怕是不同产品线都会因为团队合作、迭代、架构设计的不同,导致自动化方案的千差万别,进而自动化使用的工具、平台都会有很大不同。因而,在别的业务上运行完美的自动化,拿过来直接用,很可能会产生”水土不服“。

  如果自动化目前用的不顺手,或者没有达到效果预期,那么不妨评估一下,你的自动化方案是不是也正在”水土不服“呢

  写在最后

  自动化实现的方法论:

  1、承认不是所有的东西都适合自动化;

  2、自动化测试的前提是强大地进行手工测试;手工测试是自动化测试的必要条件。自动化测试应该尽可能模拟手工测试的流程

  ps: 这里的手工测试,当然是完美、大神级别的了, 并不是仅仅是说点点点的功能级别测试

  3、自动化实现之前,不妨先列一些自动化实现最为核心的目标。

  在频繁的迭代上线过程中,如果遗漏到线上的问题太明显,太多,这是测试技能问题;但如果线上无遗留,测试技能没有问题,只能说明自动化整体方案可能有很大的提升空间。

【整整200集】超超超详细的Python接口自动化测试进阶教程合集,真实模拟企业项目实战

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

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

相关文章

【DevOps视频笔记】8. Jenkins 配置

一、Jenkins 入门配置 1. 工具 / 插件 介绍 二、插件和工具配置 1. 配置 JDK 和 Maven Stage 1:将服务器中 JDK 和 Maven 映射到 jenkins 容器中 Stage 2:jenkins 全局配置中 -- 指定JAVA_HOME目录 Stage 3:jenkins 全局配置中 -- 指定…

Stable Diffusion 从入门到企业级实战0401

一、概述 本章是《Stable Diffusion 从入门到企业级实战》系列的第四部分能力进阶篇《Stable Diffusion ControlNet v1.1 图像精准控制》第01节, 利用Stable Diffusion ControlNet Inpaint模型精准控制图像生成。本部分内容,位于整个Stable Diffusion生…

2. 安装Memcached

官网下载 下载地址 安装依赖 yum install libevent libevent-devel -y 下载软件包:(1/3): libevent-devel-1.4.13-4.el6.x86_64.rpm (2/3): libevent-doc-1.4.13-4.el6.noarch.rp…

Git小白入门——上手实操之创建仓库和代码提交

版本库 什么是版本库呢?版本库又名仓库,英文名repository,简单理解成一个目录,目录里的所有文件都可以被Git管理,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或…

用Kubernetes(k8s)的ingress部署https应用

用Kubernetes的ingress部署https应用 环境准备Ingress安装域名证书准备 部署应用通过ingress暴露应用根据ssl证书生成对应的secret创建ingress暴露部署的应用确认自己安装了ingress创建ingress 访问你暴露的应用 环境准备 Ingress安装 我之前有一片文章写的是用ingress暴露应…

vite 配置自动补全文件的后缀名

vite 不建议自动补全,文件的后缀名的 const Home ()>import("/views/Home.vue");文件是必须要加上 .vue 的后缀名的 如果 想要像 webpack 一样的不用写, 可以在vite.config.js中配置如下就可以了

go锁-互斥锁

go锁-互斥锁 sema初始值是0,waitershift等待协程的数量 正常枷锁: 尝试CAS直接加锁,通过原子包给lockerd 为枷锁 若无法直接获取,进行多次自旋尝试,未获取到的锁的g ,多次执行空语句,多次尝试…

Scala中的样例类和样例对象和JAVA存根类

Scala中的样例类和样例对象 在 Scala 中,样例类(case class)和样例对象(case object)都是用于定义不可变数据类型的特殊类和对象。它们被广泛用于模式匹配、代数数据类型(Algebraic Data Types&#xff09…

CCF CSP题解:重复局面(202305-1)

链接和思路 OJ链接&#xff1a;传送门 本题思路很简单&#xff0c;只需要把国际象棋的局面单独标识即可。我使用C容器map&#xff0c;注意需要重载运算符<。 AC代码 #include <iostream> #include <map>using namespace std;struct State {string line[8];b…

软件测试/测试开发丨Selenium Web自动化测试基本操作

点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接&#xff1a;https://ceshiren.com/t/topic/26901 一、浏览器控制 模拟功能测试中对浏览器的操作 1.1、打开网页 get方法打开浏览器 def open_browser():driver webdriver.Chrome()driver.get(&qu…

VS + QT 封装带UI界面的DLL

一、创建编译DLL的项目 1.新建Qt Class Liabrary 2.新建项目&#xff0c;选择Qt Widgets Class 3.新建C类&#xff0c;可以在此类里面写算法函数用于调用。 4.下面是添加完Qt窗体类和C类之后的项目截图 5.修改头文件并编译 将uidemo_global.h中的ifdef内容复制到dialog.h上…

日志记录一

我们知道&#xff0c;当注释掉配置环境变量 export ……之后&#xff0c;需要source ……之后&#xff0c;修改内容才能生效&#xff1b;例如&#xff1a;将export的Java环境变量注释掉或者删除掉后&#xff0c; vi /etc/profile source /etc/profile 使之生效。 但是&#xf…

Docker:自定义镜像

&#xff08;总结自b站黑马程序员课程&#xff09; 环环相扣&#xff0c;跳过部分章节和知识点是不可取的。 一、镜像结构 镜像是分层结构&#xff0c;每一层称为一个Layer。 ①BaseImage层&#xff1a;包含基本的系统函数库、环境变量、文件系统。 ②Entrypoint&#xff1…

性能提升3-4倍!贝壳基于Flink + OceanBase的实时维表服务

作者介绍&#xff1a;肖赞&#xff0c;贝壳找房&#xff08;北京&#xff09;科技有限公司 OLAP 平台负责人&#xff0c;基础研发线大数据平台部架构师。 贝壳找房是中国最大的居住服务平台。作为居住产业数字化服务平台&#xff0c;贝壳致力于推进居住服务的产业数字化、智能…

二叉查找树(binary search tree)(难度7)

C数据结构与算法实现&#xff08;目录&#xff09; 答案在此&#xff1a;二叉查找树&#xff08;binary search tree&#xff09;&#xff08;答案&#xff09; 写在前面 部分内容参《算法导论》 基本接口实现 1 删除 删除值为value的第一个节点 删除叶子节点1 删除叶子节…

基于Android的旅游管理系统 微信小程序

随着网络科技的发展&#xff0c;移动智能终端逐渐走进人们的视线&#xff0c;相关应用越来越广泛&#xff0c;并在人们的日常生活中扮演着越来越重要的角色。因此&#xff0c;关键应用程序的开发成为影响移动智能终端普及的重要因素&#xff0c;设计并开发实用、方便的应用程序…

mysql中间件Atlas

Mysql 的 proxy 中间件有比较多的工具&#xff0c;例如&#xff0c;mysql-proxy(官方提供), atlas , cobar, mycat, tddl, tinnydbrouter等等。 ​ 而Atlas是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Pro…

2023年高教社杯数学建模思路 - 案例:感知机原理剖析及实现

文章目录 1 感知机的直观理解2 感知机的数学角度3 代码实现 4 建模资料 # 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 感知机的直观理解 感知机应该属于机器学习算法中最简单的一种算法&#xff0c;其…

实现无公网IP环境下远程访问本地Jupyter Notebook服务的方法及端口映射

文章目录 前言1. Python环境安装2. Jupyter 安装3. 启动Jupyter Notebook4. 远程访问4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5. 固定公网地址 前言 Jupyter Notebook&#xff0c;它是一个交互式的数据科学和计算环境&#xff0c;支持多种编程语言&#xff0c;如…

JDBC连接数据库

目录 一.什么是JDBC 二.JDBC的实现步骤 三.简单使用JDBC 一.什么是JDBC JDBC是Java数据库连接&#xff0c;是java中提供数据库访问的Java API,它为关系型数据库的提供了统一访问规范。 二.JDBC的实现步骤 1.创建数据库连接 这里有两种方式: DataSource创建&#xff0c;提…