字节测开5年经验之谈,1分钟了解自动化测试..

news2025/1/10 10:21:42

引子

写在最前面:目前自动化测试并不属于新鲜的事物,或者说自动化测试的各种方法论已经层出不穷,但是,能够明白自动化测试并很好落地实施的团队还不是非常多,我们接来下用通俗的方式来介绍自动化测试……

本文共有2410字,阅读需要大约一分钟。


首先我们从招聘岗位需求说起。看近期的职业机会,提到“软件测试工程师”,基本上都有关于自动化测试的要求。例如:

  • 了解 selenium、appium或者其他自动化测试框架
  • 至少熟悉一门面向对象开发语言,有一定的代码功底优先
  • 熟悉Java或者python,有一定的测试自动化经验和代码阅读能力
  • 了解接口集成测试,会使用JMeter、Postman、SoapUI等接口测试工具

等等,上述内容不再一一列举。突然自动化测试遍地开花,好像测试工程师的自动化测试能力成为了标配一般。本文就从自动化测试的要求入手,简单的进行自动化测试扫盲,争取让各位在一分钟之内了解自动化测试。

那么我们就从“自动化测试”五个字来剖析。


测试

测试:这个我们熟悉。最经典的一个解释“程序测试是为了发现错误而执行的过程。”这个来自于G.J.Myers的经典著作《软件测试的艺术》的定义,给我们展示了测试的本质:过程。

测试是为了发现软件的错误,而执行的过程,这个过程可以是以下内容:

  • 运行被测试的软件,执行软件的功能
  • 运行其他工具,去检查软件的内部和外部

总而言之,是一个过程,执行的过程。接下来就一张最常见的测试示意图:

确认过眼神的手工测试

比如:测试主管让测试工程师去把软件的所有功能遍历一遍,该测试工程师通过鼠标、键盘、麦克风、手机屏幕触控等,把软件所有的功能,全部遍历了,这个叫做什么?熟悉测试的童鞋明白,这就是传说的“手工目测”呀,这是“人肉测试”。

我们好好的画这张图,实际上是这样的。

好吧,手工测试


自动化

到这里,结合上面的说法,自动化测试就是让被测试的软件自己运行起来,执行软件的功能;或者就是让其他的工具自己运行起来,去检查软件的内部和外部。

  • 既然测试是一个过程,那么自动化测试,就是自动的执行的过程。

接下来我们探讨的一个核心的问题:自动。什么叫做自动呢?让机器自己动,就是自动。让机器按照人类的要求,把软件的所有功能遍历一遍,这是自动化。。这样说会不会清晰一点?

重点来了,机器。让机器去动,这可不是“吃鸡”哦,这是人类命令机器去操作。不知道童鞋们有没有思考过,机器怎么知道人类的要求?上面的例子,测试主管只要告诉测试工程师,命令传达就完成了。可是人类直接的沟通,远比人机沟通容易啊。

  • 首先,机器听不懂“人话”,无论中文,英文……
  • 其次,机器默认会的“汇编语言”,应该是绝大部分的童鞋不会,并且短期掌握不来吧。

好吧,用“编程语言”。是时候拿出我们的另一张图了:

这个厉害了吧,自动化测试

机器学习一个编程语言,轻松和简单到令人发指的地步:安装上去,机器就学会了。好在人类学习编程语言也不是特别难的的事情。看来这个可行。

有了编程语言,就有了人机交流的桥梁,剩下的事情,是帮机器挑选工具。做对应的测试,就需要找到对应的工具,这样自动化就自动起来了。能到这里,我希望各位童鞋了解了基本的“自动”原理。

同样,好好的画这张自动化测试的示意图:

这个呢?自动化测试示意图


然后我们介绍各种常见的工具,来继续讨论自动化测试。进一步探讨之前,我们先看看测试的常用分类。这里不同的分类维度下,我们可以分为不同的测试,这里我们认真分析一下。

  • 从软件测试的实践过程看:单元测试、集成测试、确认测试、系统测试、验收测试……
  • 从软件测试的方法策略看:白盒测试、黑盒测试、灰盒测试……
  • 从软件测试的测试视角看:功能测试、性能测试、兼容性测试、安全测试、探索性测试……
  • 从软件测试的技术程度看:手工测试、自动化测试、测试开发……

以上这些维度下的分类,只有一部分测试可以通过“人肉测试”的“手工目测”完成,剩下的其实从广义概念上,都是需要机器来完成的。我们把这一部分测试抽取出来:系统测试-黑盒测试-功能测试-手工测试。不可否认的讲,这条线是目前软件测试从业者的重点覆盖范围,该范围之外的地方,便是自动化测试的用武之地。


自动化测试

