当前位置: 首页 > news >正文

全栈自动化测试技术笔记(二):准备工作的切入点

自动化测试技术笔记(二):准备工作的切入点

上篇整理的技术笔记,聊了自动化测试的前期调研工作如何开展,最后一部分也提到了工作的优先级区分。

这篇文章,接上篇文章的内容,来聊聊自动化测试前期的准备工作,需要考虑哪些方面。

测试环境选择和搭建

自动化测试运行环境,不外乎测试环境(SIT)、验收环境(UAT)、灰度环境(PRE)和生产环境(PROD)。

在不同的环境运行的目的、效果、优势和不足也各不相同,下面是不同环境的区分对比结果。

环境名称

优势

不足

测试环境(SIT)

节省环境资源,代码版本比较新,可及时验证,复用性强

服务不稳定,测试数据容易混淆,测试结果准确性不高,需要人工二次校验

验收环境(UAT)

服务相对稳定,环境复用性强,代码版本相对较新

测试数据容易混淆

灰度环境(PRE)

环境稳定,服务齐全,可以更好的进行业务流程的自动化测试

测试数据容易混淆,需要单独的维护和管理测试数据

生产环境(PROD)

环境稳定,服务齐全,主要用来做线上主流程巡检,防资损

需要单独维护测试数据和账号,且需要配置白名单过滤,防止污染生产数据

不同环境对自动化测试开展的便利性和制约性不同,建议根据自动化测试的成熟度、要解决的问题来选择不同的环境。

当然,如果选择搭建单独的自动化测试环境,就要考虑环境资源申请、域名、代码仓库权限、维护成本等因素。

还有个很容易忽视的点就是服务器操作系统类型和版本,举个我当时遇到的例子:

要做web的UI自动化测试,工具选择了selenium,我们常用的浏览器是chrome,用户使用环境是windows,自动化测试要求快速无感执行,

就需要考虑Linux环境下基于chrome浏览器的case执行(chromium),还要考虑Linux操作系统对chrome的适配问题(centos和uhuntu,以及centos的版本选择6.5还是7.2),甚至还要考虑浏览器驱动的适配问题。

测试框架选型和设计

近几年成熟稳定的开源自动化测试工具和框架可选择的比较多了,但具体问题具体分析,测试框架的选型和设计同样是很重要的事情。在选择测试框架或者工具时,一般需要考虑如下几方面:

  1. 自动化测试类型:UI/API/UNIT,UI自动化要考虑web和移动端的区别,单元测试要考虑被测系统的开发语言;
  2. 框架自身的生态:框架支持的编程语言、社区活跃度、文档是否齐全、业内落地案例、测试同学自身的技术栈;
  3. 框架的学习成本:不能只考虑选择个人熟悉的,还要考虑后续的多人协同,团队其他同学的学习上手难度;
  4. 框架的维护成本:后期case多了或业务场景变更后,case的维护成本以及框架本身是否提供了更好的封装模块;

测试脚本和数据管理

测试脚本和测试数据管理,需要结合自动化测试的执行环境一起来看。

一般来说,测试脚本为了便于统一管理和多人协作维护,现在都是采用Git+gitlab的方式,做好版本管理和分支规范即可。

而测试数据的管理,相对来说比较复杂,可选的方式也不同。下面是常见的几种测试数据管理方式对比:

测试数据管理方式

优势

不足

Excel参数文件形式

数据维护方便,简单快捷

不利于多人协作,数据量大了之后数据维护更新成本高

配置文件形式

适合热点数据/通用信息管理,如账号密码等

无法适用于复杂场景和大规模的数据管理

数据库统一管理

便于数据隔离,统一管理

一般是配合单独的自动化环境一起维护

测试范围和校验粒度

标题所述的两点,其实是同一种问题。

测试范围的筛选,需要结合投入的资源,项目紧急程度来综合评估,一般测试范围的覆盖优先级,可以遵循这个顺序:核心业务——高频业务——问题较多的业务。

覆盖率的考量,可以遵循这个顺序:核心场景——核心业务流程——异常场景,如此覆盖后,再考虑逆向流程。

测试用例的粒度,可以参照功能测试用例的区分,从 P0 &冒烟case到 P1 再到 P2,以此类推。

