得物基于AIGC生成测试用例的探索与实践

news2025/1/7 23:01:51

一、背景

随着人工智能技术的快速发展,尤其是在自然语言处理(NLP)、计算机视觉和生成对抗网络(GANs)等领域,AIGC(AI Generated Content)得到了广泛应用,这一技术的进步使得内容创作变得更加高效与多样化,推动了各个行业的创新与变革。对于测试而言,基于AI进行测试用例生成也逐渐从梦想变成现实。

传统问题

目前我们在编写测试用例时,大部分依赖人工编写,在实际编写过程中主要存在以下问题:

  1. 用例编写量大:传统的测试用例编写方法通常会耗费测试人员大量的时间和精力,编写效率不高;
  2. 编写颗粒度粗:由于时间有限,手工编写测试用例可能存在部分测试场景的遗漏,如边界场景、异常场景等;
  3. 维护成本高:不同测试同学编写习惯不同,导致部分用例的可读性较差,增加后期维护成本。

因此,借助AI技术自动生成初步的测试用例,随后由测试人员进行审核和优化,可以显著缩短用例的准备时间,提高测试工作的效率。

目标

利用AI技术自动生成测试用例,缩短编写测试用例的时间;

通过AI辅助生成测试用例,提升测试用例的覆盖范围和可读性。

二、方案

技术实现

技术实现.jpg

“RAG:指的是检索增强生成(Retrieval-Augmented Generation),这是一种结合了信息检索和文本生成的技术,通过检索相关信息来增强生成模型的能力,提高生成文本的相关性和准确性。”

“LLM:指的是“大型语言模型”(Large Language Model),这些模型是基于深度学习技术构建的,专注于自然语言处理(NLP),能够处理和生成自然语言文本数据。”

核心功能介绍

核心功能介绍.jpg

整个AI生成测试用例的功能主要分为三个方面:

  1. 用户输入:提供AI对话框,可供用户从需求PRD中复制粘贴功能点,实现快速输入;
  2. 测试点分析整合:提供智能提取测试点和专家经验介入的能力,用户可以对AI生成的测试点进行灵活调整;
  3. 用例生成:基于调整好的测试点自动生成对应的测试用例,并可一键同步至平台,方便后续的管理和使用。

使用流程

使用流程.jpg

需求输入

1.选择相关需求的用例模块,点击“AI生成用例”按钮跳转至AI生成用例交互页面:

需求输入.jpg

2.从需求PRD复制功能点,粘贴到输入框并发送:

粘贴框发送.jpg

完善测试点

1.评估AI提取出的测试点,选择可用的测试点并采纳到左侧的测试点列表中;

2.手动增/删/改左侧测试点列表中的测试点:

测试点.jpg

生成用例

1.点击生成测试用例按钮,等待测试用例生成;

2.测试用例生成成功后,可直接对生成的用例进行增/删/改,点击保存用例按钮将生成的用例保存;点击同步平台按钮将生成的用例同步至用例平台:

3.用例同步至平台采用的增量同步方式,不会将平台已有的用例覆盖。

生成用例.jpg

三、探索实践

实践策略

时间策略.jpg
我们制定了以上4种实践策略,分别在A业务域和B业务域进行功能的试用,探索AI辅助生成测试用例的落地方案,具体包括以下内容:

“A业务域主要面向公司的客户服务团队,包括一线客服、技术支持人员以及管理层等,提供了包括工单管理、实时聊天、知识库和客户反馈分析等多种功能,以提升客户支持的效率和服务质量,确保客户始终能够获得优质的服务体验。当前已上线的产品主要涉及Web端、PC端和APP端。

B业务域主要致力于运用产品、技术、数据等手段,全面提升公司的效率,该业务域的用户群体涵盖了公司各个部门的员工,规模量级庞大,涉及上万名员工的日常工作需求,目前已上线的产品主要集中在Web端,包括项目管理、内部协同和沟通、办公效率等多种功能。”

  1. 小范围试点:分别在A业务域和B业务域内开展小范围试点工作,评估AI生成测试用例的有效性和全面性,以满足不同业务域的实际业务需求;
  2. 持续推进:采用“以点带面”的策略,根据不同的业务场景和用户需求,分阶段推进AI生成测试用例的应用,逐步扩大应用范围,优化用户体验,确保AI工具能够适应多样化的业务需求;
  3. 迭代复盘:在试用过程中,定期进行迭代复盘,通过收集迭代数据和用户反馈并分析,探讨后续改进和优化的方向,并持续验证优化效果;
  4. 多维度指标量化:制定准确度、覆盖度、使用率等多个维度的评价指标,分析这些指标的变化趋势,全面衡量AI生成测试用例的潜在表现,确保其能够满足日常使用需求。

