企业级自动化测试理论(目标、框架要素、深入理解测试金字塔)

1. 自动化测试的目标

自动化测试的目标是加快研发过程,而不是试图省钱。

  • 迅速检测出新版本中不稳定的变更。

  • 迅速暴露程序回归的错误。

  • 迅速报告问题, 因为这会使程序错误修改更容易。

为了达到目标,所需要的测试能力要求

  1. 测试技术:测试的基础技术,如用例设计方法等。
  2. 业务能力:对被测对象业务的熟悉程度和理解能力。
  3. 拓展能力:如系统架构、主流技术框架、开发模式、思考方式等。

自动化测试如何做到收益最大化?

Ross Collard 在《Use Case Testing》中说到,10-15% 的测试用例可以发现 75% 到 90% 的重要缺陷。

由此,京东金融自动化测试技术高管在跟踪统计 31 个项目中发现,当测试用例的自动化覆盖率达到 15% 到 25% 时,收益达到最高。

收益最大化的自动化测试应该包含哪些内容?

  1. 核心和基础功能
  2. 行业标准高的模板或系统
  3. 公式化/程序化/运算计算/报表类
  4. 逻辑清晰,但输入组合复杂
  5. 功能专项

 

2. 理解自动化测试框架(自动化工具原理分析)

自动化测试框架的六要素

测试对象:

  • 1)被操作对象
  • 2)操作行为
  • 3)操作的值

测试管理:

  • 4)用例的组织方法
  • 5)用例的执行策略
  • 6)测试结果呈现

1)测试对象

08cee7fa2eee44b9f55caea4b16f953a.png

2)测试管理

以 JUnit 为示例,其三重唱共同产生测试结果

4b723e7be032d1f983f71fc1a63ca276.png

用例的组织方法

  • 当你需要编写更多的 TestCase 的时候,你可以创建更多的 TestCase 对象。
  • 当你需要一次执行多个 TestCase 对象的时候,您可以创建一个 TestSuite 对象或使用缺省的 TestSuite 对象进行封装。

用例的执行策略

  • 为了执行 TestSuite,需要使用 TestRunner。

测试结果呈现

  • 通过 TestRunner 的执行生成 TestResult 对象。

 

4f210e885d070c86358828e683c5d9e8.png

  

3. 深入理解测试金字塔

1)什么是测试金字塔?

Mike Cohn 在他的著作《Succeeding with Agile》一书中提出了测试金字塔这一概念。根据 Mike Cohn 的测试金字塔,测试组合应该由三层组成(自下往上分别是):单元测试、服务测试、UI 测试

  1. 单元测试:最下层是单元测试,单元测试是自动化测试策略稳固的根基,因此也是金字塔结构的最底层。
  2. UI 测试:最上层是用户界面,通常用户界面是脆弱的,测试和修改的经济成本和时间成本较高。
  3. 服务测试:中间的服务层是为了过渡用户界面和程序单元而设计的,认为所有应用程序都由各种服务组成,服务是指实现某一具体功能的程序集合,服务通过对输入进行响应而体现。通过对服务进行测试,而不是对用户界面进行测试,可以极大缩短时间和成本。

Cohn 测试金字塔中提到的两件事:

  1. 编写不同粒度的测试;
  2. 层次越高,编写的测试应该越少。

即为了维持金字塔形状,一个正常、快速、可维护的测试组合应该是这样的:

  1. 写许多小而快的单元测试;
  2. 适当写一些更粗粒度的服务相关的测试,对某些业务可以理解为编写适当的接口测试;
  3. 只需写很少的高层次的端到端测试。

2)对测试金字塔的困惑

开发为什么不愿意编写单元测试?

单元测试的好处:

  1. 单元测试执行速度快。
  2. 发现 bug 时修复成本低。

但未考虑单元测试的开发成本高:

  1. 目前为止没有很好的单元测试框架来支持业务开发需求。
  2. 由于业务场景流向的串行化,测试时需要准备大量的数据,因此单元测试时需要 mock 数据,而 mock 数据本身也是较为复杂的。
  3. 由于业务复杂,因此写单元测试(如异常场景用例)时更复杂。

