单元测试测什么?
单元测试测什么?
当然是测试代码中的单元模块。
但是究竟怎么来完成单元模块的测试呢?
有些项目组的单元测试用例与软件其他测试级别的测试用例完全相同——一样的功能测试用例、一样的性能测试用例和一样的接口测试用例。
程序员在编写完代码之后,通过编译来确保代码的语法正确;通过单元测试来确保代码的语义正确。
而一个几乎和配置项测试的用例完全一样的单元测试,它还能够确保代码语义的正确性吗?
好的单元测试用例设计不应与其他测试级别的测试用例雷同,它应当包含以下几个方面的测试内容:
测试单元模块的接口参数
对单元接口参数的测试,应该包括:
测试输入的实际参数与形式参数的个数是否相同、属性是否匹配。
测试调用其他模块时所给实际参数与被调模块的形参个数是否相同、属性是否匹配。
测试调用预定义函数时所用参数的个数、属性和次序是否正确。
测试是否存在无关的参数引用。
测试是否修改了只读型参数。
测试各模块对全局变量的定义是否一致。
测试是否把某些约束作为参数传递。
如果模块内包括外部输入和输出,还应该包括:
测试文件属性、文件的OPEN/CLOSE语句是否正确。
测试输入/输出的数据格式与代码中定义是否匹配。
测试缓冲区大小是否满足要求。
测试文件使用前是否已经打开,是否处理了文件尾。
测试是否处理了输入/输出错误,测试输出信息中是否有文字错误。
测试单元模块的数据结构
对单元数据结构的测试,应该包括:
测试有无不合适或不相容的数据类型说明。
测试有无变量没有赋初值。
测试变量的初始化或默认值是否正确。
测试有无不正确的变量名(拼错或不正确地截断)。
测试有无出现地址异常。
测试单元模块的执行路径
单元测试的基本任务是保证单元模块中每条路径至少执行一次。而这些路径测试应能发现因错误计算、不正确的比较和不适当的控制流造成的错误。常见的错误包括:
误解或用错了运算符优先级。
混合类型的数据运算。
错误的变量初始值。
数据精度不够。
错误的表达式符号
其他的测试内容还包括:
测试是否错误地使用逻辑运算符或优先级。
测试是否因为计算机精度造成的理论上相等而实际上不相等的错误。
测试比较运算或变量是否出错。
测试循环终止条件是否合理。
测试迭代发散时有无不能退出的错误。
测试是否存在错误地修改了循环变量的情况。
对于出错处理路径应着重测试下列问题:
测试输出的出错信息是否难以理解。
测试记录的错误与实际遇到的错误是否相符。
测试是否存在异常处理不当。
测试错误信息中是否能提供足够的定位出错信息。
另外,单元测试也需要关注软件的可维护性。单元模块的可维护性测试要覆盖:代码结构、模块化、代码注释的质量、标准符合性、可理解性、文档化等。
总之,单元测试是为了确保代码语义与我们的期望是一致的,单元测试的测试用例不可能与集成测试、配置项测试等其他级别的测试用例完全相同。
这正是:
单元测试测什么,全由目的来决定
深入结构和逻辑,语义正确我看行
参考书目:软件测试管理,作者:郑文强,马均飞,出版社:电子工业出版社