自动化测试的重要性:为何追求自动化?

news2025/1/24 11:39:59

为什么需要自动化测试?

  1. 代替手工重复操作,测试工程师可以花更多时间在设计全面的测试用例和新功能测试上 【代替手工重复】 
  2. 提升回归测试的效率,适合敏捷开发过程 【提升回归效率】 
  3. 更好的利用非工作时间执行测试,工作时间分析失败用例 【利用非工作时间测试】 
  4. 高效实现某些手工测试无法完成或代价巨大的测试类型,比如:关键业务7*24小时持续运行的系统稳定性测试和高并发场景的压力测试 【代替复杂手工测试和长时间测试】 
  5. 还可以保证每次测试执行的步骤以及验证的一致性和可重复性,避免人为的遗漏或疏忽 【保证操作一致性,结果可溯源】 

自动化测试的一些劣势

  1.  不能完全取代手工测试,只能替代手工测试中执行频率高、机械化的重复步骤 【不能替代手工测试】 
  2. 无法应对被测系统的变化,自动化测试用例的维护成本高;因为自动化测试只是执行事先定义好的测试步骤并验证测试结果,对于执行过程中出现的明显错误和意外事件,自动化测试没有任何处理能力 【维护成本高,无法应对系统变化和紧急事件】 
  3. 自动化测试用例的开发工作量远大于单词的手工测试,所以只有当开发完成的测试用例的有效执行次数≥5时,才能收回成本 【用例开发量大,投入产出比难以提高】 
  4. 手工测试发现的缺陷数量更多,自动化测试仅仅能发现回归测试范围的缺陷 【只能发现回归缺陷】 
  5. 自动化测试的效率很大程度依赖自动化测试用例的设计以及实现质量,不稳定的自动化测试用例比没有自动化更糟糕 【自动化测试用例强依赖开发质量】 
  6. 实行自动化测试的初期,用例开发效率都很低,在体系成熟以及测试工程师熟练后一般都要重构初期用例 【后期需要重构不成熟的初期用例】 
  7. 懂业务的人+懂自动化技术的人结合一起才能高效开展自动化测试 【不仅懂技术还得懂业务】 
  8. 自动化测试开发人员必须具备编程能力 【必备编程】 

什么样的项目适合自动化测试?

第一:需求稳定,不会频繁变更

过高的需求变更频率会导致自动化测试用例的维护成本直线上升

第二:研发和维护周期长,需要频繁执行回归测试

软件产品比软件项目更适合做自动化测试

  • 首先,软件产品的生命周期比较长,会有持续性迭代,每次版本发布都会有回归测试需求
  • 其次,自动化测试用例的执行比高于1:5,自动化测试的优势才可以被更好地体现

对软件项目的自动化测试,需要分情况

  • 短期项目:不建议实施自动化,就算技术可行性很高,但 投入产出比(ROI) 不高;应该选择 手工探索式测试 ,以发现缺陷为第一要务
  • 中长期项目:对比较稳定的功能进行自动化测试,对改动较大or需求不明确的功能进行手工测试,最终目标是用20%的精力去覆盖80%的回归测试

第三:需要在多平台上重复运行相同测试的场景

第四:某些测试项目通过手工测试无法实现,或者手工成本太高

对于所有的性能和压力测试,很难通过手工方式实现,如:

  • 一万并发用户的基准性能测试
  • 7*24小时的稳定性测试

这个时候必须借助机器来模拟大量用户反复操作被测软件的场景

第五:被测软件的开发较为规范,能够保证系统的可靠性

要实现稳定的自动化测试,被测软件的开发过程必须规范,比如:GUI上的控件命名如果没有任何规则可寻,就会造成GUI自动化的控件识别与定位不稳定,影响效率

另外,某些用例的自动化必须要求开发人员在产品中预留可测试性接口,否则后续的自动化会很难开展。

比如,用户登录操作可能需要图片验证码,需要开发提供绕开图片验证码的路径,否则需要自己借助 光学字符识别(OCR)技术 来对图片验证码识别,但它的识别率会很低,直接影响用例的稳定性

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

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

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

相关文章

油猴浏览器(安卓)

油猴浏览器页面设计非常简约,在主页上还为小伙伴们推荐了很多的常用书签,像油猴脚本,常用导航,新闻,热搜类的,快递查询等等,可以设置快捷访问,把常用到的一些网站设置在主页上。 浏览…

代码随想录Day_60打卡

①、柱状图中最大的矩形 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 事例: 输入:heights [2,1,5,6,2,3] 输出:1…

Chrome 117 发布:新 Web 开发调试技巧都在这了!

简介:Chrome 更新了最新版本 Chrome 117,更新了很多实用的DevTools 新特性。 首先介绍大家最熟悉的Network面板,看看给我们带来了什么好玩的~ Network 面板改进 更快地在本地覆盖网页内容 现在,本地覆盖功能更加简化&#xff0…

【数据结构】二叉树基础入门

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …

Alibaba(商品详情)API接口

为了进行电商平台 的API开发,首先我们需要做下面几件事情。 1)开发者注册一个账号 2)然后为每个alibaba应用注册一个应用程序键(App Key) 。 3)下载alibaba API的SDK并掌握基本的API基础知识和调用 4)利…

解锁“高级特权” 偷偷用。千万别声张

现在的手机修图软件,功能是越来越强大了。之前需要用到电脑端PS的功能,现在手机上的修图软件就能实现,还是一键处理的傻瓜操作。 你离P图大神只差一个APP——「大神批图」,已解锁限制,安装即是VIP。 功能非常丰富&…

