我了解并实践了大多数普通的测试方法,但是对于具有多个截然不同的交互过程的系统,测试显然要困难得多。单元测试通常是不可能的,或者在预防上很难。

我对大型分布式系统的自动化测试的工具,技术和思想很感兴趣。


我从Google工程师那里找到了以下视频演示关于他们的一些测试技术。还知道其他类似的演示吗?

评论

仅仅因为系统是分布式的,不应使单元测试成为不可能。使用模拟框架,您可以模拟依赖项(如果代码编写得足够好),并隔离系统的不同部分。

@Peter,完全是。我会说集成测试,尤其是缺陷隔离可能会更难。

@Brian:您提到的链接看起来不错,但是您可以向社区列出他们提到的哪些技术,以便人们无需听50分钟的演讲就能更好地理解问题的背景吗?

@Brian:尽管Google Checkout系统具有许多值得测试的交互位置(Web服务,支付服务),但上述演示文稿看起来主要是测试浏览器与系统之间的交互。演讲中的评论之一证实了我的印象:“没什么?正如标题所示,有关分布式系统测试的内容不多。视频全部涉及硒和google checkout在基本功能级别上的工作方式。您要测试哪种系统?

仅供参考,到演示文稿的链接已失效,并且使用Web存档不足以进行视频检索。

#1 楼

您会发现最好通过以下方法来测试分布式系统:首先通过单元测试对每个组件进行测试,然后再进行少量的集成测试以证明已部署的应用程序按预期工作。

说“单元测试通常是不可能的,或者在预防上很难。”这令人担忧,因为您确实需要在开发应用程序时考虑其可测试性。尤其是对于分布式系统,以鼓励编写单元测试的方式构造应用程序非常重要。例如,每个组件都应提供一个在执行单元测试时可以模拟的接口。然后,您的单元测试应证明不依赖应用程序中的其他组件时每个组件都能正常工作。

对此充满信心之后,您可以进行集成测试,以确保集成时每个组件都能正常运行。预期。

评论


我在此建议中看到的唯一主要问题是代码可用性/开发人员沟通。即使是合理的建议,Blackbox自动化测试人员也不会经常有闲暇时间来利用这些需求。对于白色/灰色,我同意。 OP尚不清楚访问级别。但是我很高兴这个答案足够合适,因为它传达了良好的测试哲学。

–kayleeFrye_onDeck
15年12月18日在5:39