我正在尝试创建一个单元测试以在 Microsoft 测试管理器 2010 中的两台计算机上运行。在此测试中,我希望一些客户端和服务器端测试代码同时运行;客户端测试依赖于服务器端测试是否成功。
在测试管理器中组合测试套件时,我希望能够将两个测试设置为具有相同的顺序值(以便它们同时运行),但验证阻止了这种情况;设置顺序如下所示:
有什么方法可以实现我所追求的同步测试执行吗?
最佳答案
抱歉回答晚了...我错过了有关您对我的问题的回答的通知 :-( 抱歉!
如果您仍在寻找解决方案,请引用我的建议。
我假设您有一个由两台机器(用于服务器和客户端)组成的测试环境。
如果是这样,您将无法对它们同时运行测试,或者更好的说法是您对运行的测试没有足够的控制权。检查How to Run automated tests on multiple computers at the same time
其实我在“Visual Studio Development Forum”上发布了一个相关问题,你可以查看我在这里得到的答案:Is it possible to run test on several virtual machines, which belong to the same environment, using build-deploy-test workflow
这意味着您最终将创建两个环境,每个环境由一台机器组成(一台用于服务器,一台用于客户端)。
但是您将无法在构建定义中引用这两个环境,因为您只能在 DefaultLabTemplate 中选择一个环境。
这导致了我可以建议的解决方案:
- 创建两个实验室环境
- 创建三个构建定义
- 第一个只会构建您的测试代码
- 第二个将部署第一个中最后成功的构建并在服务器环境中开始测试
- 第三个将部署第一个中最后成功的构建并开始在客户端环境中进行测试。
- 在晚上自动运行第一个构建定义
- 稍后同时触发后两者。
这不是很好,我知道...
您必须将构建测试代码的构建定义与运行测试的两个构建定义同步。
几个月前我在考虑设置类似的测试,这是我想到的最好的解决方案...
另一种选择我还没有尝试过可能是:
- 使用由两台机器组成的单一测试环境,并为它们使用不同的角色(分别是服务器和客户端)。
- 在 MTM 中创建两个测试设置(一个用于服务器角色,一个用于客户端角色)。
- 使用 tcm.exe 工具创建一个开始测试的 bat 文件(详情请参阅 How to: Run Automated Tests from the Command Line Using Tcm)。
您将需要两次 tcm.exe 调用,一次用于您创建的每个测试设置。
由于 tcm.exe 调用只是将测试运行排队并立即返回(或多或少),因此此 bath 文件将同时开始测试(或多或少)。 - 使用 DefaultLabTemplate 创建构建定义。
该定义将:
- 构建测试代码
- 将它们部署到您环境中的两台机器上
- 运行你的 bath 脚本作为最后的部署步骤
(您必须确保此脚本位于构建机器上或将其部署到那里或使其可从构建机器访问)
正如我所说,我还没有尝试过。
这种方法的缺点是您不会在构建日志中看到测试部分,因为测试不会通过 DefaultLabTemplate 提供的方式启动。所以构建不会在测试失败时失败。
但是您仍然可以在 MTM 中看到测试结果,并且将获得每台机器的测试结果。
但取决于对您来说更重要的是什么(有剩余结果或构建定义在测试失败时失败或两者都有)它可能是适合您的解决方案。
关于testing - 您能否在 Microsoft Test Manager 2010 的测试套件中同时运行两个测试用例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18209296/