文 /广发证券股份有限公司副总经理、首席信息官 辛治运
广发证券股份有限公司信息技术部董事总经理 李立峰
广发证券股份有限公司信息技术部 杜瑞罡 张世同 李娴 黄丛珊
软件测试是软件开发生命周期中的重要节点,功能测试作为确保软件满足其规定功能的核心方法,长期以来一直依赖于测试人员的专业知识和经验。随着软件系统规模的扩大和功能的日益复杂化,传统的功能测试方法正面临着巨大挑战:首先,手动创建测试用例的过程撰写较为耗时;其次,受限于测试人员的个人经验和偏见,可能导致测试用例的覆盖面不够广泛,难以触及所有潜在的边缘情况和异常流程。
近两年,大模型通过其强大的数据处理能力,在各种应用场景中发挥出巨大的价值。在这种背景下,利用人工智能技术,更全面和高质量的测试用例的研究应运而生。
大模型生成测试用例研究方向
在开展调研前,我们分析了测试用例的生成过程,测试人员拿到业务需求后,首先对需求文档解读,结合业务背景和对需求理解,按照等价类划分法、边界值分析法的用例设计方法设计用例。在用例产出过程中,比较耗时且容易遗漏的是根据需求拆分功能点及结合功能点撰写测试用例这两个部分。针对上述两点,我们希望利用大模型强大的文字分析和语言输出能力,突破瓶颈,实现更高效的需求拆分和更全面的测试用例生成。
1.规范业务需求描述,便于大模型理解需求。在人工智能领域,尤其是涉及自然语言处理的大模型,对输入数据的质量有着较高的要求。业务需求描述着用户需求、功能描述及业务规则等关键信息,是大模型理解业务需求并生成测试用例的基础。详细、准确的文字描述能让大模型有效地捕捉需求的核心要点和细节,能够更加精准地输出测试人员想要的信息。规范业务需求描述通常包含以下几点。一是需求背景说明,有助于大模型了解需求的背景。二是功能说明,为了让大模型进行更精准的解析,功能说明应详细描述,包括输入、处理过程和预期输出。语言描述方面,描述逻辑清晰,避免歧义和模糊表述,可读性强,避免使用图片截图等不可直接解析和理解的文件格式。三是交互设计说明,即对业务流程中交互方面的说明,便于大模型设计测试用例。
2.需求原子化拆分,大模型基于测试要点生成测试用例。提示词Prompt是我们跟大模型沟通的有效途径,精心设计输入给大模型的提示语句,可以引导大模型进行更完整、更准确的输出。为了让大模型设计的测试用例更精准,大模型根据提示词要求,对业务需求进行理解,自动识别和提取需求文档中的关键信息,如功能描述、业务规则等,对需求逻辑点划分,将复杂需求分解为更小的、不可再分的测试要点。接着大模型基于提示词的要求和用例样例,根据测试要点生成测试用例集。
大模型生成测试用例实现思路
广发证券已私有化部署开源大语言模型通义千问Qwen2,大模型通过HTTP API提供访问服务。大模型生成用例服务部署在广发证券质量团队自研的一站式自动化测试平台上,一站式通过http接口调用大模型的能力生成测试用例(如图所示)。
以下是利用大模型实现自动生成测试用例的流程图以及一些关键节点说明。
需求导入:测试输入需求描述,或导入需求文档,加载到自动化测试平台。
测试要点生成:大模型接收业务需求描述,并对需求进行理解、数据清洗、提取需求中的测试要点。
测试要点调整:测试人员对大模型梳理的测试要点进行初审和调整,防止提取的测试要点缺失,导致生成测试用例覆盖范围不全。
测试用例生成:大模型基于测试要点和业务规则生成测试用例,测试人员通过一站式前端输入业务规则后,业务规则加载到大模型向量知识库,大模型生成用例时会进行向量知识库检索,匹配到与需求相关的业务规则,生成的用例会更贴近业务场景。
集成测试管理平台:大模型生成测试用例后,测试人员可对用例进行优化调整,以此确保用例的准确性和适用性,最终形成一份适用于该业务需求的测试用例集,可集成到测试管理平台,实现与现有的测试管理工具和自动化测试框架无缝对接。
大模型生成测试用例操作流程
为了详细地描述我们如何利用大模型生成测试用例,我们以一个具体的业务需求为例来进行演示。
第一步:用户登录一站式自动化测试平台。
第二步:录入业务需求。公募基金持仓详情页、个人养老金持仓详情页、跨境理财通北向通基金持仓详情页、理财产品持仓详情页、私募产品持仓详情页的持有收益率计算公式少了一个百分号%,需要补上(平均成本法、摊薄成本法的持有收益率弹窗都需修改) 请帮我生成测试用例。
第三步:录入业务规则。持有收益率是一个计算公式说明,不是指当前产品的持有收益率;持有收益率 =( 最新净值/成本价-1)×100% 。
第四步:大模型基于需求描述和Prompt,理解需求并生成测试要点,展示在平台前端界面上,测试人员可以对测试要点进行调整。
大模型理解需求和拆分测试要点的Prompt :当我输入产品经理关于需求的描述后,需要您帮助将其分解为原子化的要点。这些要点将是非常具体和明确的,便于我基于它们生成测试用例。我把需求描述发送给你,请严格按照模板,生成测试要点,不要多余解释,测试要点模板如下。
功能点:功能点1
测试要点:(1)测试要点描述1
(2)测试要点描述2
第五步:基于第四步大模型生成的测试要点、业务规则和Prompt,多次调用大模型,生成测试用例,展示到平台前端界面上,测试人员可以对测试用例进行调整。
大模型基于测试要点生成测试用例的Prompt :作为测试用例生成专家,我希望我给你输入一个测试要点,你基于用户在知识库里的业务规则生成测试用例,测试用例生成方法可以是等价类、边界值等方法。
你需要输出测试用例概述、测试步骤,以及预期结果,测试用例格式请按照如下模板输出。
测试概述:验证客户年龄小于18岁,提示需临柜办理业务
前置条件:客户已开户
操作步骤:step1客户登录成功;
step2可以办理该业务;
预期结果:提示客户年龄小于18岁,需临柜办理。
最后,用例调整完成后可导出并集成至测试管理平台。整个用例生成过程形成需求录入,需求解读、测试要点拆分、测试用例生成、执行、导入测试管理平台一个完整的测试用例生命周期的闭环。
大模型生成测试用例效果总结及展望
通过上述示例,我们展示了大模型理解业务需求,识别测试要点并生成测试用例的过程。在需求文档比较详细的前提下,单个测试要点可以生成约3~5个测试用例,平均每个测试用例生成时间约5s左右(根据功能点的复杂度以及用例生成方法的不同而有所差异)。经过人工对多个需求的大模型生成的测试用例与手工撰写的测试用例进行对比测试,发现两者的用例相似度、匹配度较高,且大模型生成的用例可以基本覆盖业务重点流程和异常业务场景。也就是说大模型生成测试用例在一定程度上可以简化测试人员的工作,允许测试团队将更多的精力投入到更高层次的测试策略和质量保证活动中。当然我们在实践过程中也发现大模型存在以下不足。
首先,大模型对输入数据的质量有比较高的要求。模棱两可或者过于简单的需求描述有可能让大模型理解业务存在偏差,导致无法输出测试人员想要的信息。
其次,大模型可能无法准确地理解某个领域的专业知识和术语,即使我们输入一些业务规则和约束辅助大模型理解用户需求和意图,但在进行向量知识库搜索时,也有可能会匹配到低质量文本,导致输出的测试用例和用户的意图有所偏差。这种情况下需要我们在调用大模型进行交互时对提示词和大模型生成的数据进行微调。
总之,大模型还有比较长的进化之路,自动生成用例只是测试提效的一小部分,未来我们还会继续尝试更多的大模型应用,将大模型与日常测试过程更加紧密地结合起来。
(此文刊发于《金融电子化》2024年12月下半月刊)


财经自媒体联盟

4000520066 欢迎批评指正
All Rights Reserved 新浪公司 版权所有