《测试驱动的嵌入式C语言开发》——2.4节单元测试也会崩溃

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

2.4 单元测试也会崩溃
运行测试还有一个可能结果,那就是崩溃。通常意义上讲,C不是一种安全的语言。C代码可能会不知道跑到哪里,再也不返回了。sprintf()就是一个危险的函数。如果你传入的缓冲太小,内存就会被破坏。这个错误也许会让整个系统马上崩溃。它也可能会在以后崩溃。这时的行为很难说。结果是,一个测试可能无声息地运行通过并结束,或者提前退出运行但看上去没有错误,也可能是“嘣”地一声崩溃。
当你发现一个无声的失败或者崩溃的测试时,可以让测试框架来帮你确认是什么地方出了错。有时,一个对产品代码的改动会导致一个从前通过的测试失败,甚至崩溃。所以在崩溃之前,你要知道到底是哪个测试失败了。
因为测试框架除了测试失败以外通常都保持安静,当测试崩溃时,你可能不会得到什么有用的输出。Unity和CppUTest都提供了一个命令行参数来让测试运行于“冗余模式”(-v)。使用了-v,每个TEST()在运行前都会先写出自己的名字。结果是,最后一个涉及的TEST()就是引起崩溃的原因。
你还可以过滤测试组(-g testgroup)和测试用例(-n testname)。这会让你精确地知道是哪个测试用例在运行。这些对于寻找崩溃原因很有帮助。

相关文章
|
8天前
|
测试技术 Python
单元测试是软件开发中测试的最小单位
单元测试是软件开发中测试的最小单位
|
3天前
|
数据库
基于PHP+MYSQL开发制作的趣味测试网站源码
基于PHP+MYSQL开发制作的趣味测试网站源码。可在后台提前设置好缘分, 自己手动在数据库里修改数据,数据库里有就会优先查询数据库的信息, 没设置的话第一次查询缘分都是非常好的 95-99,第二次查就比较差 , 所以如果要你女朋友查询你的名字觉得很好 那就得是她第一反应是查和你的缘分, 如果查的是别人,那不好意思,第二个可能是你。
16 3
|
19天前
|
数据采集 监控 算法
LabVIEW开发新能源电机控制器测试系统
LabVIEW开发新能源电机控制器测试系统
20 4
|
19天前
|
存储 传感器 数据采集
LabVIEW开发EOL功能测试系统
LabVIEW开发EOL功能测试系统
22 3
|
19天前
|
敏捷开发 监控 测试技术
软件测试中的敏捷实践:如何有效整合测试与开发
【7月更文挑战第3天】在软件开发的快速迭代周期中,敏捷测试成为确保产品质量的关键。本文将探讨如何在敏捷开发环境中整合测试与开发工作,包括持续集成、测试自动化和跨功能团队协作的策略,旨在提升软件交付的速度和质量。
|
23天前
|
消息中间件 缓存 中间件
【赠书活动 - 第1期】- 测试工程师Python开发实战(异步图书出品)| 文末送书
【赠书活动 - 第1期】- 测试工程师Python开发实战(异步图书出品)| 文末送书
|
24天前
|
存储 移动开发 C语言
技术心得记录:嵌入式开发中常用到的C语言库函数
技术心得记录:嵌入式开发中常用到的C语言库函数
16 1
|
26天前
|
Web App开发 IDE Java
自动化测试谷歌浏览器和其驱动版本差不多却还是报错The chromedriver version (121.0.6167.184) detected in PATH at DPythonchromed
自动化测试谷歌浏览器和其驱动版本差不多却还是报错The chromedriver version (121.0.6167.184) detected in PATH at DPythonchromed
60 2
|
12天前
|
机器学习/深度学习 人工智能 自然语言处理
探索软件测试的新篇章:AI驱动的测试自动化
【7月更文挑战第10天】随着人工智能技术的蓬勃发展,软件测试领域迎来了革命性的变革。本文将深入探讨AI技术如何重塑软件测试流程,提升测试效率和准确性。从AI在测试用例生成、缺陷预测、测试执行以及结果分析的应用出发,我们将揭示AI技术如何使测试更加智能化、精准化,并展望AI在软件测试领域的未来发展趋势。
12 0
|
1月前
|
JSON Java 测试技术
SpringBoot实用开发篇第二章(测试操作)
SpringBoot实用开发篇第二章(测试操作)