# 分析和理解步骤

# 第一步:找 10 个项目每个随机选 10 个左右的 test case(包含 assert)

分析和理解

  1. 找 10 个项目:我们需要选择 10 个开源项目,这些项目应该包含单元测试,并且测试用例使用了 assert 语句。
  2. 随机选 10 个左右的 test case:从每个项目中随机选择大约 10 个测试用例。每个测试用例必须包含至少一个 assert 语句。

具体操作

  • 在 GitHub 等平台上寻找 10 个开源项目。
  • 确保这些项目有单元测试(通常在 tests 目录下)。
  • 在每个项目中随机选择 10 个包含 assert 语句的测试用例。

# 第二步:把 test case 中的 assert 去掉

分析和理解

  1. 去掉 assert 语句:编辑选中的测试用例,删除其中的 assert 语句。这意味着我们要修改测试用例,使其保留其他逻辑,但去除验证部分。

具体操作

  • 打开每个测试用例文件,找到 assert 语句。
  • 删除 assert 语句,保留其他代码。

# 第三步:用 LLM 补全 assert

分析和理解

  1. 用 LLM 补全:将去掉 assert 语句的测试用例输入到大语言模型(LLM)中,让它自动补全缺失的 assert 语句。这里的 LLM 可以是一个经过训练的自然语言处理模型,例如 GPT-4。

具体操作

  • 将去掉 assert 语句的测试用例逐个输入到 LLM 中。
  • 让 LLM 根据上下文补全 assert 语句。

# 第四步:看看结果是什么样子

分析和理解

  1. 查看结果:获取 LLM 补全后的测试用例,并对比原始测试用例,查看 LLM 补全的 assert 语句的正确性和合理性。

具体操作

  • 比较 LLM 补全的 assert 语句和原始 assert 语句。
  • 记录 LLM 补全效果好的地方和不足之处。

# 总结

完整过程

  1. 找 10 个开源项目,每个项目中随机选 10 个包含 assert 语句的测试用例。
  2. 去掉这些测试用例中的 assert 语句,保留其他代码。
  3. 使用 LLM 对去掉 assert 语句的测试用例进行补全,让 LLM 自动生成 assert 语句。
  4. 对比 LLM 补全的结果与原始测试用例,分析 LLM 的表现。

这个过程将帮助我们评估 LLM 在自动补全测试用例中 assert 语句的能力,并找出其优缺点,以便进一步改进和优化。

# 示例具体操作(假设性示例)

假设我们从一个项目中选取了以下测试用例:

1
2
3
python复制代码def test_multiplication():
result = multiply(3, 4)
assert result == 12

去掉 assert 语句后:

1
2
3
python复制代码def test_multiplication():
result = multiply(3, 4)
# assert result == 12

输入 LLM 进行补全后,假设 LLM 生成的结果是:

1
2
3
python复制代码def test_multiplication():
result = multiply(3, 4)
assert result == 12 # LLM补全

分析

  • 正确性:LLM 正确地补全了 assert 语句,与原始测试用例一致。
  • 上下文理解:LLM 理解了测试函数的意图,并生成了合理的 assert 语句。

通过这样的操作,我们可以评估 LLM 在处理各种测试用例时的表现,并找出改进方向。