第三方信息技术应用创新测评机构:【当AI开始编写测试用例:我们如何评估机器生成用例的有效性?】
如何评估机器生成的测试用例,确实是一个随着AI深度介入软件开发测试而浮现的重要课题。它要求我们超越对传统人工测试用例的评估思维,建立一套全新的、多方式的测试标准。
下面梳理了一个层次化的评估框架,希望能为你提供参考:
🧪 测试代码正确性:生成的测试代码本身是否合规、可执行,编译通过率、语法解析成功率、测试代码可执行且能通过/失败
🎯 测试有效:测试是否足够充分,能否发现潜在缺陷,代码覆盖率(如行覆盖率)、变异得分、缺陷检测能力
📚 语义相关:测试是否紧扣被测代码的原始需求和设计意图,需求覆盖度、测试和代码功能/行为的关联度
👨💻 工程实用:测试代码是否易于开发者理解、维护和集成,可读性、可维护性、和现有测试框架的集成度

🔬 评估详解
上述评估框架中的四个方面,构成了评估AI生成测试用例的基础。以下更加深入探讨:
1. 测试代码正确性:
这是测试用例有效的最基本前提。如果生成的代码无法通过编译或运行,后续所有评估都无从谈起。
编译和解析:首要指标是编译通过率。对于脚本语言,则关注语法解析的成功率。研究表明,通过融入抽象语法树(AST)等代码结构信息,可以显著提升生成测试的编译率。
执行和断言:测试用例必须能正常执行并给出明确的通过或失败信号。一个看似完美但永远不会失败的测试,在实际中是毫无价值的。
2. 测试有效:
这是用于衡量测试用例质量。回答了一个重要问题:这些测试能多大程度地保证代码正确性?
代码覆盖率:这是一个经典指标,如行覆盖率,它衡量了测试执行了被测代码的多少比例。有研究通过引入结构感知,使得AI生成的测试能实现更高的行覆盖率。
变异测试:这是一种更严格的评估方法。它通过主动在源代码中植入缺陷(创建“变异体”),来检查测试用例是否能发现这些潜在的bug。能够杀死的变异体比例越高,说明测试的故障检测能力越强。
需求验证:对于根据自然语言需求生成的测试,其有效性体现在能否准确验证规格说明中的各种情景,包括正常路径(正面测试用例)和异常路径(负面测试用例)。
3. 语义相关:
AI生成测试的一个常见陷阱是生成看似合理但和代码实际功能无关的测试。关注测试的语义正确性。
需求追溯:评估生成的测试用例是否全面覆盖了需求规格说明书中的所有功能点。
行为契合:测试的逻辑必须和被测代码单元的预期行为高度一致,确保测试在验证正确的逻辑。
4. 工程实用:
一个在理论上完美的测试,如果难以被开发者理解和维护,其生命周期也将非常短暂。
可读和可维护性:测试代码应命名清晰、结构明确、包含有意义的注释。这对于后续的代码审查和测试套件维护有很重要。
集成便利:生成的测试应能轻松融入项目现有的构建流程和持续集成(CI)系统中。
🛠️ 提升AI测试报告生成质量
为了实现上述评估目标,业界正在探索多种技术路径:
优化模型输入:为模型提供更丰富的代码上下文信息是提升生成质量的重要。例如:
利用语言服务器协议(LSP):像LSPRAG这样的框架,利用成熟的LSP后端,能够为LLM实时提供精准的符号定义和引用信息,从而实现跨编程语言的高质量测试生成,显著提升代码覆盖率。
融入代码结构:在模型微调阶段引入抽象语法树(AST) 和数据流图(DFG) 等结构化信息,可以让模型更好地理解代码的语法和语义依赖关系,从而生成编译率更高、覆盖更全面的测试用例。
建立评估体系和标准:随着AI生成内容的普及,建立标准化的评测体系看起来会很重要。这包括:
专项测试数据集:针对特定测试生成任务构建的数据集(如基于Methods2Test构建的新数据集),为客观比较不同模型的表现提供了基础。
国家标准和国际标准:近年来,我国发布了首个GB/T 45288.2-2025《人工智能大模型第2部分:评测指标和方法》 ,国际电信联盟(ITU-T)也发布了F.748.44基础模型评估标准。这些标准虽然主要针对大模型本身,但其对功能性、准确性、可靠性的评测思路,为构建测试用例的评估框架提供了参考。
更多推荐



所有评论(0)