精准测试-Vue前端调用链影响变更分析之一

news2024/11/26 18:22:51

Vue前端调用链影响变更分析之一

    • 一、背景
    • 二、工具调研
        • 1、 工具介绍:
        • 2、工具使用
    • 三、工具落地集成方案(待后续补充)
      • 变更影响较为简单的实现
      • 变更影响较为复杂的实现
      • 1、全局关系数据库的构建
      • 2、变更影响的简单实现
      • 3、变更影响的复杂实现

一、背景

去年做了Java的后端调用链影响评估,但是随着项目迭代越来越快,评估影响也越来越难以满足用户需求,主要有以下几个原因:
1、项目迭代越来越快,有些项目接口都不测试了,接口影响评估被忽略了,用户更期望接口影响了哪些页面
2、老板更关注页面的交互,测试重心偏向前端的交互
3、前端外放Bug相对于后端Bug多太多了,测试选择性忽略后端的评估影响
快手在MTSC精准测试分享会提过,前端(客户端)的精准测试相较于后端而言,具有更广泛的受益,更值得去研究。从当前的经验来说,前端的精准测试确实更具有性价比。

二、工具调研

公司前端项目主要基于Vue框架进行开发。查阅大量资料后,对于Vue项目,dependency-cruiser这款工具获更被广泛推荐。

1、 工具介绍:

git地址
在这里插入图片描述
特性介绍:
1、可以根据自己的规则去匹配生成调用链
2、可以生成调用链图片
3、可以自定义输出生成的结果,比如json,text等
4、支持命令行规划

特性介绍:

1、自定义规则生成调用链:允许用户根据自定义规则,灵活匹配并生成调用链。

2、可视化调用链图片输出:提供直观易懂的调用链图片展示,便于快速理解和分析项目中的依赖关系。

3、多样化输出格式:支持将生成的调用链结果以多种格式输出,包括json、text等,方便用户根据需要进行数据处理和展示。

4、命令行操作支持:提供命令行规划功能,用户可以通过命令行轻松执行调用链的生成和分析操作,也方便后续工具集成。

2、工具使用

切换到项目代码路径下,安装

npm install --save-dev dependency-cruiser
# or
yarn add -D dependency-cruiser
pnpm add -D dependency-cruiser

注意:nodejs版本需要大于等于20

生成配置

npx depcruise --init

生成页面的调用链

npx depcruise src --focus "^src" --output-type text >vue_depency.text

生成结果如下:

src/App.vue → @/composables/useVersionUpdate
src/App.vue → node_modules/ant-design-vue/lib/index.js
src/App.vue → node_modules/ant-design-vue/es/locale/zh_CN.js
src/api/baseConfig.js → @/xhr/index
src/api/clientManagement.js → @/xhr/index
src/api/common.js → @/xhr/index
src/api/cooperateInfo.js → @/xhr/index
src/api/financeProfit.js → @/xhr/index
src/api/financeRules.js → @/xhr/index

查某个组件的调用关系

cat vue_depency.text | grep editGmv.vue
src/screens/newStart/index.vue → @/screens/start/components/detail/editGmv.vue
src/screens/start/components/detail/editGmv.vue → @/api
src/screens/start/components/detail/editGmv.vue → node_modules/ant-design-vue/lib/index.js
src/screens/start/components/detail/editGmv.vue → node_modules/vue/dist/vue.d.mts
src/screens/start/components/detail/top.vue → src/screens/start/components/detail/editGmv.vue

从上面的图可以看到edit编辑组件被index、top组件调用了。->调用

可以加个参数过滤–exclude,node_modules模块的调用关系

npx depcruise src --focus "^src" --exclude node_modules --output-type text >vue_depency.text

三、工具落地集成方案(待后续补充)

1、跟后端一样,构建数据模型,通过neo4j图数据建立全局关系数据库,这样就可以通过模块查询影响的变更模块。

变更影响较为简单的实现

2、通过git diff 变更代码分析出变更文件,直接查询图数据库返回变更的影响模块范围,这个范围就很大。

变更影响较为复杂的实现

