visual-studio-2013 – 可以在Visual Studio 2013负载测试中使用Specflow场景

我计划重用VS Load Test的现有Specflow场景(目前用于验收和自动测试),以避免重复和额外的工作. Specflow适用于那些测试,因为它运行它们一次,但是在Load测试的上下文中,当它执行每个Specflow场景多次并且并行它会遇到问题和错误并且用户数量更多时会得到更多

这些错误可能会导致部分测试失败,最终会产生不正确的测试结果,例如使用一个Specflow场景作为测试场景,负载测试为20个用户,时间段为2分钟,可能导致50个类似于下面的错误.因此测试结果显示特定场景执行200次,其中150次通过,50次失败测试,​​失败是由Specflow错误引起的.在负载测试的上下文中,由于测试本身存在问题,因此该结果完全错误且不正确.

错误信息:

ScenarioTearDown threw exception. System.NullReferenceException: System.NullReferenceException: Object reference not set to an instance of an object.
TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.HandleBlockSwitch(ScenarioBlock block)
TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.Step(StepDefinitionKeyword stepDefinitionKeyword, String keyword, String text, String multilineTextArg, Table tableArg)
TechTalk.SpecFlow.TestRunner.Then(String text, String multilineTextArg, Table tableArg, String keyword)

经过一些调查后,似乎Specflow无法生成和运行相同的方案并行导致此冲突并且未通过一些测试但我也对此有一些疑问,并试图查看是否有任何解决方法或如果我遗漏任何东西并想知道是否Specflow场景可以用于负载测试吗?

最佳答案
我理解想要重复使用测试进行负载测试(不要重复自己),但负载测试的目的与验收测试有很大不同.负载测试应该采用现实的每天使用场景,并且越来越多的用户使用它们.因此,我建议您将负载测试与验收和自动化测试分开.他们真的在测试不同的东西.

负载测试应该针对每天场景的高使用率测试应用程序的性能,并且接受和自动化测试确保应用程序根据规范运行.

Load testing is the process of putting demand on a system or device and measuring its response. Load testing is performed to determine a system’s behavior under both normal and anticipated peak load conditions. It helps to identify the maximum operating capacity of an application as well as any bottlenecks and determine which element is causing degradation.

资料来源:Wikipedia: Load testing

An acceptance test is a formal description of the behaviour of a software product, generally expressed as an example or a usage scenario. … For many Agile teams acceptance tests are the main form of functional specification; sometimes the only formal expression of business requirements. In other cases, they merely complement a specification document resulting from a less specifically Agile technique or formalism, such as uses cases or more narrative documents.

资料来源:Agile Aliance: Acceptance Testing

它们是不同的东西,因此测试和测试框架也应该是不同的.你不是通过为负载测试保留一个单独的套件来“重复自己”.

至于为何失败的技术原因?当使用普通的Visual Studio测试运行器运行时,SpecFlow不是为了并行运行测试而构建的.可以使用并行测试运行器,但大多数是付费软件.

转载注明原文:visual-studio-2013 – 可以在Visual Studio 2013负载测试中使用Specflow场景 - 代码日志