为什么大部分公司还在做 UI 测试?

单元测试、接口自动化测试覆盖足够高,是不是就不需要 UI 测试了呢?—— 并不是。

因为质量有两层含义:

  1. 基于用户体验 —— UI 测试
  2. 基于产品品质(内建质量) —— 单元、接口测试

质量的两层含义,也对应着测试人员发展的两个方向:

  1. 测试技术
  2. 测试开发能力

3)正确理解金字塔模型

按照 Cohn 在测试金字塔模型中提到的观点,在开发过程中,应该编写和开发更多小而快的单元测试,以更快更高效完成质量反馈,而应该写很少的端到端 UI 测试。

但实际上在大部分的公司里,开发同学还是不太愿意写更多的单元测试,而是更多的进行 UI 层的测试呢?难道说测试金字塔模型有问题?要搞明白这个问题,我们先要思考一下,在软件测试的过程中测试是希望达成什么样的目标?在保障过程中是在保障哪一部分内容?

在 ISO25000 标准中,测试质量被分为内部质量和外部质量

  • 外部质量:就是我们常说的用户体验,是用户使用过程中的用户体验,是否好用,是否易用,是否可靠等等。
  • 内部质量:更多的是内建质量,关注的是产品安全性、可测性、可重用性、可维护性以及可移植性等等。

03179cbaa37446e98e4c619b5db9e827.png

用户量较小的 C 端产品或者业务复杂的产品中,测试的过程更多的关注于用户体验属性;而用户量大的产品更多关注于产品的内建质量

  • 比如在创业团队中,一般更多的关注于用户体验,在保障产品质量的过程中一般会有更多的资源投入到 UI 层面的测试和质量保障。测试的模型大概率是冰淇淋(倒三角)模型。
  • 而在云和大数据、人工智能的团队中,因为对安全性、可测性、可重用性、可维护性以及可移植性等方面的要求很高,测试资源会更多的向单元测试和接口测试层面倾斜。

4)金字塔模型的适用范围

按照以上分析,测试金字塔模型的也是有一定适用范围的:

  • 对于用户体验要求更高的产品或者业务更复杂产品,测试金字塔模型匹配度较低;
  • 而对于内建质量要求更高的产品,比如云、大数据、人工智能等产品,更适合使用金字塔模型构建我们的测试策略或者测试组合。

ccffecbeb161939f82b17bd9ade905f3.png

这也很好地解释了,金字塔模型既然得到了那么多人的认可,为什么在真正落地的时候,大部分团队还是按照冰激凌(倒三角)模式执行。不管是金字塔模型还是冰激凌模型,其实都是都是一种测试组合或者策略。

5)金字塔模型的实践目标

08411cf223e314cbe02c24d3b8b9842f.png

如上图所示净化水的装置,也是通过不同的组合得到干净的水质,纱布过滤较大的浮尘和杂物,小卵石和石英砂净化泥沙,活性炭进行杀菌消毒,蓬松棉在此过滤细粒度的杂物,确保得到更干净的水(分层测试的每个层次都只有一个重点,解决一种问题)。

其实测试金字塔模型是分层测试策略,是通过按照单元测试、接口测试、UI 测试按照不同的目标要求,总结出来的一套最佳分层测试实践。

对于每一个层次所达成的目标也是在一定范围之内的,比如:

  1. 单元测试主要解决单功能或者函数的正确性;
  2. 接口测试确保各种异常输入输出的正确性;
  3. UI 测试主要保障产品符合用户需求,满足用户心理预期,可以给用户提供良好的使用体验。

通过金字塔模型进行组合测试,最大程度保障测试能够被快速执行,快速反馈,进而降低质量保障的总成本。 

6)橄榄球分层模型

既然单元测试实现难度较高,而在微服务架构下,还有一种新兴的备受推崇的橄榄球分层模型,即尽可能接口测试先行

7)谷歌如何进行分层测试?

谷歌采用 70/20/10 原则:70% 小型测试,20% 中型测试,10% 大型测试

  自动化测试相关教程推荐:

2023最新自动化测试自学教程新手小白26天入门最详细教程,目前已有300多人通过学习这套教程入职大厂!!_哔哩哔哩_bilibili

