背景
随着人工智能(AI)技术的快速发展,特别是大型语言模型(LLM)的问世,软件开发和测试领域正在经历前所未有的变革。AI的强大能力使得自动化和智能化测试生成成为可能,这不仅提高了测试的效率,还显著增强了测试的覆盖率和准确性。
在传统的测试工作中,编写功能用例通常是一个耗时且需要高度专业知识的任务。测试人员和开发人员必须深入理解业务逻辑,手动编写大量的测试用例,以确保产品的各个功能正常运行。这种手动编写过程往往面临两个主要挑战:一是由于业务复杂度和测试场景的多样性,难以确保覆盖所有可能的边界情况;二是编写过程繁琐,容易出现人为疏漏,导致测试质量不高。
AI的诞生,特别是像GPT这样的语言模型,为这些挑战提供了新的解决方案。大模型具备强大的语言理解和生成能力,能够快速学习和掌握复杂的业务逻辑,自动生成高质量的测试用例。通过将AI融入测试生成过程,不仅可以显著减少人力投入,还能提升测试的全面性和准确性。
在我们的功能用例平台中,我们计划引入专属的AIcopilot,这一AI助手能够帮助测试人员和开发人员便捷地生成测试用例。通过与AI的紧密合作,质量部门可以极大地提升测试效率,释放更多的人力资源用于其他关键任务。
AI的价值不仅在于它能够自动生成测试用例,更在于它能与测试人员协同工作,提供智能化的建议和优化,使测试过程更加智能、灵活和高效。通过充分利用AI的能力,我们正在重新定义功能用例编写的方式,为测试工作带来了革命性的变革。
目标
提升测试效率
通过引入AI自动生成功能用例,将测试生成效率提升50%以上。AI能够在短时间内生成全面的测试用例,减少手动编写的时间和成本,提升覆盖率和测试质量。
指导初级测试人员
通过AIcopilot为初级测试人员提供实时指导,帮助其快速掌握测试用例编写的关键技能。目标是使初级测试人员的学习和产出效率提高30%,缩短其成长为独立测试人员的时间。
确保用例质量与一致性
借助AI分析和优化功能,确保生成的测试用例质量达到团队标准,并使不同测试人员编写的用例一致性提升40%,从而减少因个人差异带来的测试漏洞。
实践落地
前提条件:高途有统一的功能用例平台,用例设计模式是思维导图(如下图),所以我们的整体落地实践方案需要贴近功能用例平台。
在将AI融入功能用例生成的过程中,我们设计并实现了一系列关键技术和策略,以确保AI能够高效、准确地生成高质量的测试用例且可无缝接入高途功能用例平台。以下是主要的实现方案:
1. Query重构
在AI生成功能用例的过程中,输入的query是决定生成结果准确性的重要因素。为了确保AI能够理解并准确生成对应的测试用例,我们对用户输入的query进行了重构设计。主要策略为:树形检索-对某一个节点进行AI用例生成时,对树根进行检索组装,提高信息充分性。
2. Prompt优化
Prompt是驱动AI生成的核心输入。为了生成高质量的测试用例,我们对Prompt进行了深度优化。我们通过实验和反馈,精细设计了Prompt的模板,使其能够引导AI生成具有明确结构、清晰逻辑的测试用例。
我们优化后的Prompt不仅包含了query重构的结果,还加入了业务上下文、边界条件和历史测试用例等信息,同时也限定了生产的内容格式。这样,AI生成的用例更加贴合实际业务需求,并且覆盖了多种测试场景和特殊情况,也能快速采纳进测试用例集。
以下是我们最终效果比较好的一份提示词:
Role:
// 定义好AI的角色
Goals:
// 描述清楚用例需要的关键因素
Constraints:
// 定义好用例生成结果的约束条件,比如说,你希望生成的结果是一个json结构体,需要在此处描述清楚
Skills:
具备细腻的思维,能够挖掘各种交互场景,擅长根据市场变化挖掘用户场景,并全面考虑问题。
Examples and Workflows:
// 给出需要AI进行参考的对象以及编写用例的思路
3. 模型筛选
在AI功能用例生成的实现过程中,选择合适的AI模型至关重要。我们测试和筛选了多种大型语言模型,最终选定了最适合功能用例生成的模型版本。
在筛选过程中,我们考虑了模型的生成能力、语言理解水平、响应速度以及对复杂业务逻辑的处理能力。最终选定的模型不仅具备强大的生成能力,还能快速适应不同业务场景的变化,确保生成的测试用例既符合规范,又具有创新性和覆盖广度。
4. RAG(检索增强生成)使用
为了进一步提升生成用例的准确性和实用性,我们引入了RAG(Retrieval-Augmented Generation)技术。RAG通过检索相关的业务文档和历史测试用例,为生成的Prompt提供了丰富的上下文信息。
在实际的生产过程中,为了保证当前需求的信息不丢失,我们对知识库进行了拆分;系统知识库为当前需求的文档拆解,然后使用query进行检索,降低用例幻视的几率,检索出来的结果直接作为提示词的一部分,保证当前需求知识在生成时不丢失;自定义知识库用于存储历史的功能用例,该知识库的内容仅作为AI参考。
5. 图片识别
实际的业务需求文档中,存在大量文字描述少,内容都在图片上的情况。得益于LLM的快速发展,AI生成的测试用例不仅能处理传统的文本输入,还能覆盖与图片相关的复杂场景,使测试覆盖率和全面性进一步提升。
6. 友好的生产过程
①高效可视化的AI生成过程
大模型接口主要提供两种生成模式:阻塞式响应 和 流式响应。由于功能用例生成要求结果的标准化,我们选择了 阻塞式响应 模式。同时,为了提升生成效率,我们采用了多节点并行生成的策略。
为满足这些要求,我们为每个生成节点设置了状态标识,并通过 WebSocket 实时将这些状态反馈到用例图谱的每个节点上。这样,用户可以直观地看到每个节点的生成进度和状态,使整个生成过程更加可视化和透明。
②多样性的知识库解析
在我们的友好交互设计中,知识库上传解析功能是一个重要的亮点。它不仅支持上传 .docx 文件,还能解析 Wiki 链接,大大扩展了可处理的知识类型。用户可以轻松地将业务文档和知识库内容上传到系统中,AI会自动解析这些文档并提取关键信息。
解析过程不仅高效便捷,还具有极高的准确性。系统能够准确理解文档中的复杂结构和业务逻辑,并将其转化为可用于生成测试用例的知识点。这种强大的解析能力确保了知识库的内容能够充分被利用,为生成高质量的功能用例提供了坚实的基础。
通过这种设计,用户无需进行繁琐的手动输入或调整,只需简单上传或提供链接,系统便会自动处理并生成可视化的用例信息,极大提高了用例生成的效率和精度。
③自定义小助手-知识库
在我们的技术方案中,我们引入了一个可自定义的小助手,专门用于知识库的管理和利用。用户可以根据实际需求,定制小助手的功能和行为。例如,可以设置小助手的解析范围、优先级和知识库的更新频率,也可以根据业务属性更好的优化prompt。通过这些定制选项,用户能够确保小助手在特定业务场景下提供最相关和高效的支持。
④多次生成-优中选优
用户可以不断补充信息进行用例生成,并在过程中持续翻阅历史生成记录,以便调优和改进。最终,用户可以从所有记录中挑选出最合适的用例,形成自己的用例集。
落地效果
当前高途的用例集AI使用率基本在20%左右,用例节点AI占比基本在30%左右;
适用性强的方向,数据更为可观;部分业务域,用例集AI使用率达到50%,用例节点AI占比达到67%;
落地过程数据推演
1、实际项目数据概览
推演过程中数据明细:
2、数据结论
①向量化的文档精准度较高
产品按照规范格式编写,AI在识别的过程中摘取的多个相关的片段内容作为参考(需求描述清晰度很重要),整体采纳率会提高到一个新的高度80%左右
②片段生成精准度
用户主动摘取片段生成文档时,场景用例的平均精准度在70%以上。但复杂需求因缺乏上下文,精准度不稳定,区间值在20%-98%之间。
③非标准文档影响
若产品不按标准格式编写,AI解析时随机性增加,导致用例采纳率降至30%-40%。
PS:说明
①片段生成局限:片段式生成对复杂需求不适用,精准度受限。
②调试与使用差异:调试阶段采纳率通常高于实际使用,差距约为20%。
后续规划
①由于需求文档的质量对功能用例生成具有极大的影响,我们计划与产品部门合作,共同制定详细的文档规范(不断加入新需求模板,适应多个业务,双向协作模式)。这些规范将确保需求文档的准确性、完整性和易读性,从而为生成高质量的功能用例提供坚实的基础。通过统一的文档标准,我们能够明确需求目标,使得文档内容能够直接转化为有效的测试用例,进一步提升用例的实用性和覆盖率。这一举措将有助于实现文档与用例目标的一致,推动测试工作的高效开展。
【模板1】
功能需求
● 需求1
○ 需求点
○ 需求详情
○ UI
● 需求2
○ 需求点
○ 需求详情
○ UI
【模板2】
【模板.......】
②为了将AI功能用例有效融入每一个业务域,我们需要推动自定义小助手-知识库的全面落地。这个小助手是实现功能用例智能化的关键抓手,能够自动解析和管理来自不同业务领域的知识库内容。无论是业务文档、历史记录还是行业规范,自定义小助手都能精准提取并整合相关信息,为每个业务域生成高质量的测试用例提供支持。
通过这一功能,我们能够确保AI生成的用例不仅覆盖广泛,还能深入到每一个业务领域的具体需求中,实现用例生成的智能化和全面化。这将大大提升测试用例的相关性和实用性,推动测试过程的高效优化。
END