当然,如果遇到比较复杂和亢长的流程,可以考虑拆分为多个测试用例,在同一个任务里按上下游关系去执行。

粒度的设定和拆分,在不同阶段有不同的划分。刚开始落地时,可以由粗到细,先实现再考虑不断优化。

持续集成和测试报告

自动化测试,如果无法做到持续集成快速验证,那就不能称之为自动化。

要做到将自动化测试,我个人认为有如下几个标识来判断:

  1. 执行的频次和效率:比如1天可以执行100个功能case,那自动化最起码要在10分钟甚至1分钟内完成;
  2. 执行结果自动校验:功能测试可以人工来判断测试是否通过,自动化测试的通过率&成功率需要达到一定的成功率(比如90%以上),且失败的case可以重试验证,或者失败的结果和日志及时通知给相关人员;
  3. 无人值守自动运行:这点其实很多方法可以实现,比如定时任务,条件触发。当然做到这点还算不上自动化,必须考虑到如果出现重大问题还需要及时的发现和告警通知;
  4. 是否融入交付流水线:交付流水线即我们今天常说的CICD或者devops流水线,常见的场景有服务打包编译后的自动化单元测试,服务自动发布后的接口自动化和UI自动化测试,以及服务上线前和上线后的自动化冒烟和回归测试,甚至还可以加入线上的日常自动化巡检。

外部调用和多人协作

以电商业务为例,支付需要调用三方,短信通知需要调用短信服务商,发货物流需要调用三方,但实际工作中三方提供的环境往往不满足我们的测试需要,这个时候就需要一定的手段来解决这个问题。常见的手段如下:

  1. 挡板&mock(最常用的手段);
  2. 流量染色+影子库(实现成本较大,技术复杂性较高);
  3. 和三方协商一致后配置专门的白名单或者渠道(很难协商);

至于多人协作问题,其实涉及很多方面,比如:

  1. 测试数据专人统一维护,还是按需维护,提供专门的工具或者流程规范约束;
  2. 测试用例和测试脚本的维护,各管各的还是提供统一的规范demo,专人检查或者定时review;
  3. 测试范围的边界如何界定,重合部分如何区分职责;

以上就是自动化测试落地前的准备工作,内容来源于我之前做自动化测试工作时的一些笔记内容,稍加提炼和修改。

下一篇我会聊聊自动化测试落地方案以及落地过程中常见的问题以及解决思路。

 总结:
现阶段很多人都在说软件测试太内卷了,工作太难找了,竞争太激烈了。那么如何在这样的现状下使得自己更具有竞争力呢?笔者认为大家需要迅速学习软件测试的硬技能,提升自己的业务能力,早日摆脱初中级测试的Title,虽然测试人员众多,但是高级的软件测试人员还是很稀缺,有很多人挂着高级测试的头衔却还在干着初中级测试的活。在掌握这些硬技能的同时,软技能的培养同样重要,沟通能力、自主学习能力越来越被企业看重。

如果不想被这个时代淘汰,就要做好持续学习的准备。下方给大家准备了全套的软件测试,自动化测试全套教程。

【需要的可以点击下方官方推广小卡片扫码备注000免费领取】

相关文章:

全栈自动化测试技术笔记(二):准备工作的切入点

自动化测试技术笔记(二):准备工作的切入点 上篇整理的技术笔记,聊了自动化测试的前期调研工作如何开展,最后一部分也提到了工作的优先级区分。 这篇文章,接上篇文章的内容,来聊聊自动化测试前期的准备工作&#xff0…...

57 长短期记忆网络(LSTM)【动手学深度学习v2】

57 长短期记忆网络(LSTM)【动手学深度学习v2】 深度学习学习笔记 学习视频:https://www.bilibili.com/video/BV1JU4y1H7PC/?spm_id_fromautoNext&vd_source75dce036dc8244310435eaf03de4e330 长短期记忆网络(LSTM&#xff09…...

算法第十五期——动态规划(DP)之各种背包问题

目录 0、背包问题分类 1、 0/1背包简化版 【代码】 2、0/ 1背包的方案数 【思路】 【做法】 【代码】 空间优化1:交替滚动 空间优化2:自我滚动 3、完全背包 【思路】 【代码】 4、分组背包 核心代码 5、多重背包 多重背包解题思路1:转化…...

