《软件单元测试》[95M]百度网盘|pdf下载|亲测有效
《软件单元测试》[95M]百度网盘|pdf下载|亲测有效

软件单元测试 pdf下载

出版社 社会出版社
出版年 2023-06
页数 390页
装帧 精装
评分 8.7(豆瓣)
8.99¥ 10.99¥

内容简介

本篇主要提供软件单元测试电子书的pdf版本下载,本电子书下载方式为百度网盘方式,点击以上按钮下单完成后即会通过邮件和网页的方式发货,有问题请联系邮箱ebook666@outlook.com

编辑推荐

适读人群 :本书适合软件开发工程师、测试工程师、项目经理和大学计算机专业本科高年级学生与研究生阅读。

基础知识+单元测试框架+实践案例,内容全面、系统,实操性强

适合所有语言的测试人员和开发人员


内容简介

本书对软件单元测试进行了详细介绍。第1 章与第2 章介绍软件单元测试的概念和基础知识;第3 章到第5 章介绍C 语言、Java 语言和Python 语言的单元测试框架和技巧;第6 章与第7 章介绍代码覆盖率工具和代码语法规范检查工具;第8 章通过两个案例详细介绍TDD。读者可以根据自己的需求对以上内容进行选择性阅读或者全部阅读。另外,为了巩固大家的学习效果,每一章结尾都有相应的习题。 本书适合软件开发工程师、测试工程师、项目经理和大学计算机专业本科高年级学生与研究生阅读。

作者简介

顾翔,1997年毕业于北京工业大学,中国计算机学会(CFF)会员,上海开源协会个人会员,开源网安专家组成员,国家职业教育研究院软件测试、安全专家组成员。著有《软件测试技术实战:设计、工具及管理》《基于Django的电子商务网站设计》《全栈软件测试工程师宝典》《通过案例玩转JMeter(微课版)》图书。软件绿色联盟2018年最佳优秀讲师获得者,先后就职于炎黄新星网络科技有限公司、中兴通讯股份有限公司、意法半导体(中国)有限公司和爱立信通信(中国)有限公司,担任软件开发工程师、软件测试工程师,软件测试经理等职务,积累了丰富的软件研发测试理论和实践经验,精通测试设计、测试管理、安全测试、性能测试、自动化测试、敏捷测试和DevOps测试技术,从2015年起,从事金融、通信、航空、邮政等行业及高校的软件测试咨询和培训服务。

精彩书评

本书是顾老师根据多年的测试实战经验提炼而成的,架构体系化强,着眼于一线实际问题的解决,是软件测试工程师的案头必备书。

银行业产品管理、项目管理和知识管理专家 于兆鹏


见到顾老师的这本书,不禁眼前一亮,能够把单元测试由浅入深地讲清楚的专家为数不多。但是顾老师靠着扎实的测试功底和经验,站在全局的角度,从理论基础,到工具使用,再到案例分享,实实在在地把单元测试的内容讲得明明白白,具有很高的参考与学习价值,实属不易。

齐鲁物联网测试中心 李龙


单元测试在开发领域中占据着重要的地位,也是项目整个生命周期中非常重要的环节,可以有效地推进软件质量交付。本书由浅入深,从单元测试基础入门,覆盖Java、Python、C语言及利用各种语言的主流测试框架进行单元测试,引入测试驱动开发及对应语言的覆盖率工具,使用Jenkins集成SonarQube并结合大量实战案例进行讲解,是软件测试人员入门单元测试的必备好书!

资深测试工程师 六哥(郎珑融)


单元测试在军工等高可靠性领域的受重视程度比较高,最近几年,随着敏捷的流行及单元测试框架的普及,其在互联网、金融等行业的应用也多了起来。本书从单元测试的基础知识到基于各类语言的单元测试方法和工具的使用,给读者展现了单元测试的全景图,值得业界从业者参考借鉴。

广州亿能测试技术服务有限公司咨询总监 陈能技


当前,单元测试作为业界的一种规范,关键不是要不要写,而是如何写。随着企业对软件开发质量、效率、成本要求的不断提高,单元测试除了能够驱动产品代码的优化,本身也需要不断重构,以保持高质量,减少维护成本。这就需要我们至少精通一种测试框架及相关的测试替身库,并熟练配合使用对应的覆盖率及语法规范检查工具。这本书从第3章起便分门别类地对这部分内容做了阐述,对每种框架和知识点娓娓道来,由此让我们看到了作者的良苦用心,也看到了作者深厚的测试功底。同时,书中还将变异测试、测试用例自动生成等工具作为单元测试的补充,不失为一本测试入门者的指导书、测试从业者的工具书。

