分层自动化测试的实战思考!

自动化测试的分层模型

自动化测试的分层模型,我们应该已经很熟悉了,按照分层测试理念,自动化测试的投入产出应该是一个金字塔模型。越是向下,投入/产出比就越高,但开展的难易程度/成本和技术要求就越高,但是根据目前各个公司实战落地方案来说,逐渐演变成橄榄球模型,单元测那一块各个公司落地都不是非常顺利,原因主要是依靠开发进行。如下图:

美国质量管理大师威廉·戴明博士提出产品质量是生产出来的,不是检验出来的,只有在生产过程中的每个环节,严格按照生产工艺和作业指导书要求进行,才能保证产品的质量。如果忽略过程控制,只靠检验,是不可能保证产品质量的,因为质量检验,只能剔除次品和废品,并不能提高产品质量。也就是说,质量控制的重点决不能放在事后把关,而必须放在制造阶段,即生产过程阶段。

从质量控制的角度来说,单元测试自动化是最应该值得投入资源去做的。因为代码的质量问题越早发现,修复的成本越低,对最终交付质量的影响也越小。

当前实际情况下,大多数公司均在API自动化上投入大量资源。这主要源于众多公司采用的前后端分离架构和复杂化的业务场景。接口作为交互和逻辑处理层的关键部分,其自动化覆盖率的提升能够确保数据处理逻辑的准确性,从而为后续测试节省大量时间,显著提升测试效率。

从用户体验的角度来说,UI层的自动化测试也是必不可少的,界面交互才是用户的最直观感受,如果用户感觉不好用,用户就会舍弃选择其他的产品。

我们都知道影响质量的因素有成本、范围和时间。在技术的落地实践过程中,尽管技术实践的重要性不言而喻,但我们仍需在成本和产出之间做出选择和平衡。因此,根据具体的业务场景选择最适合的自动化测试方式显得尤为重要。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:310357728【暗号:csdn999】

自动化测试分层的实战前置条件

先了解一下不同的自动化测试各自的特点,再来说它们的适用场景。

单元自动化

单元测试的目标通常是代码中的类、方法或者某个特定的函数,这些都是构成系统或服务的微小单元。因此,实施单元自动化测试变得非常重要,但有几个前置条件:

  • • 对业务需求细节需要非常熟悉,如果不熟悉业务和需求细节,单元测试就聊胜如无

  • • 由于公司很少或者没有专门的单元测试人员,从而进行单元测试主要是对应开发人员,开发人员在需求迭代期间需要一边写业务代码一边写单元测试代码,迭代需求需要足够的时间,但往往每个迭代时间不足,现在常见的都是敏捷开发模式

  • • 需要团队领导支持, 如果没有团队领导的支持,往往大家都不会进行单元测试

接口自动化

与UI自动化相比,接口自动化的任务是验证数据交互和逻辑的准确性,这将检验系统设计和开发编码规范。因此,接口自动化的实施前提或适用场景包括:

  • • 比较完善的技术架构和接口说明文档

  • • 有比较好的流程规范

  • • 比较稳定的环境和有相关的基础设施

UI自动化

UI自动化落地最大的挑战是需求和UI设计的频繁变化会导致大量的变更,如果需求和UI设计频繁变化,那测试框架、脚本甚至相关的测试数据都需要频繁的变更,环境和测试的维护成本大概率会高居不下,因此持续稳定的系统是UI自动化测试落地很需要的一个属性。UI自动化落地较为适用的场景有:

  • • 比较稳定的系统版本迭代,回归测试

  • • 接口巡检无法覆盖的线上业务主流程巡检工作

  • • 不稳定系统里面高频稳定的小范围功能操作

自动化测试只是保证质量的众多技术手段之一。决定是否进行分层测试,以及投入多少资源于哪种测试手段,主要取决于我们面临的问题以及这些问题对质量的影响程度。接着,我们会根据具体情境选择最合适的测试手段来解决问题。成本、覆盖范围和时间仍然是影响我们进行技术选型和实施的最主要因素。

END今天的分享就到此结束了~

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

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

相关文章

附录C 流水线:基础与中级概念

1. 引言 1.1 什么是流水线? 流水线爱是一种将多条指令重叠执行的实现技术,它利用了一条指令所需的多个操作之间的并行性。(指令操作的非原子性和指令类型的多样性) 在计算流水线中,每个步骤完成指令的一部分&#x…

Leetcode143 重排链表

重排链表 题解1 线性表 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → … → Ln - 1 → Ln请将其重新排列后变为: L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → …不能只是单纯的改变节点内部的值,而是需要实际…

知识笔记(四十七)———什么是mysql

MySQL是一个开源的关系型数据库管理系统(RDBMS),它使用SQL(结构化查询语言)作为操作和管理数据的语言。MySQL广泛应用于各种应用程序和网站中,是最受欢迎的开源数据库之一。 以下是MySQL的一些主要特点和功…

mumu模拟器,adb devices 忽然就不显示设备解决方法

依次执行以下 adb kill-server adb start-server adb devices

