这是一个虚构但很典型的案例:小孙是一位在高校或研究机构从事研究的研究生或科研人员,最近手头在忙“精读 6 篇相关领域论文”,同时还要准备“补充对照实验”。这次小孙需要整理一份给导师的论文初稿,决定试试 AI 写单元测试。

背景

对小孙来说,文献阅读量大,写论文、做数据处理、写基金申请和回复审稿意见都很耗精力。偏偏这次还遇到一个变数:实验设备排期紧张,补充实验可能推迟。论文初稿需要尽快交给导师,时间并不宽裕。

第一次尝试:问题出在哪

小孙一开始只写了一句话:

帮我写一份关于“论文投稿前的修改”的论文初稿。

结果 AI 给出的内容四平八稳却用不上。复盘下来,主要有两个问题:

  • 不提供业务规则。
  • 测试失败就修改测试让它通过。

改进后的提示词

小孙按照 AI 写单元测试的思路重写了提示词,核心是说明函数的预期行为和业务规则:

请为下面这个函数编写单元测试,测试框架是[框架名]。
函数用途:处理科研人员工作中“实验组”相关的数据计算。
请:
1. 先列出测试用例清单:| 用例 | 输入 | 预期输出 | 类型(正常/边界/异常)|;
2. 至少包含:空输入、极大值、非法格式、重复数据等情况;
3. 等我确认清单后再写测试代码;
4. 测试命名清楚地表达测试意图。
函数代码:[粘贴]

结果(示意)

下面的效果为虚构演示,用来说明这类改进通常带来的变化:

示例(虚构):一位开发者让 AI 为一个计算折扣的函数写测试。AI 列出的用例中包括“折扣叠加后价格为负数”的情况,运行测试后发现函数确实没有处理这种情况,于是补充了价格下限的逻辑。

拿到结果后,小孙没有直接转发,而是对照原始资料逐条核对,再补上 AI 不知道的背景。

复盘:这次用到的方法

  • 让 AI 先列出测试用例清单:正常情况、边界值、异常输入。
  • 确认用例清单后再生成测试代码。
  • 运行测试,对失败的用例判断是代码问题还是测试问题。
  • 说明函数的预期行为,AI 才能写出有意义的断言。

之后小孙发现,同样的方法也适用于另一类场景:重构前需要用测试保护现有行为。

复盘时小孙还想到一个问题:老代码没有文档怎么写测试?答案是:可以先让 AI 解释代码行为,你确认后再基于当前行为写测试。

给科研人员的提醒

让 AI 帮你梳理论文结构、解释方法和润色语言,观点和数据要由你负责。遵守期刊和学校关于 AI 使用的披露规定,不要让 AI 编造数据或文献。另外,对话里不要出现未发表的研究数据和论文手稿。

一个额外的小技巧:把测试用例清单作为文档,帮助其他人理解函数的行为。

换成你的场景

把案例中的论文初稿换成你手头的材料,把导师换成你的读者,提示词结构基本不用改。真正需要花心思的是背景描述:写得越贴近实际,结果越可用。

相关阅读