嵌入式方向实践实验三
实践三_通过LLM生成测试用例输出 实验报告
实验任务
本次实践的主要任务是模拟在没有标准代码的情况下,通过将测试用例输入(实践二得到的)与功能说明注释交给大语言模型,让其生成一系列的测试用例输出,以评估大语言模型在解析能力与计算能力, 同时连同实践二的内容一起,探索该借助大语言模型生成完整测试用例集的方法的可行性。
而大语言模型基于测试用例输入与功能说明注释所生成的输出并不一定是正确的,因此需要检查其生成的输出(即以实践一所转换的 Cpp 代码运行测试用例输入来核对其输出是否正确),并将正确的输出作为最终的测试用例输出,也请记录大语言模型生成的测试用例输出的准确率,由于大语言模型的不稳定性,在评估准确率时,应用相同的提示语多次向大语言模型提问(无上下文,开新的对话框提问才算为多次),取平均值,本次实践要求每份代码生成测试用例输出时至少重复提问 3 次,方可评估准确率。
本次实践的成果要求与前两次实践类似,为各份代码各个输入所对应的测试用例输出(由大语言模型生成的多份 + 由程序跑出来的一份),与实验报告。实验报告需包含你所设计的提示语(prompt)与大语言模型对话的截图(两三张即可),并记录下大语言模型生成的测试用例输出的准确率(请按照上述要求重复生成后再计算准确率)。
举例 :以下仍旧以 008_sum_product.cpp 举例(下简称 008 ),在成果中期望得到的测试用例输出的格式如下:
1 | // other codes ... |
实验报告
使用的大模型为chatgpt3.5;
以下为设计的prompt示例:
1 | 我现在给你一个程序的功能说明注释,以及该程序的一些测试用例输入,请你根据这些测试用例输入生成对应的测试用例输出。每一行代表一个测试用例输入。 |
每份程序共有5份测试用例输入,应用相同的提示语向大语言模型提问3次,并且每次都无上下文,因此总共生成的测试用例输出为3*5=15个,评估的准确率如下:
程序名 | 正确 | 总计 | 正确率 |
---|---|---|---|
121_solution | 7 | 15 | 46.7% |
122_add_elements | 7 | 15 | 46.7% |
123_get_odd_collatz | 7 | 15 | 46.7% |
124_valid_date | 12 | 15 | 80.0% |
125_split_words | 11 | 15 | 73.3% |
以下为与大模型对话的部分截图(内容为大语言模型的3次回答):