实现复选框全选和全不选的切换

今天,复看了一下JS的菜鸟教程,发现评论里面都是精华呀!! 看到函数这一节,发现就复选框的全选和全不选功能展开了讨论。我感觉挺有意思的,尝试实现了一下。 1. 全选、全不选,两个按钮&#xff…...

React hooks之useState用法(一)

系列文章目录 学习React已经有很长的一段时间了,今天决定重新回顾一下跟React相关的一些知识点 文章目录系列文章目录结构如下一、hooks是什么?useState可以能做什么二、如何使用useState()第一步:创建【函数组件&…...

spring的简单理解

目录 1 .ioc容器(控制反转) 2. Aop面向切面编程 3. 事务申明 4. 注解的方式启动 5. spring是什么与他的优势 6. 代理设计模式(比如aop) 7. springmvc中相应json数据 8. 使用lombok来进行对代码的简化 9. 使用logback记录…...

Docker调用Intel集显实现FFmpeg硬解码

文章目录Docker调用Intel集显实现FFmpeg硬解码参考FFmpeg 集成qsv方式一 容器完成所有步骤方式二 容器完成部分步骤方式三 dockerfile部署Docker调用Intel集显实现FFmpeg硬解码 参考 ffmpeg_qsv_docker拉取该镜像可以实现FFmpeg集成vaapi的硬加速,通过dockerfile文…...

端到端模型(end-to-end)与非端到端模型

一、端到端(end to end) 从输入端到输出端会得到一个预测结果,将预测结果和真实结果进行比较得到误差,将误差反向传播到网络的各个层之中,调整网络的权重和参数直到模型收敛或者达到预期的效果为止,中间所…...

uniApp封装一个滑块组件

最近 项目中有一个需求 PC端动态设计的表单 移动端要能渲染出来 那么 就要去找到对应的组件 而其中 没有的 就包括滑块 没有又能怎么办 只能自己封装一个 我们直接上代码 <template><view class"u-slider" tap"onClick" :class"[disabled…...

运动基元(二):贝塞尔曲线

贝塞尔曲线是我第一个深入接触并使用于路径规划的运动基元。N阶贝塞尔曲线具有很多优良的特性,例如端点性、N阶可导性、对称性、曲率连续性、凸包性、几何不变性、仿射不变性以及变差缩减性。本章主要介绍贝塞尔曲线用于运动基元时几个特别有用的特性。 一、贝塞尔曲线的定义 …...

Android 11.0 关于Launcher3中调用截图功能总是返回null的解决方案

1.1概述 在11.0的系统产品开发中,在某些时候需要调用截图接口来进行截屏功能实现,而在Launcher3中发现调用系统截屏接口SurfaceControl.screenshot进行截图的时候始终为null, 获取不到系统当前页面的截屏功能,所以需要找到当前截屏失败的原因然后来实现截屏功能的实现,下面来…...

random随机数

random随机数 1.概述 random用来生成一些随机数&#xff0c;下面介绍random模块提供的方法根据需求生成不同的随机数。 2.random常用操作 2.1.random默认随机数 random()函数返回一个随机的浮点值&#xff0c;默认返回值范围在0 < n < 1.0区间 import randomfor i …...

【金三银四系列】Spring面试题-上(2023版)

Spring面试专题 1.Spring应该很熟悉吧&#xff1f;来介绍下你的Spring的理解 有些同学可能会抢答&#xff0c;不熟悉!!! 好了&#xff0c;不开玩笑&#xff0c;面对这个问题我们应该怎么来回答呢&#xff1f;我们给大家梳理这个几个维度来回答 1.1 Spring的发展历程 先介绍…...

linux基本功系列之tar命令实战

文章目录前言一. tar命令介绍二. 语法格式及常用选项三. 参考案例3.1 仅打包不压缩3.2 打包后使用调用压缩命令进行压缩3.3 列出文件的内容3.4 追加文件到tar命令中3.5 释放文件到指定的目录四 . 各种压缩方式的比较总结前言 大家好&#xff0c;又见面了&#xff0c;我是沐风晓…...

Prometheus服务发现

