0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于知识图谱的调用链分析精准化测试平台

vliwulianw 来源:哔哩哔哩技术 作者:熊林涛 2022-10-13 17:11 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

01 背景

传统软件测试技术主要基于测试人员对业务的理解,但由于经验的局限性、被测系统的复杂性以及与真实业务数据的差距,肯定存在测试不充分的情况,所以,虽然整个测试流程很规范,但最终软件质量还是不尽如人意。而随着分布式、微服务架构、大数据技术的出现,软件越来越复杂,迭代越来越快,测试的挑战性越来越大。测试人员急切的需要一套更加精确、高效的测试技术和方法。精准化测试技术就在这种背景下应运而生并快速发展。 精准化测试技术是一种可追溯的软件测试技术,通过构建一套计算机测试辅助分析系统,对测试过程的活动进行监控,将采集到的监控数据进行分析,得到精准的量化数据,使用这些量化数据进行质量评价,利用这些分析数据可以促进测试过程的不断完善,形成度量及分析闭环,实现软件测试从经验型方法向技术型方法的转型。

02 定义

在对精准测试下定义之前我们先看几个精准测试需要解决的问题:

如何刻画和度量有限测试集合的充分性

如何挑选有限测试集合并充分执行

如何让上述过程更加自动化、更加精准

那我们可以得到精准测试需要包含的几个特性:

全不全:通过代码覆盖率度量测试充分性

准不准:通过精准推荐代替人工进行变更影响范围评估指导用例回归

快不快:精准推荐自动化&用例执行失败快速定位等

然后我们可以将其定义为:精准测试是基于代码和用例关联关系的测试充分性度量和提升手段之一。

03 实现思路

首先贴一张流程图:

aa3d0764-4a2d-11ed-a3b6-dac502259ad0.png

整体使用有两条链路: 1.静态扫描+推荐测试范围,流程如下:

原始代码静态扫描,获取基础函数调用链

原数据解析,扫描结果存储至Neo4j

代码diff获取版本差异,图谱查询影响接口范围

测试范围推荐

2.动态追踪+推荐测试用例,流程如下:

业务代码插桩

插桩后执行业务/自动化测试用例

采集“用例-函数调用链”权重

代码diff获取版本差异

测试用例推荐

04 技术架构

4.1 技术选型

aa7a3346-4a2d-11ed-a3b6-dac502259ad0.png

4.2 测试范围评估实践

ab26edca-4a2d-11ed-a3b6-dac502259ad0.png

4.2.1

原始代码静态扫描,获取基础函数调用链

首先会有两轮扫描: 1. 自研算法获取函数的基础调用链,获取函数节点及调用关系

abdc61b4-4a2d-11ed-a3b6-dac502259ad0.png

2. AST扫描,获取函数节点补充信息

ac3bfc46-4a2d-11ed-a3b6-dac502259ad0.png

AST是抽象语法树(Abstract Syntax Tree)的简称,AST以树状形式表现编程语言的语法结构,树上每个节点都表示源代码中的一种结构。

4.2.2

原数据解析,扫描结果存储至Neo4j

在获取到调用链的graph数据后,遍历转换成存入Neo4j所需的cypher语句

ad1d7b3a-4a2d-11ed-a3b6-dac502259ad0.png

如上图所示,图谱最基本的组成单位,存在(代码所属包)-[包含]->(文件)-[包含]->(函数)-[调用]->(函数)的结构 在获取项目调用链原数据后,再深度遍历每一条调用链路采集每个包、文件、函数的对应关系,以及路径、所处位置、出参入参、注释、代码行等信息,写入Neo4j。

ad46901a-4a2d-11ed-a3b6-dac502259ad0.png

4.2.3

代码diff获取版本差异,图谱查询影响接口范围

通过git开放api,我们可以在git diff内获取两次commit对比

addd64ae-4a2d-11ed-a3b6-dac502259ad0.png

通过文件路径与函数名,我们可以找到对应的函数节点

ae767eb4-4a2d-11ed-a3b6-dac502259ad0.png

然后通过图谱向上追踪查询完整的调用链路,最终获取到影响的接口

ae93002a-4a2d-11ed-a3b6-dac502259ad0.png

4.2.4 测试范围推荐

可视化页面展示版本代码对比,与影响的接口(服务端)、页面/组件(客户端)

aecbdca6-4a2d-11ed-a3b6-dac502259ad0.png

4.3 测试用例推荐实践

b016c602-4a2d-11ed-a3b6-dac502259ad0.png

下面主要讲解调用链获取及加权部分

b03b0166-4a2d-11ed-a3b6-dac502259ad0.png

4.3.1 业务代码插桩

修改编译逻辑,在开始编译前通过AST解析插入覆盖率和Trace的采集器

b052c5a8-4a2d-11ed-a3b6-dac502259ad0.png

4.3.2 用例执行

通过代理服务执行测试用例,采集“用例-调用链”的映射关系

4.3.3 采集“用例-函数调用链”权重

