# 分析和理解步骤
# 第一步:找 10 个项目每个随机选 10 个左右的 test case(包含 assert)
分析和理解:
- 找 10 个项目:我们需要选择 10 个开源项目,这些项目应该包含单元测试,并且测试用例使用了 assert 语句。
- 随机选 10 个左右的 test case:从每个项目中随机选择大约 10 个测试用例。每个测试用例必须包含至少一个 assert 语句。
具体操作:
- 在 GitHub 等平台上寻找 10 个开源项目。
- 确保这些项目有单元测试(通常在
tests
目录下)。 - 在每个项目中随机选择 10 个包含 assert 语句的测试用例。
# 第二步:把 test case 中的 assert 去掉
分析和理解:
- 去掉 assert 语句:编辑选中的测试用例,删除其中的 assert 语句。这意味着我们要修改测试用例,使其保留其他逻辑,但去除验证部分。
具体操作:
- 打开每个测试用例文件,找到 assert 语句。
- 删除 assert 语句,保留其他代码。
# 第三步:用 LLM 补全 assert
分析和理解:
- 用 LLM 补全:将去掉 assert 语句的测试用例输入到大语言模型(LLM)中,让它自动补全缺失的 assert 语句。这里的 LLM 可以是一个经过训练的自然语言处理模型,例如 GPT-4。
具体操作:
- 将去掉 assert 语句的测试用例逐个输入到 LLM 中。
- 让 LLM 根据上下文补全 assert 语句。
# 第四步:看看结果是什么样子
分析和理解:
- 查看结果:获取 LLM 补全后的测试用例,并对比原始测试用例,查看 LLM 补全的 assert 语句的正确性和合理性。
具体操作:
- 比较 LLM 补全的 assert 语句和原始 assert 语句。
- 记录 LLM 补全效果好的地方和不足之处。
# 总结
完整过程:
- 找 10 个开源项目,每个项目中随机选 10 个包含 assert 语句的测试用例。
- 去掉这些测试用例中的 assert 语句,保留其他代码。
- 使用 LLM 对去掉 assert 语句的测试用例进行补全,让 LLM 自动生成 assert 语句。
- 对比 LLM 补全的结果与原始测试用例,分析 LLM 的表现。
这个过程将帮助我们评估 LLM 在自动补全测试用例中 assert 语句的能力,并找出其优缺点,以便进一步改进和优化。
# 示例具体操作(假设性示例)
假设我们从一个项目中选取了以下测试用例:
1 | python复制代码def test_multiplication(): |
去掉 assert 语句后:
1 | python复制代码def test_multiplication(): |
输入 LLM 进行补全后,假设 LLM 生成的结果是:
1 | python复制代码def test_multiplication(): |
分析:
- 正确性:LLM 正确地补全了 assert 语句,与原始测试用例一致。
- 上下文理解:LLM 理解了测试函数的意图,并生成了合理的 assert 语句。
通过这样的操作,我们可以评估 LLM 在处理各种测试用例时的表现,并找出改进方向。