为什么需要自动化测试?自动化有哪些优势?

news2024/11/23 18:41:17

前言

自动化测试,最近些年可谓是大火。招聘上的要求也好,培训班的广告也罢,比比皆是,足以说明它在业内的火爆程度。

虽然说会写自动化测试并不能说明你就很牛批,但是你不会的话,那么很抱歉,你的上升通道就会变得窄了。

一、为什么需要自动化测试

自动化的优势:

1.自动化可以代替手工大量地重复的工作,测试可以把大量的时间放在用例设计和新功能上边

2.自动化可以大量提升回归测试效率,特别适合敏捷开发

3.自动化可以大量地利用无人值守的时间去执行用例,特别适合非工作是爱你执行测试,工作时间分析测试用例失败的工作模式

4.自动化可以实现某种测试无法完成或者付出巨大的代价的测试类型,比如关键业务的测试7*24持续运行系统的稳定性和高并发场景的压力测试;

5.自动化可以保证每次执行的操作和验证的一致性和可重复性,避免认为的遗漏和疏忽;

 自动化的劣势和坑:

1.自动化不能代替手工,他只能代替手工测试中执行频率高,机械化重复的步骤,千万不要奢望所有的测试都要自动化,否则会得不偿失;

2.自动比起手工测试脆弱,无法对测试系统的变化做出识别,业界流传:开发者手一抖,自动化测试忙一宿,这也从侧面反应了,自动化测试一直居高不下的事实,原因自动化不具备智能识别,只能按部就班按的测试,没有任何的处理能力;

3.自动化测试的开发工作量远远大于单次的手工测试,所以只有开发完成的手工测试大于5次,才能收回自动化测试的成本;

4.手工测试发现的bug通常会比自动化发现的错误多,且自动化只能发现回归测试的缺陷;

5.测试效率很大程度上依赖自动化用例设计以及实现质量,不稳定的自动化比没有自动化更糟糕;

什么样的项目适合自动化: 

1.需求稳定不会频繁变更

2.研发和维护周期长,需要频繁地回归测试;

3.需要多个平台重复运行相同的测试场景;

4.某些测试项目无法通过手工测试实现,或者手工的成本高;

5.测试软件开发较为规范,能够保证系统的稳定可测试性;

6.测试具备编码能力

二、自动化的类型

大家通常会去选择做自动化的类型一般有2种:一种是UI自动化、一种是接口自动化

那UI自动化中,又可以有web系统的自动化、APP的自动化等等。

笔者本人曾经开发维护过一套web自动化的服务,说实话,投入回报率不高,所以后来也就逐步放弃了。

回想起来,这也算是领导没弄清目的就盲目开展的典型案例了,不过这段开发经历对我来说还是很宝贵的。

到后来重点就转移到了接口自动化了,为什么呢?

首先声明,这里讲的接口是指协议接口了,比如http协议的接口,并不是程序接口,比如java里的interface。

那么接口层相比于UI层,最大的优点是更接近底层逻辑,可以让测试更早的介入。于是更早的发现bug,修复的成本也就越低了。

另外,接口测试也可以更容易发现UI测试中不容易发现的问题。

比如说,一个接口没有对非法传参进行处理,虽然UI在输入框进行了一些不合规的类型输入校验,但是只要抓个包修改下参数请求过来,就会立即暴露出问题。

三、搭建一个接口自动化框架需要的技能

编程语言:既然做了这行,编程是跑不掉的。java、python 哪个熟悉用哪个吧,我个人偏向于脚本用python。

单元测试框架:不同语言有不同的测试框架,python有unittest、pytest等,java有testng、junit等。我个人偏向python的pytest。

搜索解决问题:其实有了前面2个点是基石,剩下的就是你遇到什么问题或者需求,知道如何去搜索解决实现的能力了。比如能找到合适的

第三方库,来增加自己的框架,拿pytest来说,可以用requests库来发送请求,用jmespath库来提取复杂的接口响应,以及用allure框架来

输出一个漂亮的报告等。

搞清楚了这些,基本上就可以开始做起来了。

一开始不用过度的考虑自己的框架的终极形态是什么样子的,因为我觉得没有最好的框架,只有最适合的框架。在你实现的过程中,会遇到不同的问题,

然后你不断迭代优化你的框架去解决这些问题,于是乎框架会一点点的变成大家心中的样子

四、自动化测试优劣的隐性指标

1 、自动化的维护成本

针对同一个业务,不同的自动化测试实现方案,对应的维护成本可能天壤之别。诚然,自动化的维护成本,受业务成熟度、迭代速度、项目规范程度影响,但不妨考虑以下情况下,你的维护成本如何:

新增了一些逻辑(如,接口/服务/应用),对新增部分维护自动化,你需要多长时间;

