单元测试之道初读随笔
初读单元测试之道,我们首先要知道单元测试是什么?使用单元测试的原因?单元测试怎么进行?单元测试是用于检验被测代码中某一特定函数,一段程序的功能是否正确完善,进行多轮测试保证程序的稳定性,虽然看起来编写单元测试会增加我们的任务,但从长远来看,这对后期代码维护系统优化、升级,管理有极大大的益处,并且减少我们在调试时浪费的时间。
我们测试的目的,是为了我们整个程序架构的稳定,代码其实就是要实现功能的底层基础,如果说前一步做错了,那么可能后面所做的都是无用功。所以好的单元测试能让我们缩短工作时间;通过编译只能代表你的语法和逻辑是正确的,但是不能代表你的程序能解决所有遇到的问题。
Right-BICEP原则:
Right-结果是否正确
B-是否所有的边界条件都是正确的
I-能查一下反向关联吗?
c-能用其他的手段交叉检查一下结果吗?
E-能否可以强制错误条件的发生
P-是否满足性能的要求
CORRECT(正确的)边界条件:
一致性(Conformance):值是否符合预期的格式;
有序性(Ordering):一组值是否符合对排序的要求(有序性、无序性);
区间性(Range):值是否在合理取值范围内(在最小值与最大值之间);
引用(Reference)-耦合性:代码是否引用了不受代码本身直接控制的外部因素;
存在性(Existence):值是否存在(例如:非NULL,非零,包含于某个集合等等)
基数性(Cardinality):是否恰好有足够的值;(也称为集合的势,即集合里面包含的元素个数)
时间性(Time)-绝对时间和相对时间:所有的事情是否按照顺序发生?是否在正确的时间发生?是否及时发生?
如果时间充足的话,我觉得还是穷举可能更好,并且考虑数据爆内存空间和时间。
Mock对象
mock对象是真实对象在调试期的替代品
如何用mock:
1、使用一个接口来描述这个对象
2、为产品代码实现这个接口
3、以测试为目的,在mock对象中实现这个接口
好的测试应该具有以下的品质,合称为A-TRIP:
自动化: 调用测试自动化和检查结果自动化
彻底的: 测试所有可能出现的情况
可重复: 任意顺序的执行其中任意一个测试,产生的结果都是相同
独立的: 测试之间必须独立,且必须独立与周围不可控的环境
专业的: 代码一定是值得测试的

浙公网安备 33010602011771号