关于对自动化测试的理解:目的与本质!(新手必看)

news2025/1/19 8:01:41

其实自动化测试很好理解,由两部分组成,“自动化”和“测试”,所以我们要理解自动化测试,就必须理解“自动化”和“测试”,只有理解了这些概念,才能更轻松的做好的自动化测试。其中“自动化”可以想象成通过各种编程技术实现程序对被测系统可操控的行为,重点在于对“测试”的理解。

如果你想学习自动化测试,我这边给你推荐一套视频,这个视频可以说是B站百万播放全网第一的自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取

B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibiliB站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1、接口自动化之为什么要做接口自动化、2、接口自动化之request全局观、3、接口自动化之接口实战等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337.search-card.all.click

一、关于测试的理解

所以首先作为一个测试人员,先应该思考测试的本质是什么?

大多数从事自动化测试的人都是从手工测试转型过来的,所以对于测试都不会太陌生,那么对于测试工作我们可以简单的认为两种情况:

1,验证被测系统是正确的(即程序按照预期运行,认为做了正确的事情)

2,寻找错误(即程序没有做错误的事情)

我们知道大概所有的测试用例都是按照情况1在编写测试用例,执行,而同样在做着情况2的事情,其中验证正确比较简单,只需要将实际结果和预期结果做比较,

一般只有一件正确的事会发生就只需要验证这件事发生了即可,而寻找错误就比较困难,因为太多不可预知或者偶然性的错误会发生。

所以测试最终的结果就是期望结果,我们可以尝试回顾一下我们平时的日常工作流程

1.分到任务拿到需求,开始理解需求,那么分析需求的目的是什么?

2.学习并了解相关业务知识与工作流程,那么搞清业务流程的目的是什么?

3.当上面的工作完成后,开始设计并编写测试用例,那么设计测试用例的目的是什么?

4.开发完成后开始执行测试用例,那么判断测试用例fail/pass的标准是什么?

所以最后的我们测试目的就是:找出期望结果与实际结果不符的场景

如果理解了这个概念,那么单纯从技术角度上来说,我们的测试要做的最重要的工作就是搞清楚一个软件的功能块的期望结果是什么,

不管用什么方法(UI/API/UT自动化 等等),只要能把期望结果理解清楚,我们的测试便成功了一大半。

二、关于自动化测试的理解

对于自动化测试理解简单来说就是由测试方法+测试目的(验证结果)组成,并不局限你使用了什么技术或者框架,但是自动化测试要做的事情与功能测试是一致。

 

先来看看功能测试如何进行的:

编写测试用例,测试用例当中最主要的是测试步骤和预期结果;测试人员根据测试用例执行操作步骤,然后通过眼睛和思考判断实际结果与预期结果是否相等。如果相等,测试通过;如果不相等,测试失败。

自动化测试本质就是基于功能测试的实现,自动化测试常见主要包含三个层面的自动化,单元测试自动化,接口测试自动化和UI测试自动化。当然,不同层面的自动化关注点是不一样的。

1、单元测试自动化,调用被测试的类或方法,根据类或方法的参数,传入相应的数据。然后,得到一个返回结果。最终断言返回的结果是否等于预期结果。如果相等,测试通过;如果不相等,测试失败。所以,这里单元测试关注的是代码的实现与逻辑。当然根据不同的测试系统或者软件架构单元测试方法以及技术都不一样,比如我曾经经历过前端js/后台springmvc/oracle数据库层不同层面的单元测试工作

2、接口测试自动化,根据接口文档,到底是传get请求呢?还是post呢?调用被测试的接口,构造相应的数据(id=1,name=zhangsan),得到返回值,200成功,并返回查询结果。还是500,用户名不能为空。不管输入的参数是怎样的,我们都将得到一个结果。最终断言返回的结果是否等于预期结果。如果相等,测试通过;如果不相等,测试失败。所以,接口测试关注的是数据。只要数据正确了,功能就做成大半,剩下的无非是如何把这些数据展示在页面上。