现代物流系统的分析与设计

目 录 引言 3一、系统分析 4 (一)需求分析 4 (二)可行性分析 4 二、 总体设计 4 (一)项目规划 4 (二)系统功能结构图 5 三、详细设计 6 (一)系统登录设计 6 …

【技术分享】企业网必不可少的NAT技术

NAT是一种地址转换技术,它可以将IP数据报文头中的IP地址转换为另一个IP地址,并通过转换端口号达到地址重用的目的。NAT作为一种缓解IPv4公网地址枯竭的过渡技术,由于实现简单,得到了广泛应用。 NAT解决了什么问题? 随…

线程按顺序循环执行

假设有3个线程,依次打印A、B、C,按顺序循环打印100次。 这个其实是线程通信,如果只是按顺序执行,用只有一个线程的线程池,依次提交线程任务就行,但是这里还不是每个线程只执行一次,需要循环重复打印。 这里有两种处理方式,一种是搞个全局int变量,对线程数取模,得到0~…

01.Git分布式版本控制工具

一、Git简介 Git是一个开源的分布式版本控制系统,可以有效、高速地进行从很小到非常大的项目的版本管理。 Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。 二、版本控制器方式 1.集中式版本控制工具 版本库放在中央服务器中&…

LinuxBasicsForHackers笔记 -- 日志系统

日志文件存储有关操作系统和应用程序运行时发生的事件的信息,包括任何错误和安全警报。 rsyslog 日志守护进程 Linux 使用名为 syslogd 的守护进程自动记录计算机上的事件。 rsyslog 配置文件 与 Linux 中的几乎所有应用程序一样,rsyslog 由位于 /et…

力扣-242. 有效的字母异位词

文章目录 力扣题目代码分析 力扣题目 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。 示例 1: 输入: s “anagram”, t “nagaram” …

【lesson11】表的约束(4)

文章目录 表的约束的介绍唯一键约束测试建表插入测试建表插入测试建表插入测试修改表插入测试 表的约束的介绍 真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保…

docker二 redis单机安装

创建文件夹 mkdir -p /usr/local/redis/data /usr/local/redis/logs /usr/local/redis/conf chmod -R 777 /usr/local/redis/data* chmod -R 777 /usr/local/redis/logs*另一种风格 # 创建 redis 配置存放目录 mkdir -p /home/docker/redis/conf && chmod 777 /home/…

关于学习计算机的心得与体会

也是隔了一周没有发文了,最近一直在准备期末考试,后来想了很久,学了这么久的计算机,这当中有些收获和失去想和各位正在和我一样在学习计算机的路上的老铁分享一下,希望可以作为你们碰到困难时的良药。先叠个甲&#xf…

Appium 自动化自学篇 —— 初识Appium自动化!

Appium 简介 随着移动终端的普及,手机应用越来越多,也越来越重要。而作为测试 的我们也要与时俱进,努力学习手机 App 的相关测试,文章将介绍手机自动化测试框架 Appium 。 那究竟什么是 Appium 呢? 接下来我们一起来学习PythonS…

【Python】 pdf2image中所需要的poppler文件

问题 在使用pdf2image是需要依赖poppler这个可执行文件, 网上找不到相应的文件。 使用 from PIL import Image import fitz from pdf2image import convert_from_pathpdf_file rD:\workspace\python学习笔记.pdf save_path rD:\workspace\\long_image.png popple…

分布式环境认证和授权-基于springboot+JWT+拦截器实现-实操+源码下载

1、功能概述? 1、当用户登录的时候,将用户的信息通过JWT进行加密和签名,并将JWT产生了token信息保存到当前浏览器的localStoragee中,即本地存储中。 2、当用户登录成功后,访问其他资源的时候,程序从localStorage中获…

二蛋赠书十一期:《TypeScript入门与区块链项目实战》

前言 大家好!我是二蛋,一个热爱技术、乐于分享的工程师。在过去的几年里,我一直通过各种渠道与大家分享技术知识和经验。我深知,每一位技术人员都对自己的技能提升和职业发展有着热切的期待。因此,我非常感激大家一直…

Backtrader 文档学习-Quickstart

Backtrader 文档学习-Quickstart 0. 前言 backtrader,功能十分完善,有完整的使用文档,安装相对简单(直接pip安装即可)。 优点是运行速度快,支持pandas的矢量运算;支持参数自动寻优运算&#x…

DNS漫游指南:从网址到IP的奇妙之旅

当用户在浏览器中输入特定网站时发生的整个端到端过程可以参考下图 1*4vb-NMUuYTzYBYUFSuSKLw.png 问题: 什么是 DNS? 答案 → DNS 指的是域名系统(Domain Name System)。DNS 是互联网的目录,将人类可读的域名&#…

cobalt strike基础使用

coblat strike使用 服务搭建 首先将server端文件放进kali中 对其赋权 执行时需要root权限 设置ip 启动服务 ./teamserver 10.4.7.138 123456回到win11启动cs,输入刚才配置的信息 上线方式 木马(exe上线) 查看一下开放的端口 添加监听 …