接下来我们探讨一下主流的自动化测试方案,无一例外,都有人机沟通的编程语言,加上机器操作的工具来组成。

  • 功能自动化测试
  • VBScript + QTP(HP UFT),商用功能自动化测试方案
  • Python/PHP/Java/C#/JavaScprit/Ruby + Selenium/Appium + 单元测试框架,开源功能自动化测试方案
  • 这里我们多介绍一点,Selenium/Appium 本身不能算是测试工具,而只是机器用来操作浏览器的工具,并且这个工具能听懂多种语言:
  • Java,C# 这两个重 (zhòng) 语言
  • Python,Ruby 这两个脚本轻语言
  • PHP,JavaScript 这两个专门处理 Web 的语言
  • 工具外加指定的语言,可以让机器来操作浏览器,但是到此时还无法做到测试,于是才需要每个语言自己的单元测试框架,来一起完成这个功能自动化测试方案的构建。
  • 此外,业界还一种暂时临时的方案,就是 Python 2 + Robot Framework + Selenium Library 插件 + 单元测试框架 构成的一种测试方案,这个方案笔者不是非常推荐,主要基于两点:
  • 理念:这是一种基于关键字的方案,那么关键字是 QTP(HP UFT)的特长,并不是Selenium的本意
  • 技术:Python 2 终究是要退出历史舞台的,如果从零开始做自动化测试,还是直接入手 Python 3 吧,然而 Robot Framework 不支持 Python 3……
  • Python/Java/C#/JavaScprit/Ruby + Gauge,又一款开源的功能自动化测试方案
  • Thoughtworks 的基于BDD理念的自动化测试工具
  • Gauge 本身就是完整的测试方案
  • Gauge 是从需求分析师(BA)到测试工程师(QA)都覆盖的测试方案
  • Java/Python + Macaca,阿里巴巴的功能自动化测试方案,缺点是文档少
  • JavaScript + TestCafe,DevExpress 的开源功能自动化测试方案
  • pure node.js - TestCafe不使用Selenium,并且不需要插件来在实际浏览器中运行测试。 它建立在node.js的顶部,因此它与现代开发工具集成和工作良好
  • 无需额外的设置或配置- TestCafe是所有设置后立即运行测试npm install
  • 完整的测试工具 - 使用单个启动命令,TestCafe启动浏览器,运行测试,收集结果并生成报告
  • JavaScript + Postman,免费的Web接口功能自动化测试方案
  • Groovy + SoapUI,开源的Web接口功能自动化测试方案
  • 性能自动化测试
  • Java/C + HP LoadRunner,商业版性能测试方案
  • Java + JMeter,开源版性能测试方案
  • Python + locust,开源版性能测试方案

这里,我们借用一张别人的图,Martin Fowler,敏捷开发方法的创始人之一,他借用金字塔的概念来展示测试的层次。

Martin Fowler 的测试金字塔

事实上,自动化测试覆盖了从 UI (功能测试)到契约(接口测试)以及底层代码方法(单元测试)的整个过程,要想很好的掌握自动化测试,那么的确需要以下三种领域的经验积累:

  • 编程语言,面向对象编程优先,因为大量的开源技术方案,都是基于面向对象的编程方式
  • 第三方测试工具和测试框架,这些主要通过官网的文档学习
  • 测试的理念与设计,工具和语言,只是测试的手段,如何准备测试数据,如何设置测试的检查点与测试步骤,这些决定了测试的成败

此外综合的 前端与服务器后端技术,是测试执行的保障。加油吧童鞋们,一分钟过去了么?


那么你现在了解到自动化测试了么?如果依旧有疑问,可以在评论区交流!!!

下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!为了回馈铁杆粉丝们,朋友们如果需要可以自行免费领取 【保证100%免费】

加入我的软件测试交流群:110685036免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)

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

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

相关文章

WebSocket全双工通信SpringBoot实现

【IT老齐238】十分钟上手WebSocket全双工通信协议_哔哩哔哩_bilibili【IT老齐238】十分钟上手WebSocket全双工通信协议, 视频播放量 8348、弹幕量 23、点赞数 318、投硬币枚数 157、收藏人数 257、转发人数 30, 视频作者 IT老齐, 作者简介 老齐的个人V: itlaoqi001 ~~欢迎前来交…

kubernetes01

kubernetes基础 kubernetes介绍 Kubernetes是Google在2014年开源的一款容器集群系统,简称k8s Kubernetes用于容器化应用程序部署、扩展和管理,目标是让容器化应用简单高效 官方网站:https://kubernetes.io/ 官方文档:https://ku…

PFC(Priority Flow Control)及PFC Storm介绍

文章目录 PFCPFC Storm PFC PFC是一种流量控制机制,用于保证网络中的无损传输,常用于RDMA网络中,以下具体介绍其机制。 如图所示,发送方的出端口发送数据包给接收方的入端口。在发送方的出端口,数据包在至多八个队列中…

AI智能照片编辑:AI Photo for Mac

AI Photo是一款Mac平台上的智能照片编辑软件,它基于人工智能技术,可以帮助用户快速、轻松地对照片进行编辑和美化。AI Photo提供了多种智能修复和美化功能,包括自动调整色彩、对比度、亮度、清晰度等,使得照片的质量得到有效提升。…

二叉树:填充每个节点的下一个右侧节点指针(java)

leetcode116:填充每个节点的下一个右侧节点指针 leetcode原题链接:题目描述递归解法一递归方法二(效率更高)二叉树专题 leetcode原题链接: 116题:填充每个节点的下一个右侧节点指针 题目描述 给定一个 完美二叉树 &a…

