Visual Studio 2010多核并行环境下单元测试

原创
开发 后端
本文将介绍的是Visual Studio 2010多核并行环境下单元测试,这也是CPU步入多核时代后.NET程序员需要面对的问题。

【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格式打开

以xml格式打开

图 3 以xml格式打开

6.2 在Execution元素上设置parallelTestCount属性

设置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

【编辑推荐】

 

 

责任编辑:彭凡 来源: 51CTO
相关推荐

2011-01-25 10:42:29

Visual Stud

2012-06-18 10:03:46

Visual Stud

2009-11-13 14:59:12

Visual Stud

2009-10-27 09:12:50

Visual Stud

2009-12-11 13:14:45

Visual Stud

2017-01-14 23:42:49

单元测试框架软件测试

2010-07-27 09:40:01

敏捷Visual Stud

2010-07-29 09:41:23

Visual Stud

2016-09-14 21:55:33

前端测试Karma

2010-11-29 08:57:20

Visual Stud.NET 4

2010-03-11 15:23:44

Visual Stud

2009-09-04 09:39:15

Visual Stud

2010-03-17 08:49:49

Visual Stud

2009-12-02 09:43:38

Visual Stud

2010-04-01 14:51:52

Visual Stud

2010-02-23 16:24:47

Visual Stud

2009-12-15 09:36:32

Visual Stud

2017-01-16 12:12:29

单元测试JUnit

2017-01-14 23:26:17

单元测试JUnit测试

2020-08-18 08:10:02

单元测试Java
点赞
收藏

51CTO技术栈公众号