A1--张晓龙--大模型下的TDD.pdf
1、大模型下的 TDD张晓龙中兴通讯资深架构师张晓龙中兴通讯 资深架构师2020 年到 2023 年公司十佳教练,CAC 专业级敏捷教练,Go 语言知名打桩框架 gomonkey 作者,具有近二十年软件架构和开发的实践经验。近年来专注于 5G 和云底座等大型平台软件的设计与开发,尤其对于 TDD、DDD 和微服务具有深刻的理解,对于大型软件的重构具有丰富的实战经验。曾作为演讲嘉宾或出品人多次参加行业内的技术大会,广受好评。目录C O N T E N T S1.大模型与 TDD 的协同效应2.大模型辅助 TDD 的开发流程3.实践案例4.效果评价大模型与 TDD 的协同效应01大模型简介大模型的局限
2、p 大模型回答结果不稳定p 大模型存在幻觉p 最大 token 数限制大模型自身的局限大模型自身的局限 大模型在软件工程上的局限大模型在软件工程上的局限 p软件从业者高估了编程的复杂度,但却低估了功能与设计的深刻度p现代软件工程应对的是规模化场景下的各种问题,编程只是其中的一小部分使用大模型的使用大模型的程序员的局限程序员的局限 p 程序员工作习惯的改变p 程序员工作内容的改变大家觉得,说清需求简单吗?TDD 简介p 添加一个测试,测试失败(变成红色);p 快速使测试通过(变成绿色);p 优化设计(变成蓝色)。p 不允许写任何产品代码,除非是为了让失败的测试用例能通过;p 不允许写更多的产品代
3、码,只要刚刚让失败的测试用例通过即可;p 不允许写更多的测试代码,只要刚刚让测试失败即可,编译失败也算失败。TDD(Test-Driven Development,测试驱动开发)是XP(Extreme Programming,极限编程)实践中的一项核心技术,它以测试作为开发过程的中心,要求在编写任何产品代码之前,首先编写用于定义产品代码行为的测试,而编写的产品代码又要以使测试通过为目标。三个步骤三个步骤 三条军规三条军规 定义定义 TDD 对大模型使用的促进维度维度具体局限具体局限TDD 的应对方法的应对方法大模型自身大模型自身的局限的局限大模型回答结果不稳定测试先行,通过测试的代码就是正确的
4、大模型存在幻觉任务拆分,每个任务比较明确,减少了大模型的幻觉最大 token 数限制任务拆分,每个任务比较小,一次交互输入+输出的词总数较容易满足最大 token 数限制大模型在软件工程大模型在软件工程上的局限上的局限低估了功能与设计的深刻度可测试性设计,为了测试而优化设计,让设计更合理编程只是软件工程的一部分-使用大模型的程序使用大模型的程序员的局限员的局限程序员工作习惯的改变-程序员工作内容的改变用例即需求文档,先想清楚需求,再动手写代码大模型对 TDD 开发的促进维度维度具体挑战具体挑战大模型的应对方法大模型的应对方法任务拆分任务拆分任务拆分难大模型可以大大提升编码的效率,从而让程序员腾
5、挪出时间可以更好的完成任务拆分人工识别的验收准则很难全面大模型生成的验收准则比较全面人工编写验收准则的 GWT 描述比较耗时大模型先自动生成验收准则的 GWT 描述初稿,然后再由人工快速修正三步法三步法小步快跑比较耗时大模型可以先批量生成任务的所有测试用例,然后再生成对应的产品代码微重构比较耗时大模型很擅长微重构用例用例用例维护难大模型可以自动生成用例,降低了用例维护的成本用例与验收准则一一对应难用例是通过验收准则自动生成的,保证了一致性确定性 Prompt TDDp 大模型根据 Prompt 直接生成产品代码,阅读理解和调测代码会占用较大精力,平均占用大模型编码时间的 50%以上;p 大模型
6、根据 Prompt 生成的用例比较单一,且易于理解,开发人员可以快速发现问题并进行修正;p 用例表达的是需求,用例校验产品代码通过则代表产品代码实现了需求。大模型辅助 TDD 的开发流程02说明:广义 TDD 既包含 UTDD 也包含 ATDD,而狭义 TDD 仅包含 UTDD,我们通常所说的 TDD 默认是狭义的。两个层级的 TDDATDD UTDD p ATDD(Acceptance Test-Driven Development,验收测试驱动开发)中的测试是一种故事级别的 FT(Functional Test,功能测试),面向微服务的 API 进行测试;p 用 GWT 格式来表达故事的验





点击查看更多