Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用测试运行程序进行web性能测试_C#_Unit Testing_Load Testing_Performance Testing - Fatal编程技术网

C# 使用测试运行程序进行web性能测试

C# 使用测试运行程序进行web性能测试,c#,unit-testing,load-testing,performance-testing,C#,Unit Testing,Load Testing,Performance Testing,我们正在VS2013上用MVC/C编写一个应用程序 我们使用SeleniumWeb驱动程序进行ui测试,并围绕它编写了一个框架,以使过程更具声明性,更少程序性。这里有一个例子 [Test, Category("UITest")] public void CanCreateMeasureSucceedWithOnlyRequiredFields() { ManageMeasureDto dto = new ManageMeasureDto()

我们正在VS2013上用MVC/C编写一个应用程序

我们使用SeleniumWeb驱动程序进行ui测试,并围绕它编写了一个框架,以使过程更具声明性,更少程序性。这里有一个例子

    [Test, Category("UITest")]
    public void CanCreateMeasureSucceedWithOnlyRequiredFields()
    {
        ManageMeasureDto dto = new ManageMeasureDto()
        {
            Name = GetRandomString(10),
            MeasureDataTypeId = MeasureDataTypeId.FreeText,
            DefaultTarget = GetRandomString(10),
            Description = GetRandomString(100)       
        };

        new ManageScreenUITest<MeasureConfigurationController, ManageMeasureDto>(c => c.ManageMeasure(dto), WebDrivers).Execute(ManageScreenExpectedResult.SavedSuccessfullyMessage);
    }
难题中缺少的部分是如何在负载下运行这些“场景”?IE,我正在寻找一个可以执行1..N个并行测试的测试运行,希望能做一些事情,如启动时间,每个场景之间的随机等待等。理想情况下,并发测试的计数也可以在运行时配置,即,多生成5个测试线程。报告并不是非常重要,因为我可以将执行时间记录为web请求的一部分

也许还有另一种方法,例如,使用C#来控制更传统的负载测试工具

此方法的真正优点是处理更复杂的屏幕,即包含对象集合的屏幕。我可以从数据库中获得一个随机的父记录,使用我现有的自动映射代码创建嵌套的dto,让代码遍历该dto以更改随机值,然后使用我的测试框架将该dto的值作为web请求提交。比手工编写JMeter脚本容易得多。 干杯
dave

虽然使用NUnit作为不同任务/测试的运行程序是可以的,但我认为它不是性能测试的正确工具


它使用反射,有开销,最终使用webclient的预定义设置,等等。如果使用性能测试工具会更好。您可以使用NUnit来配置/启动它:)

我不同意NUnit不可用,通过适当的日志记录,任何功能测试运行程序都可以用于性能测试。当测试代码本身提供数据时,例如当发送请求和接收响应时,或者当请求页面时,以及当页面完成加载时,开销并不重要。在我看来,解析日志文件和生成一些基本指标是一项非常简单的任务。如果它成为一个改变事情的大型项目,但更可能的是,我可以使用一个需要一两个小时编写的命令行应用程序


我认为真正的问题是,你可以利用多少与你的正常测试运行。如果您在测试代码中已经有很多日志记录,并且可以轻松地调用它,那么使用NUnit将变得非常有吸引力。如果您没有足够的日志记录或框架来支持一些合适的负载场景,那么使用一些负载测试工具/框架可能会更容易。

这听起来不适合单元测试。有各种各样的工具可以对站点进行负载测试,但是单元测试应该用来测试尽可能最小的单元,以确保它按预期的方式运行。我完全同意,这与单元测试无关。我们有一整套小型、集中的单元测试。我们还有集成测试、配置创建测试,甚至是作为nUnit测试运行的web/UI测试,有些在nCrunch下(对于真正的单元测试和一些集成测试),有些使用DXCore测试运行器(对于UI测试)。对我们来说,NUnit是执行代码和断言各种测试结果的一种简便方法。如果您的测试记录了足够的数据以便从中提取性能信息,NUnit就可以很好地工作。如果您有良好的日志记录,那么编写日志解析器为您运行的所有测试提供性能信息并不难。我认为日志记录不会太难——困难的部分是:nUnit正在寻找一个可以并行执行测试并允许动态放大/缩小线程数的测试。
public void MeasureTestScenario()
{
  CanListMeasures();
  CanSearchMeasures();
  measureId = CanCreateMeasure();
  CanEditMeasure(measureId);
}