0

我有一个团队构建(升级模板、tfs2010、msbuild)编译和测试 WCF 服务。在针对它运行集成测试套件之前,我们使用 psexec 和 exec 任务在 Web 服务器上远程安装服务(wix 安装程序)。然而,有时我们的夜间构建会因编译错误而失败 - 只能看到前 1024 个字节,其中大部分是 css 样式。我试图用睡眠来延迟测试,认为这可能是由于长时间的 JIT。然而,所有 600 多个集成测试都失败了。在构建日志中,似乎带有 psexec 的 exec 任务按预期同步执行,并返回退出 0。有人能想出为什么不时发生这种情况的原因吗?

4

1 回答 1

0

这听起来不像是特定于 TFS、msbuild 或 psexec 的任何东西——听起来可能存在临时安装、配置或服务编码问题。CI 和集成测试的目的是获得有关您的流程的早期反馈,显然有些地方是错误的。诀窍是深入研究问题并排除问题所在。

Psexec 声称 WiX 部署进行得很顺利,但确实如此吗?所有文件都存在吗?以前的安装版本是否被正确删除,或者它们是否被正确升级?

所有 600 个测试都失败了,但测试不包含正确的堆栈跟踪 - 你能在测试之外重现问题吗?例如,当测试失败时,您是否可以手动模拟测试或运行现有测试之一并附加调试器以查看相同的堆栈跟踪?一种策略可能是确定一两个准确验证部署的特定测试——在部署后只运行这些测试,如果这些测试失败,您应该中止构建,然后让服务器处于失败状态以进行更深入的分析。这可能需要自定义构建模板,但值得付出努力。

您可以将日志记录添加到 WCF 服务吗?更好地记录测试?

最后,前面提到的 CI 是关于早期反馈的。一般规则是,“如果某件事很痛苦,那么你应该更频繁地这样做。” 关注痛点,隔离它们并迭代改进它们。当疼痛减轻时,专注于其他痛点。在您的情况下,考虑以滚动方式运行您的“夜间”构建 - 您会在运行几次而不是几周后发现间歇性问题。

于 2012-06-15T23:41:31.790 回答