删除了一些逻辑(如,接口/服务/应用),对删除部分维护自动化,你需要多长时间;

修改了一些逻辑(如,接口/服务/应用),对修改部分维护自动化,你需要多长时间;

在项目迭代速度加快时,并伴有增删改逻辑时,你的自动化脚本还能跟得上吗?其实,这是不少团队都会面临的严峻考验。 一个正处于快速发展的业务,每次业务测试、回归时,可能都会想放弃自动化测试,转而来手工执行测试。因为,自动化测试还要不断调试自动化代码,大概率来不及这次的测试,还不如直接手动测试的效率高

2、自动化运行成本

这里的自动化运行成本是说,从想执行自动化到执行结束需要符合的能力&时间成本。一般的自动化运行过程大致如下:

1)创造一些自动化执行条件。比如,找运行数据,设置运行环境等等,这一步如果没有被自动化掉,需要花费人力&时间;

例如,实现的自动化只能"一条腿走路",即只实现了半自动化,并没有实现100%的自动化,运行前/中/后可能需要人为参与。

2)执行自动化。这里主要是自动化运行所需时间,时间越长,导致的等待时间越长。可能你会说,自动化执行的时候,你可以去干别的事情啊,没必要一直等待执行结束。但既然执行了自动化,肯定想像手工测试一样,"马上"看到执行结果,得到及时反馈,才能避免在不同工作间来回切换。

3)验证自动化结果。一般结果的验证都包含在上一个步骤里面了,但不排除有些验证仍然需要人工来check的情况。这种情况,其实也属于半自动化的一种实现形式。

4)自动化失败问题排查。各种各样的原因,都会导致自动化运行失败了,比如,数据问题、环境问题、自动化维护不及时、第三方问题等等。自动化失败后,能否比较清晰地给出失败原因,甚至能根据自动化失败结果,直接定位到失败原因,这些做到位了,会让你对自动化爱不释手。

总结

自动化的前景完全不必担忧,且不说人类社会发展的大方向就是自动化,难道我们如今不是把很多很多的工作都交给了各种工具么?

市场有没有前景是一回事,自己能否把握住,是另一回事。测试自动化是一定是未来的方向。

在以往的过程中,我无数次的问自己这些问题,思考了很多以前回避的、懒得去想的问题,也对自己、对未来有了更清楚的认识。这何尝不是一种成长呢?

 

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

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

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

相关文章

如何复制本地docker镜像到其他主机

(1)打包镜像 比如我要复制的镜像是grafana的镜像 docker images 这里我把打包的镜像放在了根~目录下,如截图所示: docker save grafana/grafana:latest -o ~/grafana.jar (2)移动镜像 scp命令拷贝镜像到目标…

C语言 循环控制流程的跳转语句

本文 我们来说 控制流程的跳转语句 C语言 提供三种 控制流程的跳转语句 1. break 语句 我们之前讲 switch 时 大家已经看到过这个 break 了 作用是跳出当前 switch 在循环中 它的作用也差不多 这里 我们举个生活中的例子 例如 我们在操场上跑步 计划跑十圈 但是 还没跑完 我…

【数据结构初阶】希尔排序

鼠鼠最近学习了希尔排序,做个笔记! 希尔排序也是插入排序的一种捏!本篇博客也是用排升序来举例捏! 希尔排序是基于直接插入排序的,是由大佬D.L.Shell提出的。 目录 1.希尔排序 1.1.预排序 1.2.直接插入排序 2.希…

jetson实操(二):jetson nano发送短信到指定用户

文章目录 一、准备工作二、代码实现 一、准备工作 腾讯云网址:点击 注:需先申请“短信签名”和“短信正文”,按照要求填写申请即可,腾讯云的审核效率还是很快的,一般在1-2个小时内就会有结果,链接&…

Linux环境创建普通用户,授权root权限。报错:usermod: group ‘sudo‘ does not exist

在Linux环境下,创建普通用户并授权root权限需要以下步骤: 1. 以root用户登录终端。 2. 执行以下命令创建一个新的用户,其中username为你想要创建的用户名,可根据实际情况自行更改。 adduser username 3. 设置该用户的密码&…

数据库原理与应用实验三 嵌套查询

