【51CTO独家特稿】在Visual Studio 2010中,我们推出了运行并行测试的功能,现如今许多机器有多个CPU或一颗CPU有多核,因此我们认为如果测试时利用机器上的所有处理器或所有处理核心,那一定很有意义。同时,还可以有效地提高同一时间测试运行的次数,因此可以缩短运行所有测试的时间。
决定
我们研究了所有不同的测试类型和我们已有的功能,做出了下列决定:
1、我们支持多CPU/核执行的唯一测试类型是单元测试。我们是基于后面这几个因素做出这个决定的:测试类型是UI测试吗?测试已经实现了某些形式的并行执行吗?测试类型托管在不同的主机适配器上吗(我们可能无法控制测试如何执行)?依赖性测试能保证按一定的顺序正确执行吗?测试是一个单元测试扩展吗?这些问题的答案迫使我们选择只支持单元测试。
2、数据适配器(Data Adapters)无法启用。因为数据收集是基于测试事件的,数据收集时如果有多个测试任务正在执行,将会减缓测试的速度,此外,数据本身可能被错误地隔离到特定的测试中,但可能包括来自其他测试的数据和信息。
3、这种情况仅会发生在通过Visual Studio或MSTest执行本地测试时。因为远程测试允许你跨多个代理划分测试,我们决定对远程执行不启用此方案,此外,目前仅适用于Visual Studio或MSTest。
需求
你可能已经等不及要问我,快告诉我需要做什么!
好,但我首先要提醒你,虽然再明显不过了,但我还是要说,那就是你需要准备一台多处理器或多核的机器,可以使用虚拟机,但你要保证宿主主机是多CPU的,最简单的方法就是打开任务管理器进行验证。
图 1 使用任务管理器查看是否是多CPU/核
我的机器只有一颗CPU,但是双核的。
另外,你的测试必须是线程安全的,只有你自己才能确保它们是,如果不能保证,就可能导致不正确的结果、死锁和许多头痛的问题。
如何启用并行测试执行
1、确保你有一台多CPU/核机器;
2、确保你只运行单元测试;
3、确保你的测试是线程安全的;
4、确保你的数据适配器没有开启;
5、确保你在本地运行测试;
6、修改你的测试设置文件。在测试设置文件上点右键,选择“用…打开”
图 2 准备打开测试设置文件
6.1以xml格式打开
图 3 以xml格式打开
6.2 在Execution元素上设置parallelTestCount属性
图 4在Execution元素上设置parallelTestCount属性
有效的选项包括:
不指定该属性 = 使用1CPU/核(默认值)
0 = 自动配置,我们将根据你的CPU和核心数量尽可能多的安排测试
n = 并行测试的数量(如果你不想使用所有的CPU/核)
6.3 保存你的设置,结束。
结果
我的机器是双核,因此我的测试结果是:
图 5 我的测试结果
正如你所看到的,在同一时间我运行了两个测试,如果我串行运行它们,我至少需要10秒,使用并行测试后,我只用了6秒。
图 6 结果摘要
当然还有许多其它因素会影响这一数字,但测试速度主要取决于你的CPU/核心数量。
希望本文对你有所帮助!
原文出处:http://blogs.msdn.com/vstsqualitytools/archive/2009/12/01/executing-unit-tests-in-parallel-on-a-multi-cpu-core-machine.aspx
原文名:Executing Unit Tests in parallel on a multi-CPU/core machin
【编辑推荐】