Prometheus服务发现介绍 Prometheus默认是采用pull的方式拉取监控数据的&#xff0c;每一个被抓取的目标都要暴露一个HTTP接口&#xff0c;prometheus通过这个接口来获取相应的指标数据&#xff0c;这种方式需要由prometheus-server决定采集的目标服务器有哪些&#xff0c;通过…...

【Spring6源码・MVC】请求处理流程源码解析

上一篇《【Spring6源码・MVC】初始化registry&#xff0c;完成url和controller的映射关系》我们知道&#xff0c;在IOC容器加载的同时&#xff0c;初始化了registry这个HashMap&#xff0c;这个HashMap中存放了请求路径和对应的方法。当我们请求进来&#xff0c;会通过这个regi…...

elasticsearch term match 查询

1. 准备数据 PUT h1/doc/1 {"name": "rose","gender": "female","age": 18,"tags": ["白", "漂亮", "高"] }PUT h1/doc/2 {"name": "lila","gender&quo…...

canal使用说明:MySQL、Redis实时数据同步

1. canal简介 canal是阿里开源的数据同步工具&#xff0c;基于bin log可以将数据库同步到其他各类数据库中&#xff0c;目标数据库支持mysql,postgresql,oracle,redis,MQ,ES等 canal分成服务端deployer和客户端adapter&#xff0c;我们可以部署多个&#xff0c;同时为了方便管…...

计算机视觉框架OpenMMLab开源学习(三):图像分类实战

前言&#xff1a;本篇主要偏向图像分类实战部分&#xff0c;使用MMclassification工具进行代码应用&#xff0c;最后对水果分类进行实战演示&#xff0c;本次环境和代码配置部分省略&#xff0c;具体内容建议参考前一篇文章&#xff1a;计算机视觉框架OpenMMLab开源学习&#x…...

awk命令

一.介绍 awk是专门为文本处理设计的编程语言&#xff0c;是一门数据驱动的编程语言。与sed类似&#xff0c;都是以数据驱动的行处理软件&#xff0c;主要用于数据扫描&#xff0c;过滤和汇总。数据可以来自于标准输入&#xff0c;管道或者文件。 二.语法 awk是一种处理文本文件…...

LocalDateTime获取时间的年、月、日、时、分、秒、纳秒

如何把String/Date转成LocalDateTime参考String、Date与LocalDate、LocalTime、LocalDateTime之间互转 String、Date、LocalDateTime、Calendar与时间戳之间互相转化参考String、Date、LocalDateTime、Calendar与时间戳之间互相转化 方法介绍 getYear() 获取日期的年 getMon…...

MoveIT Rviz和Gazebo联合仿真

文章目录环境安装概述ros_control框架ros_control数据流文件配置附加工具故障问题解决参考接前两篇&#xff1a;ROS MoveIT1&#xff08;Noetic&#xff09;安装总结 Solidworks导出为URDF用于MoveIT总结&#xff08;带prismatic&#xff09; MoveIT1 Assistant 总结 环境 Ubu…...

ESP32S2(12K)-DS18B20数码管显示温度

一、物料清单: NODEMCU-32-S2 (ESP32-12K)四段数码管(共阴)DS18B20(VCC/DQ/GND)Arduino-IDE 2.0.3二、实现方法及效果图: 2.1 引用库 // #include <OneWire.h> //可以不引入,因为DallasTemperature.h中已经引入了OneWire.h #include <DallasTemperature.h>#…...

linux栈溢出定位

一、编译选项定位堆栈溢出 来源&#xff1a;堆栈溢出检测机制 - SkrSky - 博客园 1、栈溢出可能打印 unhandled level 1 translation fault (11) at 0x7f8d0347, esr 0x92000005 2、栈溢出保护机制 gcc提供了栈保护机制stack-protector&#xff08;编译选项-fstack-protec…...

CSS基础:选择器和声明样式

CSS概念 CSS&#xff08;Cascading Style Sheets&#xff09;层叠样式表&#xff0c;又叫级联样式表&#xff0c;简称样式表 CSS用于HTML文档中元素样式的定义 使用css让网页具有美观一致的页面 语法 CSS 规则由两个主要的部分构成&#xff1a;选择器和声明样式 选择器通常…...

VS中安装gismo库

文章目录前言一、下载安装paraview直接下载压缩包安装就可以了解压后按步骤安装即可二、gismo库的安装gismo库网址第一种方法&#xff1a;第二种方法第三种方法&#xff1a;用Cmake软件直接安装首先下载cmake软件[网址](https://cmake.org/download/)安装gismo库三、gismo库的使…...

元学习方法解决CDFSL以及两篇SOTA论文讲解

来源&#xff1a;投稿 作者&#xff1a;橡皮 编辑&#xff1a;学姐 带你学习跨域小样本系列1-简介篇 跨域小样本系列2-常用数据集与任务设定详解 跨域小样本系列3&#xff1a;元学习方法解决CDFSL以及两篇SOTA论文讲解&#xff08;本篇&#xff09; 跨域小样本系列4&#xf…...

大数据之------------数据中台

一、什么是数据中台 **数据中台是指通过数据技术&#xff0c;对海量数据进行采集、计算、存储、加工&#xff0c;同时统一标准和口径。**数据中台的目标是让数据持续用起来&#xff0c;通过数据中台提供的工具、方法和运行机制&#xff0c;把数据变为一种服务能力&#xff0c;…...

Python 中 字符串是什么?

字符串是 Python 中最常用的数据类型。我们可以使用引号 ( ’ 或 " ) 来创建字符串。 创建字符串很简单&#xff0c;只要为变量分配一个值即可。例如&#xff1a; var1 ‘Hello World!’ var2 “Python Runoob” Python 访问字符串中的值 Python 不支持单字符类型&…...

OJ刷题Day1 · 一维数组的动态和 · 将数字变成 0 的操作次数 · 最富有的客户资产总量 · Fizz Buzz · 链表的中间结点 · 赎金信

一、一维数组的动态和二、将数字变成 0 的操作次数三、最富有的客户资产总量四、Fizz Buzz五、链表的中间结点六、赎金信一、一维数组的动态和 给你一个数组 nums 。数组「动态和」的计算公式为&#xff1a;runningSum[i] sum(nums[0]…nums[i]) 。 请返回 nums 的动态和。 示…...

wordpress+无插件主题/seo自动推广软件

引言 前面我们介绍了 Mongoose所有的几个主要的数据结构mg_context、mg_connection、mg_request_info&#xff0c;还有Mongoose的 生命主线。有了这些基础就可以来看看Mongoose的核心处理工作是怎样的。如果你还没有阅读前面的文章&#xff0c;你可以通过下面的隧道直通&#x…...

西安建筑公司网站建设/长沙网站制作

添加Areas主要目的是区分一些不同的业务&#xff0c;避免不同的业务都在同一个Controllers下造成混乱&#xff0c;在MVC项目上右键->添加区域->我添加了HMbolie和PClient两个区域->如下图 HMbolieAreaRegistration.cs和PClientAreaRegistration.cs是默认生成的,代码中…...

手机网站打不开的解决方法/郑州网站优化seo

一、STL简介 STL&#xff08;Standard Template Library&#xff0c;标准模板库)是惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来 的。现在虽说它主要出现在C中&#xff0c;但在被引入C之前该技术就已经…...

什么叫做电商/seo网站快速整站优化技术

本人于2013年下半年以陕西第一全国前50名&#xff08;51、48、50&#xff09;通过“网络规划设计师”的考试&#xff0c;在此感谢我的两位同事Mr.Zhang和Mr.Li。感谢Mr.Zhang给我提供的《网络规划设计师教程》、《网络规划设计师考试全程指导》、《网络规划设计师考试&#xff…...

wordpress+编写页面代码/企业网站运营推广

1、 不同类型CPU的计算机存储多字节变量的顺序不同&#xff0c;故主机字节序分为大端序和小端序&#xff1a; 大端序&#xff1a;高位字节存储在内存的低地址。例如网络传输中使用的字节序。 小端序&#xff1a;低位字节存储在内存的低地址。例如Inter和AMD的主机。 如下所示为…...

小程序的类型有哪些/seo收费低

今天心血来潮看一下spring监控 访问/beans 等敏感的信息时候报错Tue Mar 07 21:18:57 GMT08:00 2017 There was an unexpected error (typeUnauthorized, status401). Full authentication is required to access this resource.application.properties添加配置参数manage…...