关于分布式系统的单元测试
只有20分全献出去了,只求一解,我们的系统是分布式系统,每个业务服务器都是由一个容器(exe)调用业务插件(dll)和一个通用插件(dll)来实现,容器和通用插件完成数据库,通讯和权限等底层业务,现在想知道如何使用单元测试工具对业务插件进行单元测试,我用过CPPUNIT,遇到以下难题:1 使用CPPUNIT的UI来触发测试,则程序要脱离运行环境,因为运行环境很难模拟(涉及到容器,通用插件以及其他分布程序),这样的话测试很难进行,所有涉及到通讯和数据方面的过程都没有办法执行,必须打桩;
2 如果直接在业务服务器中加载测试代码,那么就无所谓使不使用CPPUNIT了,因为这种方式下CPPUNIT起不了太大作用;
有大侠帮我解答一下,感谢不尽! 单元测试是针对代码单元的独立测试,既然是单元测试,肯定是脱离运行环境下运行。测试一个函数,要专门建立这个函数运行所需要的数据(输入),除此之外的其他环境就隔离掉了,测试时是直接执行这个函数。
业务插件如果只是集成其他容器或插件,本身并没有什么复杂计算,那么不一定需要单元测试,而是把底层插件作为单元测试主要目标。越低层的代码,单元测试难度越小、测试价值越高。当然,如果本身有大量复杂计算又是另一码事。
“涉及到通讯和数据方面的过程都没有办法执行,必须打桩”,这个不一定,测试代码中仍然可以调用这些EXE或DLL,不一定全部打桩。
“如果直接在业务服务器中加载测试代码”也不失为一种选择,不过测试代码可能污染产品代码,造成以后维护上的麻烦,另一方面,测试数据很难管理,原则上不主张。
建议试一下Visual Unit,这个工具至少在以下方面对你有帮助:
构建测试环境,可以比较灵活地选择加入哪些底层模块;
会视需要自动打桩;
具有底层模拟功能,可以模拟底层插件的数据输出。
上面有针对性的列出几点,当然还有很多其他自动化功能。
顺便说一下,Visual Unit是商业软件。 先谢过VU大侠了
涉及到通讯和数据方面的过程都没有办法执行,必须打桩
如果和运行环境隔离的话,这个确实没有办法执行,因为这些都是由外壳容器以及其他业务服务器提供的,还有没有其他的建议。 "涉及到通讯和数据方面的过程都没有办法执行,必须打桩",测试代码也可以调用这些EXE或DLL的,如果真的必须打桩,那恐怕只能使用商业工具了。建议试一下Visual Unit 2,因为打桩必定造成失真,VU2的底层模拟可以把底层函数的输出视为外部输入,与参数之类的输入同等处理,建议先看一下51技术专栏的这篇文章:浅论单元测试的内部输入问题。 还没有解决,先散分吧,感谢VU. 晕,不知道怎么给分 有人告诉我怎么给分吗
页:
[1]