3、UI测试的自动化,这种测试更贴近用户的行为,模拟用户点击了某个按钮,向个输入框里输入了什么。但是用户可以看到登录成功了,但UI自动化并不知道它刚才的点击有没有生效。所以,要找“证据”,比如,登录成功后页面右上角会显示“欢迎,xxx”。这就是登录成功的有力“证据”。于是,当web自动化登录成功后,就去获取这个数据进行断言。断言如果相等,测试通过;如果不相等,测试失败。所以,web自动化的关注点用户操作形为,页面上真正的按钮和输入框是否可用。

四、如何实现自动化测试

刚才提到自动化测试本质就是基于功能测试的实现,都是比较实际结果和预期结果是否相符。

其实大概可以分为三个部分:

1、实际结果:就是我们通过操作获取的实际执行结果,通常所讲的自动化测试的难度,大部分指就是指通过自动化获取实际结果的难度。因为UI层更贴近用户层,所以不管是视觉还是业务处理都相对于其他层更负责,所以往往实施起来难度验证结果很负责,成本更高

2、预期结果:是我们在需求上人为定义的,很多测试员在测试时遇到需求不明确,没有标准,其实就是不知道预期结果是什么。将预期结果转化为机器可识别的数据也是一个难点。

3、结果比较:验证测试结果是正确还是错误,良好的自动化测试除了需要自动化的执行,还需要包括自动化的验证,有时候自动化的验证比自动化操作更困难。

要实现自动化测试,就要将这三样东西通过程序来实现,并且高效地结合起来。何谓高效地结合起来?就是预期结果和实际结果可以大量快速获取进行比较,并且尽量少地出现人为干涉。

控制一个程序能够读取到全部预期结果,并且执行操作获取全部实际结果,然后可以自动比较两者生成报告,这样就比我们人手控制一个程序单个多次地读取预期结果,再人手控制另一个程序单个多次地获取实际结果,再人手控制第三个程序去单个多次地比较前两者的结果要高效。当然,如果这些程序是统一控制,相互自动触发的话,那效果也等同于一个程序,在实际中这种情况是很常见的。

实际过程中又可以分为UI界面交互和非UI界面交互的情况。

非UI界面交互,以接口测试为例:

1.批量的发送请求并获取返回值,

2.批量得到预期结果并转为机器可识别的数据,可以用xml或者excel一类的文档来准备数据,使用工具的话可以将多个case保存为一个集合。

3.批量比较返回值和预期结果数据,将前两步的数据都获取到之后再用字符或者正则表达式来比较两者,用工具的话需要选择那些可以断言返回值的。

4.将比较结果生成测试报告。

UI界面交互,以Web UI测试为例:

 

1.需要实现web操作,无论你是自己写程序实现,还是用现有的工具,都是将动作、对象、数值组织起来完成一个web操作。比如登入网站,分3个步骤:

(1)输入用户名

(2)输入密码

(3)点击登入按钮,

2. web操作之后,我们就可以获取到相关的实际结果,例如登入成功的提示,或者登入后的网页内容,我们就需要通过程序去获取回来,准备之后的比较。

3.通过实际结果与预期结果判断,使用断言来判别执行失败或者通过。

五、总结

如果想用自动化测试去发现错误,首先就必须由人去预想可能出现错误的各种情况,然后用自动化去检查。这样其实就不是用自动化去发现错误了,而是由人去寻找错误(或者错误的可能性),然后用自动化去验证。

偏偏试图通过自动化去发现错误是很多人开展自动化的最初目的,于是就导致了自动化的高代价,投入了人工(预测错误,设计用例,编写脚本),但自动化的成果只能局限在人工能够预测到的范围之内。

