什么是自动化测试分层?3个层次从高到低又是哪些?

自动化测试分层,可以理解为将测试任务分解为多个层次,并在每个层次中定义特定的测试任务和测试范围,通过这种方式,测试人员可以更好地管理和组织测试工作,确保测试的全面性和准确性。

自动化测试可以分解为3个层次,分别为单元测试、接口测试和UI测试,为了更好的理解分层的思想,可以借助下图:

每个层次都有不同的收益,收益排列顺序为:单元测试 > 接口测试 > UI测试。

一. 单元测试

自动化测试分层中的第一层。这一层中,测试人员主要关注代码级别的测试,包括函数、类和模块等单元的测试,单元测试通常由开发人员编写和执行,

目的:尽早发现和修复代码错误,提升开发代码质量,降低后期在问题修复上的成本投入。

阶段:开发阶段进行,编写代码的同时进行单元测试。

1. 优点

  • 可快速地发现和定位代码的问题和错误,提高开发效率和质量。
  • 可以在开发阶段进行,减少后期的测试成本和风险。
  • 提高代码的可维护性和可重用性,减少代码的冗余和重复。

2. 缺点

  • 单元测试只测试应用程序的最小单元,只能测试单元的内部逻辑,无法测试不同部分之间的交互和协作。
  • 单元测试需要测试人员具有一定的编程能力和技术储备。
  • 对于复杂的函数和功能,需要编写大量的单元测试用例,工作量较大,单元测试的工作量可能是开发工作量的几倍。

3. 常用工具

JUnit、TestNG、NUnit、PyUnit等。

二. 接口测试

接口测试是自动化测试分层中的第二层。这一层中,测试人员主要关注不同模块或系统之间的接口和交互测试。

目的:确保不同模块或系统之间的接口和交互正确。

阶段:集成测试或系统测试阶段进行。

1. 优点

  • 测试系统不同部分之间的交互和协作,确保系统的整体功能正确性。
  • 集成测试和系统测试阶段进行,覆盖更多的测试场景。
  • 发现系统中的潜在问题和错误,并提高测试效率和准确性。

2. 缺点

  • 自动化测试用例编写和维护的要求较高,需要大量的测试用例编写和维护工作。
  • 测试环境和测试数据的要求较高,需要搭建合适的测试环境和准备测试数据,同时需要引入测试框架,或需要二次开发,对测试人员的技术能力要求较高。
  • 不能完全替代人工测试,需要人工干预和判断。

3. 常用工具

Postman、SoapUI、RestAssured、HttpRunner等。

三. UI测试

UI测试层是自动化测试分层中的第三层。这一层中,测试人员主要关注系统的用户界面和用户体验。

目的:确保系统的用户界面和用户体验符合用户的需求和期望。

阶段:系统测试阶段进行

1. 优点

  • 测试应用程序的用户界面和用户体验,确保应用程序符合用户需求和期望。
  • 发现应用程序的界面和功能问题,提高应用程序的质量和用户满意度。

2. 缺点

  • 投入产出比较低,需要投入大量的资源和时间成本,最终的效果还可能不尽如人意。
  • 维护成本较高,因为应用程序的界面和功能可能会经常变化。
  • UI自动化测试在处理异常情况时较为困难,例如出现不可预测的弹窗或者不同的错误提示信息等。
  • 受技术限制,UI自动化测试需要使用特定的工具和技术,而不是所有的应用程序都能够被自动化测试。

3. 常用工具

Selenium、Appium、TestComplete、Robot Framework等。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

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

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

相关文章

@ControllerAdvice(实现全局异常、全局参数、请求参数预处理)

近期看到了ControllerAdvice这个注解,本身只是为了看下全局异常处理的,简单了解后发现可以分别与ExceptionHandler、ModelAttribute、InitBinder实现 全局异常、全局参数、请求参数预处理 的功能。 目录 一、全局异常处理二、全局参数处理三、请求参数预…

LPC804开发(11.ADC使用)

1.前言 刚刚研究ADC的时候发现芯片里面还有应该mrt 16位的定时器没有搞,那回头补上吧。下午研究了一下ADC的使用,我也只是能用上,这里我只是抛砖引玉一下吧,有需要的还请各位自行深入探究,我这里讲解的是软件触发模式…

一部分cpp的新特性:左右值的深入理解、函数返回引用报错详解以及在此过程中涉及到的指针和引用的部分区别和一点点关于std::array的简单介绍

目录 写在前面 explicit 关键字 左值(left value)和右值(left value) 引用类型作为函数的返回值 std::array 总结 致谢 写在前面 昨天博主完成了cpp基础的学习的最后一部分,cpp新特性,今天开始来逐一…

AI工具【OCR 01】Java可使用的OCR工具Tess4J使用举例(身份证信息识别核心代码及信息提取方法分享)

Java可使用的OCR工具Tess4J使用举例 1.简介1.1 简单介绍1.2 官方说明 2.使用举例2.1 依赖及语言数据包2.2 核心代码2.3 识别身份证信息2.3.1 核心代码2.3.2 截取指定字符2.3.3 去掉字符串里的非中文字符2.3.4 提取出生日期(待优化)2.3.5 实测 3.总结 1.简…

Unity SRP 管线【第九讲:URP 点光源与聚光灯】

文章目录 CPU数据搜集GPU数据使用光照计算 CPU数据搜集 我们只能支持有限数量的其他灯。并将这些灯光数据(位置、颜色、阴影强度、方向光光源、灯光遮蔽Probe、灯光层级Mask)发送到GPU以供场景中所有物体渲染使用。 //ForwardLights.cs 额外光源数量与…

字符串string详细使用(计算机考研复试上机知识点)