交互标准

需求分类和预处理

不同复杂度的需求其用例生成效果存在差异,根据需求的复杂程度,建立简单需求/复杂需求划分标准,对比不同需求的用例生成效果,优先选取生成效果较好的简单需求进行功能的使用。参考需求划分标准如下:

简单需求:研发资源<=7人日、测试资源<=1人日的需求

复杂需求:研发资源>=7人日、测试资源>=1人日的需求

其次,部分需求的PRD文档存在功能点描述简单、含糊不清等情况,直接复制这些功能点进行AI用例生成,用例生成的准确性和全面性都较差。因此,可以先对这种情况的输入进行预处理,列举出具体的功能点和预期结果,再输入到AI进行测试用例生成,提升用例生成的效果,具体示例如下:

需求分类和预处理.jpg

持续分批对话

AI生成用例时,可以分点输入功能点,以生成更多、更详细的测试点,包括一些边界、异常场景等,提高采纳率和覆盖率。具体的对比效果如下:

  • 全部功能点输入:

全部功能点输入.jpg

  • 功能点分点输入:

功能点分点输入.jpg

专家经验输入

  • **输入命令自动调整测试点:**目前平台支持用户输入命令并结合上文信息对生成的测试点进行调整,在初始生成的测试点基础上,输入一些简单的命令,例如“帮我拓展一下测试点X”、“合并测试点XX”等,优化AI生成测试点的生成效果。

自动调整.jpg
自动调整2.jpg

  • **手动调整测试点:**目前AI生成的测试点无法做到完全覆盖所有的功能点,可能存在生成的测试点不全或测试点描述不准确的情况,可以在AI生成的测试点基础上,人工介入补充遗漏的测试点以及修改描述不准确的测试点,提升AI生成用例的效果。

手动调整.jpg
手动调整2.jpg

关键项推进

量化生成效果

问题描述:AI生成的评价指标只有采纳率,难以全面评估AI生成测试用例的具体效果。

解决方案:在已有采纳率的基础上,新增覆盖率、需求使用率两个评价指标,分别刻画AI生成用例的实际覆盖程度以及各域AI生成用例功能的具体使用情况,其具体计算公式如下:

  • 需求使用率 = 使用AI生成用例的需求 / 子域总需求 * 100%(研发自测需求除外)
  • 采纳率 = 评估后采纳用例 / AI生成用例 * 100%
  • 覆盖率 = 评估后采纳用例 / 人工调整扩充后的总用例 * 100%

量化生成.jpg
后续改进:目前仍然无法衡量具体的提效效果,后续会配合平台探究更多的评价数据和指标,例如单需求的用例生成时间、用例编写理论提效时间等。

降低生成时长

问题描述:测试点较多时,AI生成测试用例时间太长,有时界面卡死,一直显示正在生成中。
降低生成时长.jpg

解决方案:更换新的AI,切换为GPT-4o-mini,优化了AI生成用例的时间,一般生成时间不超过1min;同时解决了因平台刷新机制导致的界面卡死无法实时刷新的问题。

提高生成精度

问题描述:AI生成的测试用例准确度较低,且存在较多重复用例。

解决方案:引入RAG技术,将业务域的历史存量用例作为AI的背景知识库信息,检索生成更准确的测试用例。同一需求接入RAG前后的生成效果对比如下:

  • 需求1:

接入RAG前:AI总结测试点5条,AI生成11条用例,采纳8条用例,采纳率:72%;

接入RAG后:AI总结测试点6条,AI生成14条用例,采纳12条用例,采纳率:85%;

接入RAG前:

需求一前.jpg
接入RAG后:

需求一后.jpg

  • 需求2:

接入RAG前:AI总结测试点7条,AI生成23条用例,采纳12条用例,采纳率:52%;

