51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 5020|回复: 6
打印 上一主题 下一主题

[求助] 关于分布式系统的单元测试

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-11-12 18:00:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
只有20分全献出去了,只求一解,我们的系统是分布式系统,每个业务服务器都是由一个容器(exe)调用业务插件(dll)和一个通用插件(dll)来实现,容器和通用插件完成数据库,通讯和权限等底层业务,现在想知道如何使用单元测试工具对业务插件进行单元测试,我用过CPPUNIT,遇到以下难题:
1 使用CPPUNIT的UI来触发测试,则程序要脱离运行环境,因为运行环境很难模拟(涉及到容器,通用插件以及其他分布程序),这样的话测试很难进行,所有涉及到通讯和数据方面的过程都没有办法执行,必须打桩;
2 如果直接在业务服务器中加载测试代码,那么就无所谓使不使用CPPUNIT了,因为这种方式下CPPUNIT起不了太大作用;

有大侠帮我解答一下,感谢不尽!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2009-11-12 18:47:34 | 只看该作者
单元测试是针对代码单元的独立测试,既然是单元测试,肯定是脱离运行环境下运行。测试一个函数,要专门建立这个函数运行所需要的数据(输入),除此之外的其他环境就隔离掉了,测试时是直接执行这个函数。

业务插件如果只是集成其他容器或插件,本身并没有什么复杂计算,那么不一定需要单元测试,而是把底层插件作为单元测试主要目标。越低层的代码,单元测试难度越小、测试价值越高。当然,如果本身有大量复杂计算又是另一码事。

“涉及到通讯和数据方面的过程都没有办法执行,必须打桩”,这个不一定,测试代码中仍然可以调用这些EXE或DLL,不一定全部打桩。

“如果直接在业务服务器中加载测试代码”也不失为一种选择,不过测试代码可能污染产品代码,造成以后维护上的麻烦,另一方面,测试数据很难管理,原则上不主张。

建议试一下Visual Unit,这个工具至少在以下方面对你有帮助:
构建测试环境,可以比较灵活地选择加入哪些底层模块;
会视需要自动打桩;
具有底层模拟功能,可以模拟底层插件的数据输出。
上面有针对性的列出几点,当然还有很多其他自动化功能。
顺便说一下,Visual Unit是商业软件。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2009-11-17 10:36:52 | 只看该作者
先谢过VU大侠了

涉及到通讯和数据方面的过程都没有办法执行,必须打桩

如果和运行环境隔离的话,这个确实没有办法执行,因为这些都是由外壳容器以及其他业务服务器提供的,还有没有其他的建议。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2009-11-17 11:09:20 | 只看该作者
"涉及到通讯和数据方面的过程都没有办法执行,必须打桩",测试代码也可以调用这些EXE或DLL的,如果真的必须打桩,那恐怕只能使用商业工具了。建议试一下Visual Unit 2,因为打桩必定造成失真,VU2的底层模拟可以把底层函数的输出视为外部输入,与参数之类的输入同等处理,建议先看一下51技术专栏的这篇文章:浅论单元测试的内部输入问题
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2009-11-30 11:31:49 | 只看该作者
还没有解决,先散分吧,感谢VU.
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2009-11-30 12:05:15 | 只看该作者
晕,不知道怎么给分
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2009-12-16 17:03:21 | 只看该作者
有人告诉我怎么给分吗
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-23 01:34 , Processed in 0.075845 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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