3、通过git diff 析出文件具体哪些行号变更,结合AST生成语法树,分析模块的语法数结构,结合变更行号,分析影响到了具体的某个组件。
4、分析样式变更影响范围
5、端到端的影响变更,后端接口可以分析影响变更的接口,通过接口反查页面调用情况,从而分析出接口的影响到的页面。

当然3、4、5下面两种情况实现起来比较复杂,目前还没有好的工具可以解决,期望实现的大佬可以指教下

大概的方案实现如下:

1、全局关系数据库的构建

与后端相似,先构建了数据模型,并利用neo4j图数据库建立了全局关系数据库,通过查询就可以快速识别并定位到变更所影响的模块。

2、变更影响的简单实现

利用git diff分析变更代码,从而识别出发生变更的文件。通过直接查询图数据库,能够迅速获取这些变更文件所影响的模块范围。这种方法较为简单,也容易落地,但所返回的影响模块范围较为宽泛。

3、变更影响的复杂实现

3.1、为了更精确地分析变更影响,需要进一步通过git diff细化到具体变更的行号。结合抽象语法树(AST)生成技术,分析模块的语法数结构,并结合变更行号,精确到具体影响了哪些组件。

3.2、补充样式变更影响范围分析。

3.3、端到端的影响变更,分析后端接口变更对前端页面的影响。通过接口反查页面调用情况,分析出接口变更所影响的页面,从而提供更全面的前后端变更影响分析。

当然,目前第三点的实现,有较大的技术挑战,尚未有成熟的工具能够完美解决,期望有实现的大佬可以分享分享

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

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

相关文章

Detla lake with Java--入门

最近在研究数据湖,虽然不知道研究成果是否可以用于工作,但我相信机会总是留给有准备的人。 数据湖尤其是最近提出的湖仓一体化概念,很少有相关的资料,目前开源的项目就三个,分别是hudi, detla lake, iceberg。最终选择…

二维码门楼牌管理应用平台建设:档案管理的新篇章

文章目录 前言一、二维码门楼牌管理应用平台概述二、阵地档案管理的现状与挑战三、二维码门楼牌管理应用平台在阵地档案管理中的优势四、二维码门楼牌管理应用平台的建设与实施五、二维码门楼牌管理应用平台的未来发展六、结论 前言 随着信息技术的飞速发展,二维码…

如何下载AndroidStudio旧版本

文章目录 1. Android官方网站2. 往下滑找到历史版本归档3. 同意软件下载条款协议4. 下载旧版本Androidstudio1. Android官方网站 点击 Android官网AS下载页面 https://developer.android.google.cn/studio 进入AndroidStuido最新版下载页面,如下图: 2. 往下滑找到历史版本归…

无人机+集群组网+单兵图传:空地一体化组网技术详解

空地一体化组网技术是一种结合了无人机、集群自组网和单兵图传等多种技术的先进通信解决方案。这种技术方案的主要目的是在前线事故现场和后方指挥中心之间建立一个高效、稳定的通信链路,以确保信息的实时传输和指挥的顺畅进行。 首先,前端视频采集部分&…

视频美颜SDK与主播美颜工具的技术原理与应用场景分析

在直播视频领域中,视频美颜SDK和主播美颜工具发挥着至关重要的作用。本文将探讨这些工具的技术原理及其在不同应用场景中的应用。 一、视频美颜SDK的技术原理 1.1 图像处理技术 视频美颜SDK的核心技术之一是图像处理技术。根据用户设定的美颜参数进行相应的调整。…

【办公类-22-13】周计划系列(5-5)“周计划-05 周计划表格内教案部分“节日”清空改成“节日“” (2024年调整版本)Win32

