51Testing软件测试论坛
标题:
如何测试依赖多模块的模块?
[打印本页]
作者:
M4
时间:
2006-4-3 10:33
标题:
如何测试依赖多模块的模块?
嗯。在测试驱动开发的过程中,从底层开始写起,越上层的模块,它依赖的下层模块就越多。一开头还是见一个Mock一个,但是后来这种体力活就越来越吃不消了,请问有什么好的解决方法吗?
也考虑过直接使用真的下层模块来工作,但是真的模块涉及逻辑,要得到期望中的给上层模块的输入,要设计的更下层的输入更复杂,等于要从下层模块的测试用例中搬东西上去用,而且因为涉及Timer、Network的应用,真实模块的运行时间不好控制。
用Mock的也是麻烦。因为底层也在开发维护中,上下层接口经常会有增改。改我就认了,上层必须也跟着变。但是增的情况下,即使上层应用不用改,Mock的东西也要跟着变,不然接口对不上号编译不过去。
总的来说很郁闷... (-_-;)
作者:
zixuxuwu
时间:
2006-4-3 21:39
我觉得最好就是使用下层模块做桩模块,这样一来可以发现已经测试过的模块的一些遗留问题,毕竟刚开始测试的时候不能保证考虑全面,还有输出处理接近真实的环境。事实上,如果你测试的是上层模块的话,输入数据就可以只考虑上层模块(被测试模块)的条件了,至于怎么输出,就让下层自己根据条件去处理好了,如果下层处理不了的话,就只能说明下层的设计有问题或者实现有缺陷。测试人员没有必要在测试上层的时候还要根据下层条件进行设计,如果必须那样的话,只能说明你下层没测试好。
作者:
M4
时间:
2006-4-4 22:44
嗯...输入条件是针对上层模块的逻辑设计的。但是上层的输入条件不是唯一确定下层的输出的条件怎么办?尤其当那些“其他条件”甚为不可控的时候...
比如说,上层使用下层——一个网络组件进行数据收发,当对上层输入了一个条件后,针对下层网络通信的成功、失败等情况,上层是要进行不同的处理的,如发送超时需要重试,重试超时需要通知用户发送失败等等。
对应于各种情况的上层逻辑是否运行如预期,需要构建多个测试用例进行测试吧?那么,就要要求构造条件,使在其中一个测试用例中,下层返回处理成功,而在另一个测试用例中,下层返回处理失败,甚至有多种不同的失败情况,等等。
下层的网络组件,如果使用真实模块,在真实环境下为特定的测试用例构造出成功、失败A、失败B、失败C...的难度比较大,而且真实的网络通信存在通信通道不一定稳定,以及运行时间不确定的问题,对测试结果会造成影响的吧?
最让我头痛的是异步过程,我所参与开发的软件中,下层有比较多的模块是异步工作的,此处异步包括线程以及Timer等机制。如果使用真实模块,测试程序的运行时间几乎完全不可控... :(
作者:
zixuxuwu
时间:
2006-4-6 20:40
这样是有些头疼,不过没有办法,如果可能的条件不多的话,你可以自己设计桩模块,多的情况下就得权衡一下了。
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2