节省时间的分层测试,到底怎么做?

news2024/11/15 21:35:53

图片

为什么要做分层测试

从软件工程的角度,结合软件开发的V模型、MVC架构、测试金字塔,综合起来便于理解。

1、借鉴与软件开发的V模型

从V模型的底部往右上方向,先做单元测试,再做集成测试一直到最后的验收测试。

在这里插入图片描述

2、来源于MVC架构

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写。

我们可以简单理解为V是用户看到的界面,C是中间逻辑,M是数据。对于现在流行的微服务SOA来说,V就是前端WEB或者APP,C就是中间密密麻麻的各种接口,M就是最下层的数据

在这里插入图片描述

3、来源于测试金子塔

testing pyramid,类似于V模型,把测试行为从下往上分为单元测试、组件测试、集成测试、系统测试、手工测试。对于测试金字塔,越往下靠越容易自动化,越靠下成本越低,越靠下效率越高。

在这里插入图片描述

分层测试的好处

定位快:测出哪一层问题,很明确。此方法在处理线上问题则比较常用。

针对性强:在用例设计和测试执行时,更具有针对性,思维更清晰。

加强对代码实现逻辑的理解,拓展测试技能。

节约时间成本:

1)分层测试是一个迭代的过程,测试可以提前介入,不用等到最后面才介入,缩短整体项目时长。

2)提前暴露问题,缩短BUG查找时间和修复BUG的时间。

怎么做分层测试

分层测试的测试方法还是原来的测试方法,但对测试人员的代码能力还有自动化测试水平有较高要求,同时要求测试人员和开发团队真正的理解敏捷开发和敏捷测试,甚至要求开发团队达到开发即测试、测试即开发的能力。

手工测试:需要测试界面、微服务的接口和数据库。

测试开发:还需要关注分层的自动化测试、单元测试、持续集成和持续发布。

在测试的时候,不仅要关注需求文档中的需求,还要考虑一些隐藏的需求,以及开发的实现,开发采用不同的实现方式,会产生不一样的测试点。

要更多的站在用户的角度去考虑用户的使用场景,流程设计是否合理,交互是否顺畅,文字是否有歧义,提示是否明确而友好。

开发采用了什么技术、什么框架,设计是否合理、是否高效、是否有扩展性、流程是否可控,是否考虑了异常情况、数据处理是否合理,是否存在性能问题、安全性有没有考虑等等。

针对上面的分层结构,我们在设计测试用例的时候,需要考虑以下图所示的情况(粗略,还需要拓展):

在这里插入图片描述

通常测试人员和开发打交道较多,那么分层测试可以是下图这种模式:

在这里插入图片描述

实施方法

1、单元测试

由开发人员在代码实现完成后进行,QA主要进行接口和UI层的测试。

2、接口层测试

项目启动时,相关人员评估是否需要QA介入接口测试;交付节奏快、代码量很小的项目,可以直接从UI层验证,不需要QA人员进行接口测试;其他项目根据需要进行接口测试。
根据开发计划,确定执行接口测试的时间。

参与到接口评审,根据接口文档,确定被测接口。

设计case、准备数据、执行测试。

跟踪Bug。

3、UI层测试

前后端联调完毕后,进入接口层测试。UI层测试除了关注UI交互的问题,更重要的是站在用户的角度,从UI层完成端到端业务流程验证,易用性、稳定性等因素也是这个层面测试需要考虑的事情。

4、分层测试自动化

从接口层、UI层选择回归频率高的业务流程做自动化回归,降低回归测试成本。

不是所有业务流程都适合做自动化测试,自动化用例维护也有成本,选择自动化目标时,应考虑选择不频繁变动的流程。

UI层的变动大,维护成本高,从自动化用例的比例来看,也应该遵循金字塔的结构,UI层应该是占比最少的,把更多的自动化回归放到接口层、单元测试层。


资源分享

下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

SSM房屋租赁系统

SSM房屋租赁系统该项目采用的技术实现一、系统功能技术栈二、关键代码1.首页运行截图总结该项目采用的技术实现 后台框架:Spring、SpringMVC、MyBatis UI界面:jQuery 、JSP 数据库:MySQL 提示:以下是本篇文章正文内容&#xff…

C++ 三大特性之-多态

简介 面向对象有三大特性:封装、继承、多态 多态:一个接口,多种实现 C有两种多态形式: 静态多态动态多态 静态多态 静态多态:编译期间的多态,即在编译阶段就能确定好最终要调用哪个方法。静态多态的函数调…

python简单实现网络爬虫

前言 在这一篇博客中,我会用python来实现一个简单的网络爬虫。简单的爬取一下一些音乐网站、小说网站的标题、关键字还有摘要!所以这个爬虫并不是万能爬,只针对符合特定规则的网站使用。(只使用于爬标题、关键字和摘要的&#xff…

[附源码]计算机毕业设计基于SpringBoot的在线作业批改系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

SORT4 SORT项目代码解析

SORT系列 SORT-1 项目配置运行-WINDOWS SORT-2 卡尔曼滤波推导和示例 SORT-3 匈牙利算法和SORT类 SORT-4 SORT项目代码解析 本项目地址 SORT项目逐层详解 main if __name__ __main__# 设置交互模式、参数、文件路径|# 创建 SORT 对象mot_tracker Sort(max_age, min_hits,io…

Python学习基础笔记二十七——内置函数

内置函数的概念:就是python直接提供给你使用的所有函数。 1、作用域相关: 1)globals(): 获取全局变量的字典; 2)locals():获取执行本方法所在命名空间内局部变量的字典; 2、迭代器…

