单元测试是软件开发和系统测试的基础,只有每个单元模块得到了充分的测试,系统测试才能相对轻松地完成,否则系统测试变得没有止境,缺陷永远找不完。作为开发人员,需要对自己所写的代码负责,也需要做单元测试。单元测试一般和编程同步进行,写完一段代码,就要进行单元测试。
相对来说,软件的单元规模很小,可以精确、有效、完整地进行测试,也比较容易进行测试覆盖率的分析,通过不断改进测试,最终可以达到所需的测试覆盖率。从测试充分性看,单元测试可以更好地帮助我们保证软件产品质量。
单元测试,除了人工的代码评审,其他的测试(代码静态分析、动态测试等)都属于自动化测试范畴,通过工具和脚本自动完成。单元测试的实验,从代码行覆盖/判定覆盖开始,逐步深入到条件覆盖、条件/判定覆盖、组合覆盖和MC/DC覆盖、基本路径覆盖等,并结合PMD、JUnit、CppUnit等单元测试工具,完成实际代码的测试,其中包括测试覆盖率的度量和分析,并把TDD/ATDD/BDD、类、包的测试和Mock技术的运用等更复杂的单元测试留给大家练习与思考。
本篇主要开展单元测试实验。通过这些实验,提高同学们的单元测试能力,并巩固结构化测试方法的应用。
◇实验1:语句和判定覆盖测试设计
◇实验2:条件覆盖和条件组合覆盖测试设计
◇实验3:修正条件/判定覆盖测试设计
◇实验4:基于JUnit的单元测试
◇实验5:基于CppUnit的单元测试
◇实验6:基于JavaScript的单元测试
◇实验7:基于PMD的静态测试
◇实验8:基于Jenkins的集成测试