背景需求: 本学期19周,用了近10周的时间,终于把周计划教案部分的内容补全了(把所有教案、反思的文字都撑满一个单元格), 一、原始教案 二、新模板内的教案 三、手动添加文字后的样式(修改教案…

后端学习记录~~JavaSE篇(Module08-异常 上 )

总览: Java概述: 思维导图文件在本人个人主页上-----资源模块 资源详情(免费下载):Java学习思维导图异常篇资源-CSDN文库https://download.csdn.net/download/m0_61589682/89238330 整体展示:

2023年工业园区水环境管理典型案例名单公布

案例申报咨询: 中华环保联合会水环境治理专业委员会 联 系 人:王小雅 联系电话:13718793867 联系邮箱:wxyacef-water.com.cn

分类预测 | Matlab实现POA-BP鹈鹕算法优化BP神经网络多特征分类预测

分类预测 | Matlab实现POA-BP鹈鹕算法优化BP神经网络多特征分类预测 目录 分类预测 | Matlab实现POA-BP鹈鹕算法优化BP神经网络多特征分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.Matlab实现POA-BP鹈鹕算法优化BP神经网络多特征分类预测(Matlab实…

Linux 第十三章

🐶博主主页:ᰔᩚ. 一怀明月ꦿ ❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C,linux 🔥座右铭:“不要等到什么都没有了…

Crowd counting 系列NO.1—CSRNet

CSRNet:Dilated Convolutional Neural Networks for Understanding the Highly Congested Scenes 声明:博客是用latex写的,所以直接用图片来展示吧,效果是一样的。下载资源网上都很容易搜到,如需下载资源,请留言。

《ESP8266通信指南》9-TCP通信(Arudino开发)

往期 《ESP8266通信指南》8-连接WIFI(Arduino开发)(非常简单)-CSDN博客 《ESP8266通信指南》7-Arduino 开发8266的环境配置与示例代码烧录-CSDN博客 《ESP8266通信指南》6-创建TCP服务器(AT指令)-CSDN博…

C++:string 类

在C中定义一个 std::string 字符串可以采用以下几种方式: 1.使用字符串字面量初始化: std::string str "Hello, world!"; 2.使用构造函数初始化: std::string szStringB("Hello wolven"); 3.使用重复字符初始化&am…

UE4内存优化

内存查看命令​ 可以通过Stat MemoryPlatform查看对应的内存信息 Total Virtual虚拟内存的总量 Available Virtual可用的虚拟内存 Total Physical 物理内存的总量 Available Physical 可用物理内存总量 Peak Used Virtual 表示应用程序或游戏在运行过程中达到的虚拟内存使用峰…

android 分区存储(沙盒存储)适配总结

目录 一、分区存储概念 1.外部存储分类 2.分区存储如何影响文件访问 二、分区适配方案 1. 应用分区存储的文件访问规定 (1).应用专属目录--私有目录 (2).共享目录文件--公有目录 2.MediaStore API介绍 3.Storage Access Framework介绍 三、所有文件访问权限 四、总结…

十大USDT交易平台大全XEX交易所

USDT是一种基于比特币区块链网络的加密代币,主要运用于数字货币交易平台,以稳定币为主。USDT的核心价值在于其与真实货币的固定兑换比率1:1,所以被称为Tether。随着加密货币市场的不断壮大,越来越多的交易平台开始支持USDT&#x…

常用的4个Linux Shell脚本,实现运维自动化的基础

🐇明明跟你说过:个人主页 🏅个人专栏:《Linux :从菜鸟到飞鸟的逆袭》🏅 🔖行路有良友,便是天堂🔖 目录 一、前言 1、Linux的起源与发展 2、什么是Shell脚本 二、实…

go引入自建包名报错 package XXX is not in std和goland设置GO111MODULE提示冲突

首先在引入自建包的时候报错 查找网上的解决方法: 1、goland取消勾选Enable Go modules integration 2、set GO111MODULEoff 但是都没解决,而且更奇怪的是,我在cmd里面查看go env就显示set GO111MODULEoff 但是在goland里面的终端输入 go…

户外小型气象站

TH-QC10随着环境保护意识的日益增强,气象监测在环保工作中扮演着越来越重要的角色。户外小型气象站作为一种便携、高效的气象监测设备,为环保工作提供了有力的支持。本文将对户外小型气象站的功能、应用场景进行简要介绍。 一、户外小型气象站的功能 户…

第九届中国海洋大学信息安全竞赛 Re 睡Lite wp

还得自己查资料 相近的版本就行 可以找到一些字符,经过分析可以猜测sub_48就是类似sleep的减速函数 就算真用芯片也跑不出来,一直sleep 往下翻可以找到很多字符 拼在一起可以大致看出flag