欢迎进入仪商网!

周立功教授发布最新力作《软件单元测试入门与实践》

在软件开发过程中增加单元测试,可解决代码缺陷反复修复,但程序运行效果依然不佳的难题。周立功教授新作《软件单元测试入门与实践》,为大家深度解读单元测试的相关知识。通过本文参加活动,将有机会领取新书。

软件开发的困境

工程师在开发软件时,经常会遇到这样的问题:

代码编写完成后,无法直接运行,或者一运行就出错;

经历了漫长的调试过程后,程序终于能够运行起来,然而在进行测试时,发现大量缺陷,修复这些缺陷需要耗费大量时间;

部分缺陷很难定位,为了定位这些缺陷,开发者可能需要花费数周甚至数月的时间;

在修复缺陷的过程中,不断有新的缺陷出现,项目发布时间遥遥无期;

好不容易通过了测试,产品上市后客户仍然反映有问题……

之所以会出现这些情况,很大程度是因为没有进行单元测试。那么,开发者该如何开始单元测试,并达到预期效果呢?

其实,单元测试无法顺利开展的原因多种多样,主要包括以下几点:

前期需求分析不到位,开发过程中需求经常发生变化,进而导致代码重构,在这种情况下,单元测试反而成了无用功;

开发者没有对软件进行精心设计,导致代码本身耦合性太高,单元测试无法开展;

没有单元测试的理论基础以及实践经验,开发者不清楚如何设计测试用例,也不清楚如何编写测试代码。

为了解决单元测试过程中出现的各种技术问题,周立功教授及其团队历时三年,编写了《软件单元测试入门与实践》一书,便于广大读者更加顺利地进行单元测试。


什么是软件单元

在软件整体架构设计中,将软件系统拆分为各个不同组件,不同组件相互配合以完成软件系统所需功能;在软件具体细节设计中,将组件进一步拆分为各个软件单元,这些软件单元再相互配合以完成组件功能。可以这么认为:软件单元是软件系统中可独立编译的最小功能单元。

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


声明: 声明:凡本网注明"来源:仪商网"的所有作品,版权均属于仪商网,未经本网授权不得转载、摘编使用。
经本网授权使用,并注明"来源:仪商网"。违反上述声明者,本网将追究其相关法律责任。
本网转载并注明自其它来源的作品,归原版权所有人所有。目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。如有作品的内容、版权以及其它问题的,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
本网转载自其它媒体或授权刊载,如有作品内容、版权以及其它问题的,请联系我们。相关合作、投稿、转载授权等事宜,请联系本网。
QQ:2268148259、3050252122。