本书对软件单元测试进行了详细介绍。第1章与第2章介绍软件单元测试的概念和基础知识;第3章到第5章介绍C语言、Java语言和Python语言的单元测试框架和技巧;第6章与第7章介绍代码覆盖率工具和代码语法规范检查工具;第8章通过两个案例详细介绍TDD。本书适合软件开发工程师、测试工程师、项目经理和大学计算机专业本科高年级学生与研究生阅读。
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.6MC/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安装配置MinGW24
3.1.2安装配置MSYS225
3.1.3安装配置IDE25
3.2安装编译CUnit31
3.2.1在Windows下安装CUnit31
3.2.2在Linux下安装CUnit31
3.2.3创建被测文件和测试文件32
3.2.4在Windows下运行测试文件34
3.2.5在Linux下运行测试文件34
3.2.6运行结果35
3.3查看测试报告35
3.4CUnit介绍36
3.4.1CUnit的四种运行模式36
3.4.2CUnit头文件38
3.4.3CUnit支持的断言39
3.4.4CUnit架构40
3.4.5CUnit的基本测试步骤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.3JUnit455
4.3.1JUnit4的测试代码55
4.3.2与JUnit4相关的API58
4.3.3JUnit4的装饰器58
4.3.4JUnit4的断言59
4.3.5超时测试59
4.3.6JUnit4参数化测试60
4.3.7测试异常61
4.3.8批量运行63
4.3.9利用Ant运行63
4.3.10利用Maven运行67
4.3.11配合Allure生成漂亮的JUnit4测试报告70
4.4JUnit582
4.4.1JUnit5的测试代码82
4.4.2与JUnit5相关的API83
4.4.3JUnit5的装饰器84
4.4.4JUnit5的断言86
4.4.5JUnit5的依赖注入88
4.4.6传递自定义参数90
4.4.7JUnit5参数化测试91
4.4.8内嵌测试类94
4.4.9重复测试96
4.4.10动态测试97
4.4.11分组断言assertAll98
4.4.12批量测试98
4.4.13利用Maven运行99
4.4.14配合Allure生成漂亮的JUnit5测试报告101
4.5TestNG105
4.5.1TestNG的使用和运行105
4.5.2testng.xml文件与Suite测试107
4.5.3与TestNG相关的API109
4.5.4TestNG的装饰器110
4.5.5TestNG的断言113
4.5.6异常测试113
4.5.7忽略测试114
4.5.8超时测试114
4.5.9分组测试114
4.5.10依赖测试116
4.5.11TestNG参数化测试119
4.5.12TestNG报告121
4.5.13利用Maven运行121
4.5.14配合Allure生成漂亮的TestNG测试报告123
4.6测试替身127
4.6.1桩对象128
4.6.2伪造对象128
4.6.3间谍对象131
4.6.4模拟对象132
4.7利用EvoSuite自动生成测试用例155
4.7.1在Eclipse中运行155
4.7.2在命令行中运行156
4.8变异测试157
4.8.1变异测试引出157
4.8.2变异测试简介158
4.8.3PITest在Eclipse中的安装和使用160
4.8.4PITest测试报告162
4.8.5修改测试数据163
4.9在Jenkins中配置JUnit4、JUnit5、TestNG和Allure164
4.9.1Jenkins安装和基本配置164
4.9.2JUnit在Jenkins中的配置168
4.9.3TestNG在Jenkins中的配置170
4.9.4AllureJUnit在Jenkins中的配置172
4.10习题174
第5章Python语言动态自动化单元测试框架176
5.1unittest176
5.1.1计算器案例176
5.1.2unittest的装饰器178
5.1.3unittest的断言179
5.1.4通过parameterized.expand实现参数化179
5.1.5测试异常180
5.1.6批量运行生成报告181
5.2Pytest182
5.2.1Pytest安装182
5.2.2案例183
5.2.3Pytest的装饰器185
5.2.4Pytest常用命令行选项185
5.2.5Pytest实现并发测试186
5.2.6Pytest特有的参数化功能187
5.2.7配合Allure生成漂亮的Pytest测试报告190
5.2.8在Jenkins中配置AllurePytest195
5.3Python的模拟对象197
5.3.1产品代码197
5.3.2通过unittest使用模拟对象197
5.3.3通过Pytest使用模拟对象198
5.4变异测试工具mutpy199
5.4.1mutpy的安装199
5.4.2mutpy的使用199
5.5习题201
第6章代码覆盖率工具202
6.1C语言覆盖率工具gcov和lcov202
6.1.1lcov与gcov的安装和运行202
6.1.2lcov报告205
6.1.3lcov在Jenkins中的应用205
6.2Java语言覆盖率工具JaCoCo207
6.2.1JaCoCo在Eclipse下的应用207
6.2.2JaCoCo在Maven下的应用210
6.2.3JaCoCo在Jenkins中的应用211
6.3Python语言覆盖率工具Coverage和pytest-cov213
6.3.1Coverage213
6.3.2pytest-cov215
6.3.3Python语言覆盖率工具在Jenkins中的应用216
6.4习题217
第7章代码语法规范检查工具218
7.1Java语言静态分析工具PMD218
7.1.1PMD在Eclipse下的应用218
7.1.2配置PMD的Maven文件220
7.1.3在Jenkins中配置PMD222
7.2Python语言静态分析工具flake8和pylint225
7.2.1flake8225
7.2.2pylint226
7.2.3flack8和pylint在Jenkins中的应用227
7.3多代码语法规范检查平台SonarQube229
7.3.1安装JDK229
7.3.2SonarQube支持的数据库231
7.3.3SonarQube236
7.3.4安装sonar-scanner242
7.3.5SonarQube的配置及应用244
7.3.6在Jenkins中配置SonarQube254
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
本书对软件单元测试进行了详细介绍。第1章与第2章介绍软件单元测试的概念和基础知识;第3章到第5章介绍C语言、Java语言和Python语言的单元测试框架和技巧;第6章与第7章介绍代码覆盖率工具和代码语法规范检查工具;第8章通过两个案例详细介绍TDD。本书适合软件开发工程师、测试工程师、项目经理和大学计算机专业本科高年级学生与研究生阅读。
“基础知识+单元测试框架+实践案例,内容全面、系统,实操性强 适合所有语言的测试人员和开发人员”
电子工业出版社成立于1982年10月,是工业和信息化部直属的科技与教育出版社,是中共中央宣传部和国家新闻出版总署授予的“全国优秀出版社”,在新闻出版总署组织的社、店互评活动中,连年被评为“重服务、讲信誉”的优秀出版社,获得了“全国版权贸易先进单位”、“中央国家机关文明单位”等荣誉。