学习日志之software engineering(15)——integration testing

单元测试与依赖性处理
本文探讨了单元测试中依赖性的概念,解释了如何通过绘制依赖图来识别单元间的依赖关系,并介绍了使用Stubs和Mocks的方法来隔离依赖,以便进行有效的单元测试。此外,还讨论了Incremental Integration的测试策略,以及自上而下和自下而上的测试方法。

在工程中,每个Unit都是一个独立的个体,但是在某些Unit之间会存在一些dependency导致这些Unit在测试时需要进行处理才能从整个系统中给分离出来单独测试。其中Unit在不同类语言中表示的东西也不同,比如在procedual languages(面向过程的语言)中其表现为function,而在oo language(面向对象的语言)中表现为类以及类中的methods。要知道是否在各个unit之间存在有dependency,我们需要画出dependency graph,如下右边所示:其中f1的运行就依赖于f2和f3运行的结果,同样的f2运行依赖于f4的运行结果。

另外这里的f1称为根(root),而f3和f4称为叶(leaf)

如果需要测试这些存在dependency的Unit则需要对其进行一定的处理。例如如果需要测试f2那么我们就可以弄一个可以替代f4的Unit来给f2传递其需要的数据,这个substitute称为Stubs。当然这个stubs不一定要和f4一模一样可能是f4的精简版,另外在测试f2之前我们还需要保证f4的正确性,即要先测试f4。测试的结构图如下,其中f2 driver中包含了很多的test cases用于这个测试。这个Driver也称为mock,Stubs也称为mock ups.

有时候两个Units分开测试时可以征程工作但是合并到一起就完蛋了,这时就遇上了dependency defect,即此时defect发生在dependency中。在处理多个Unit的情况时我们也是需要将所有的Unit分开测试,然后一级一级合并起来。在前阶段测试的时候要避免过多的Unit一次性合并在一起测试。这种一级一级垒起来的测试方法称为Incremental integration。

这种测试方法主要分为两类:自上而下,自下而上。

在Top down方法中如果遇到像上面的例子一样在两个Unit之间具有dependency那么就需要写一些stubs,而对于bottom up方法就不需要,因为前面的都测试过了直接拿来用就好了。

 

 

 

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值