上海东方证券资产管理有限公司信息技术部总监 徐泽南


确保软件供应链的安全已经在全球达成共识,这也促使软件测试领域越来越关注软件的安全测试。本书不仅详细介绍了如何实现软件单元测试,而且对如何对软件安全层面的错误测试进行了介绍。这些内容无论是对软件测试从业者扩大就业视野,还是对从事网络空间安全行业的读者进一步深入了解软件的构造,都具有参考价值。

麟学堂网络空间安全教育专家 张妤


本书从多角度详细介绍了单元测试的生命周期,以及单元测试在各个场景下的实际应用,读完后能够更加深刻地理解单元测试对产品质量的重要性。认识顾老师多年,深切感受到需要很多年的专业技术和强大的理论支撑才得以完成本书的创作,“冰冻三尺,非一日之寒”。本书非常适合想要了解单元测试或者想要做单元测试的人员。

软件测试图书作者、测试技术评委、技术社区贡献者 金鑫


与顾翔老师结识多年,他一直专注于软件测试领域,积累了非常丰富的实战经验。这本书实操性非常强,可以帮助新人快速上手,并尝试进行测试驱动开发、持续集成等。我从事敏捷教练工作十余年,经常和技术教练搭档,组织代码道场,结对编程,努力让测试驱动开发成为程序员的工作习惯,这对于质量的提升立竿见影。我相信,这本书能让团队快速掌握单元测试框架和工具的使用,实践测试驱动开发和依赖隔离,实现持续集成流水线。这本书就是团队身边的“技术教练”。

企业级敏捷教练 古月


作为敏捷教练,我有机会深入不同的研发团队,了解到他们面临的一个典型的挑战:质量问题比较多,产生的影响大。常见的场景是尽管研发团队发版前加班加点修复缺陷和测试,上线后依然有不少问题,小则被业务人员埋怨,大则影响客户体验,甚至影响公司业绩。然而,如何自信地写出正确的代码这个问题,依然是一个不小的挑战。单元测试是专业软件工程师的必备入门工具,在现实工作中能真实有效地帮助他们写出正确的代码。回到初心,希望本书能够帮助新人快速了解和学习单元测试的概念与常用的使用方法。书中介绍了常用语言(C、Java、Python)的单元测试框架和相关工具,同时也覆盖日常工作中常见的单元测试问题。比如,如何评价单元测试质量、如何测试驱动开发、如何依赖隔离,以及如何与流水线集成等。这本书针对这些问题和场景的解决方案,可以帮助新人为进一步深入开展工作打下很好的基础。

团队敏捷教练 张亚光


很欣喜地看到顾老师这本有关单元测试的新书,很多公司一直在推行单元测试,但能够进行系统实践的不多。这本书较为详细地介绍了常见语言的单元测试实际案例,对单元测试的落地有很大的帮助,值得一读。

拉勾教育,《说透性能测试》作者 周辰晨


目录

第1章 软件单元测试简介 1

1.1 桩对象和测试驱动函数 1

1.2 测试驱动开发 2

1.3 软件测试应该贯彻始终 2

1.4 软件测试金字塔 3

1.5 单元测试在传统开发模式中的地位 4

1.6 单元测试在敏捷开发模式中的地位 5

1.7 精准测试 5

1.8 单元测试和白盒测试 6

1.9 单元测试的FIRST原则和AIR原则 7

1.10 习题 7

第2章 软件单元测试基础知识 8

2.1 动态自动化单元测试 8

2.1.1 被测程序 8

2.1.2 语句覆盖 8

2.1.3 分支覆盖 11

2.1.4 条件覆盖 13

2.1.5 条件/分支覆盖 15

2.1.6 MC/DC 15

2.1.7 路径覆盖 17

2.1.8 几种覆盖率的强弱关系 18

2.1.9 控制流覆盖 18

2.2 静态自动化单元测试:代码扫描 19

2.3 手工单元测试:代码调试 20

2.4 手工单元测试:代码评审 20

2.5 单元测试中的问题 20

2.5.1 功能层面的问题 21

2.5.2 性能层面的问题 22

2.5.3 安全层面的问题 22

