在软件开发过程中增加单元测试,可解决代码缺陷反复修复,但程序运行效果依然不佳的难题。周立功教授新作《软件单元测试入门与实践》,为大家深度解读单元测试的相关知识。通过本文参加活动,将有机会领取新书。
软件开发的困境
工程师在开发软件时,经常会遇到这样的问题:
代码编写完成后,无法直接运行,或者一运行就出错;
经历了漫长的调试过程后,程序终于能够运行起来,然而在进行测试时,发现大量缺陷,修复这些缺陷需要耗费大量时间;
部分缺陷很难定位,为了定位这些缺陷,开发者可能需要花费数周甚至数月的时间;
在修复缺陷的过程中,不断有新的缺陷出现,项目发布时间遥遥无期;
好不容易通过了测试,产品上市后客户仍然反映有问题……
之所以会出现这些情况,很大程度是因为没有进行单元测试。那么,开发者该如何开始单元测试,并达到预期效果呢?
其实,单元测试无法顺利开展的原因多种多样,主要包括以下几点:
前期需求分析不到位,开发过程中需求经常发生变化,进而导致代码重构,在这种情况下,单元测试反而成了无用功;
开发者没有对软件进行精心设计,导致代码本身耦合性太高,单元测试无法开展;
没有单元测试的理论基础以及实践经验,开发者不清楚如何设计测试用例,也不清楚如何编写测试代码。
为了解决单元测试过程中出现的各种技术问题,周立功教授及其团队历时三年,编写了《软件单元测试入门与实践》一书,便于广大读者更加顺利地进行单元测试。
什么是软件单元
在软件整体架构设计中,将软件系统拆分为各个不同组件,不同组件相互配合以完成软件系统所需功能;在软件具体细节设计中,将组件进一步拆分为各个软件单元,这些软件单元再相互配合以完成组件功能。可以这么认为:软件单元是软件系统中可独立编译的最小功能单元。
1、在单元测试实际开展过程中,可以这么认为:软件单元是软件具体细节设计中承担单一职责的功能模块。
2、一般来说,在C++中,一个类别会承担一个单一的职责,那么按类来划分单元是相对比较合理的。
3、通常情况下,在C语言中,一个文件中的代码会承担单一的职责,那么按文件来划分单元是比较合理的。
当然这些情况并不绝对,在实际测试过程中需要根据实际情况进行调整。开发者要掌握的单元划分基本原则:
一个单元不能承担太多的职责;
一个单元不能依赖太多其他的单元。
适合读者
本书使用工具主要针对C语言和C++语言,适合C语言和C++语言开发人员及相关测试人员阅读。
阅读本书你将收获:静态测试相关知识、编写测试代码相关技能、生成测试桩相关技能、自动构建和持续集成相关技能。
目前已有部分开发者意识到单元测试的重要性,他们开始在软件开发过程中增加单元测试环节,除了软件质量有了显著的提升外,软件开发周期也变得更加可控。
章节特色
在第1章以及第2章,主要对软件测试以及单元测试进行了简要的介绍,读者可根据这两部分内容对单元测试进行简单的了解。
第3章介绍了编码规则检测、代码结构分析以及相关工具的使用,若读者需要进行静态测试可以阅读这部分内容。
第4章~第9章介绍了如何设计测试用例,如何使用相关工具编写测试代码。在这一部分介绍了两个测试框架 Gtest 和 Unity,读者在阅读这一部分后,可以使用这两个框架开展单元测试。
第10章介绍了跨平台构建的方法,当读者有编写跨平台代码的需求时,可以阅读这部分内容。
第11章介绍了两个代码覆盖率生成工具,读者可以使用这两个工具评估测试代码的覆盖率的情况。
第12章介绍了持续集成系统 Gitlab 的使用,读者需要搭建或使用持续集成服务器时,可以阅读这部分内容。
新书获取方式
方式一:ZLG致远电子将送出100本《软件单元测试入门与实践》纸质版书籍,识别下方二维码填写申请,我们将随机抽取100位工程师送出纸质版新书,申请截止时间为:10月10日17:00;
方式二:在公众号回复【编程】,或者复制下面链接至浏览器打开,可直接阅读新书电子版。
http://www.zlg.cn/foxmail/weixinpdf/software_unit_test.pdf