【STL模版库】vector介绍及使用 {构造函数,迭代器,容量相关接口,增删查改;动态二维数组}

一、vector的介绍 vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它…

Shell iptales防火墙设置

文章目录 Linux 防火墙1.Linux包过滤防火墙概述2.四表五链四表五链 3.规则链之间的匹配顺序主机型防火墙网络型防火墙 4.规则链内的匹配顺序 Linux 防火墙 1.Linux包过滤防火墙概述 Linux 系统的防火墙: IP信息包过滤系统,它实际上由两个组件netfilter 和 iptable…

029:Mapbox GL绘制铁路黑白交替的线段

第029个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中加载数据显示铁路标识的那种黑白交替的线段。 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共94行)相关API参考:专栏目标示例效果 配置方式 1)…

湍流的数值模拟方法概述

湍流,又称紊流,是一种极其复杂、极不规则、极不稳定的三维流动。湍流场内充满着尺度大小不同的旋涡,大旋涡尺度可以与整个流畅区域相当,而小漩涡尺度往往只有流场尺度千分之一的数量级,最小尺度旋涡的尺度通过其耗散掉…

蓝桥杯--挖地雷

没有白走的路,每一步都算数🎈🎈🎈 题目: 已知有很多的地窖,每一个地窖中又藏着很多的地雷,每个地窖之间都存在着相连性,但是不是任意的地窖都是相连的,要求我们找出一次能…

技术干货 | 在 PostgreSQL 中设置查询超时

在 Navicat Monitor 3 监控工具中的查询分析器画面顶部,我们设置了一个图表,用以显示等待时间最长的查询: 能够标识出滞后的查询非常重要,因为它们可以让一切陷入瘫痪。 除了在标识出慢速查询并对其进行修复外,另一种…

【2023 · CANN训练营第一季】昇腾AI入门课(TensorFlow)第二章——TensorFlow模型迁移训练

1.AI模型开发基础知识入门 1.1具备Python编程经验 a.使用位置和关键字参数定义和调用函数 b.字典、列表、集合 (创建、访问和迭代) c.for循环, for具有多个迭代器变量的循环 (例如,for a,b in [(1,2),(3,4)]) d.if/else条件块和条件表达式 e.字符串格式…

Echarts绘制折线图,超简单,源码点击即可运行!【文末源码地址】

文章目录 前言Apache Echarts绘制基础折线图绘制带标记的折线图绘制多条折线图绘制带标签的折线图完整源码地址 前言 本文包含的代码仅为部分片段,完整源码有详细注释,可在文末领取! 在当今数字化时代,数据可视化已成为一种必不…

day12 - 图像修复

在图像处理的过程中,经常会遇到图像存在多余的线条或者噪声的情况,对于这种情况我们会先对图像进行预处理,去除掉对图形内容有影响的噪声,在进行后续的处理。 本节实验我们介绍使用图像膨胀来处理图形的多余线条,进行…

web前端 --- CSS(03) -- 元素定位

元素定位:标签在页面中的位置问题 (1)分类 绝对定位:将需要的元素直接定位固定的位置 PS:绝对定位,必须指定一个相对点(一般是父标签)。相对的标签必须是相对定位或者绝对定位【重…

chatgpt赋能python:PythonSearchGroup-Python搜索小组

Python Search Group - Python搜索小组 如果你是一个Python程序员,或者对Python编程语言感兴趣,那么你一定听说过Python Search Group。Python Search Group是一个专注于Python搜索和搜索引擎的小组,他们致力于提供高效的Python搜索工具和搜…

【Netty】字节缓冲区 ByteBuf(七)(下)

文章目录 前言一、实现原理二、ByteBuf 的使用案例三、ByteBuf 的3种使用模式3.1 堆缓冲模式3.2 直接缓冲区模式3.3 复合缓冲区模式 总结 前言 回顾Netty系列文章: Netty 概述(一)Netty 架构设计(二)Netty Channel 概…

鸿蒙Hi3861问题解决-DevEco VSCode无法跳转

一、问题描述 使用Windows和Ubuntu混合编译下载,在windows下搭建VSCodeDevEco Device Tool环境。通过SSH远程Ubuntu系统进行代码修改与编译。 在VSCode中,Ctrl左键,无法跳转。按住Ctrl键,鼠标移到函数上,也不会有任何反…

Flink+hadoop部署及Demo

Hadoop集群高可用部署 下载hadoop包地址 https://dlcdn.apache.org/hadoop/common/hadoop-3.2.4/hadoop-3.2.4.tar.gz 上传并解压到3台服务器 配置3台主机的hosts和免密登录 1.修改.bash_profile vi .bash_profile # HADOOP_HOME export HADOOP_HOME/apps/svr/hadoop-3.2.…

一分钟掌握技术术语:API(接口)|电商平台API接口展示示例

很多产品经理在项目开发过程中经常听到:你调我这个接口就好了;这个功能你写个接口给我;有什么不懂的就看下API接口文档。 开发经常说的接口是什么意思呢?术语解释:API(Application Programming Interface&a…