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

arf*_*rfo 6 load-testing specflow visual-studio-2013

我计划重用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)
Run Code Online (Sandbox Code Playgroud)

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

Gre*_*rdt 5

我知道要重用您的测试进行负载测试(不要重复自己),但是负载测试的目的与验收测试有很大不同。负载测试应该在每天的实际使用场景中进行,并增加用户数量。因此,我敦促您将负载测试与验收测试和自动化测试分开。他们确实在测试不同的东西。

负载测试应该在每天高使用率的情况下测试应用程序的性能,并且接受和自动测试可以确保应用程序按照规范运行。

负载测试是对系统或设备提出需求并评估其响应的过程。执行负载测试以确定系统在正常和预期峰值负载条件下的行为。它有助于确定应用程序的最大操作能力以及任何瓶颈,并确定导致降级的元素。

来源:维基百科:负载测试

验收测试是一种软件产品,一般表示为一个例子或使用场景的行为的正式描述。...对于许多敏捷团队来说,验收测试是功能规范的主要形式;有时是业务需求的唯一正式表达。在其他情况下,它们仅是对由较不具体的敏捷技术或形式主义产生的规范文档的补充,例如用例或更多叙述性文档。

来源:敏捷联盟:验收测试

它们是不同的事物,因此测试和测试框架也应该不同。通过保留单独的套件进行负载测试,您并不是真正的“重复自己”。

至于失败的技术原因?使用普通的Visual Studio测试运行程序运行时,SpecFlow并未构建为并行运行测试。有并行测试运行程序可用,但大多数是付费软件。