赞
踩
被测函数
的一个明确特性,并相应的命名测试方法。test[what]
,比如 TestSave()
,TestAddListener()
,TestDeleteProperty()
等。区别对待 执行覆盖率
和 实际测试覆盖率
。
测试的最初目标应该是确保较高的执行覆盖率. 这样能保证代码在 少量
参数值输入时能执行成功. 一旦执行覆盖率就绪,就应该开始改进测试覆盖率了。
注意,实际的测试覆盖率很难衡量 (而且往往趋近于 0%)。
思考以下公有方法:
int SetLength(double length);
调用 SetLength(1.0)
你可能会得到 100% 的执行覆盖率。但要达到 100% 的实际测试覆盖率,有多少个 double
浮点数这个方法就必须被调用多少次,并且要一一验证行为的正确性. 这无疑是不可能的任务。
AssertEquals(a, b)
而不是 AssertTrue(a == b)
,因为前者会给出更有意义的测试失败信息. 在事先不确定输入值的情况下,这条规则尤为重要,比如之前使用随机参数值组合的例子。疑犯
。反向测试是指刻意编写问题代码(如:非法数据、异常流程、非业务允许输入等),来验证鲁棒性和能否正确的处理错误。
假设如下方法的参数如果传进去的是负数,会返回-1:
int SetLength(double length) {return -1;}
可以用下面的方法来测试这个特例是否被正确处理:
AssertEquals(SetLength(-1), -1)
80%
左右。bug
,都要写一个测试用例
来重现这个 bug
(即无法通过测试),并用它作为成功修正代码的检验标准。单元测试永远无法证明代码的正确性!!
源文件处于独立的文件夹内,则在该文件夹同级目录创建test
文件夹存放测试相关文件。
- module_x
- src
- include
- test
源文件不处于独立的文件夹内,则在源文件所在目录直接存放测试相关文件。
- module_x
- xx.c
- xx.h
- xx.test.c
.test.文件类型
结尾。Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。