实验目的和要求 加深和掌握对嵌套查询的理解和应用 实验环境 Windows10 SQLServer 实验内容与过程 图书(书号,书名,价格,出版社) 读者(卡号,姓名,年龄,所属单位&a…

luci框架相关笔记

luci架构 LuCI 架构采用了MVC(Model-View-Controller)设计模式,各个目录的作用如下: model(模型): 位于 /usr/lib/lua/luci/model 下,存放了与系统配置相关的模型脚本。这些脚本负责与底层系统…

有免费的通配符SSL证书吗?通配符证书的申请

首先要了解通配符SSL证书,需要先知晓我们常用的普通单域名SSL证书、多域名SSL证书与之的区别。 单域名SSL证书最容易理解,一张证书有且只能绑定与保护一个域名,例如www.123456.com 证书安装部署完成后则会激活对于该域名的https、即加密访问…

【Leetcode 42】 接雨水

基础思路: (1)需要将问题最小化,首先计算第i个位置最多容纳多少雨水(细长的一条水柱),然后求和就是总的雨水量; (2)第i个位置容纳雨水量 min(左侧最高, 右…

【数据结构】单链表和双链表的基操实现

文章目录 一、链表的概念及结构二、链表的分类三、无头单向非循环链表1.单链表创建2.尾插和头插3.尾删和头删4.打印5.查找6.插入7.删除8.销毁 四、带头双向循环链表1.双链表的创建2.初始化3.判断链表是否为空4.尾插和头插5.尾删和头删6.查找7.插入8.删除9.销毁 五、总结链表和顺…

vulnhub靶场之FunBox-2

一.环境搭建 1.靶场描述 Boot2Root ! This can be a real life scenario if rockies becomes admins. Easy going in round about 15 mins. Bit more, if you are find and stuck in the rabbit-hole first. This VM is created/tested with Virtualbox. Maybe it works with…

【C++】vector的迭代器失效问题(什么是迭代器失效?那些操作会导致迭代器失效?如何避免迭代器失效?)

目录 一、前言 二、什么是迭代器失效? 三、哪些操作会导致迭代器失效? 四、如何避免迭代器失效? 🥝 insert迭代器失效 ✨迭代器失效 ------ 扩容导致的野指针 ✨迭代器失效 ------ 迭代器指向的位置意义发生改变 &#x1f347…

揭秘无尘布:科技与清洁的完美结合

在现代科技的浪潮下,人们对于清洁工作的要求越来越高,尤其是对于精密仪器、光学设备、电子产品等高科技产品的清洁需求更为迫切。在这样的背景下,无尘布作为一种特殊的清洁工具,备受关注并得到广泛应用。本文将深入揭秘无尘布的科…

怎么口语外教一对一课程?这篇文章告诉你答案!

怎么口语外教一对一课程?在当今全球化的时代,英语口语能力已经成为许多人追求的重要技能。为了满足这一需求,市场上涌现出了许多提供一对一口语外教课程的软件。这些软件不仅提供了与母语为英语的外教进行实时交流的机会,还通过互…

德国韦纳WENAROLL滚压刀,液压缸,滚光刀,挤压刀,滚轧刀

德国韦纳WENAROLL滚压刀,液压缸,滚光刀,挤压刀,滚轧刀(百度一下,西安尚融) 德国韦纳(WENAROLL)的滚压刀、液压缸、滚光刀、挤压刀和滚轧刀在工业领域享有很高的声誉,这些产品因其高…

【深度学习实战(27)】「分布式训练」DDP单机多卡并行指南

一、DDP实现流程 (1)初始化进程 (2)model并行 (3)BN并行 (4)data并行 (5)进程同步 二、DDP代码实现 (1)初始化进程 #------------…

vivado Virtex 和 Kintex UltraScale+ 比特流设置

下表所示 Virtex 和 Kintex UltraScale 器件的器件配置设置可搭配 set_property <Setting> <Value> [current_design] Vivado 工具 Tcl 命令一起使用。

Vue 基础语法

【1】模板语法 &#xff08;1&#xff09;差值表达式 {{}}是 Vue.js 中的文本插值表达式。 它用于在模板中输出数据或表达式的值。当数据或表达式的值发生变化时&#xff0c;插值表达式会自动更新。 补充&#xff1a;三目运算符 它的基本语法是 Condition ? A : B&#xff0…

python绘图(pandas)

matplotlib绘图 import pandas as pd abs_path rF:\Python\learn\python附件\pythonCsv\data.csv df pd.read_csv(abs_path, encodinggbk) # apply根据多列生成新的一个列的操作&#xff0c;用apply df[new_score] df.apply(lambda x : x.数学 x.语文, axis1)# 最后几行 …

3W 3KVDC 隔离单输出 DC/DC 电源模块——TPG-3W 系列

TPG-3W系列是一款额定功率为3W的隔离产品&#xff0c;国际标准引脚&#xff0c;宽范围工作、温度–40℃ 到 105℃&#xff0c;在此温度范围内都可以稳定输出3W&#xff0c;并且效率非常高&#xff0c;高达88%&#xff0c;同时负载调整率非常低&#xff0c;对于有输出电压精度有…