所以我们可以看到很多案例,在使用了自动化测试之后,用手工测试依然可以发现大量的bug。所以,能否发现bug,最核心的东西是用例,而不是工具或方法,只有用例能够发现bug,工具只是实现的手段而已。因此,想要测试得更好,应该加强的是设计用例的能力。

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

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

相关文章

晶飞FLA5000光谱仪.FlaSpec格式解析批处理导出CSV文件

引言 首先说明下晶飞上位机软件存在的问题,实验所采用的FLA5000型号光谱仪,光谱波段从280-970nm,FWHM值为2.4nm。 1、上位机软件中的光谱数据复制功能基本是废的,最多只能到599.9nm,后面的数据全部消失。 2、上位机软…

2023系统分析师---软件工程、系统规划高频错题

系统规划---成本效益分析 评价信息系统经济效益常用的方法主要有成本效益分析法,投入产出分析法和价值工程方法。盈亏平衡法常用于销售定价; 可行性分析 系统规划是信息系统生命周期的第一个阶段,其任务是对企业的环境、目标以及现有系统的状况进行初步调查,根据企业目标…

示波器的数据处理怎么记录?

示波器的使用 - 记录和保存示波器测试结果 安泰测试为您分享如何记录示波器的数据。 "从您把示波器探头连接到器件的那一刻起,信号就开启了一次瞬间即可完成的重大旅程。它必须 跨过五个不同的“模块”,才能完成从器件到示波器,最后返回…

Vue电商项目--开发floor模块

获取floor组件mock数据 开发floor组件 在开发之前,说一下之前存在的一些小毛病 那就是在开发vue中还需要通过dom这种方式来操作元素吗? 我们用ref来做这个 我们先写api 然后去找仓库 getFloorList这个action在哪里触发,是需要在Home路由组件…

计算机组成原理硬件实验 - 计算机组成实验FAQ作业

一、 Quartus II 9.0 (32-Bit) 使用问题: Q1【示例】: 显示【未授权】或者【编译成功不能生成SOF文件】 A1: 在quartus中点击【TOOLS】→【license setup】,在license.DAT中修改“HOSTID”后的字段,设置为“你的电脑最新显卡ID” Q2【示例】…

怎么学习网络安全?这篇文带你从入门级开始学习网络安全

随着网络安全被列为国家安全战略的一部分,这个曾经细分的领域发展提速了不少,除了一些传统安全厂商以外,一些互联网大厂也都纷纷加码了在这一块的投入,随之而来的吸引了越来越多的新鲜血液不断涌入。 不同于Java、C/C等后端开发岗…

网络安全学什么

由于我之前写了不少网络安全技术相关的故事文章,不少读者朋友知道我是从事网络安全相关的工作,于是经常有人在微信里问我: 我刚入门网络安全,该怎么学?要学哪些东西?有哪些方向?怎么选&#xff…

卷麻了,可别再为难软件测试人了

前言 有不少技术友在测试群里讨论,近期的面试越来越难了,要背的八股文越来越多了,考察得越来越细,越来越底层,明摆着就是想让我们徒手造航母嘛!实在是太为难我们这些测试工程师了。 这不,为了帮大家节约时…

最“拼爹妈”的美国大学TOP10,什么是Legacy 录取?

Legacy的直译是遗产的意思,父母和大学的关系,就像家庭的遗产一样,可以传递给孩子一代(有时候,亲哥哥,亲姐姐也会被算作是 legacy)。有的大学祖父母如果是校友,也会算作 legacy。再远…

Docker部署配置Gitlab

Docker部署配置Gitlab 1 参考文档2 Gitlab相关介绍2.1 Gitlab2.2 Git和SVN的区别2.3 Git、Gitlab、GitHub的简单区别 3 搭建Gitlab仓库3.1 拉取镜像3.2 启动容器 4 修改配置文件并配置邮箱4.1 开放linux端口4.2 设置IP、端口4.3 配置邮箱4.4 让配置生效 5 管理员登录Gitlab6 创…

