20|使用 LLM 按照测试策略生成代码
徐昊
你好,我是徐昊,今天我们来继续学习 AI 时代的软件工程。
上节课,我们讲解了如何利用架构划分功能上下文,以及如何为不同的架构组件,选择恰当的测试替身技术(Test Double),从而构造恰当的测试策略。
那么构建了测试策略之后,对于我们使用大语言模型(Large Language Model)生成代码有什么帮助呢?那么今天就让我们来看一看。
按照测试策略构造提示词模板
我们仍然使用上节课的例子,在上节课的讨论中,我们最后得到的测试策略是这样的:
也就是说,我们将架构中的三种不同的组件分别进行测试,其中 Persistent 层中的组件,使用假对象(Fake,内存数据库)作为测试替身。而 HTTP interface 和 Application Logic 层则通过存根(Stub)作为测试替身。最后,再通过功能测试,对整个系统进行验证。
接下来让我们按照测试策略,针对不同的组件构造提示词模板(Prompting template)。我们先从 Persistent 层开始:
架构描述
=======
当前系统技术栈为 Spring Boot,Jersey 和 MyBatis。
当前系统采用典型的三层架构设计,分布为:
- HTTP interface 层,负责提供 RESTful API,命名规则为 XXXAPI,比如 OrdersAPI;
– Application Logic 层,负责提供核心逻辑,命名规则为 XXXService,比如 OrderService;
– Persistent 层,负责与持久化数据交互,命名规则为 XXXDAO,比如 OrderDAO;
– DAO 通过 MyBatis 的 Mapper 实现
– 在对 DAO 进行测试时,使用 H2 数据库作为 fake implementation,也就是在测试中,初始化 H2 数据库,然后保证应用程序链接到这个数据库,并在测试结束后销毁这个数据库。
功能需求
=======
{functionalities}
任务
====
上面功能需求描述的场景,在 Persistent 层中需要哪些组件(目标组件);
列出需求描述的场景使用到目标组件的功能(目标功能);
列出目标功能需要测试的场景。描述场景,并给出相关的测试数据。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
1. 构建测试策略,选择恰当的测试替身技术,如假对象和存根,以及通过功能测试验证整个系统。 2. 使用提示词模板按照测试策略,针对不同的组件构造场景和测试数据,确保LLM在后续交互中保持上下文连贯。 3. 利用大语言模型(LLM)生成测试代码,如为目标功能场景提供测试代码和ProductDAO的实现。 4. 提供架构描述和任务描述,列出需求描述的场景使用到目标组件的功能,以及列出目标功能需要测试的场景,并描述场景并给出相关的测试数据. 5. 通过LLM生成HTTP Interface层的测试代码,包括发送GET请求到端点、获取响应并验证状态码、从响应中获取产品目录列表等. 6. 通过LLM生成Application Logic层的测试代码,包括配置和测试核心逻辑,使用存根(Stub)对服务进行测试等.
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《徐昊 · AI 时代的软件工程》,新⼈⾸单¥98
《徐昊 · AI 时代的软件工程》,新⼈⾸单¥98
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论