我目前正在研究服务器应用程序,我们已经同意尝试并保持一定的服务级别。我们希望保证的服务级别是:如果服务器接受请求并且服务器向客户端发送确认,我们希望保证请求会发生,即使服务器崩溃也是如此。由于请求可以长时间运行并且确认时间需要很短,我们通过坚持请求,然后向客户端发送确认,然后执行各种操作来完成请求来实现此目的。随着操作的执行,它们也会持续存在,因此服务器知道启动时的请求状态,并且还有各种与外部系统进行协调的机制来检查日志的准确性。测试容错代码
这一切似乎都工作得很好,但我们很难用任何信念来说这一点,因为我们发现测试容错代码非常困难。到目前为止,我们已经想出了两种策略但也不是完全满意:
- 有一个外部进程看服务器代码,然后尝试,并在外部进程的想法把它扼杀掉是在测试的适当点
- 添加代码,将导致崩溃一定知道临界点 应用
我与第一个战略问题是外部进程无法知道应用程序的确切状态,所以我们不能肯定我们”重新编写代码中最有问题的一点。我对第二个策略的问题,虽然它提供了更多的控制权,但是错误需要,我不喜欢有代码在我的应用程序中注入错误,即使是可选的编译等。我担心看起来很容易过分注入点并让它进入生产环境。
我在哪里可以在.NET平台上找到关于“碰撞测试拦截器”的更多信息?虽然我们使用DI进行单元测试,但我认为它不适合集成测试。这有两个原因:首先,我们希望集成测试尽可能接近在生产环境中运行的代码,其次需要注入代码来引起失败,这对我们设计各种方法会产生重大(并且不希望的)影响应用程序的模块。 – Robert 2010-05-03 09:33:16
嗨罗伯特,这里有一些很好的阅读http://www.sharpcrafters.com/aop.net/runtime-weaving – Justin 2010-05-03 09:44:29
也是一个很好的例子使用Spring.NET http://www.developer.com/net/csharp/ article.php/3795031 /面向方面编程-AOP与SpringNet.htm – Justin 2010-05-03 09:49:11