接入RAG后:AI总结测试点8条,AI生成17条用例,采纳16条用例,采纳率:94%;

接入RAG前:

需求2前.jpg
接入RAG后:

需求2后.jpg

优化交互体验

问题描述:目前用例平台所使用的AI自由prompt的能力太差,无法联系上文信息持续进行命令提示,优化所生成的测试点。

解决方案:平台对功能进行优化,修复了AI丢失上下文关联的缺陷,支持自由prompt,AI能够根据用户输入命令结合上文信息对生成的测试点进行调整:

初始输入

初始输入.jpg
输入命令,结合上文信息拓展测试点:

拓展测试点.jpg

四、实践结论

在上述行动标准的实施和关键项推进的同时,我们对A业务域和B业务域持续多个迭代的AI生成测试用例数据进行了梳理整合,评估AI生成用例的目标达成情况 。

数据对比

迭代维度

  • A业务域与B业务域1-6迭代的需求使用率、采纳率、覆盖率统计如下:

迭代维度1.jpg

  • A、B业务域各迭代需求使用率、采纳率、覆盖率的变化趋势:

迭代维度2.jpg
迭代维度3.jpg
迭代维度4.jpg

需求维度

  • 简单需求和复杂需求AI生成测试用例的采纳率、覆盖率,以及总体的使用人数、使用需求数的数据统计如下:

需求维度1.jpg
需求维度2.jpg

结论

通过分析对比需求维度和迭代维度的数据图表,可以得出以下几点结论:

  1. 效率提升明显:目前对简单需求使用AI生成用例的平均采纳率和覆盖率维持在较高水平,能够覆盖核心功能点和场景,测试同学只需要补充一些异常/非功能分析的用例即可,基本可以节约40%的用例编写时间;
  2. 生成准确率高:AI生成测试用例的采纳率提升尤为明显,最近迭代两域的采纳率在90%以上,这表明AI生成的功能用例绝大部分都是可用且有效的;
  3. 生成全面性不足:各迭代的平均覆盖率还有较大提升空间,AI生成的测试用例难以覆盖全部业务场景,仍然需要测试人员手动补充覆盖;
  4. 复杂需求生成效果差:A业务域在试用初期引入了一些较为复杂的需求进行实验,导致采纳率有所下降,从侧面反映出目前AI在复杂需求上的用例生成效果还有待提升。

五、总结&规划

总结

综上所述,本文的探索成功实现了得物基于AIGC在质量保障方面的创新应用,通过这种AI生成测试用例的方式,我们能够显著降低人工编写用例的时间和成本,提升测试用例的准确性和规范性。后续我们会不断优化AI生成测试用例的功能,确保其能够生成更准确的用例,覆盖更广的测试场景,在未来的测试工作中发挥更大的价值。

未来规划

  1. AI生成准确性和全面性提升:针对数据对比结论所反映出的复杂需求采纳率和覆盖率偏低的问题,后续可以从以下两个方向进行优化:
  • 接入不同的AI对比用例生成效果,供用户自由切换选择;
  • 增加输入途径,充分结合技术文档、需求评审、技术评审等渠道,提升用例生成的准确性和全面性。
  1. 研发自测需求功能推广:研发同学可以使用AI快速生成可靠的测试用例,减少自测的时间和人力成本,让研发能够更专注于业务逻辑的开发,同时提升自测的有效性和全面性;
  2. 历史存量用例相似度匹配检索:分析历史用例,计算相似度并进行匹配,以便生成新测试用例时推荐出最相关的存量用例,同时提供可视化界面,帮助测试人员直观地查看和选择存量相似用例,以提高用例的复用率;
  3. 支持多模态数据输入:支持从不同类型的数据源(如文本、图像、视频等)获取需求信息,增强AI生成测试用例的效果,生成与视觉交互相关的测试用例;
  4. 记录用户操作持续反哺大模型:建立用户行为分析机制,记录用户对AI生成用例的增删改操作,分析用户的实际需求和偏好,利用用户的反馈数据来不断训练和优化模型,生成更贴合用户编写习惯的用例,提升生成质量。

文 / 南瓜&齐

关注得物技术,每周更新技术干货