【输变电线路 JL-8C/12反时限电流继电器 报警信号、切除故障 JOSEF约瑟】

系列型号 JL-8C/11反时限电流继电器; JL-8C/12反时限电流继电器; JL-8C/12X反时限电流继电器; JL-8C/21-1反时限电流继电器; JL-8C/21-2反时限电流继电器; JL-8C/21-3反时限电流继电器; JL-8C/21-4反…

在线域名批量查询工具-在什么网站可以挖到老域名

怎么能挖掘到好域名 挖掘到好域名对于网站的建设和SEO排名是非常重要的,因为好的域名可以提高网站的置信度,增加自然引荐的数量,并且可以在搜索引擎排名中获得优势。下面介绍一些优秀的老域名挖掘方法,以及一种常用、免费的老域名…

verflow属性的常用值详解

什么是overflow 在CSS中,overflow是“溢出”的意思,该属性规定当内容溢出元素框时发生的事情,设置内容是否会被修剪,溢出部分是否会被隐藏;例如当属性值设置为“visible”则内容不会被修剪,为“hidden”则内…

PVT(Pyramid Vision Transformer)学习记录

引言与启发 自从ViT之后,关于vision transformer的研究呈井喷式爆发,从思路上分主要沿着两大个方向,一是提升ViT在图像分类的效果;二就是将ViT应用在其它图像任务中,比如分割和检测任务上,这里介绍的PVT&a…

【云原生】k8s 如何运行 Container?

文章目录 引语1、什么是 Pod1.1 简介1.2 Pod 怎样管理多个容器?1.3 如何使用 Pod? 2、Pod 基本操作2.1 查看 Pod2.2 创建 Pod2.3 删除 pod2.4 进入 Pod 中容器2.5 查看 Pod 日志2.6 查看 Pod 的描述信息 3、Pod 运行多个容器3.1 创建 Pod3.2 查看指定容器…

浅谈编译器对构造函数和拷贝构造的优化

一、前言 ①我们先看一段程序&#xff0c;传值传参和传引用传参 #include <iostream> using namespace std;class D { public:D(int a0)//构造:_a(a){cout << "D(int a0)" << endl;}D(const D& d)//拷贝{_a d._a;cout << "D(con…

域名到期时间查询网站-免费版的翼龙老域名挖掘

批量域名过期查询软件 随着互联网的不断发展&#xff0c;域名越来越重要&#xff0c;特别是对于那些热爱SEO优化的网站管理员来说&#xff0c;域名的重要性无法忽视。而对于那些热衷于SEO优化的用户来说&#xff0c;域名过期查询可能是一个必不可少的工具&#xff0c;它可以用…

数据结构初阶--链表OJⅡ

目录 前言相交链表思路分析代码实现 环形链表思路分析代码实现 环形链表Ⅱ思路分析代码实现 复制带随机指针的链表思路分析代码实现 前言 本篇文章承接上篇博客&#xff0c;继续对部分经典链表OJ题进行讲解 相交链表 先来看题目描述 思路分析 这道题我们还是首先来判断一…

蓝牙耳机怎么挑选?小编分享2023畅销蓝牙耳机排行榜

蓝牙耳机怎么挑选&#xff1f;蓝牙、音质、续航、佩戴是蓝牙耳机选购时最重要的四大维度&#xff0c;这几年随着技术的成熟体验有了很大改善&#xff0c;但挑选的时候仍然要仔细对比&#xff0c;不然容易踩雷。小编根据销量整理了蓝牙耳机排行榜&#xff0c;一起看看最受消费者…

水务行业数智化招标采购系统建设解决方案

水务行业数智化采购解决方案 国家“十四五”规划和2035年远景目标纲要&#xff1a;提升产业链供应链现代化水平。加快数字化发展&#xff0c;推动产业数字化&#xff0c;数字产业化&#xff0c;以数字化转型整体驱动生产方式、生活方式和治理方式变革。利用数字技术重构价值链…