2023最新合集Python自动化测试开发框架【全栈/实战/教程】合集精华,学完年薪40W+_哔哩哔哩_bilibili

测试开发相关教程推荐

2023全网最牛,字节测试开发大佬现场教学,从零开始教你成为年薪百万的测试开发工程师_哔哩哔哩_bilibili

postman/jmeter/fiddler测试工具类教程推荐

讲的最详细JMeter接口测试/接口自动化测试项目实战合集教程,学jmeter接口测试一套教程就够了!!_哔哩哔哩_bilibili

2023自学fiddler抓包,请一定要看完【如何1天学会fiddler抓包】的全网最详细视频教程!!_哔哩哔哩_bilibili

2023全网封神,B站讲的最详细的Postman接口测试实战教学,小白都能学会_哔哩哔哩_bilibili

  总结:

 光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。

如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步

在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。

我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,

测试开发视频教程、学习笔记领取传送门!!

 

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

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

相关文章

YITH WooCommerce Questions and Answers电商网站问答功能高级版

点击阅读YITH WooCommerce Questions and Answers电商网站问答功能高级版原文 YITH WooCommerce Questions and Answers电商网站问答高级版的作用在您的产品页面中构建强大的问答部分,以便您的客户可以找到问题的答案并毫无疑问地购买。 您如何从中受益&#xff1…

Java中富文本转markdown

实现富文本即html语法转md,要求是尽可能展示效果一样,可以有少许误差,另外只实现了html中的body转md,其他标签如head等未实现。 大致思路是:通过jsoup工具获取html节点,再穷举替换。前提是熟悉html以及md语…

Doris 编译错误 error: No best alternative for libs/context/build/asm_sources

错误 error: No best alternative for libs/context/build/asm_sources解决方案 打开 doris/thirdparty/src/boost_1_81_0/libs/context/build/Jamfile.v2 在文件未添加 alias asm_sources: asm/make_arm_aapcs_elf_gas.Sasm/jump_arm_aapcs_elf_gas.Sasm/ontop_arm_aapcs_el…

LabVIEW远程监控

