《测试驱动的嵌入式C语言开发》——第1章测试驱动开发

简介: 本节书摘来自华章社区《测试驱动的嵌入式C语言开发》一书中的第1章测试驱动开发,作者:(美)James W. Grenning,更多章节内容可以访问云栖社区“华章社区”公众号查看

第1章 测试驱动开发
我们都做过这样的事——写一大堆代码然后艰难地使它工作起来。也就是先建造再修正。测试是在代码写完之后的事情。测试总是一件后面加上来的事情,这也是我们过去唯一所知的方法。
这种很难预料的过程被亲切地称为“调试”(debugging),我们可能会在其中花掉半个小时。调试的过程在我们的进度中被“测试”和“集成”粉饰起来。它总是风险和不确定的来源。修改一个bug可能导致产生另一个,有时是一系列其他的bug。我们往往会统计这些数据来预测把bug全部修改掉还需要花多少时间。然后我们会去关注曲线的拐点,拐点上的趋势表明我们修改bug的速度终于超过了新引入并报出bug的速度。拐点说明我们几乎就要完成了——但我们永远不能确切地知道在代码的某个黑暗的角落里是否还躲着一个杀手级bug。
开发人员在瀑布模型开发的最后阶段往往忙作一团,与其等到那时才发现问题,质检部门不如在开始时就写一些回归测试以尽快发现那些问题。可我们还是经常会遇到意外:一个小小的错误可能要花上几天、几个星期甚至几个月才能发现。有些错误从未找到。
一些有远见的人看到了这里的潜在问题,他们发现短的开发周期产生的问题会少一些。他们发现积极的测试自动化可以节省时间和精力。这样就不再需要继续重复冗长乏味且错误百出的工作了。测试不一定非要花费出动一小队手工测试人员这样昂贵的代价。很快人们就发现了其中的边际效应(side effect):可以避免调试了。解决了项目进度变化的一个根本原因,那么就会出现更靠谱的项目计划。

著名的嵌入式大师Jack Ganssle提出集成和测试是软件开发的脉络。不过还不能这么说,起码在目前广泛流行的开发方式中还不是,但它们以后必须是。测试驱动开发(Test-Driven Development,TDD)就是其中一种方式—一种有效的方式,它可以把测试贯穿到软件开发的脉络中去,它是你代码的“Kevlar”防弹衣。
把TDD应用于嵌入式C语言开发有很多值得关注的地方,这就是本书的目的。在这一章里,你将从“万米高空鸟瞰”TDD。然后我们将把TDD应用到一个简单的C模块中。当然,这会引发很多疑问。这些疑问将在第2章回答。在开始之前,我们先来看一个著名的bug。如果用了TDD,这个bug可能就可以避免了。

相关文章
|
5月前
|
人工智能 自然语言处理 测试技术
从人工到AI驱动:天猫测试全流程自动化变革实践
天猫技术质量团队探索AI在测试全流程的落地应用,覆盖需求解析、用例生成、数据构造、执行验证等核心环节。通过AI+自然语言驱动,实现测试自动化、可溯化与可管理化,在用例生成、数据构造和执行校验中显著提效,推动测试体系从人工迈向AI全流程自动化,提升效率40%以上,用例覆盖超70%,并构建行业级知识资产沉淀平台。
从人工到AI驱动:天猫测试全流程自动化变革实践
|
8月前
|
数据采集 人工智能 监控
人工智能驱动的软件工程:测试左移的崛起价值
本文探讨了人工智能驱动下测试左移理念在软件工程中的重要性,分析测试工程师在需求评估、AI代码生成及遗留系统优化中的关键作用,揭示AI带来的挑战与机遇,并指出测试工程师需提升技能、关注合规与可维护性,以在AI时代保障软件质量。
444 89
|
6月前
|
机器学习/深度学习 人工智能 测试技术
EdgeMark:嵌入式人工智能工具的自动化与基准测试系统——论文阅读
EdgeMark是一个面向嵌入式AI的自动化部署与基准测试系统,支持TensorFlow Lite Micro、Edge Impulse等主流工具,通过模块化架构实现模型生成、优化、转换与部署全流程自动化,并提供跨平台性能对比,助力开发者在资源受限设备上高效选择与部署AI模型。
559 9
EdgeMark:嵌入式人工智能工具的自动化与基准测试系统——论文阅读
|
11月前
|
Linux C语言 iOS开发
C语言结合AWTK开发HTTP接口访问界面
这样,我们就实现了在C语言中使用libcurl和AWTK来访问HTTP接口并在界面上显示结果。这只是一个基础的示例,你可以根据需要添加更多的功能和优化。例如,你可以添加错误处理机制、支持更多HTTP方法(如POST、PUT等)、优化用户界面等。
588 82
|
11月前
|
人工智能 自然语言处理 JavaScript
测试工程师要失业?Magnitude:开源AI Agent驱动的端到端测试框架,让Web测试更智能,自动完善测试用例!
Magnitude是一个基于视觉AI代理的开源端到端测试框架,通过自然语言构建测试用例,结合推理代理和视觉代理实现智能化的Web应用测试,支持本地运行和CI/CD集成。
1588 15
测试工程师要失业?Magnitude:开源AI Agent驱动的端到端测试框架,让Web测试更智能,自动完善测试用例!
|
数据采集 人工智能 自然语言处理
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
Midscene.js 是一款基于 AI 技术的 UI 自动化测试框架,通过自然语言交互简化测试流程,支持动作执行、数据查询和页面断言,提供可视化报告,适用于多种应用场景。
3793 1
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
|
传感器 人工智能 物联网
C 语言在计算机科学中尤其在硬件交互方面占据重要地位。本文探讨了 C 语言与硬件交互的主要方法,包括直接访问硬件寄存器、中断处理、I/O 端口操作、内存映射 I/O 和设备驱动程序开发
C 语言在计算机科学中尤其在硬件交互方面占据重要地位。本文探讨了 C 语言与硬件交互的主要方法,包括直接访问硬件寄存器、中断处理、I/O 端口操作、内存映射 I/O 和设备驱动程序开发,以及面临的挑战和未来趋势,旨在帮助读者深入了解并掌握这些关键技术。
418 6
|
存储 算法 C语言
用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容
本文探讨了用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容,旨在为开发者提供全面的指导和灵感。
714 2
|
机器学习/深度学习 算法 数据挖掘
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
450 1
|
NoSQL 编译器 C语言
C语言调试是开发中的重要技能,涵盖基本技巧如打印输出、断点调试和单步执行,以及使用GCC、GDB、Visual Studio和Eclipse CDT等工具。
C语言调试是开发中的重要技能,涵盖基本技巧如打印输出、断点调试和单步执行,以及使用GCC、GDB、Visual Studio和Eclipse CDT等工具。高级技巧包括内存检查、性能分析和符号调试。通过实践案例学习如何有效定位和解决问题,同时注意保持耐心、合理利用工具、记录过程并避免过度调试,以提高编程能力和开发效率。
545 1