为什么自动测试要发现缺陷?

Q:为什么你做了那么多自动测试,却很少能发现缺陷?

A:为什么自动化测试要发现缺陷?

在讨论问题时,首先要对问题是否存在达成一致,而不是直接跳到解决方案。

前一阵子,笔者在某个高端测试群里面丢了一个小石头,引出了诸多测试大佬的讨论。不少人首先就不认同这个问题,认为自动化测试的目标就不是发现缺陷,而是其它。

笔者来介绍一下一个和自动化测试无关的问题。

回归测试的故事
在十多年前的外企时代,笔者所服务的公司有一个团队负责一款行业标杆产品的测试。那时候的发布节奏比较缓慢,大型产品功能和架构升级是一年一次,常规新功能是一个季度发布一次,期间每月发布一次补丁包,夹杂若干VVIP用户的特定补丁。对于测试团队来说,在季度版本以上规格的发布就要求进行全回归,并且年度版本至少要两个轮次。整个用例集大概有10K,以每人每天执行50条用例计,每轮次的全回归要至少200人天。对于一个10人的测试团队来说,这也几乎是一个月的工作量了。没错,抛去其他的工作和非测试相关的杂事,一个测试人员的工作当量就是50条回归测试用例的执行。

根据笔者的统计结果,这种级别的回归测试,其测试用例的通过率一般稳定在99%左右。也就是说,作为一个测试人员,对照着测试用例说明书和被测应用点2天,才能发现一个缺陷。

如果你是这个团队当时的成员,一定会选择成就感更高的新功能测试,而不是去连续点点点回归一个月,因为那简直是一场折磨,而且每个季度都要来一次。

这也是当年笔者在公司内部推行探索式测试试验获得了大家的追捧,不是因为实测效果是可以在回归版本上1天发现2个缺陷,而是可以从那机械地、重复地,最关键是不能发现缺陷的测试活动中脱离开来。

自动化回归测试的故事
再来说一个和自动化相关的问题,

在若干年后,该公司在公司的当家产品上实施了大型的自动化测试项目,整个测试组织(200+)为此积极努力了1年多,终于攒到了约1万条UI自动化测试用例,并且每周进行一次全回归。整个组织发现,虽然实现了自动化,但是还是陷入了泥沼当中,UI自动化测试用例的脆弱性全面爆发,通常在一个新的季度版本的首次提测,自动化测试用例的通过率会低到60%以下。根据前面99%的通过率数据,这些都是各种问题导致的自动化测试用例的假失败(FALSE Failure)。团队虽然用自动化解决了回归测试耗时耗力的问题,但是额外引入了高昂的自动化维护成本,更为重要的是,临时被拉出来组成自动化用例维护小组的同学们心理都清楚,这些失败都是假失败,并不是因为发现缺陷了缺陷。再一次,测试同学陷入了工作缺乏价值感的沮丧当中。

要赢
当然也有同学说,这些都是老黄历了,现在都是微服务+接口自动化测试了。

没错,那回过来说,为什么自动化测试还是不能发现缺陷呢?

在那场讨论中,也有测试大佬认为双方处在不同的宇宙,价值观不同,这根本不应该是个问题。

笔者想问的是,为什么自动化测试就是要发现缺陷呢?为什么测试就是要发现缺陷呢?

因为要赢。
去嚼别人嚼过的甘蔗,再怎么努力也榨不出太多的汁水。

以下是ChatGPT说的车轱辘话,赢是带领团队的一件最重要的事情,因为一个成功的团队需要具备强烈的目标和动力,通过追求胜利,团队可以更好地激发成员的工作热情和创造力,增强团队凝聚力和向心力,不断提高自身的竞争力和市场价值。此外,赢也意味着团队能够取得更多的经验和成就,并得到更多的认可和回报,这将进一步推动团队成员个人和职业的发展。所以,赢对于团队来说是非常重要的一个目标和动力。

对于一个普通的测试人员来说,赢就是能快速、准确、全面的发现缺陷。 通过发现缺陷,帮助团队更及时地解决问题,提高软件质量,降低风险,确保软件能够满足用户的需求。通过发现并解决缺陷,团队可以更快速地交付高质量的软件,从而提高在市场竞争中获得优势的可能性。这是测试人员基本价值的发挥。抛开这些去谈别的价值,是舍本逐末。

所以发现缺陷是测试工作的一个基本目标,自动化测试作为一项测试活动,也是为这个目标服务的。

也有测试同学支出,通过自动化测试的快速回归快速反馈,可以有效支持测试人员进行新功能测测试,也有助于发现缺陷。因此,自动化测试也是为发现缺陷服务的,不用太拘泥于自动化测试是否直接发现了缺陷。

