工作几年还是悟不懂自动化测试的意义
【软件测试面试突击班】如何逼自己一周刷完软件测试八股文教程,刷完面试就稳了,你也可以当高薪软件测试工程师(自动化测试)
有人问:自动化测试的成本高效果差,那么自动化测试的意义在哪呢?
我觉得这个问题带有很强的误导性,是典型的逻辑陷阱之一。“自动化测试的成本高效果差”是真的吗?当然不是。而且我始终相信,回答问题的最好方式是把问题本身弄清楚。也就是问关于问题的问题。楼主也学可以进一步 说明下面几个问题,有助于自己理解自己的问题,更有助于问题得到准确的回答:
请定义“自动化测试”的范畴。自动化测试简单来讲,包括用例的撰写,代码的实现,环境的搭建,用例的执行,报表的生成,结果的分析,缺陷报告等等。每个项目自动化程度不一样,测试人员对自动化的理解有偏差,实际实行自动化的范畴差别很大
请定义“成本“包括哪些
请定义什么是“高”。高是相对的。比较对象可以是另外的项目或者项目组,也可以是他人的期望
请定义什么是”效果“
请定义什么是”差“。差也是相对的,可以是同手工测试比较,也可以是同老板的期望比较
如果楼主仔细思考并且回答了以上的问题,我有七成的把握楼主要么不想问这个问题,要么想换个问题。
换一种问法
好吧,为了避免灌水嫌疑,我且以最大的善意揣摩楼主的意图。楼主是想问:
如果有的项目的自动化测试,我们发现成本高于预期,效果不符合预期,那么问题可能出在哪里?怎么判断自动化测试是否有效?
关于错误的预期
我一点都不奇怪有人会告诉我说:
我都不知道我或者我的老板对自动化测试有什么预期,没人跟我说过。
或者:
自动化不就是不用手工测试了吗?用例用代码实现都能自己跑,测试人员就可以去干别的了,可以少招几个不产生价值的测试攻城狮了。老板就是这样计划的。
这是两种非常典型的关于自动化测试的预期问题:
根本就不清楚自动化测试的目标,以及为达到目标所计划的投入
对自动化测试(通常是总监以上的老板,开发人员或者手动测试人员)抱有不切实际的幻想型期望,认为自动化测试能够干很多活同时省很多钱
自动化测试的第一目标从来都不是节省测试的人力成本。成功的自动化测试,作为软件测试的一种工具,从业务最终效果来看,应该是能够节省成本和提高产品质量的。但是把节省测试的人力成本作为自动化测试的直接目标是错误的,而且是致命的。
每个人对自动化测试理解都不一样,每个项目组做自动化的方式都不一样。我讲个故事,是我认识之前一个印度自动化项目的真实例子。这个项目95%以上的测试场景都是比较复杂的UI测试(Web +Windows Application)他们的自动化是这样做的:
手工测试人员把测试用例录入到用例管理系统,精确到每一步的描述和每一个数据
自动化测试人员用代码(java,python等)实现自动化用例,保存到SCM
准备好测试环境
打开Eclipse
定位到要执行的用例的源代码
Run As Junit (因为统一用JUnit做封装)
两眼直视显示器,目不转睛
如果有步骤执行不成功,比如某个按钮点击不成功,手动帮助点击,继续
一个用例执行完毕,重复步骤5到9
你觉得这个自动化做的怎么样?我当时的感觉是几乎要吐血了,因为这个项目是我要接手的。更加吐血的还在后面,这个部门的QA的VP对自动化测试的效果很不满意(绝对的),他的设想包括:
自动化应该是一种Service(Automation As A Service),所有的测试人员和开发人员都应该可以自己很方便的去跑自动化
自动化测试的运行结果应该是可以自动分析的,占用很少的时间
自动化测试的成功率应该是要很高的(比如95%以上)
自动化应该是写一次,运行很多次,为什么你们花那么多时间还要去改自动化代码?
这个就是一个典型的不懂自动化的团队+期望脱离现实的老板。
关于什么是自动化
James Bach 曾经在一篇博文提到,自动化测试这个名字是非常有误导性的。它让一般的人误以为就是测试完全被自动化了,就像一个自动的咖啡机一样,我只需要把杯子放在那里,按一个button就够了。James说更加准确的叫法应该是“工具辅助的测试”。当然他还有另一层意思,就是好的测试用例是没有办法100%被自动化的,测试人员的经验,逻辑判断和探索性的测试方法都不能被有效自动化。我非常同意这个观点。作为这个论断的补充和扩展,自动化应该是审视软件研发活动的每一个环节,去发现那些可以被工具化自动化的重复性活动,然后去实现。广义的自动化应该包括但不限于以下环节:
测试环境的搭建和管理
测试环境的检查,监控和报警
测试代码的编译和测试构建
测试代码的静态检查和报警
测试用例的分发和执行
测试结果的保存与管理
测试报告的生成
测试优先级的建议
自动化的成本与收益(ROI)
一个过于简化的公式可以这样写:
自动化的收益 = 迭代次数 * 全手动执行成本 - 首次自动化成本 - 维护次数 * 维护成本
或者如果假设迭代次数和维护次数近视相等,这个在某些情况下可以成立,比如一个比较新的产品:
自动化的收益 = 迭代次数 * (全手动执行成本 - 维护成本) - 首次自动化成本
解读:
自动化的收益与迭代次数成正比
自动化收益可能为负数:即当自动化成本和维护成本比手动执行成本还高时
很多时候自动化成本并不比手动成本高,但是维护成本很高
为什么强调过于简化,因为这里的自动化收益仅仅考虑时间和资源成本的节省。好的自动化带来的迭代周期的缩短,是可以缩短项目周期,在某些时候能变不能做为能做,进而带来的机会收益是巨大的,也是很难量化的。这个就要求决策者对软件工程和自动化有比较正确的直觉和理解。片面追求自动化的资源节省,或者要求精确量化自动化的收益,本人觉得都不可取。
推论1:什么项目适合自动化
从ROI的简化公式可以看出,下面几中情况比较适合自动化:
回归测试为主的Support Engineering项目,即需要长期做支持维护的产品。或者有过去版本需要长期做支持维护的产品。这种产品(比如企业软件,操作系统等)一个版本在发布之后往往需要支持好多年,做bug fix和patch。这个时候每次小版本的开发都会增加迭代次数,并且每次产品变动都非常有限,维护成本相对偏低,自动化收益就非常好。这也是很多企业级软件或者硬件产品有专门自动化团队的原因。因为产品的支持维护开发的回归测试基本靠自动化
接口比较稳定的产品,同上
手动测试特别费时费力,甚至无法达到测试目的的项目。比如压力测试,大数据或者大量重复数据测试,必须有自动化工具的支持
推论2:自动化的介入时间点
同样从ROI的简化公式推断出,一个项目的初期可能不太适合自动化。因为项目初期用户界面和接口没有稳定,自动化代码会被动的被要求频繁改变,维护成本非常高。自动化收益不好。而反而手动测试能够快速发现问题,反馈给开发人员。而到了项目后期和维护期,自动化再介入为回归测试做准备,可以最大化自动化收益。
推论3:自动化的程度和自动化率
这里自动化的程度是指整个软件研发活动中引入自动化的程度。推论2中说,有些项目早期可能不太适合高度自动化,但是项目早期仍然可以选定某些环节进行自动化。比如稳定的公用接口,软件的编译和部署,环境的搭建等从一开始就比较稳定的部分。
自动化率同样也要看产品和项目的特性,对于产品的UI部分如果会频繁改动,可以做比较低的自动化。对于接口比较稳定的服务组件可以提高自动化率。
你有什么样的团队,工具和基础设施
其实这个因素是做所有事情都必须考虑的。自动化测试本身就是软件开发。好的自动化测试框架,架构设计很重要。这些会决定自动化的开发成本和维护成本。这些都要求很强的开发能力。如果你的团队只有很有限的开发能力,那么怎么去做自动化,是做最原始的录制回放,还是数据驱动。复杂自动化也需要良好的基础设施支持。比如你有很好的DevOps的虚机管理系统,就不用自己去开发,省下的资源和人力也是很可观的。
工具是另外一块,如果公司有实力支持商业测试软件和管理软件,就可以降低编程要求(当然这会带来一些其他问题)。如果没有办法用商业工具,只能考虑开源和自己开发,这个对自动化测试开发的能力要求就高。总之必须选择和团队,技能储备,基础设施与工具匹配的自动化策略。
管理层的理解程度和支持
这个就不再展开。我见过很糟糕的情况,一个带好几百人兼顾产品技术的VP,越3到4级直接给测试团队提技术需求和建议。你说是做还是不做,怎么做?还有一个团队,自动化测试人员从来没有写过Java或者其他OO语言的程序,被要求从头设计自动化框架,那就是一场灾难。还有一个团队,管理层几次要求更换自动化工具,相当于整体重写自动化脚本。
总结
以上应该是一个很粗浅的回答。自动化测试是一个很专门化的领域,自动化测试又是对工程师的技术广度深度要求很高的工作。对于团队管理和决策者来讲,请不要简单化和孤立看待自动测试。最重要的是确保听取真正理解产品,团队和自动化测试的技术人员的判断
下面是配套学习资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
软件测试面试小程序
被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!
涵盖以下这些面试题板块:
1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux
6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础
文档获取方式:
这份文档,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
以上均可以分享,只需要你搜索vx公众号:程序员雨果,即可免费领取
相关文章:
工作几年还是悟不懂自动化测试的意义
【软件测试面试突击班】如何逼自己一周刷完软件测试八股文教程,刷完面试就稳了,你也可以当高薪软件测试工程师(自动化测试) 有人问:自动化测试的成本高效果差,那么自动化测试的意义在哪呢? 我…...
Redis面试问题三什么是缓存雪崩怎么解决
定义 缓存雪崩是因为大量的key设置了同一过期时间的导致在同一时间类缓存同时过期,而这时因为请求过来已经没有缓存了,DB压力大数据库崩溃了。 解决方法 我可以在设置过期时间的时候加一个随机时间,在1-5分钟那样可以分散过期时间…...
【Unittest】自动化测试框架核心要素
【软件测试面试突击班】如何逼自己一周刷完软件测试八股文教程,刷完面试就稳了,你也可以当高薪软件测试工程师(自动化测试) 1、什么是Unittest框架? python自带一种单元测试框架 2、为什么使用UnitTest框架࿱…...
Hyperloglog
一,前言 在互联网行业中存在两个比较重要的指标:PV(页面访问量)和 UV(用户访问量) 如果有这样的一个业务: 统计PV,那么你会怎么做? 我们可以使用Redis的incr、incrby指…...
如何自动获取短信验证码?
点击下方关注我,然后右上角点击...“设为星标”,就能第一时间收到更新推送啦~~~ 这篇文章通过解决实际项目开发中遇到的如何自动获取短信验证码的问题,进一步讲述在Java中如何使用正则。 Java中如何使用正则 Java中正则相关类位于java.util.r…...
Linux 本地 Docker Registry本地镜像仓库远程连接【内网穿透】
Linux 本地 Docker Registry本地镜像仓库远程连接 文章目录 Linux 本地 Docker Registry本地镜像仓库远程连接1. 部署Docker Registry2. 本地测试推送镜像3. Linux 安装cpolar4. 配置Docker Registry公网访问地址5. 公网远程推送Docker Registry6. 固定Docker Registry公网地址…...
基于Yolov8的工业小目标缺陷检测(4):SPD-Conv,低分辨率图像和小物体涨点明显
💡💡💡本文改进:SPD-Conv,处理低分辨率图像和小物体等更困难的任务时效果明显。 SPD-Conv | 亲测在工业小目标缺陷涨点明显,原始mAP@0.5 0.679提升至0.775 收录专栏: 💡💡💡深度学习工业缺陷检测 :http://t.csdn.cn/fVSgs ✨✨✨提供工业缺陷检测性能提升…...
平均精度(AP)
什么是平均精度(AP) 平均精度 (AP)并不是精度 (P)的平均值。 平均精度 (AP) 是按类别计算的。 mAP(mean average precision)是一个平均值,常用作目标检测中的检测精度指标mAP 指标通过对于一个平均目标来检测任务中多个目标所对应不同 AP&a…...
建议收藏《Verilog代码规范笔记_华为》(附下载)
华为verilog编程规范是坊间流传出来华为内部的资料,其贴合实际工作需要,是非常宝贵的资料,希望大家善存。至于其介绍,在此不再赘述,大家可看下图详细了解,感兴趣的可私信领取《Verilog代码规范笔记_华为》。…...
Nginx环境搭建、负载均衡测试
Nginx环境搭建、负载均衡测试 系统环境: win10,IDEA2020,JDK8 一、nginx环境搭建 1.ngxin下载 Nginx官网下载: http://nginx.org/en/download.html Nginx有三种版本,分别是Mainline version(开发版&…...
软件工程知识总结梳理
🔥🔥宏夏Coding网站,致力于为编程学习者、互联网求职者提供最需要的内容!网站内容包括求职秘籍,葵花宝典(学习笔记),资源推荐等内容。在线阅读:https://hongxiac.com&…...
Mybatis自动映射Java对象 与 MySQL8后的JSON数据
文章目录 Mybatis自动映射Java对象 与 MySQL8后的JSON数据1.转化成为正常Json类型1.1 JsonTypeHander1.2 ListJsonTypeHandler 负责List<T> 类型1.3 实体类1.4 mapper1.5 测试类 2. 存储为携带类型的Json Mybatis自动映射Java对象 与 MySQL8后的JSON数据 1.转化成为正常…...
【JavaScript】深拷贝和浅拷贝
在 JavaScript 中,深拷贝(Deep Copy)和浅拷贝(Shallow Copy)是两种不同的对象复制方法,它们涉及到如何复制对象的属性以及如何处理对象内部的嵌套引用。以下是它们的解释: 浅拷贝(S…...
【SLAM】10.纵观SLAM,对比方案和未来方向
"天下谁人配白衣” SLAM方案研究方向 SLAM方案 站在历史角度,看一下为SLAM的发展带来贡献的方案: 2007年—A.J.Davison—MonoSLAM 视觉SLAM的先驱,建立在EKF基础上,此前基本无法在线运行,意义较大;…...
PyTorch中DistributedDataParallel使用笔记
1. 基本概念 在使用DistributedDataParallel时有一些概率必须掌握 多机多卡含义world_size代表有几台机器,可以理解为几台服务器rank第几台机器,即第几个服务器local_rank某台机器中的第几块GPU 单机多卡含义world_size代表机器一共有几块GPUrank第几…...
前端面试的话术集锦第 18 篇博文——高频考点(HTTP协议 TLS协议)
这是记录前端面试的话术集锦第十八篇博文——高频考点(HTTP协议 & TLS协议),我会不断更新该博文。❗❗❗ 1. HTTP 请求中的内容 HTTP请求由三部分构成,分别为: 请求行 首部 实体 请求行大概长这样GET /images/logo.gif HTTP/1.,基本由请求方法、URL、协议版本组成,…...
SQL Server 数据库变成单个用户怎么办
参考技术A 1、首先我们打开SQL SERVER的管理控制台,找到一个要设置角色的用户。 2、下面我们将为这个用户赋予创建数据库的角色,我们先用这个用户登录管理工具看一下是否具有创建用户的权限。 3、进行数据库创建的时候,提示如下的错误&…...
错过成考报名,今年你还有这两种方式升学!
2023年广东成人高考已经报名结束啦 错过报名或没有抢到考位的同学不用伤心 你还有另外两个提升学历的机会 开放大学or小自考 今天一起来了解一下吧~ 什么是开放大学? 开放教育其实也就是开放大学,也就是我们所说的中央广播电视大学,现在…...
【2023】从事务的特征以及解决方式上分析MySQL是如何保证事务的
----以MySQL的InnoDB介绍 目录 前言事务,事务到底是什么? 一、事务的特征:二、事务特征具体保证1、Redo Log(重做日志) ---保证事务的持久性1.1、🟡刷盘时机1.2、redo log记录形式1.3、redo log日志的好处 2、undo log(回滚日志)…...
MTR 网络连通性测试工具 基础入门 整理
MTR MTR的全称是 my traceroute,是一个集合了 ping 与 traceroute 功能的网络诊断工具,广泛应用于链路测试。相对于 traceroute 只会做一次链路跟踪测试,mtr会对链路上的相关节点做持续探测并给出相应的统计信息。因此,mtr能避免…...
Linux安装mysql数据库并实现主从搭建
一.环境说明 【环境说明】: 192.168.110.161 mysql-master ##网络配置到位,防火墙关闭,selinux关闭 192.168.110.162 mysql-slave ##网络配置到位,防火墙关闭,selinux关闭 两台主机,操作系统是centos7…...
windows使用小技巧之windows照片查看器无法显示此图片
碰到过好几次了,以前没有理会,今天特意去查了一下解决方法,不然确实不太方便。 1、打开“颜色管理”-“高级”: 2、将“设备配置文件”选择为“Agfa:Swop Standard” 3、关闭,重新打开图片,好…...
ez_pz_hackover_2016
ez_pz_hackover_2016 Arch: i386-32-little RELRO: Full RELRO Stack: No canary found NX: NX disabled PIE: No PIE (0x8048000) RWX: Has RWX segments32位,保护全关 int chall() {size_t v0; // eaxint result; // eaxchar s[1024]…...
解决方案| anyRTC远程检修应用场景
背景 在这个科技飞速发展的时代,各行各业都要求高效运转。然而,当出现问题时,我们却常常因为无法及时解决而感到困扰,传统解决问题的方式是邀请技术人员现场解决问题,如果技术人员解决不了,还要邀请专家从…...
IC芯片测试:如何对芯片静态功耗进行测试?
静态功耗也叫静态电流,是指芯片在静止状态下的电流或者是指芯片在不受外界因素影响下自身所消耗的电流。静态功耗对于芯片来说是衡量一款芯片的功耗与效率非常重要的指标。 传统手动测试静态功耗只需在芯片的输入端串上一台万用表,然后对芯片各个端口添加…...
Redis面试二“缓存击穿是什么”
条件 缓存击穿是应为Redis某个缓存数据设置了过期时间,而刚好有大并发数据请求这个数据,导致DB有大量请求,引发DB崩溃。 第一种方法就是设置互称锁 当缓存失效时不立即删除缓存而是用setnx设置一个互斥锁,当操作完成后在load db…...
python使用apscheduler每隔一段时间自动化运行程序
apscheduler使用比较简单,每隔一段时间自动化运行的步骤是: 创建调度器scheduler BlockingScheduler()添加任务scheduler.add_job(函数名, interval, minutes30) # 每隔30分钟运行一次直接执行:scheduler.start()示例代码 from datetime i…...
2023 Sui Builder House全球之旅圆满收官
2023年的最后一场Builder House于上周在新加坡举行,包括主题演讲、小组讨论和研讨会等聚焦Sui的现在和未来的活动。其中,zkLogin是本次活动的最大亮点。作为一种新的Sui原语,zkLogin允许用户使用Web2身份验证创建帐户,有望推动大规…...
OpenCV自学笔记二十三:K近邻算法
K近邻算法(K-Nearest Neighbors,简称KNN)是一种常用的监督学习算法,可以用于分类和回归问题。在OpenCV中,KNN算法有相应的函数实现,主要包含在ml模块中。 KNN算法的原理很简单,它基于样本之间的…...
ChatGLM-中英对话大模型-6B试用说明
ChatGLM-中英对话大模型-6B试用说明 搭建环境下载模型测试模型结果 搭建环境 pip install modelscope1.4.3 -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html pip install protobuf3.20.0 transformers4.27.1 icetk cpm_kernels下载模型 from modelsco…...
网站建设步骤电脑/网站设计培训
中国电信、中国移动、中国联通于2020年4月8日,首次提出“5G消息”的概念。作为传统短信业务的升级,5G消息具有以下特点和优势。业务功能丰富。5G消息复用短彩信入口,兼容短彩信服务的同时,突破了传统短信对信息长度和内容格式的限…...
做淘宝网站目的是什么/seo服务公司上海
摘要: 中断: 当网卡接收到数据包后,会触发硬中断,通知CPU来收包。硬中断是一个CPU和网卡交互的过程。这其实会消耗CPU资源。特别是在使用速度极快的万兆网卡 之后,大量的网络交互使得CPU很大一部分资源消耗在网卡中断处…...
网站建设心得小结/百度手机网页
导 语烧TS16,似乎成了业内的全国性症结,整套自观系统里,数它脆弱。好一好,能用三四年;地网不达标的机场,刚换的新的,一个雷,别的不烧,TS16准烧。其中多因为它的供电模块故…...
wordpress 启动慢/推广普通话的内容简短
原博文 2020-07-03 16:42 − 利用django实现百度AI 语音识别、合成 RESTful API Python SDK 官方文档:https://ai.baidu.com/ai-doc/SPEECH/tk4o0bm3v 1. 我们要创建百度ai的语音技术应用 2. 查看应用的 appid apike... 相关推荐 2019-09-28 21:13 − Python python…...
颍东网站建设/北京seo软件
请用C语言实现 输出和为一个给定整数的所有组合启动2012/*请用C语言实现 输出和为一个给定整数的所有组合 */#include <stdio.h> //包含头文件stdio.h 为程序提供基本输入输出功能 #include <stdlib.h> //包含标准库头文件stdlib.h 以便调用函数system("pa…...
浙江建设网查询/网络优化工程师招聘信息
原文:WPF线性渐变画刷应用之——炫彩线条效果图: Xaml代码: <Rectangle Width"800" Height"10"> <Rectangle.Fill> <LinearGradientBrush StartPoint"0,0" EndPoint"1,1"> …...