要是觉得文章对你有帮助的话,欢迎评论转发点赞~
未经得物技术许可严禁转载,否则依法追究法律责任。

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

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

相关文章

HTML5实现好看的二十四节气网页源码

HTML5实现好看的新年春节元旦网站源码 前言一、设计来源1.1 主界面1.2 关于我们界面1.3 春季节气界面1.4 夏季节气界面1.5 秋季节气界面1.6 冬季节气界面 二、效果和源码2.1 动态效果2.2 源代码 源码下载结束语 HTML5实现好看的二十四节气网页源码&#xff0c;春季节气&#xf…

Hadoop集群之间实现免密登录

实现虚拟机之间能够互相登录&#xff0c;比如可以在hadoop1上面登录hadoop2。 第一步&#xff1a;执行”ssh-keygen -t rsa”命令&#xff0c;生成该虚拟机的密钥 第二步&#xff1a;密钥文件存储在/root/.ssh目录&#xff0c;执行cd /root/.ssh命令进入存储密钥文件的目录&am…

国产编辑器EverEdit - 常用资源汇总

1 国产编辑器EverEdit-常用资源汇总 EverEdit是一款国产文本编辑器&#xff0c;历经超过15年的更新和维护&#xff0c;拥有不输业界顶级商业文本编辑器(EmEditor、UltraEdit)的实力&#xff0c;甚至在某些方面的功能更强(当然&#xff0c;各有千秋)&#xff0c;开发者对文本编辑…

C# 枚举格式字符串

总目录 前言 当前文章为 C# 中的格式设置(格式化字符串) 大全 中的一个小章节。 一、概述 1. 基本信息 可以使用 Enum.ToString 方法&#xff0c;新建表示枚举成员的数字值、十六进制值或字符串值的字符串对象。枚举格式说明符不区分大小写。 二、自定义数字格式说明符详解…

SQL-Server链接服务器访问Oracle数据

SQL Server 链接服务器访问 Oracle 离线安装 .NET Framework 3.5 方法一&#xff1a;使用 NetFx3.cab 文件 下载 NetFx3.cab 文件&#xff0c;并将其放置在 Windows 10 系统盘的 C:Windows 文件夹中。 以管理员身份运行命令提示符&#xff0c;输入以下命令并回车&#xff1a; …

Microi吾码|开源低代码.NET、VUE低代码项目,表单引擎介绍

Microi吾码&#xff5c;开源低代码.NET、VUE低代码项目&#xff0c;表单引擎介绍 一、摘要二、Microi吾码介绍2.1 功能介绍2.2 团队介绍2.3 上线项目案例 三、Microi吾码表单引擎是什么&#xff1f;四、Microi吾码表单引擎功能4.1 模块引擎 - 由表单引擎驱动4.2 流程引擎 - 由表…

自动化立体库安全使用管理制度完整版

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。欢迎大家到本文底部评论区留言。 新书《智能物流系统构成与技术实践》人俱乐部 完整版文件和更多学习资料&#xff0c;请球友到知识星球【智能仓储物流技术研习社】自行下载。 以下是《…

ArcGIS中怎么把数据提取到指定范围(裁剪、掩膜提取)

最近&#xff0c;经常能收到怎么把数据提取到指定范围、栅格数据怎么裁剪、矢量数据怎么裁剪、栅格数据怎么掩膜提取的咨询。 下面是我对这个问题的解决思路&#xff1a; 对于矢量数据&#xff1a; ①首先把数据加载进来 ②软件界面上面的工具栏找到→地理处理→裁剪&#x…

stm32的掉电检测机制——PVD

有时在一些应用中&#xff0c;我们需要检测系统是否掉电了&#xff0c;或者要在掉电的瞬间需要做一些处理。 STM32内部自带PVD功能&#xff0c;用于对MCU供电电压VDD进行监控。 STM32就有这样的掉电检测机制——PVD(Programmable Voltage Detecter)&#xff0c;即可编程电压检…

QT:控件属性及常用控件(2)-----按钮类控件及显示类控件

文章目录 QT关于qrc一个蛋疼的问题一、按钮类控件1.PushButton1.1 给按钮加图标1.2 给按钮加快捷键 2.RadioButtion2.1 单选题2.2 关于状态2.3 多组单选 3.Check Box4.Tool Button 二、显示类控件1.Lable1.1 文本、图片显示1.2 Label格式1.3 设置伙伴(绑定伙伴关系) 2.LCDNumbe…