LabVIEW远程监控 远程监控的应用场景 从办公室远程监控工厂车间的测试设备。 在世界另一端的偏远地区监控客户现场的发电设备。 从公司远程监控外场的产品。 技术更新与方法 自2018年以来,NI对基于Web的应用程序支持大幅增长。一些最初的方法(如Lab…

【PyTorch】模型的基本操作

文章目录 1. 模型的创建1.1. 创建方法1.1.1. 通过使用模型组件1.1.2. 通过继承nn.Module类 1.2. 将模型转移到GPU 2. 模型参数初始化3. 模型的保存与加载3.1. 只保存参数3.2. 保存模型和参数 1. 模型的创建 1.1. 创建方法 1.1.1. 通过使用模型组件 可以直接使用模型组件快速…

3.镜像加速器

目录 1 阿里云 2 网易云 从网络上拉取镜像的时候使用默认的源可能会慢,用国内的源会快一些 1 阿里云 访问 阿里云-计算,为了无法计算的价值 然后登录,登录后搜索 容器镜像服务 点击容器镜像服务 点击管理控制台 点击 镜像工具->镜像…

【web安全】文件包含漏洞详细整理

前言 菜某的笔记总结,如有错误请指正。 本文用的是PHP语言作为案例 文件包含漏洞的概念 开发者使用include()等函数,可以把别的文件中的代码引入当前文件中执行,而又没有对用户输入的内容进行充分的过滤&#xff0…

5G入门到精通 - 5G的十大关键技术

文章目录 一、网络切片二、自组织网络三、D2D技术四、低时延技术五、MIMO技术六、毫米波七、内容分发网络八、M2M技术九、频谱共享十、信息中心网络 一、网络切片 5G中的网络切片是一项关键技术,它允许将整个5G网络分割成多个独立的虚拟网络,每个虚拟网络…

CodeBlocks添加头文件,解决fatal error: ui.h No such file or directory

问题描述 在使用codeblocks工具进行LVGL仿真过程中报错,找不到头文件 原因分析: 没有将头文件加入编辑器搜索的目录中,编译时找不到头文件。 解决方案: 将要包含的头文件的目录加进去就可以了

BCI-Two-streams hypothesis(双流假说)

双流假说 双流假设(Two-stream hypothesis)是关于视觉和听觉神经处理的模型。该假设最初由大卫米尔纳(David Milner)和梅尔文古德尔(Melvyn A. Goodale)于1992年的一篇论文中进行了初步描述,认为人类拥有两个独立的视觉…

【爬取音乐,并将音乐信息储存到数据库中】

爬取音乐,并将音乐信息储存到数据库中 确定音乐网站的url并分析网站分析二级页面创建数据库使用Xpath解析,进行多层爬取保存信息完整代码结果 确定音乐网站的url并分析网站 分析二级页面 创建数据库 # 创建一个链接对象 conn pymysql.connect(hostmaster, userroo…

虚拟网络技术:bond技术

网卡bond也称为网卡捆绑,就是将两个或者更多的物理网卡绑定成一个虚拟网卡。 bond的作用: 1.提高网卡的吞吐量 2.增加网络的高可用,实现负载均衡。 一、bond简介 bond技术即bonding,能将多块物理网卡绑定到一块虚拟网卡上&…

六、C语言数组

1. 数组的概念 数组是⼀组相同类型元素的集合;从这个概念中我们就可以发现2个有价值的信息: 数组中存放的是1个或者多个数据,但是数组元素个数不能为0。数组中存放的多个数据,类型是相同的。 数组分为⼀维数组和多维数组&#xf…

Prometheus 发现机制和告警

1.服务发现 Prometheus Server的数据抓取工作于Pull模型,因而,它必需要事先知道各Target的位置,然后才能从相应的Exporter或Instrumentation中抓取数据。在不同的场景下,需要结合不同的机制来实现对应的数据抓取目的。 对于小型的…

企业级 接口自动化测试框架:Pytest+Allure+Excel

1. Allure 简介 简介 Allure 框架是一个灵活的、轻量级的、支持多语言的测试报告工具,它不仅以 Web 的方式展示了简介的测试结果,而且允许参与开发过程的每个人可以从日常执行的测试中,最大限度地提取有用信息。 Allure 是由 Java 语言开发…

基于selenium工具刷b站播放量(请谨慎使用)

基于selenium工具刷b站播放量(请谨慎使用) from selenium import webdriver import time import random# 打开B站视频 url input("url:") if url "":url https://www.bilibili.com/video/BV1K64y1574T for i in range(50):# 设置…

【学习记录】从0开始的Linux学习之旅——字符型设备驱动及应用

一、概述 Linux操作系统通常是基于Linux内核,并结合GNU项目中的工具和应用程序而成。Linux操作系统支持多用户、多任务和多线程,具有强大的网络功能和良好的兼容性。基于前面应用与驱动的开发学习,本文主要讲述如何在linux系统上把应用与驱动…

参考信号速度变化存在跳跃时容易发生不稳定的阻抗调节

问题描述 当参考信号速度存在跳跃变化时,阻抗调节系统容易发生不稳定。这是因为阻抗调节系统需要根据参考信号的速度来调整其输出阻抗,以匹配负载阻抗,从而保持系统的稳定性。 当参考信号速度突然变化时,阻抗调节系统可能无法及…

『TypeScript』深入理解变量声明、函数定义、类与接口及泛型

📣读完这篇文章里你能收获到 了解TypeScript变量声明与类型注解掌握TypeScript函数与方法的使用掌握TypeScript类与接口的使用掌握TypeScript泛型的应用 文章目录 一、变量声明与类型注解1. 变量声明2. 类型注解3. 类型推断 二、函数与方法定义1. 函数定义2. 方法定…

Kubernetes权威指南:从Docker到Kubernetes实践全接触(第5版)读书笔记 目录

完结状态:未完结 文章目录 前言第1章 Kubernetes入门 11.1 了解Kubernetes 2 附录A Kubernetes核心服务配置详解 915总结 前言 提示:这里可以添加本文要记录的大概内容: Kubernetes权威指南:从Docker到Kubernetes实践全接触&…