2.6 习题 23

第3章 C语言动态自动化单元测试框架 24

3.1 在Windows下安装C语言运行环境 24

3.1.1 安装配置MinGW 24

3.1.2 安装配置MSYS2 25

3.1.3 安装配置IDE 25

3.2 安装编译CUnit 31

3.2.1 在Windows下安装CUnit 31

3.2.2 在Linux下安装CUnit 31

3.2.3 创建被测文件和测试文件 32

3.2.4 在Windows下运行测试文件 34

3.2.5 在Linux下运行测试文件 34

3.2.6 运行结果 35

3.3 查看测试报告 35

3.4 CUnit介绍 36

3.4.1 CUnit的四种运行模式 36

3.4.2 CUnit头文件 38

3.4.3 CUnit支持的断言 39

3.4.4 CUnit架构 40

3.4.5 CUnit的基本测试步骤 40

3.5 案例 41

3.5.1 指针操作 41

3.5.2 返回结构体 43

3.5.3 文件的读写操作 44

3.6 习题 46

第4章 Java语言动态自动化单元测试框架 47

4.1 在Eclipse中创建Maven项目 47

4.2 在Eclipse中配置JUnit和TestNG运行环境 50

4.2.1 配置JUnit运行环境 50

4.2.2 配置TestNG运行环境 53

4.3 JUnit 4 55

4.3.1 JUnit 4的测试代码 55

4.3.2 与JUnit 4相关的API 58

4.3.3 JUnit 4的装饰器 58

4.3.4 JUnit 4的断言 59

4.3.5 超时测试 59

4.3.6 JUnit 4参数化测试 60

4.3.7 测试异常 61

4.3.8 批量运行 63

4.3.9 利用Ant运行 63

4.3.10 利用Maven运行 67

4.3.11 配合Allure生成漂亮的JUnit 4测试报告 70

4.4 JUnit 5 82

4.4.1 JUnit 5的测试代码 82

4.4.2 与JUnit 5相关的API 83

4.4.3 JUnit 5的装饰器 84

4.4.4 JUnit 5的断言 86

4.4.5 JUnit 5的依赖注入 88

4.4.6 传递自定义参数 90

4.4.7 JUnit 5参数化测试 91

4.4.8 内嵌测试类 94

4.4.9 重复测试 96

4.4.10 动态测试 97

4.4.11 分组断言assertAll 98

4.4.12 批量测试 98

4.4.13 利用Maven运行 99

4.4.14 配合Allure生成漂亮的JUnit 5测试报告 101

4.5 TestNG 105

4.6 测试替身 127

4.7 利用EvoSuite自动生成测试用例 155

4.7.1 在Eclipse中运行 155

4.7.2 在命令行中运行 156

4.8 变异测试 157

4.9 在Jenkins中配置JUnit 4、JUnit 5、TestNG和Allure 164

4.10 习题 174

第5章 Python语言动态自动化单元测试框架 176

5.1 unittest 176

5.2 Pytest 182

5.3 Python的模拟对象 197

5.4 变异测试工具mutpy 199

5.5 习题 201

第6章 代码覆盖率工具 202

6.1 C语言覆盖率工具gcov和lcov 202

6.2 Java语言覆盖率工具JaCoCo 207

6.3 Python语言覆盖率工具Coverage和pytest-cov 213

6.4 习题 217

第7章 代码语法规范检查工具 218

7.1 Java语言静态分析工具PMD 218

7.2 Python语言静态分析工具flake8和pylint 225

7.3 多代码语法规范检查平台SonarQube 229

7.4 习题 258

第8章 TDD案例 259

8.1 斐波那契数列 259

8.1.1 初始化 259

8.1.2 第一次需求变更 261

8.1.3 第二次需求变更 263

8.1.4 第三次需求变更 266

8.1.5 第四次需求变更 268

8.2 完善计算器产品代码 271

8.3 利用Jenkins分析TDD代码 292

8.4 习题 297

附录A 在写作过程中发现开源软件中的Bug 298

参考文献 301


前言/序言

前 言

