51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 4241|回复: 3
打印 上一主题 下一主题

[讨论] 如何测试依赖多模块的模块?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2006-4-3 10:33:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
嗯。在测试驱动开发的过程中,从底层开始写起,越上层的模块,它依赖的下层模块就越多。一开头还是见一个Mock一个,但是后来这种体力活就越来越吃不消了,请问有什么好的解决方法吗?

  也考虑过直接使用真的下层模块来工作,但是真的模块涉及逻辑,要得到期望中的给上层模块的输入,要设计的更下层的输入更复杂,等于要从下层模块的测试用例中搬东西上去用,而且因为涉及Timer、Network的应用,真实模块的运行时间不好控制。

  用Mock的也是麻烦。因为底层也在开发维护中,上下层接口经常会有增改。改我就认了,上层必须也跟着变。但是增的情况下,即使上层应用不用改,Mock的东西也要跟着变,不然接口对不上号编译不过去。

  总的来说很郁闷... (-_-;)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2006-4-3 21:39:31 | 只看该作者
我觉得最好就是使用下层模块做桩模块,这样一来可以发现已经测试过的模块的一些遗留问题,毕竟刚开始测试的时候不能保证考虑全面,还有输出处理接近真实的环境。事实上,如果你测试的是上层模块的话,输入数据就可以只考虑上层模块(被测试模块)的条件了,至于怎么输出,就让下层自己根据条件去处理好了,如果下层处理不了的话,就只能说明下层的设计有问题或者实现有缺陷。测试人员没有必要在测试上层的时候还要根据下层条件进行设计,如果必须那样的话,只能说明你下层没测试好。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2006-4-4 22:44:39 | 只看该作者
嗯...输入条件是针对上层模块的逻辑设计的。但是上层的输入条件不是唯一确定下层的输出的条件怎么办?尤其当那些“其他条件”甚为不可控的时候...

  比如说,上层使用下层——一个网络组件进行数据收发,当对上层输入了一个条件后,针对下层网络通信的成功、失败等情况,上层是要进行不同的处理的,如发送超时需要重试,重试超时需要通知用户发送失败等等。

  对应于各种情况的上层逻辑是否运行如预期,需要构建多个测试用例进行测试吧?那么,就要要求构造条件,使在其中一个测试用例中,下层返回处理成功,而在另一个测试用例中,下层返回处理失败,甚至有多种不同的失败情况,等等。
  
  下层的网络组件,如果使用真实模块,在真实环境下为特定的测试用例构造出成功、失败A、失败B、失败C...的难度比较大,而且真实的网络通信存在通信通道不一定稳定,以及运行时间不确定的问题,对测试结果会造成影响的吧?

  最让我头痛的是异步过程,我所参与开发的软件中,下层有比较多的模块是异步工作的,此处异步包括线程以及Timer等机制。如果使用真实模块,测试程序的运行时间几乎完全不可控... :(
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2006-4-6 20:40:51 | 只看该作者
这样是有些头疼,不过没有办法,如果可能的条件不多的话,你可以自己设计桩模块,多的情况下就得权衡一下了。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-6-2 10:36 , Processed in 0.070767 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表