逆向入门(2)C篇-基础知识

C基础 1、在C中&#xff0c;函数的变量是从右往左传递的&#xff0c;也就是test(x,y)&#xff0c;先传入y&#xff0c;再传x。 2、变量的分类&#xff1a; &#xff08;1&#xff09;全局变量。在编译的时候就已经确定了内存地址和宽度&#xff0c;变量名就是内存地址的别名…

【C语言】_assert断言

目录 1. assert功能 2. 使用assert判指针有效性 3. assert的参数 4. NDEBUG宏与assert机制的关闭 5. Debug版本与Release版本 1. assert功能 assert ( ) 是assert.h头文件定义的宏&#xff0c;用于在运行时确保程序符合指定条件&#xff1a; 如果不符合&#xff08;条件…

在Unity中用Ab包加载资源(简单好抄)

第一步创建一个Editor文件夹 第二步编写BuildAb&#xff08;这个脚本一点要放在Editor中因为这是一个编辑器脚本&#xff0c;放在其他地方可能会报错&#xff09; using System.IO; using UnityEditor; using UnityEngine;public class BuildAb : MonoBehaviour {// 在Unity编…

【可实战】Bug的判定标准、分类、优先级、定位方法、提交Bug(包含常见面试题)

一、Bug相关概念 &#xff08;一&#xff09;bug判定标准 &#xff08;二&#xff09;常见 Bug 分类 &#xff08;三&#xff09;bug优先级 1.bug严重程度与优先级的关系 有些很严重的Bug&#xff0c;只在极端的条件下才出现&#xff0c;用户碰到的概率很低&#xff0c;这种情…

C语言:调试的概念和调试器的选择

所谓调试&#xff08;Dubug&#xff09;&#xff0c;就是跟踪程序的运行过程&#xff0c;从而发现程序的逻辑错误&#xff08;思路错误&#xff09;&#xff0c;或者隐藏的缺陷&#xff08;Bug&#xff09;。 在调试的过程中&#xff0c;我们可以监控程序的每一个细节&#xff…

30分钟搭建 Typecho 个人博客教程

Typecho是一款PHP博客程序&#xff0c;相比于WordPress&#xff0c;Typecho显得更加的轻量级和简洁。现在越来越多的人倾向于用Typecho来搭建个人博客——众所周知&#xff0c;能跑WordPress的机器都不便宜。 Typecho是一款国人团结打造的开源博客系统&#xff0c;和WordPress…

【软考网工笔记】计算机基础理论与安全——网络安全

病毒 Melissa 宏病毒 1. 是一种快速传播的能够感染那些使用MS Word 97 和MS Office 2000 的计算机宏病毒。 2. 前面有**Macro** 表示这是宏病毒&#xff1b; 3. 宏病毒可以感染后缀为.xls的文件&#xff1b;Worm 蠕虫病毒 1. 通常是通过网络或者系统漏洞进行传播。 2. 利用信…

数字图像处理 三 空间滤波

空间滤波是一种图像处理技术&#xff0c;它通过对图像像素及其邻域进行运算&#xff0c;利用均值&#xff0c;高斯&#xff0c;梯度&#xff0c;拉普拉斯等线性滤波和中值&#xff0c;最大最小&#xff0c;双边滤波等非线性滤波改变像素值&#xff0c;实现图像的平滑&#xff0…

记录一次电脑被入侵用来挖矿的过程(Trojan、Miner、Hack、turminoob)

文章目录 0、总结1、背景2、端倪3、有个微软的系统更新&#xff0c;就想着更新看看&#xff08;能否冲掉问题&#xff09;4、更新没成功&#xff0c;自动重启电脑5、风险文件&#xff08;好家伙命名还挺规范&#xff0c;一看名字就知道出问题了&#xff09;6、开机有一些注册表…

ES-深度分页问题

ES分页查询基本语法 # 分页 GET /hotel/_search {"query": {"match_all": {}},"sort": [{"price": "asc"}],"from": 0,"size": 10 }上面是ES查询hotel这个索引库的语句&#xff0c;其中做了分页查询&a…