字符串去重&#xff1a; 字符串去重 #include <bits/stdc.h> using namespace std;int main() { a"11322";sort(a.begin(),a.end());a.erase(unique(a.begin(),a.end()),a.end());cout<<a<<endl;return 0; } //unique函数返回没有重复区间的区间…

uniform initialization(一致化初始化)

目录 std::initializer_list 和 std::array std::initializer_list 的作用&#xff1a; std::array 的作用&#xff1a; std::initializer_list 和 std::array 使用联系 标准库里面的initializer_list 使用 vector std::initializer_list 和 std::array std::initializer_…

RabbitMQ实战指南(二)—— 基本概念

RabbitMQ实战指南&#xff08;二&#xff09;—— 基本概念 RabbitMQ是一个开源的消息中间件&#xff0c;用于在应用程序之间进行可靠的消息传递。它遵循AMQP&#xff08;高级消息队列协议&#xff09;标准&#xff0c;支持多种编程语言和平台。 下面是RabbitMQ的基本概念&…

qt内存自动释放的两种情况

qt内存管理机制 QObject的parent 我们时常能看到QWidget或者其他的控件的构造函数中有一项参数parent&#xff0c;默认值都为NULL&#xff0c;例如&#xff1a; QLineEdit(const QString &contents, QWidget *parent nullptr); QWidget(QWidget *parent nullptr, Qt::…

vue3学习——初始化项目及配置

初始化项目 环境 node 16pnpm 8.0.0 命令 pnpm create vite进行以下选择 &#x1f447; – 项目名 – VUe – Ts – cd/目录 – pnpm run dev 浏览器自动打开 package.json 配置eslint 安装依赖包 pnpm i eslint -D npx eslint --init // 生成配置文件进行以下选择 &a…

【2024】大三寒假再回首:缺乏自我意识是毒药,反思和回顾是解药

2024年初&#xff0c;学习状态回顾 开稿时间&#xff1a;2024-1-23 归家百里去&#xff0c;飘雪送客迟。 搁笔日又久&#xff0c;一顾迷惘时。 我们饱含着过去的习惯&#xff0c;缺乏自我意识是毒药&#xff0c;反思和回顾是解药。 文章目录 2024年初&#xff0c;学习状态回顾一…

vue——实现多行粘贴到table事件——技能提升

最近在写后台管理系统时&#xff0c;遇到一个需求&#xff0c;就是要从excel表格中复制多行内容&#xff0c;然后粘贴到后台系统中的table表格中。 如下图所示&#xff1a;一次性复制三行内容&#xff0c;光标放在红框中的第一个框中&#xff0c;然后按ctrlv粘贴事件&#xff0…

掌上医院预约挂号缴费系统源码,与医院信息系统共享数据,实现在线预约挂号、移动支付、医保支付、检验检查报告查看、门诊病历查询等功能。

随着信息技术的发展和互联网的普及&#xff0c;越来越多的患者开始习惯于通过互联网获取医疗服务。网上预约挂号是近年来开展的一项便民就医服务&#xff0c;旨在缓解看病难、挂号难的就医难题&#xff0c;许多患者为看一次病要跑很多次医院&#xff0c;最终还不一定能保证看得…

MySQL数据控制语言DCL

MySQL数据控制语言DCL 目录 MySQL数据控制语言DCLDCL关键字1.事务事务的四大特性START TRANSACTION&#xff1a;开始事务ROLLBACK&#xff1a;回滚COMMIT&#xff1a;提交事务 2.用户权限CREATE USER&#xff1a;创建新的用户并指定权限DROP USER&#xff1a;删除用户ALTER USE…

深度强化学习(王树森)笔记10

深度强化学习&#xff08;DRL&#xff09; 本文是学习笔记&#xff0c;如有侵权&#xff0c;请联系删除。本文在ChatGPT辅助下完成。 参考链接 Deep Reinforcement Learning官方链接&#xff1a;https://github.com/wangshusen/DRL 源代码链接&#xff1a;https://github.c…

LeetCode —— 17. 电话号码的字母组合

&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️Take your time ! &#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️…

基于人体姿态的目标追踪实现

文章目录 概要人体姿态识别人体关键点转检测框实时跟踪器概要 这篇博文简单介绍了如何实现基于人体姿态的多目标跟踪算法。主要分为以下几个步骤: 基于FastDeploy实现人体姿态识别;将人体姿态转化为检测框;基于SORT算法实现目标跟踪。人体姿态识别 参考Fastdeploy实现。 模…

Ubuntu系统硬盘分区攻略(磁盘分区、RAID磁盘阵列、RAID阵列、固态硬盘分区、机械硬盘分区、swap分区、swap交换分区)

文章目录 分区需求分区方案分区顺序相关疑问swap分区不是应该放在最后吗&#xff1f;我安装系统分区的时候&#xff0c;上面有available devices&#xff0c;下面有create software raid(md)&#xff0c;我该用哪个&#xff1f;我available devices下面有个893G的固态&#xff…

Selenium自动化测试 —— 模拟鼠标键盘的操作事件

鼠标操作事件 在实际的web产品测试中&#xff0c;对于鼠标的操作&#xff0c;不单单只有click()&#xff0c;有时候还要用到右击、双击、拖动等操作&#xff0c;这些操作包含在ActionChains类中。 ActionChains类中鼠标操作常用方法&#xff1a; 首先导入ActionChains类&#…

Python OpenCV实现图片像素区域缩放

Python OpenCV实现图片像素区域缩放 前言项目安装OpenCV和Pillow思路代码编写 前言 遇到一个要将大量图片缩放成统一规格的难题&#xff0c;并且这些图片周围还有很多空白像素&#xff0c;所以用Python实现一下。 项目 安装OpenCV和Pillow pip install opencv-python pip …