对关联关系进行加权计算后,存入Neo4j。 下面举例几种不同的权重计算方式:调用次数加权

b0a883da-4a2d-11ed-a3b6-dac502259ad0.jpg

假如有一条测试用例,执行时经过了Api_1和Api_2两个接口 然后Api_1执行时经过了函数FuncA、FuncC、FuncE Api_2执行时经过了函数FuncB、FuncD、FuncE 我们可以理解为该条测试用例,对于函数A、B、C、D、E的调用次数加权分别为1、1、1、1、2业务模块加权这是半手工的方式,如果在用例管理系统中,有一条case属于“书架”模块,那我们可以将不同层级的代码,处于bookshelf目录下的函数,都与该case绑定一个“同模块(module_weight)”的关系(relationship)

b0d58010-4a2d-11ed-a3b6-dac502259ad0.jpg

文本相似度加权通过对测试用例库内的所有用例,进行分词、建立词库,使用tf-idf的方式计算用例与用例间的文本相似度,来计算用例的相似性

b0fe0dc8-4a2d-11ed-a3b6-dac502259ad0.jpg

此方案对测试人员编写用例时的要求较高,如果会有不同的测试人员去测试相同模块,因为书写习惯不一样,可能会导致case计算结果不准确,所以我们引入GCN计算case的相似性GCN(图卷积神经网络)计算用例相似性实际使用中,我们会采取不同的特征来训练GCN,用于计算不同场景的结果 在这里我们举一个简单的例子,用于计算case的相似性:

b119b104-4a2d-11ed-a3b6-dac502259ad0.png

1. 我们通过采集不同case对函数的调用层级,构成一个C × N的稀疏矩阵 (C:测试用例个数,N:函数节点数) 2. 将调用层级数取反,然后归一化,得到训练模型用的矩阵 3. 根据GCN的定义X'=σ(L ̃symXW)来定义GCN层,然后堆叠两层GCN构建图卷积网络 4. 训练完后,通过TSNE将输出层的score嵌入进行二维化处理,计算每个节点与节点的欧式距离,再存入Neo4j

b19796a0-4a2d-11ed-a3b6-dac502259ad0.png

4.3.4 代码diff获取版本差异

与步骤4.2.4一样,通过代码diff获取改动的函数节点,然后通过权重计算获取测试用例。

4.3.5 测试用例推荐

如果是业务用例则自动创建测试计划,并关联测试用例。 如果是自动化测试用例,则自动导入用例所处的文件、函数信息。

b1fbf474-4a2d-11ed-a3b6-dac502259ad0.png

05 落地效果

目前平台在MR、冒烟、提测、回归、上线等不同阶段,采取了8种不同的质量保障措施:

迭代时间由3周缩短至2周

版本平均需执行自动化用例数减少80%

回归测试阶段平均需执行用例数减少60%

覆盖率需统计代码减少90%

b244a21e-4a2d-11ed-a3b6-dac502259ad0.png

06 未来展望

随着增量用例的增多,数据量提高,进一步提高GCN的计算结果准确度

打造调用链代码染色+页面可视化功能,助力测试环境问题定位

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 代码
    +关注

    关注

    30

    文章

    4976

    浏览量

    74358
  • 大数据
    +关注

    关注

    64

    文章

    9093

    浏览量

    144047

原文标题:基于知识图谱的调用链分析精准化测试平台

