任务3:模块接口测试
检查模块接口是否正确
checklist:
输入的实际参数与形式参数是否一致(个数、属性、量纲) 调用其他模块的实际参数与被调模块的形参是否一致。
个数、属性、量纲
全程变量的定义在各模块是否一致。 外部输入、输出 文件、缓冲区、错误处理 其它
任务4:单元边界条件测试
检查临界数据处理的正确性 Checklist: 普通合法数据的处理。 普通非法数据的处理。 边界值内合法边界数据的处理。 边界值外非法边界数据的ቤተ መጻሕፍቲ ባይዱ理。 其它
示例
Driver Function under test
Stub
空指针保护案例分析
守约定意味着可以很容易根据 “模式匹配” 规则来推断各种标识符的 含义. 创建通用, 必需的习惯用语和模式可以使代码更容易理解 C++ 是一门包含大量高级特性的庞大语言. 某些情况下, 我们会限制甚至 禁止使用某些特性. 这么做是为了保持代码清爽, 避免这些特性可能导致 的各种问题
示例
教材 P100~102 给出Java 编程规范
/svn/trunk/cppguide.xml /google-cpp-styleguide/
代码复审
代码互查
一次检查少于200~400行代码 努力达到一个合适的检查速度:
300~500LOC/hour 有足够的时间、以适当的速度、仔
模块、组件、单元
为何要进行单元测试?
尽早发现错误 •错误发现越早,成本越低. •发现问题比较容易 •修正问题更容易
检查代码是否符合设计和规范,有利于将来代码的维护
单元测试的背景
编程过程中,每写1000行代码会犯几十个错误 编程与编译运行结束后,每1000行代码中大约残留有2-6