软件测试阶段包括单元测试、集成测试、系统测试和验收测试。在单元测试阶段中一旦发现缺陷,很容易修改;而在系统测试或者验收测试阶段发现缺陷,就需要测试人员通过缺陷管理工具报告给开发人员,为了让开发人员能够快速、准确地定位缺陷,测试人员需要在缺陷报告中准确书写发现问题的版本、产生错误的步骤和缺陷的内容(有时候需要附上截图或日志信息)。开发人员通过缺陷报告找到问题所在的代码行进行修复,重新编译后再给测试人员进行复测。如果测试通过,则关闭缺陷修复流程,否则描述问题,重新让开发人员修改。这个过程是非常耗时、耗力的,可见单元测试在软件研发中是非常有效的。但是单元测试也不是万能的,针对业务逻辑的缺陷,在单元测试阶段是很难被发现的,只有在系统测试或验收测试阶段才可以进行验证。

在我刚毕业的年代,单元测试往往是运行程序中的主函数(比如C语言中的main()函数),通过打印语句或者监控变量的值用半手工的方式进行验证,但是这种方式用完就被丢弃了,不能很好地被保留下来。随着XUnit框架及代码扫描工具的出现,单元测试变得越来越容易,单元测试代码也可以被重复使用。随着敏捷和DevOps的出现,迭代变得越来越频繁,单元测试代码、代码扫描工具的复用也变得越来越频繁,特别是随着TDD(Test Driver Developed,测试驱动开发)的提出,单元测试越来越被人们所重视。

针对一段产品代码,需要匹配的单元测试代码可能是代码本身的数倍或者数十倍,这也是很多人知道单元测试的重要性,但是因为时间紧迫,把单元测试阶段忽略的原因。我的建议是,可以把产品分为以下五类。

1. To C的互联网产品。

2. To B的互联网产品。

3. 传统的非嵌入式软件产品,如ERP、财务、CRM、管理等软件产品。

4. 传统的嵌入式软件产品。

5. 安全级别的软件产品,如部分金融、医疗、航空、航天软件产品。

针对第1、2类和部分第3类产品可以减少单元测试的数量,采用纺锤形测试模型或者蜂巢形测试模型,增加接口测试的数量。

针对第3、4类产品采用金字塔测试模型,测试覆盖率尽可能满足分支覆盖、条件/分支覆盖和路径覆盖,而对于嵌入式产品还需要考虑控制流覆盖。

针对第5类产品采用金字塔测试模型,测试覆盖率尽可能满足分支覆盖、条件/分支覆盖、路径覆盖,而对于关键模块必须考虑MC/DC。

本书第1章与第2章介绍软件单元测试的概念和基础知识。

第1章简单介绍软件单元测试所包含的概念,包括桩对象和测试驱动函数、测试驱动开发、软件测试贯彻始终、软件测试金字塔、单元测试在传统/敏捷开发模式中的地位、精准测试、单元测试和白盒测试,以及单元测试的FIRST原则和AIR原则。

第2章介绍软件单元测试基础知识,包括动态自动化/手工单元测试、静态自动化/手工单元测试。在动态自动化单元测试中介绍了语句覆盖、分支覆盖、条件覆盖、条件/分支覆盖、MC/DC、路径覆盖和控制流覆盖。

第3章到第5章介绍C语言、Java语言和Python语言的单元测试框架。

第3章介绍C语言动态自动化单元测试框架,包括在Windows下安装C语言运行环境、在Windows和Linux下安装编译CUnit、查看测试报告、CUnit介绍和案例。

第4章介绍Java语言动态自动化单元测试框架,包括在Eclipse中创建Maven项目和配置JUnit与TestNG运行环境、JUnit 4测试框架、JUnit 5测试框架、TestNG测试框架、测试替身、变异测试、利用EvoSuite自动生成测试用例,以及在Jenkins中配置JUnit 4、JUnit 5、TestNG和Allure。

第5章介绍Python语言动态自动化单元测试框架,包括unittest、Pytest及Python的模拟对象和变异测试工具mutpy。

第6章与第7章介绍代码覆盖率工具和代码语法规范检查工具。

第6章介绍代码覆盖率工具,包括C语言覆盖率工具gcov和lcov、Java语言覆盖率工具JaCoCo,以及Python语言覆盖率工具Coverage和pytest-cov。

第7章介绍代码语法规范检查工具,包括Java语言静态分析工具PMD、Python语言静态分析工具flake8和pylint,以及多代码语法规范检查平台SonarQube。

第8章通过两个案例详细介绍TDD。

读者可以根据自己的需求对以上内容进行选择性阅读或者全部阅读。另外,为了巩固大家的学习效果,每一章结尾都有相应的习题。

作 者