文章出处:【微信号:软件质量报道,微信公众号:软件质量报道】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    通用自动测试系统:FCT、ATE、ICT、PCBA功能测试

    制造商完成对每一件产品的高效检测和精准判定。为了满足这些需求,通用的自动测试管理系统应运而生,提供了一个全面的解决方案。系统概述我们的通用测试管理系统(Test Manager)是一
    发表于 04-13 14:54

    实力认证!行云创新入围《AI 中国生态图谱 2025》大模型开放平台板块

    了中国 AI 产业全链路生态布局,是洞察国内 AI 技术发展与产业落地的核心行业风向标。行云创新凭借在 AI 领域深厚的技术积淀、全栈产品能力及丰富的行业落地经验,成功 入围图谱第三层模型层・大模型开放平台板块 。 成立于 2016 年的行云创新,始终秉持
    的头像 发表于 03-04 14:25 316次阅读
    实力认证!行云创新入围《AI 中国生态<b class='flag-5'>图谱</b> 2025》大模型开放<b class='flag-5'>平台</b>板块

    小艺开放平台平台功能

    选择插件、工作流,响应用户需求。LLM模式适用于简单对话、知识问答、基础内容生成等场景。 工作流模式 工作流模式是一种基于规则流程的智能体编排方式。开发者将复杂任务拆解为有序的规则步骤(如数据获取
    发表于 01-30 15:24

    风机异响 “找不准”?声纹图谱分析,故障点精准定位

    风机异响找不准,本质是没读懂设备的 “求救信号”。声纹图谱分析就像给风机配了 “私人医生”,24 小时不间断监测,把隐性故障转化为明确数据,让每一次维修都精准高效。
    的头像 发表于 12-04 09:45 642次阅读
    风机异响 “找不准”?声纹<b class='flag-5'>图谱分析</b>,故障点<b class='flag-5'>精准</b>定位

    RK 平台 DDR 测试终极指南:标准步骤 + 全场景适配方案

    DDR 作为 RK 平台数据传输的 “主动脉”,其稳定性与性能直接决定产品体验。尤其在内存颗粒迭代快、多场景应用普及的当下,一套通用且精准的 DDR 测试方法,能有效规避兼容性问题、提前发现隐性故障
    的头像 发表于 11-19 07:08 1655次阅读
    RK <b class='flag-5'>平台</b> DDR <b class='flag-5'>测试</b>终极指南:标准<b class='flag-5'>化</b>步骤 + 全场景适配方案

    光伏组件IV曲线测试仪:解锁光伏组件性能的“能量图谱仪”

    光伏组件IV曲线测试仪:解锁光伏组件性能的“能量图谱仪”柏峰【BF-CV1500】光伏组件的输出特性是决定电站发电效率的核心,而IV(电流-电压)曲线作为组件性能的“指纹图谱”,包含了短路电流、开路电压、最大功率点等关键参数
    的头像 发表于 10-15 10:49 1217次阅读
    光伏组件IV曲线<b class='flag-5'>测试</b>仪:解锁光伏组件性能的“能量<b class='flag-5'>图谱</b>仪”

    BW-4022A半导体分立器件综合测试平台---精准洞察,卓越测量

    精准洞察,卓越测量---BW-4022A半导体分立器件综合测试平台 原创 一觉睡到童年 陕西博微电通科技 2025年09月25日 19:08 陕西 在半导体产业蓬勃发展的浪潮中,每一颗微小的半导体
    发表于 10-10 10:35

    智慧科研新纪元:善思创兴引领AI与自动变革

    的领先者,致力于为新能源、新材料领域打造安全、高效、智能的软硬件一体平台,携手科研伙伴共同开启下一代高效科研新范式。 ​突破边界:薄膜材料表征的精准洞察​ 善思创兴的 薄膜力学断层扫描测试
    发表于 09-05 16:55

    零代码自动测试平台ATECLOUD功能详解

    平台通过三大优势显著区别于传统系统: 1.零代码快速构建:无需编程即可实现测试方案搭建; 2.即插即用设备生态:兼容主流测试仪器,降低集成门槛; 3.全维度数据智能:定制报告模板与数
    的头像 发表于 08-20 17:32 1562次阅读
    零代码自动<b class='flag-5'>化</b><b class='flag-5'>测试</b><b class='flag-5'>平台</b>ATECLOUD功能详解

    自动测试平台中TestCenter和ATECLOUD有哪些差异?

    TestCenter和ATECLOUD虽然都是自动测试平台,但两者在试用领域、技术架构、功能特性等方面具有很大的差异性,两者的面向客户也有所不同。本文将简单分析两个
    的头像 发表于 07-25 09:54 861次阅读
    自动<b class='flag-5'>化</b><b class='flag-5'>测试</b><b class='flag-5'>平台</b>中TestCenter和ATECLOUD有哪些差异?

    自动测试平台ATECLOUD推出AI算法功能

    作为纳米软件自主研发的自动测试平台,ATECLOUD 始终致力于为用户提供高效优质的测试解决方案。面对5G、AI等前沿技术的迭代发展,平台
    的头像 发表于 07-22 16:10 986次阅读
    自动<b class='flag-5'>化</b><b class='flag-5'>测试</b><b class='flag-5'>平台</b>ATECLOUD推出AI算法功能

    信而泰×DeepSeek:AI推理引擎驱动网络智能诊断迈向 “自愈”时代

    ,还是工业协议时序混乱,均可完整还原端到端业务会话链条,为智能分析提供坚实基础。2.AI根因定位:推理引擎驱动秒级精准诊断l 知识图谱驱动:将网络拓扑、流量统计、历史趋势、会话日志、异常告警、威胁情报等
    发表于 07-16 15:29

    AI智能眼镜产业链分析

    电子发烧友网站提供《AI智能眼镜产业链分析.pdf》资料免费下载
    发表于 05-19 17:25 595次下载

    【「零基础开发AI Agent」阅读体验】+Agent开发平台

    开发平台有4大特点 1)技术集成性 Agent开发平台集成了大模型调用、提示词工程、插件、线上编程运行环境、知识库、工作流、数据库等多种功能模块,为开发者提供了一站式的技术解决方案,能
    发表于 05-13 12:24

    轻轻松松学电工(识图篇)

    内容介绍 结合广大电工人员的实际需要,主要介绍了常用电工电路识图的基础知识、方法及技巧,内容包括常用电气符号、电工识图基本方法,以及识读供配电系统图、建筑电气图、电力拖动系统电气图、PLC梯形图
    发表于 04-30 17:18