7. 质量与测试
7.1 提示词单元测试
测试框架
提示词单元测试用于验证Prompt模板的效果和质量。
测试框架设计
# 提示词测试框架示例
import pytest
from codegen.testing import PromptTester
class TestCodeGenerationPrompt:
def setup_method(self):
self.tester = PromptTester()
self.prompt_template = "code_generation_v1"
def test_simple_function_generation(self):
"""测试简单函数生成"""
result = self.tester.test(
template=self.prompt_template,
input_data={
"language": "python",
"requirement": "创建一个计算两数之和的函数"
},
expected_output={
"contains": ["def", "add", "return"],
"syntax_valid": True,
"executable": True
}
)
assert result.passed, result.message
def test_complex_class_generation(self):
"""测试复杂类生成"""
result = self.tester.test(
template=self.prompt_template,
input_data={
"language": "python",
"requirement": "创建一个用户管理类,包含增删改查方法"
},
expected_output={
"contains": ["class", "User", "def", "create", "delete", "update", "get"],
"syntax_valid": True,
"has_docstring": True
}
)
assert result.passed, result.message
测试指标
- 语法正确率:生成代码的语法正确率
- 功能正确率:生成代码的功能正确率
- 代码质量:代码质量评分
- 响应时间:模型响应时间
- 成本:模型调用成本
测试报告
{
"test_suite": "code_generation_prompt_v1",
"total_tests": 100,
"passed": 85,
"failed": 15,
"metrics": {
"syntax_accuracy": 0.92,
"function_accuracy": 0.85,
"quality_score": 0.88,
"avg_response_time": 1.2,
"avg_cost": 0.05
},
"failed_tests": [
{
"test_name": "test_complex_api_generation",
"reason": "生成的代码缺少错误处理",
"suggestion": "在Prompt中添加错误处理要求"
}
]
}
测试用例设计
测试用例分类
- 功能测试:测试Prompt是否能生成正确的功能代码
- 边界测试:测试边界情况和异常情况
- 质量测试:测试生成代码的质量
- 性能测试:测试响应时间和成本
- 兼容性测试:测试不同语言、框架的兼容性
测试用例示例
# 测试用例配置示例
test_cases:
- name: "simple_function"
description: "测试简单函数生成"
input:
language: "python"
requirement: "创建一个计算两数之和的函数"
expected:
syntax_valid: true
contains: ["def", "add", "return"]
executable: true
- name: "class_with_methods"
description: "测试带方法的类生成"
input:
language: "python"
requirement: "创建一个用户类,包含name和email属性,以及get_info方法"
expected:
syntax_valid: true
contains: ["class", "User", "def", "get_info"]
has_docstring: true
- name: "error_handling"
description: "测试错误处理代码生成"
input:
language: "python"
requirement: "创建一个文件读取函数,包含错误处理"
expected:
syntax_valid: true
contains: ["try", "except", "FileNotFoundError"]
error_handling: true
自动化测试
持续测试
- 每次提交测试:每次Prompt模板更新后自动运行测试
- 定期回归测试:定期运行完整测试套件
- A/B测试:新版本Prompt与旧版本对比测试
测试自动化流程
测试工具集成
- CI/CD集成:集成到CI/CD流程,自动测试
- 测试报告:自动生成测试报告
- 告警通知:测试失败时自动通知