登录社区云,与社区用户共同成长
邀请您加入社区
在古法编程时代,TDD 因为人力的局限性,成为了一座可望而不可及的象牙塔;而在 AI 编程时代,代码的生成和跑测成本被降到了近乎为零。TDD 的那套“红-绿-重构”规则,不再是束缚程序员的紧箍咒,反而成为了 AI 智能体在线上自主开疆拓土时最坚固的安全绳。
本文介绍了如何深度整合OpenSpec、Superpowers和Claude Code三种工具,提供三种CI/CD集成方案构建规范驱动开发(SDD)工作流。首先详细说明了10分钟环境搭建步骤,包括OpenSpec CLI安装、项目初始化等。重点阐述了三种联合工作模式:标准交接模式、嵌入式协作模式和轻量级TDD模式,并以"订单退款功能"为例演示标准交接模式的完整开发流程。最后给出
作为一名独立开发者,我最近大半年几乎每天都在和AI(Cursor、Copilot、Claude)一起写代码。AI经常“理解错”我的意图。我说“加一个用户登录功能”,AI自作主张加了邮箱验证、找回密码、记住我……我说“优化性能”,AI重构了整个架构,改了一堆我根本不想改的地方更糟糕的是,AI写了一大堆代码,跑起来全是Bug,我甚至不知道该从哪儿开始测试直到我把TDD(测试驱动开发)和BDD(行为驱动
摘要:AI时代软件开发方法论的演进与挑战 本文探讨了在AI编程工具兴起的背景下,传统软件开发方法论(TDD、BDD、DDD)与新范式(SDD)的定位与价值。文章首先梳理了五种"DD"方法论的演进历程:从TDD的测试驱动、BDD的行为描述、ATDD的验收标准,到DDD的领域建模,再到新兴的SDD规范驱动。这些方法分别解决了代码正确性、业务理解一致性、功能完成标准、业务复杂性映射等
DDD 分层架构在 Java 里有 Spring 做依赖注入,在 Rust 里怎么办?本文记录了我在 Pico-CRM 项目中用 Rust trait + 泛型 + 构造器注入实现 domain/application/infrastructure 三层架构的完整过程。没有 DI 容器、没有框架黑魔法,靠 Rust 类型系统本身就实现了严格单向依赖。包含各层真实代码、mock 测试方案、trait
要让AI在Spring Boot项目中落地TDD开发,需通过配置文件约束、环境集成和指令诱导三管齐下。关键是在项目根目录创建claude.md文件,明确规定TDD流程:测试先行、红灯运行、最小实现、绿灯验证和重构。同时确保AI能操作终端运行测试命令,并通过精准指令引导AI按TDD步骤开发。针对Spring Boot项目,还需加入特殊校验技巧如JsonPath校验、数据库回滚和依赖模拟。这种模式下,
简单来说,TDD for AI就是在让 AI(如 Claude Code, Cursor, GPT-4)编写逻辑代码之前,先由人工或 AI 定义好自动化测试用例。需求 -> 人写代码 -> 人写测试 -> 运行。需求 ->定义测试(断言结果)->AI 生成代码->自动运行测试->AI 根据报错自修复-> 成功。它是将 AI 从一个“概率性文本生成器”转化为“确定性工程工具”的核心。开发者不直接写代
摘要 Midscene.js 是一套基于视觉识别的UI自动化运行时系统,其核心创新点在于将传统UI自动化流程重构为四个层次:视觉理解、设备执行、结果校验和报告记录。与传统的基于元素定位的自动化工具不同,Midscene采用"先识别屏幕内容再操作"的模式,通过截图让AI模型判断目标位置,再转换为设备坐标执行操作。该系统特别适用于selector不稳定、自绘界面复杂、弹窗变化频繁以
参数配置层是整个代码系统的“数据地基”,负责初始化整车、动力总成、电池及工况相关参数,为后续模型计算与算法寻优提供输入条件。该层通过硬编码与外部文件读取结合的方式,确保参数的灵活性与可维护性。本文解读的ECVT功率分流型混合动力客车DP能量管理代码,通过系统化的模块设计、精准的物理建模与严谨的算法实现,构建了一套完整的全局最优能量管理解决方案。代码不仅能够输出高精度的能耗与效率数据,还能为工程化的
Qt+OpenCV图像视觉框架全套源码上位机源码工具可扩展。除了opencv和相机sdk的dll,其它所有算法均无封装,可以根据自己需要补充自己的工具。基于 Qt5.14.2 + VS2019 + OpenCV 开发实现,支持多相机多线程,每个工具都是单独的 DLL,主程序通过公用的接口访问以及加载各个工具。包含涉及图像算法的工具、 逻辑工具、通讯工具和系统工具等工具。最近捣鼓了一个超有趣的项目—
今天的主角是下面这张图,它全景式展现了敏捷开发在不同粒度上的关注点。(看不清可以看最后的Slideshare) 这张图主体上是要给敏捷在不同粒度上下一个定义,并且告诉我们它的产出是“Working software” 从最内部的环开始看,什么是持续要做的呢?测试驱动开发(TDD),编译构建,集成,代码重构,协作开发,这些事情仿佛是心跳一样,
卡尔.波普尔的理论能很好的解释目前的科学, 艺术, 政治, 社会等方面一般性的问题. 它对软件开发过程中一些显而易见的问题有着明确的答案. 比如, 我们都知道我们无法证明软件已经没有Bug, 用波普尔的话说就是: 科学理论都是假说, 爱因斯坦的竞争理论表明对牛顿理论的即使如海王星发现般严格的检验都不能确保其正确性, 即对白天鹅的一千次观察都不足以断言黑天鹅的不存在. 能否证伪是科
嵌入式系统TDD策略这篇文章中主要介绍嵌入式TDD周期和如何不受跨平台问题影响而保持开发的步伐。我们看到了双目标系统的优势和如何包容在目标系统中测试所带来的风险。然后也解答了一些常见的关于TDD的疑惑。5.1目标硬件的瓶颈对于很多嵌入式项目来讲,并行进行硬件和软件开发是个现实。如果开发的软件只能在目标硬件上运行,你很可能会遭遇到下面的一个或多个浪费时间的因素。直到项目的后期硬件还没
契约也就是合约,是双方当事人意见一致并且要共同遵守的行为表示,服务的调用者和提供者就好比签订契约的甲方和乙方。契约测试就是验证签订契约双方的行为是否符合契约。通常我们并不知道服务间的依赖关系是怎样的,如每个接口的消费者是谁,相同的接口不同的消费者都需要哪些数据,这些消费者正在消费哪个版本的接口等,要在一个项目中厘清这些问题显然有些困难,哪怕管理做得再好,也不可能面面俱到,而且文件记录和实际情况往往
编辑。
所以,直接用手机号注册这个功能是不需要的,真正需要的是绑定邮箱和手机号的功能。在开发过程中,开发人员可以不断的调试这个功能,通过测试>失败>修改/重构>测试>成功的过程,使开发的代码符合预期,而不是等所有功能开发完成后,再将一个笨重的产品交给测试人员进行一个长周期的测试,发现缺陷后再整个打回来修改,然后由此又可能会引入新的缺陷。因为在TDD过程中编写的测试用例,首先一定是贴合用户实际需求的,然后又
之前已经说过很多关于敏捷开发的东西,过多的鸡汤就不再鳌述。其实,敏捷开发已经成为常态化,随着计算机与网络技术的日渐成熟,互联网以及以互联网为平台的各种网上应用如火如荼,在给传统产业带来无限商机的同时,也带来更多的挑战。首先,经历多年的激烈竞争历程,企业之间的竞争已达白热化状态,产品生命周期愈来愈短,产品更新换代速度愈来愈快,为企业盈利的新产品寿命比工业社会的产品明显缩短。随着BTOB(企业对企业)
本文探讨了如何将测试驱动开发(TDD)理念应用于AI技能开发,提出"技能TDD"方法论。作者指出未经测试的AI技能在真实场景中容易被Agent合理化绕过,强调必须通过RED-GREEN-REFACTOR三阶段验证:首先在不加载技能的情况下观察Agent的真实失败(RED);然后针对观察到的失败编写最小技能(GREEN);最后通过迭代优化使技能具备"防弹"能力
单元测试便宜又快,可以多写。E2E测试贵又慢,要少写。如果你反过来,80%的测试是E2E,那你的CI流水线会跑半小时。没人愿意等。而单元测试可以在几秒内跑完上千个用例,给你快速反馈。项目类型建议覆盖率说明核心业务逻辑80-90%关键路径必须覆盖工具库90%+被广泛使用,需要高可靠UI组件50-70%主要测逻辑,不测样式原型/MVP30-50%快速验证,后续补充遗留代码逐步提升改哪里,测哪里记住:覆
无桥PFC和逆变方案(原理图pdf+PCB+stm源码两份+仿真等文件)1.输入电压AC220V,50Hz交流电2.PFC输出390V,150KHz开关频率3.PFC输出最大功率400瓦,输入电流最大2A,最小负载电流0.1A输出功率越大PF值越高,电流波形越接近正弦因为小电流时纹波电流占比大5.电压电流采样电路原理,环路补偿算法,STM32库函数操作,GPIO,ADC,DAC,HRTIM等。
AI编程时代TDD为何焕发新生?随着AI代码生成速度提升,其代码质量缺陷也日益凸显。测试驱动开发(TDD)因其"先测试后编码"的特性,正成为AI编程的黄金搭档。
现在大家都在使用ai写代码,手写代码的时代慢慢过去了,但是现在有一个问题,就是如何判断ai写的代码有效,这就离不开测试用例。那么应该先写代码,还是应该先写测试用例呢,今天主要说下TDD。TDD(Test-Driven Development,测试驱动开发)是一种开发方法,其核心流程是:RED:先写测试(且必须失败)GREEN:写最小实现让测试通过REFACTOR:在测试保护下优化代码这里最重要的一
本文系统介绍了SDD、TDD、DDD三种软件工程方法论在AI编程时代的应用。TDD通过"红-绿-重构"循环确保代码质量;DDD以业务领域为中心实现业务与技术的深度契合;SDD作为AI时代新兴方法,强调规范先行驱动全流程开发。三者形成互补体系:DDD解决业务建模,SDD实现规范定义,TDD保障代码质量,共同构建AI编程工程化闭环。文中列举了各方法的代表项目和实践案例,展示了三种方
模糊 PID 在桥式起重机防摇控制中确实是个实用的思路。它不像纯模糊控制那样完全抛弃 PID 的精度,也不像固定 PID 那样死板。通过模糊规则把人的经验融入参数调整,实现了“软硬结合”。但也要注意,模糊规则的设计很考验经验,调不好反而会引入振荡;而且实时计算量比固定 PID 大,对硬件有一定要求。另外,如果系统动力学参数变化剧烈(比如吊重质量大变),可能还需要更高级的自适应方法。/project
dataclass“”“用户输入数据模型”“”age: intemail: str@dataclass“”“用户数据处理结果模型”“”is_valid: bool# 数据是否合法msg: str# 处理提示信息data: Optional[Dict[str, Any]] = None# 处理后数据TDD测试用例(基于SDD规格)
冲击是有的,但加了个简单的电流平滑和角速度平滑过渡策略,I-f的参考电流在切换前100ms从设定的I-f启动电流(2A)慢慢降到ESO闭环的q轴参考电流(根据转矩计算的,TMotor AK80-6裸机额定电流大概10A,轻载0.5A左右),角速度平滑用的是一个简单的一阶低通滤波器,时间常数50ms,切换的时候示波器看电流和轴速的波形,几乎没有尖峰!q)}{dt}\),哦刚才伪代码里把电流微分的小尾
MATLAB/Simulink搭建电动助力转向模型,EPS模型,包括PID控制算法,传递函数回正控制,有完整的模型公式搭建过程,可直接仿真出图像,参数自己数据齐全,建模过程详细!MATLAB/Simulink搭建电动助力转向模型,EPS模型,包括PID控制算法,传递函数回正控制,有完整的模型公式搭建过程,可直接仿真出图像,参数自己数据齐全,建模过程详细!视频操作,截图说明,简单易懂,一一对应。视频
/ 定义 Flash 的抽象行为,不包含任何 STM32 代码public:public:2. 编写业务逻辑 (只依赖接口)// 引用接口,而非具体类public:// 依赖注入:在构造时传入具体的实现// 写入地址 0,模拟 4 字节数据if (!success) {// 如果写入失败,尝试擦除public:// MOCK_METHOD(返回值, 函数名, (参数...), (修饰符));pub
摘要:本文揭示了AI编程的高效开发模式SDD+TDD,通过规格驱动和测试驱动开发,将AI从“随机盲盒”升级为“精准巡航”。文章对比了野路子与正规军开发模式的差异,展示了4天开发Agent评测系统的实战案例,强调80%机械工作由AI完成,20%创造性工作由人把控。核心观点是:清晰规格和测试标准能解放AI生产力,开发者需从编码者转型为“导演”角色,通过SDD+TDD实现10倍效率提升。(149字)
基于储能电站服务的冷热微网系统双层优化建立考虑不同时间尺度问题的双层规划模型上层负责求解长时间尺度的储能配置问题下层求解短时间尺度的微网优化运行问题才用KKT条件将双层转化为单层又采用大M法将模型线性化处理最后用cplex/gurobi求解器进行求解在能源领域,基于储能电站服务的冷热微网系统双层优化是一个充满挑战与机遇的课题。今天就来跟大家分享下其中的关键思路与实现过程。
在软件开发过程中,质量和效率始终是开发团队追求的目标。传统的开发方法常常先编写代码,再进行测试,这种方式在发现问题时常常为时已晚。为了更早地发现和解决问题,测试驱动开发(Test-Driven Development,简称TDD)应运而生。TDD是一种强调测试先行的开发方法,它不仅可以提高代码质量,还能提高开发效率。本文将详细介绍TDD的定义、开发流程、常用工具和框架,并探讨其在实际项目中的应用。
利用springboot+cucumber 进行bdd实践
本文通过模块拆分、TDD和CI/CD,将LangChain应用从原型升级为工程化项目。模块化是大型项目的基础,需明确职责边界。例如将和分离,便于替换向量数据库(如从Chroma切换到FAISS)。TDD能显著提升代码质量,但需平衡测试粒度。单元测试应覆盖边界条件(如空文件输入),而集成测试需模拟外部依赖。CI/CD自动化流程可减少人为错误,建议结合监控(如Prometheus)和日志分析(如ELK
在代码架构上,我们做了个分层处理:底层保持ADRC的标准结构,上层用RBF网络搞参数更新。更骚的是在参数摄动测试中,当转动惯量增加40%时,传统方案出现明显超调,而我们的神经网络版本居然稳如老狗。这段代码的精髓在径向基函数的动态响应——当误差e变化时,隐含层的激活状态就像弹簧一样伸缩,自动匹配当前工况。注意beta参数的基准补偿操作,这手防止网络输出飘移的细节处理,是工程实现里容易踩坑的地方。1、
LAN8742 驱动只有 600 行,却浓缩了自协商状态机中断消抖时间戳对齐等经典算法。当你能把“链路未 ready”精确定位到BSR 寄存器第 2 bit 两次采样为 0时,SOEM 的报错信息就不再是黑盒,而是可推导的物理现象。希望本文成为你调试 EtherCAT 时的“寄存器级”地图——从 bit 到帧,从帧到伺服,一切皆有迹可循。
音频输入端引入的TDD问题,应该是最常见的。此时,可以将C7 C8上的电容在靠近PA端的Pin脚站立起来,飞线至Codec附近端,再次尝试听取是否有TDD。如果此时没有了,需要仔细排查输入端相关走线是否符合伪差分的走线标准走线附近是否有射频信号的干扰,是否立体包地。如果摘掉了所有电容都无法解决,可通过将磁珠靠PA端立起来,飞线至后级负载,观察TDD是否消失,如果消失,对输出信号走线进行排查优化。所
1.背景介绍人工智能(Artificial Intelligence, AI)和测试驱动开发(Test-Driven Development, TDD)是两个不同的领域。然而,它们之间存在着密切的联系。在过去的几年里,人工智能技术的发展为软件开发和测试提供了新的机遇。在这篇文章中,我们将探讨如何将人工智能与测试驱动开发结合使用,以实现更高级别的软件测试。1.1 测试驱动开发(TDD)测...
音频TDD
对于芯片行业,推荐采用以TDD为基础,在适当场景引入DDD元素软件类型推荐模式理由嵌入式驱动/固件强推TDD确保硬件交互正确性验证环境/测试平台TDD+BDD提高测试代码质量系统软件/中间件DDD+TDD管理复杂状态和业务规则工具链/基础设施TDD为主确保工具可靠性和兼容性。
Fluent、starccm 电池、芯片等水冷风冷换热换热仿真在电子设备不断向小型化、高性能化发展的今天,电池和芯片的散热问题愈发关键。水冷和风冷作为常见的散热方式,借助 Fluent 和 StarCCM+ 等仿真软件来进行换热仿真分析,能帮助工程师们更好地优化散热设计。
本文对比分析了主流软件测试工具JMeter和Postman的核心特性。JMeter擅长性能测试,适合高并发场景但学习成本高;Postman专精API测试,操作简便但性能测试能力有限。文章还介绍了Selenium、SoapUI等辅助工具,并提供了选型决策矩阵,建议根据测试需求组合使用不同工具。最后强调工具互补性,指出AI测试是未来趋势,合理选型可提升30%以上测试效率。
测试驱动的嵌入式C语言开发读书笔记1.测试驱动开发瀑布模型的最后开发人员会乱作一团,而缩短开发周期是一种减少问题的方案测试驱动开发(TDD)是一种增量式软件开发技术。简单说明及在没有失败的单测前提下不写产品代码。测试要小且自动化。TDD操作步骤增加一个小测试。运行所有测试并期待新的测试失败,也可能压根编译不过。为了让测试通过做一些小改动。运行测试并期待测试通过。重构,移除重复并改进代码的表达方式。
当 AI 开始写代码时,很多人以为是「一键生成」,但现实往往是一堆错误。一位开发者发现,让 AI 先写计划再执行,能避免 90% 的错误。这不是魔法,而是软件工程的老智慧在 AI 时代的重生。
tdd
——tdd
联系我们(工作时间:8:30-22:00)
400-660-0108 kefu@csdn.net