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

news2024/12/25 8:53:41

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.coloradmin.cn/o/1390434.html

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

相关文章

day-11 统计整数数目

注:无思路 参考答案 code class Solution {static final int N 23;static final int M 401;static final int MOD 1000000007;int[][] d;String num;int min_sum;int max_sum;public int count(String num1, String num2, int min_sum, int max_sum) {d new in…

【STM32】HAL库的STOP低功耗模式UART串口唤醒,第一个接收字节出错的问题(已解决)

【STM32】HAL库的STOP低功耗模式UART串口唤醒,第一个接收字节出错的问题(已解决) 文章目录 BUG复现调试代码推测原因及改进方案尝试中断时钟供电外设唤醒方式校验码硬件问题 切换到STOP0模式尝试结论和猜想解决方案附录:Cortex-M…

《DAMA数据管理知识体系指南》05—第5章 数据建模和设计 知识点记录

第5章 数据建模和设计 5.1 引言 1.数据建模概要: 1)本章将描述数据模型的用途、数据建模中的基本概念和常用词汇以及数据建模的目标和原则。本章将使用一组与教育相关的数据作为案例来说明用各种数据建模的方法,并介绍它们之间的差异。 2&a…

day3:基于UDP模型的简单文件下载

思维导图 tftp文件下载客户端实现 #include <head.h> #define SER_PORT 69 #define SER_IP "192.168.125.223" int link_file() {int sfdsocket(AF_INET,SOCK_DGRAM,0);if(sfd-1){perror("socket error");return -1;}return sfd; } int filedownloa…

Vscode 上安装 Compilot

GitHub Copilot 是由 OpenAI 和 GitHub 开发的 AI 工具。其目的是通过自动完成代码来帮助开发人员使用集成开发环境 &#xff08;IDE&#xff09;&#xff0c;如 Visual Studio Code。它目前仅作为技术预览版提供&#xff0c;因此只有已在候补名单上被接受的用户才能访问它。对…

物联网智能控制器—福建蜂窝物联网科技有限公司

什么是物联网智能控制器&#xff1f; 物联网智能控制器是蜂窝物联自主研发的一种远程测控设备(RTU)&#xff0c;负责对现场信号、工业设备的监测和控制。本质上是一个模块化封装的微型计算机设备&#xff0c;将相应的一些功能进行了封装&#xff0c;无需进行电路设计和硬件程序…

图解渠道网关:不只是对接渠道的接口(一)

这是《百图解码支付系统设计与实现》专栏系列文章中的第&#xff08;20&#xff09;篇。点击上方关注&#xff0c;深入了解支付系统的方方面面。 主要讲清楚什么是渠道&#xff0c;有哪些类型的渠道&#xff0c;什么是渠道网关&#xff0c;渠道网关在支付系统中定位、核心功能…

c++泛型算法相关笔记

一. 泛型算法 1. 前言 泛型算法&#xff1a;可以支持多种类型的算法 此处主要来讨论怎么使用标准库中定义的泛型算法<algorithm>, numeric, ranges. 在引入泛型算法之前&#xff0c;还有一种是方法的形式&#xff0c;比如说std::sort 和std::list::sort&#xff0c;前者…

Overmind平台推出Sui任务,帮助开发者学习Move并构建强大的应用程序

Overmind与Sui基金会合作&#xff0c;推出了其首个任务系列&#xff0c;旨在帮助开发者学习Move并开始在Sui上构建。这些任务通过提供赢取奖励的机会来将学习体验变成游戏&#xff0c;激励开发者构建高质量的代码并向Sui社区展示他们的技能。 去年推出的Overmind平台正在扩展到…

【C++】“Hello World!“

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:C ⚙️操作环境:Visual Studio 2022 ​ 2024.1.14 纪念一下自己编写的第一个C程序 #include<iostream>int main() {/*我的第一个C程序*/std::cout << "Hello world!:>" <<std::endl;ret…

基于python舆情分析可视化系统+情感分析+爬虫+机器学习(源码)✅

大数据毕业设计&#xff1a;Python招聘数据采集分析可视化系统✅ 毕业设计&#xff1a;2023-2024年计算机专业毕业设计选题汇总&#xff08;建议收藏&#xff09; 毕业设计&#xff1a;2023-2024年最新最全计算机专业毕设选题推荐汇总 &#x1f345;感兴趣的可以先收藏起来&…

使用AI自动生成PPT提高制作效率

使用AI自动生成PPT提高制作效率 在制作PPT方面&#xff0c;很多制作者都会轻易跳进一个怪圈&#xff1a;“我要制作一个关于关爱老人的PPT&#xff0c;该怎么做呢&#xff0c;有模板没有?”这个会涉及很多逻辑需要经过不断的思考&#xff0c;制作PPT要通过很多素材、使用技巧、…

翼龙-2H无人机

一、概述 翼龙-2&#xff0c;是成都飞机工业集团研制的无人驾驶飞行器&#xff0c;是空中侦察、精确打击和应急通讯的平台。成都飞机工业集团于2015年9月的北京国际航空航天展览会上介绍了翼龙-2的概念。在2016年珠海航展期间&#xff0c;翼龙-2的原型机首次向公众展示。 因为…

【现代密码学】笔记4--消息认证码与抗碰撞哈希函数《introduction to modern cryphtography》

【现代密码学】笔记4--消息认证码与抗碰撞哈希函数《introduction to modern cryphtography》 写在最前面4 消息认证码与抗碰撞哈希函数MAC概念回顾&#xff08;是的&#xff0c;我忘记这些缩写是什么了。。&#xff09;MAC的定义适应性CMA&#xff08;Chosen Message Attack&a…

GPT应用开发:运行你的第一个聊天程序

本系列文章介绍基于OpenAI GPT API开发应用的方法&#xff0c;适合从零开始&#xff0c;也适合查缺补漏。 本文首先介绍基于聊天API编程的方法。 环境搭建 很多机器学习框架和类库都是使用Python编写的&#xff0c;OpenAI提供的很多例子也是Python编写的&#xff0c;所以为了…

openssl3.2 - 官方demo学习 - cms - cms_ver.c

文章目录 openssl3.2 - 官方demo学习 - cms - cms_ver.c概述运行结果笔记END openssl3.2 - 官方demo学习 - cms - cms_ver.c 概述 CMS验签, 将单独签名和联合签名出来的签名文件都试试. 验签成功后, 将签名数据明文写入了文件供查看. 也就是说, 只有验签成功后, 才能看到签名…

如何区分GPT-3.5模型与GPT-4模型?

GPT 3.5 和 GPT-4 有什么区别&#xff1f; GPT-3.5 在经过大量数据训练后&#xff0c;成功地发展到可以考虑 1750 亿个参数以响应提示。这使其具备令人印象深刻的语言技能&#xff0c;以非常人性化的方式回应各种查询。然而&#xff0c;GPT-4 在更为庞大的训练数据基础上进行了…

服务器和电脑有啥区别?

服务器可以说是“高配的电脑”&#xff0c;两者都有CPU、硬盘、电源等基础硬件组成&#xff0c;但服务器和电脑也是有一定区别的&#xff0c;让小编带大家了解一下吧&#xff01; #秋天生活图鉴# 1、稳定性需求不同&#xff1a;服务器是全年无休&#xff0c;需要高稳定性&…

docker下载时报错 /usr/local/bin/docker-compose: 1: cannot open html: No such file

docker 下载时报错 /usr/local/bin/docker-compose: 1: cannot open html: No such file /usr/local/bin/docker-compose: 2: Syntax error: redirection unexpected&#xff0c; 在网上查找了一些解决方法都不对&#xff0c;最后&#xff0c;通过删除/usr/local/bin/docker-co…

Embedding:数据的奇妙之变

在深度学习的领域,Embedding是连接符号与连续的一座桥梁。它通过将高维离散数据映射到低维连续向量空间,为大模型提供了更好的处理能力。 在这一部分,我们将深入研究Embedding的基本概念、作用以及在深度学习中的广泛应用。 一、向量Embedding与ChatGPT大模型 ChatGPT 大…