这个话基本上是正确的,也代表了目前的主流观点。或者说,80%(数字都是我胡乱猜测的)的团队目前甚至还达不到这样的水平,而99%的团队会将此作为目标。

而只有1%的团队会将自动化测试发现缺陷作为目标,因为这是他们做测试的主要手段。

什么样的团队这样的呢?
2010年的Google。在某个ppt中,Google说每天执行1亿条次的用例,当然相信这些都是small类型的用例(可以阅读一下 how gogole tests software来了解一下s/m/l类型的测试和测试认证)。

某些实施了TDD/ATDD/BDD的团队。所有需求的澄清都是以自动化测试用例的形式。

如果去观察一下,可以发现一个特征。那就是,

针对某个需求的新增测试用例的执行,是否是以自动化测试的方式执行的。

原因很简单,因为新需求也带来了新的缺陷。软件测试的一大流派就是基于风险的测试,也是这样一个道理。

所以,针对自动化测试是否应该以发现缺陷为目标的讨论,其实应该转换成能否将测试用例的首次执行是按照自动化测试的方式来执行?

你的用例的第一次执行,是用手点的,还是流水线调起的?

这就是99%和1%之间的区别。

这也就意味着,某些测试组织中设置了单独的自动化测试团队,专注于将(回归)测试用例实现自动化。这种模式是难以实现上述目标的。

笔者层级在某个核心系统的测试中推行过 “手自一体” 的测试模式。核心系统天然是可以独立运行的系统、通过接口与外部进行交互,包括行业协议接口、配置文件接口和数据库接口。

通过做好环境、配置尤其是数据的维护工作,实现了上述目标,也就是测试用例在设计时就是按照自动化用例进行设计。用例在首次执行时,测试人员判断是否符合测试预期。如果不符合预期,则报告缺陷。如果符合预期,则将该用例纳入用例库,作为自动化用例进行回归。

这种方式改变了过去团队先手工测试一遍,然后再在下一个迭代时再进行实现自动化的模式。

如果说团队已经实现了TDD/BDD/ATDD,则更加符合上述特征,因为自动化测试的设计和执行的时机更为提前。相信在这样的团队中也不太会有人关注到底自动化测试应不应该发现缺陷。因为自动化测试就是他们主要甚至是唯一的用例执行方式。

这就是99%和1%之间的区别。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

 文档获取方式:点击右边链接领取:软件测试全套资料分享       

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

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

相关文章

FFmpeg 入门

1. 编译 参考文档:FFmpeg编译和集成(FFmpeg开发基础知识),重点注意这句话: 在MSYS2 Packages可以查到云仓库有哪些包,直接安装可节约大量时间。 注意:这个路径可自定义 吐槽 在看到这篇文章之前,花了大…

rke2 Online Deploy Rancher v2.8.0 latest (helm 在线部署 rancher v2.8.0)

文章目录 1. 简介2. 预备条件3. 安装 helm4. 安装 cert-manager4.1 yaml 安装4.2 helm 安装 5. 安装 rancher6. 验证7. 界面预览 1. 简介 Rancher 是一个 Kubernetes 管理工具,让你能在任何地方和任何提供商上部署和运行集群。 Rancher 可以创建来自 Kubernetes 托…

爬虫入门学习(二)——response对象

