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

    文章

    4766

    浏览量

    68458
  • 大数据
    +关注

    关注

    64

    文章

    8874

    浏览量

    137369

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

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

收藏 人收藏

    评论

    相关推荐

    光谱看谱镜分析图谱

    火电厂材质分析看谱镜图谱
    发表于 12-06 15:02 0次下载

    三星自主研发知识图谱技术,强化Galaxy AI用户体验与数据安全

    据外媒11月7日报道,三星电子全球AI中心总监Kim Dae-hyun近日透露,公司正致力于自主研发知识图谱技术,旨在进一步优化Galaxy AI的功能,提升其易用性,并加强用户数据的隐私保护。
    的头像 发表于 11-07 15:19 547次阅读

    矢量网络分析仪软件精准测试天线

    自动测试方法是通过系统集成的方式来实现,通过软件程控网分等硬件设备来完成S参数测试。NSAT-1000是专门针对各类射频器件性能测试的系统,为S参数
    的头像 发表于 08-29 17:50 342次阅读
    矢量网络<b class='flag-5'>分析</b>仪软件<b class='flag-5'>精准</b><b class='flag-5'>测试</b>天线

    FLEXBENCH通用测试软件平台

    测试报告。 FlexBench采用信息数据管理方式,高效、全面地采集、存储和管理历史测试数据,随时供用户分析。 FlexBench提供丰富的可视
    的头像 发表于 08-06 14:04 235次阅读
    FLEXBENCH通用<b class='flag-5'>测试</b>软件<b class='flag-5'>平台</b>

    ate测试设备:ATECLOUD测试平台的应用介绍

    随着手动测试以及传统自动测试系统逐渐无法满足目前市场上的测试要求,全新的自动测试系统逐渐兴起
    的头像 发表于 07-23 15:47 484次阅读
    ate<b class='flag-5'>测试</b>设备:ATECLOUD<b class='flag-5'>测试</b><b class='flag-5'>平台</b>的应用介绍

    三星电子将收购英国知识图谱技术初创企业

    在人工智能技术日新月异的今天,三星电子公司再次展现了其前瞻性的战略布局与技术创新实力。近日,三星正式宣布完成了对英国领先的人工智能(AI)与知识图谱技术初创企业Oxford Semantic Technologies的收购,此举标志着三星在提升设备端AI能力、深化个性化用户体验方面迈出了重要一步。
    的头像 发表于 07-18 14:46 508次阅读

    知识图谱与大模型之间的关系

    在人工智能的广阔领域中,知识图谱与大模型是两个至关重要的概念,它们各自拥有独特的优势和应用场景,同时又相互补充,共同推动着人工智能技术的发展。本文将从定义、特点、应用及相互关系等方面深入探讨知识图谱与大模型之间的关系。
    的头像 发表于 07-10 11:39 965次阅读

    基于TAE的数字钥匙自动测试解决方案

    通过自动测试执行软件TAE、总线监控分析工具VBA和程控电源,的联合调用,实现数字钥匙 的功能测试、性能
    的头像 发表于 05-29 15:15 930次阅读
    基于TAE的数字钥匙自动<b class='flag-5'>化</b><b class='flag-5'>测试</b>解决方案

    鸿蒙ArkUI-X跨语言调用说明:【平台桥接开发指南(Android)】

    平台桥接用于客户端(ArkUI)和平台(Android或iOS)之间传递消息,即用于ArkUI与平台双向数据传递、ArkUI侧调用平台的方法
    的头像 发表于 05-25 16:26 651次阅读
    鸿蒙ArkUI-X跨语言<b class='flag-5'>调用</b>说明:【<b class='flag-5'>平台</b>桥接开发指南(Android)】

    鸿蒙ArkUI-X跨语言调用说明:【平台桥接(@arkui-x.bridge)】

    平台桥接用于客户端(ArkUI)和平台(Android或iOS)之间传递消息,即用于ArkUI与平台双向数据传递、ArkUI侧调用平台的方法
    的头像 发表于 05-21 15:09 705次阅读
    鸿蒙ArkUI-X跨语言<b class='flag-5'>调用</b>说明:【<b class='flag-5'>平台</b>桥接(@arkui-x.bridge)】

    充电桩产业链分析报告

    电子发烧友网站提供《充电桩产业链分析报告.pdf》资料免费下载
    发表于 03-04 15:58 35次下载

    热重分析图谱怎么分析?#热重分析仪 #tga热重分析仪 #图谱分析

    分析分配图谱
    南京大展检测仪器
    发布于 :2024年02月29日 17:08:54

    利用知识图谱与Llama-Index技术构建大模型驱动的RAG系统(下)

    对于语言模型(LLM)幻觉,知识图谱被证明优于向量数据库。知识图谱提供更准确、多样、有趣、逻辑和一致的信息,减少了LLM中出现幻觉的可能性。
    的头像 发表于 02-22 14:13 1172次阅读
    利用<b class='flag-5'>知识图谱</b>与Llama-Index技术构建大模型驱动的RAG系统(下)

    知识图谱基础知识应用和学术前沿趋势

    知识图谱(Knowledge Graph)以结构的形式描述客观世界中概念、实体及其关系。是融合了认知计算、知识表示与推理、信息检索与抽取、自然语言处理、Web技术、机器学习与大数据挖掘等等方向的交叉学科。人工智能是以传统符号派
    的头像 发表于 01-08 10:57 898次阅读
    <b class='flag-5'>知识图谱</b>基础<b class='flag-5'>知识</b>应用和学术前沿趋势

    XR市场情况及上游产业链分析

    电子发烧友网站提供《AR/VR市场情况及上游产业链分析.pdf》资料免费下载
    发表于 12-13 11:05 7次下载
    XR市场情况及上游产业<b class='flag-5'>链分析</b>