TestSettings单元测试的网络仿真

时间:2015-01-19 01:21:21

标签: c# visual-studio unit-testing

我想利用网络仿真来模拟单元测试中的各种网络速度和丢包率。我正在尝试对我的网络层进行基准测试,结合不同的丢包率。我在这里遵循了这些说明,但仍然无法让它发挥作用。

Using Network Emulation

Setting testsettings

我尝试通过环回连接127.0.0.1进行测试,并从单元测试中下载远程文件。在这两种情况下,网络速度都不会降低。

这是使用Visual Studio 2013 Premium

如何让网络仿真设置与单元测试一起使用?

1 个答案:

答案 0 :(得分:1)

要使其发挥作用:

  • 如果您计划通过环回连接在同一台计算机上测试客户端/服务器之间的连接,则必须先安装Microsoft Loopback Adapter 。如果您稍后忘记/改变主意,请参阅稍后的环回部分。
  • 以管理员身份运行Visual Studio 2013 Premium(我相信使用testsettings需要Visual Studio Ultimate,Visual Studio Premium或Visual Studio Test Professional)
  • 创建一个testsettings文件(Solution-> Add Item)
    • 双击该文件以打开“测试设置对话框”
    • 选择左侧的数据和诊断
    • 选择网络仿真,单击配置,设置56kpb调制解调器(我们将使用慢速网络仿真来帮助验证仿真是否正常,您可以稍后更改)
    • 单击“从测试设置”对话框中的“应用将提示安装网络绑定。 (如果您没有运行Visual Studio,这将失败)它将自动安装到所有网络绑定。
  • 从主菜单选择文件TEST->测试设置 - >选择testsetting file
  • 确保在TEST->测试设置下保持测试执行引擎运行未选中。我认为经过此检查会导致引擎无法接收我们所做的所有更改,因为它从未关闭/开始重新加载更改。

以前下载时间不到一秒的图像文件,现在花了将近一分钟进行56kbps仿真:

[TestMethod]
public void TestMethod1()
{
    string page = "http://upload.wikimedia.org/wikipedia/commons/5/53/Wikipedia-logo-en-big.png";

    // ... Use HttpClient.
    using (HttpClient client = new HttpClient())
    {
       byte[] result  = client.GetByteArrayAsync(page).Result;
       Console.WriteLine("length" + result.Length);              
    }
}

修改网络仿真设置

testsettings GUI仅提供少量网络配置文件。如果您将Testsettings文件作为Notepad ++之类的XML文件打开,则可以调整网络设置并调整数据包丢失/延迟以测试各种情况。

环回

您不能使用127.0.0.1,因为它会绕过大部分网络层以提高性能,包括绕过仿真器。安装Microsoft Loopback Adapter会添加一个带有自己的IP地址的接口,仿真器驱动程序可以绑定该接口。

如果在完成上述过程绑定网络仿真驱动程序后安装了Microsoft环回适配器,则它只绑定到现有接口。要绑定到新安装的界面,您必须卸载并重新安装网络仿真驱动程序。从开始 - >程序 - > Visual Studio工具 - >开发人员命令提示符...,运行以下两个命令:

VSTestConfig NETWORKEMULATION /uninstall
VSTestConfig NETWORKEMULATION /install

第二个命令应该指示它绑定的接口数量。

从命令行确定环回运行ipconfig/all的IP地址,并查找带有描述" Microsoft Loopback Adapter"的条目。此IP地址将是您对客户端/服务器测试进行编码所需的IP地址。

Ethernet adapter Local Area Connection 2:    
...
   Description . . . . . . . . . . . : Microsoft Loopback Adapter
...
   Link-local IPv6 Address . . . . . : fe80::e0d2:c0f8:b3f8:2199%20(Preferred)
   Autoconfiguration IPv4 Address. . : 169.254.33.153(Preferred)

对互联网的影响

由于网络仿真驱动程序绑定到所有可用接口,因此当您运行单元测试并且模拟启动时,您的Internet连接也将变慢。您可以从“网络连接属性”对话框中取消选中/禁用其他接口的仿真驱动程序。它将在此连接使用以下项目下列为 Microsoft VSTS网络仿真NDIS6驱动程序(在单元测试运行时不执行此操作,I有一个蓝屏,它损坏了驱动程序,不得不再次手动重新安装)

Network Connection Properties dialog