大家好!我是码银,代码的码,银子的银🥰 欢迎关注🥰: CSDN:码银 公众号:码银学编程 前言 在本篇文章,我们继续讨论request模块。从上一节(爬虫学习(1)--reque…

亚马逊店飞飞ERP系统,跟卖+铺货+物流发货模式综合一体的ERP系统

跨境电商亚马逊,目前为止电商行业比较靠前的电商平台!那么有人做电商,就会有人出单,有人出单就会有中转仓需求,代打包,代贴单!那么这一切都是有一套逻辑完善的ERP来完成!前端通过授权…

基于Python的汽车信息爬取与可视化分析系统

介绍 这款汽车信息网站是基于多项技术和框架设计的全面的汽车信息展示及查询系统。其中,采用了Python Django框架和Scrapy爬虫技术实现数据的抓取和处理,结合MySQL数据库进行数据存储和管理,利用Vue3、Element-Plus、ECharts以及Pinia等前端…

【目标检测】评价指标:mAP概念及其计算方法(yolo源码/pycocotools)

本篇文章首先介绍目标检测任务中的关键评价指标mAP的概念;然后介绍其在yolo源码和pycocotools工具中的实现方法;最后比较两种mAP的计算方法的不同之处。 目标检测中的评价指标: mAP概念及其计算方法(yolo源码/pycocotools) 混淆矩阵概念及其…

【Java JVM】栈帧

执行引擎是 Java 虚拟机核心的组成部分之一。 在《Java虚拟机规范》中制定了 Java 虚拟机字节码执行引擎的概念模型, 这个概念模型成为各大发行商的 Java 虚拟机执行引擎的统一外观 (Facade)。 不同的虚拟机的实现中, 通常会有 解释执行 (通过解释器执行)编译执行 (通过即时编…

redis之单线程和多线程

目录 1、redis的发展史 2、redis为什么选择单线程? 3、主线程和Io线程是怎么协作完成请求处理的? 4、IO多路复用 5、开启redis多线程 1、redis的发展史 Redis4.0之前是用的单线程,4.0以后逐渐支持多线程 Redis4.0之前一直采用单线程的主…

SpringCloud全链路灰度发布

日升时奋斗,日落时自省 目录 1、实现框架 2、负载均衡模块 3、封装负载均衡器 4、网关模块 5、服务模块 5.1、注册为灰度服务实例 5.2、设置负载均衡器 5.3、传递灰度标签 1、实现框架 Spring Cloud全链路灰色发布实现构架: 灰度发布的具体实现…

Redis中的Java客户端

一、Jedis Jedis是一个Java实现的Redis客户端连接工具。 Jedis使用非常简单,直接引入依赖。基于默认参数的Jedis连接池,初始化连接池类(使用默认连接池参数)JedisPool,获取一个Jedis连接Jedis jedisjp.getResource()…

08、Kafka ------ 消息存储相关的配置-->消息过期时间设置、查看主题下的消息存活时间等配置

目录 消息存储相关的配置★ 消息的存储介绍★ 消息过期时间及处理方式演示:log.cleanup.policy 属性配置 ★ 修改指定主题的消息保存时间演示:将 test2 主题下的消息的保存时间设为10个小时1、先查看test2主题下的配置2、然后设置消息的保存时间3、然后再…

Cellinx NVT 摄像机 UAC.cgi 任意用户创建漏洞复现

0x01 产品简介 Cellinx NVT IP PTZ是韩国Cellinx公司的一个摄像机设备。 0x02 漏洞概述 Cellinx NVT 摄像机 UAC.cgi接口处存在任意用户创建漏洞,未经身份认证的攻击者可利用此接口创建管理员账户,登录后台可查看敏感信息,使系统处于极不安全的状态。 0x03 复现环境 FO…

逸学Docker【java工程师基础】3.1安装Jenkins

1.下载镜像 docker pull jenkins/jenkins:lts 2.运行容器 docker run -d -u root -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime --name jenkins jenkins/jenkins:lts 3.要启动名为 jenkins 的 Docker 容器 docker st…

QT上位机开发(利用tcp/ip访问plc)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 plc是工控领域很重要的一个器件。简单的plc一般就是对io进行控制,但是复杂的plc,还可以控制电机、变频器,在工业…

怎么安装es、kibana(单点安装)

1.部署单点es 1.1.创建网络 因为我们还需要部署kibana容器,因此需要让es和kibana容器互联。这里先创建一个网络: docker network create es-net1.2.加载镜像 这里我们采用elasticsearch的7.12.1版本的镜像,这个镜像体积非常大&#xff0c…

重学Java 5 idea详细使用和运算符

慢点跑,前面的路不好走 ——24.1.14 一、IDEA的使用 1.idea的介绍 1.概述:开发工具 2.特点: a、idea是java写的,所以本地上必须有正确的jdk环境 b、idea自动保存 c、不用我们打开dos命令窗口执行javac和java命令 d、idea有强大的…

debian12部署Gitea服务

首先安装git、wget、sqlite,然后进行用户和组的相关设置 sudo apt install -y git wget sqlite3 新增一个git用户与一个git组 sudo adduser --system --group --disabled-password --shell /bin/bash --home /home/git --gecos Git Version Control git 给git用户设…

设置了uni.chooseLocation,小程序中打不开

设置了uni.chooseLocation,在小程序打不开,点击没反应,地图显现不出来; 解决方案: 1.Hbuilder——微信开发者工具路径没有配置 打开工具——>设置 2.微信小程序服务端口没有开 解决方法:打开微信开发…

招投标系统是Electron的纯内网编辑Office Word,可以设置部分区域可编辑,其他的地方不能编辑吗?

问题: 我们是招投标系统的开发公司,框架是用的Electron,需要在纯内网的环境下编辑Office Word,可以设置部分区域可编辑,其他的地方不能编辑吗(如下红框位置)并且在用户忘记填写一些区域的时候做…

Spring Boot - Application Events 的发布顺序_ApplicationContextInitializedEvent

文章目录 Pre概述Code源码分析 Pre Spring Boot - Application Events 的发布顺序_ApplicationEnvironmentPreparedEvent Spring Boot - Application Events 的发布顺序_ApplicationEnvironmentPreparedEvent 概述 Spring Boot 的广播机制是基于观察者模式实现的&#xff0c…