21|生产加速:如何使用自动化测试确保 C 项目质量?
于航
该思维导图由 AI 生成,仅供参考
你好,我是于航。
“测试”是每个软件在其开发生命周期(SDLC)中都不可或缺的一个重要阶段。通过对软件进行各种不同类型的测试,我们能够从多个维度验证软件的功能表现,并在出现偏差时及时修正,以确保它们可以按照预期工作。根据实施方式、深入粒度、应用场景及目的等因素的不同,测试可以被分为多种类型。其中,有些测试较为基础和通用,甚至被作为软件开发流程中的必备一环;而有些测试则仅适用于某些特定情况。
因此,为了尽量保证本讲内容的通用性,这里我挑选了 C 项目中最为常用的几种测试类型,主要包括单元测试、集成测试、功能测试与性能测试。接下来,我将为你分别介绍它们的作用,以及它们之间的区别和联系,还有如何进行这些测试。在这一讲的最后,我还会介绍什么是自动化测试,以及如何更进一步地做到“真正”的测试自动化。
单元测试
我们先来看通常会最先接触到的一种测试类型,单元测试(Unit Testing)。顾名思义,单元测试就是对组成程序整体结构的基本单元(也可称为模块)进行功能正确性验证的过程。它的目标是,隔离程序的每个部分,并单独验证这些部分能否按照预期正常工作。对于 C 程序来说,这里的单元通常为程序使用到的各个函数。
既然要对这些基本单元的功能进行测试,那便需要编写一些代码来使用这些单元,并为它们提供多种不同输入,来验证相应的输出或副作用变化是否符合单元的正常功能实现。而为了让目标单元在测试过程中正常运作,我们通常还需要为它准备特定的配套测试环境,比如用于替换真实代码(如外部函数调用)的桩(Stub)代码,以及各类 Mock 资源(如 DB 访问层、外部 API 接口)等。这样做的目的在于,隔离单元需要依赖的外部环境,使测试范围可以尽量集中在单元的内部逻辑上。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入介绍了如何使用自动化测试来确保 C 项目的质量。首先介绍了单元测试的概念和作用,以及使用 CUnit 进行 C 语言单元测试的基本方法。然后,作者提到了测试框架的其他重要能力,包括 TAP、Fixture、Generator 和 Code Coverage。接着,文章介绍了集成测试的概念和重要性,以及如何使用支持 Fixture 功能的测试框架来实现 C 项目的集成测试。除了单元测试和集成测试,还介绍了功能测试和性能测试的重要性。功能测试对测试结果的正确性要求更严格,需要满足业务需求中的规定;而性能测试则是确保软件运行性能的重要环节。此外,还提到了其他测试类型如兼容性测试、安全性测试等。最后,文章介绍了自动化测试的概念,以及如何将自动化测试融入到日常开发和功能迭代中,使整个 DevOps 过程更加自动化。整体而言,本文详细介绍了 C 项目中常用的几种测试类型,以及如何利用测试框架和自动化测试来确保项目质量。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入 C 语言和程序运行原理》,新⼈⾸单¥59
《深入 C 语言和程序运行原理》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(4)
- 最新
- 精选
- 科富推荐一个单元测试框架,cmocka,支持fixture,官方文档也比较详细
作者回复: 感谢推荐,看了下确实不错!
2022-02-0724 - 功夫熊猫老师,除了gdb,c语言还有没有其他的可以调试的工具。另外这几年Python的自动化测试很火,那个能用来测试c语言的程序吗?
作者回复: 其他的调试工具基本都不如 GDB、LLDB 功能强大,虽然有其他可选项,但我不太推荐。第二个问题主要看你要进行的测试类型,部分黑盒测试的用例是可以用的,但只能检测程序运行时产生的可观察副作用是否正确。比如写入的文件内容,产生的各类输出之类的。
2022-06-28归属地:上海1 - 功夫熊猫老师,c语言里有没有可以查看内存分配的工具
作者回复: 抱歉,回复晚了。这类工具一般也都不仅仅针对 C 程序,大多数需求通过 GDB 或 LLDB 就能解决。如果需要图形化界面也可以考虑 VSC 或者 Visual Studio、XCode 自带的调试器,也很好用的。
2022-06-28归属地:上海1 - coming老师能讲一下,stub和mock吗
作者回复: 好的,我来看看哈。
2022-02-13
收起评论