多元共进|创新技术提供助力,共创增长机遇

谷歌致力于推动业务和应用长效增长 助力开发者优化用户体验 一起来了解 2023 Google 开发者大会上 谷歌如何将创新技术 融入商业合作和智能家居生态 用技术赋能业务增长 以科技点亮智慧生活 谷歌坚持以 AI 为技术核心,不断投入研究,并将其应用至各类场景…

【C++刷题】经典简单题第二辑

回文排列 class Solution { public:bool canPermutePalindrome(string s) {// 记录字符出现的次数int count[256] {0};for(size_t i 0; i < s.size(); i)count[s[i]];// 记录字符出现次数为奇数的个数int flag 0;for(size_t i 0; i < 256; i)if(count[i] % 2 1)f…

JavaScript作用域链与预解析

查找上一级 JavaScript的预解析 js解析器在运行js代码时会先进行预解析,再进行代码的执行 预解析时js引擎会把js里面所有的var还有function提升到当前作用域的最前面 代码执行,按照代码书写的顺序从上往下执行 预解析分为变量预解析(变量提升)与函数预解析(函数提升) 1.变量…

优秀的 Modbus 主站(主机、客户端)仿真器、串口调试工具

文章目录 优秀的 Modbus 主站&#xff08;主机、客户端&#xff09;仿真器、串口调试工具主要功能软件截图 优秀的 Modbus 主站&#xff08;主机、客户端&#xff09;仿真器、串口调试工具 modbus master,modbus,串口,工控,物联网,PLC,嵌入式 官网下载地址&#xff1a;http:/…

七)Stable Diffussion使用教程:附加功能

图生图右侧有个附加功能选项,里面其实也存在一个图片放大(缩放)功能,而且因为它不涉及重绘的过程,所以不需要任何提示词,适用于任何图片(包括非 SD 生成的图片)。 原理:在拉伸放大的基础上适当对色块和线条的边缘做了模糊处理,和其他工具的放大原理类似。 观察界面…

【LeetCode-中等题】367. 有效的完全平方数

文章目录 题目方法一&#xff1a;二分查找 题目 方法一&#xff1a;二分查找 找 1 - num 之间的 mid&#xff0c; 开方是整数 就找得到 mid&#xff0c; 不是整数自然找不到mid class Solution { // 二分查找 &#xff1b;找 1 - num 之间的mid 开方是整数 就找得到 不是…

python超详细安装

目录 初始python获取python安装包python解释器安装pycharm编译器安装pycharm的简单使用&#xff08;第一个hello world&#xff09; 初始python Python 是一款易于学习且功能强大的编程语言。 它具有高效率的数据结构&#xff0c;能够简单又有效地实现面向对象编程。 Python简…

平衡二叉搜索树(AVL)——【C++实现插入、删除等操作】

本章完整代码gitee地址&#xff1a;平衡二叉搜索树 文章目录 &#x1f333;0. 前言&#x1f332;1. AVL树概念&#x1f334;2. 实现AVL树&#x1f33f;2.1 结构定义&#x1f33f;2.2 插入&#x1f490;左单旋&#x1f490;右单旋&#x1f490;左右双旋&#x1f490;右左双旋 &a…

c++day1

练习&#xff1a;使用cout完成输出斐波那契前20项的内容 1 1 2 3 5 8 13.。。。 #include <iostream> using namespace std;int main() {int a[20]{1,1};for(int i2;i<20;i){a[i]a[i-1]a[i-2];}for(int i0;i<20;i){cout<<a[i]<<" ";}retur…

javascript【格式化时间日期】

javascript【格式化时间日期】 操作&#xff1a; (1) 日期格式化代码 /*** 日期格式化函数<br/>* 调用格式&#xff1a;需要使用日期对象调用* <p> new Date().Format("yyyy/MM/dd HH:mm:ss"); </p>* param fmt 日期格式* returns {*} 返回格式化…

易优cms响应式月嫂家政服务公司网站模板源码—自适应手机端设计,支持后台管理

易优cms响应式月嫂家政服务公司网站模板源码 自适应手机端 带后台 模板基于EyouCMS内核制作,模板编码为UTF8 ,适合行业:家政服务类企业。 模板信息&#xff1a; 模板分类&#xff1a;摄像、婚庆、家政、保洁 适合行业&#xff1a;家政服务类企业 模板介绍&#xff1a; 本模…

龙蜥Anolis 8.8 安装MySQL

一、安装参考文档 官方文档&#xff1a;https://dev.mysql.com/doc/refman/8.0/en/linux-installation-yum-repo.html#yum-repo-installing-mysql出问题时的文档&#xff1a;https://blog.csdn.net/weixin_44798320/article/details/123446249 二、安装过程 2.1 下载官方的镜…

RocketMQ入门之学习环境搭建

文章目录 0.前言1.使用docker 方式搭建RocketMQ学习环境启动NameServer和 启动Broker常见报错 2.使用源码安装方式3. 常见问题3. 参考文档 0.前言 在学习RocketMQ 需要先自行搭建一个RocketMQ 服务端。本节我们先来搭建一个简单的学习环境。下个章节&#xff0c;我们写个简单的…

一起学数据结构(5)——栈和队列

1. 栈的相关定义及特点&#xff1a; 1. 栈的相关定义&#xff1a; 在正式介绍栈的定义之前&#xff0c;首先来回顾一下关于线性表的定义&#xff1a; 线性表是具有相同数据类型的个数据元素的有限序列&#xff0c;其中为表长。当时&#xff0c;可以把线性表看作一个空表&…