(二)SpringCloud+Security+Oauth2 微服务初步集成

一 引言 本文主要好介绍了SpringCloudSecurityOauth2 的初步集成,项目源码地址oauth2.0集成案例,以下案例主要是核心源码的解释,案例源码请查看案例源码 二 项目结构说明 oauth-server oauth认证中心 oauth-client oauth客户端 oauth-nacos 注册中心和配置中心 oauth-common …

IDM究竟有哪些优势 IDM的几种超实用功能

作为一款体积只有10M的下载软件,IDM却常年霸占着各软件评测榜的前列。它的界面简洁清爽,使用过程中无弹窗、无广告,小小的体积竟能将下载速度提升5倍!该软件一进入中国市场,便受到了广大用户的追捧,被大家亲…

谁说Python只能用来敲代码,用Python来制作游戏你了解吗?

前言 Python的热度现在一直高居不下,比如,完成同一个任务,C语言要写1000行代码,Java只需要写100行,而Python可能只要20行。 那python还可以用来干什么?你知道哪些呢? (文末送读者…

HTML静态网页作业——基于html+css+javascript+jquery+bootstarp响应式成都家乡介绍网页

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法,如盒子的嵌套、浮动、margin、border、background等属性的使用,外部大盒子设定居中,内部左中右布局,下方横向浮动排列,大学学习的前端知识点和布局方式都有…

Python采集电商平台数据信息

环境介绍 python 3.8pycharm 2021专业版selenium >>> pip install selenium3.141.0 Python当中的模块 操作 浏览器的驱动Chrome浏览器Chromedriver 浏览器驱动 操作浏览器 让 浏览器帮助我们去执行一些操作 模块准备 from selenium import webdriver # 操作浏…

数钥科技遭用户投诉:“招集令”被指息费高,曾有助贷平台被处罚

融资难、融资贵,一直世界性难题。在此背后,是信息不对称的问题。 而利用信息不对称,不少助贷机构游走其中,也带来了一些新的问题,比如高额服务费、砍头息等,侵害消费者个人信息也是另外一个问题。此前&…

SQL——基础查询

查看列 查看特定列 select 姓名 from 学生表select 姓名,性别,家庭住址 from 学生表查看所有列 select * from 学生表使用计算列 求和 select sum(price) from fruit求个数 select count(price) from fruit求价格提升 select price*1.05 from fruit求库存数量 select (…

useState源码解读 及 手撕 useState 实现

文章目录useState源码解读 及 手撕 useState 实现useState源码分析逻辑图源码解读mountStatemountWorkInProgressHook 函数updateStateupdateReducer 函数实现对比图实现效果只声明一个 hook重复调用同一个 hook声明多个不同的 hooks体验收获useState源码解读 及 手撕 useState…

MySQL分区表对NULL值的处理

GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。作者:王权富贵 1.概述 MySQL的分区表没有禁止NULL值作为分区表达式的值,无论它是列值还是用户提供的表…

CPP 核心编程4-重载递增运算符

#include "iostream"using namespace std;//递增运算符重载 //自定义整型 class MyInteger {friend ostream &operator<<(ostream &cout, MyInteger mi);public:MyInteger() {m_Num 0;}//重置前置运算符 返回引用是为了对同一个数进行操作MyInteger …

LSTM内部结构及前向传播原理——LSTM从零实现系列(1)

一、前言 作为专注于时间序列分析的玩家&#xff0c;虽然LSTM用了很久但一直没有写过一篇自己的LSTM原理详解&#xff0c;所以这次要写一个LSTM的从0到1的系列&#xff0c;从模型原理讲解到最后不借助三方框架自己手写代码来实现LSTM模型。本文本身没有特别独到之处&#xff0c…

Vue学习:el 与data的两种写法

el两种写法 法一&#xff1a;建立了联系 <!-- 准备容器 --><div id"root"><h1>hello,{{name}} </h1> <!-- {{插值语法}} --></div><script>new Vue({ el: #root,data: {name:Amy},});</script> 法二&#xff1a…

论文投稿指南——中国(中文EI)期刊推荐(第1期)

&#x1f680; EI是国际知名三大检索系统之一&#xff0c;在学术界的知名度和认可度仅次于SCI&#xff01;&#x1f384;&#x1f388; 【前言】 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊。其中&#xf…

java计算机毕业设计ssm特大城市地铁站卫生防疫系统5i80c(附源码、数据库)

java计算机毕业设计ssm特大城市地铁站卫生防疫系统5i80c&#xff08;附源码、数据库&#xff09; 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持…