0

我们的团队目前使用 Selenium 和 C#(和 NUnit)来运行 UI 自动化测试。所有测试都是手动编程的,这意味着没有使用记录仪。

问题:我们现在要求这些测试跟踪它们自己的性能(和过去的性能),并在其运行时间增加 x%(5% 或 10% 等)时发出警告。

问题:实现这一目标的最佳方法是什么?我们应该创建一个工具来从头开始分析这些 UI 和 API 测试的性能(性能历史),还是有其他我们可以利用的工具?

讨论负载/性能测试的博客或 stackExchange 问题通常参考 C# 的三个主要工具(NeoLoad、SilkPerformer、LoadRunnerProfessional)。但是,我不确定我被要求做的是最纯粹意义上的性能测试(负载测试),因此不确定上述工具是否有助于实现总体目标。他们通常还将性能/负载测试与 UI/API 测试分开。

摘要:寻找关于采取什么方向和/或阅读此类测试的建议。

4

2 回答 2

1

恕我直言,这个要求在太多层面上有太多错误的事情。

这些测试跟踪它们自己的性能(和过去的性能),并在其运行时间增加 x%(5% 或 10% 等)时发出警告。

功能 UI/API 测试的性能指标证明了什么,究竟是什么!?

但是,如果这仍然必须实现,我会建议一种简单的方法 - 在每次 C# Selenium 测试之前/之后使用StopWatch并将其存储在中央数据库中,您可以稍后查询和标记以防增加。

// generate test case id for later use
// create and start the instance of Stopwatch in your [SetUp] method
Stopwatch stopwatch = Stopwatch.StartNew(); 
// your test code here
// in your [TearDown] method
stopwatch.Stop();
// store this in the DB alongside TestCaseId
Console.WriteLine(stopwatch.ElapsedMilliseconds);  
于 2020-07-23T05:37:37.397 回答
1

首先,对跟踪单用户性能的赞誉。只需确保每个请求都满足性能目标,就可以解决多达 80% 的性能问题。

其次,您应该收集一些数据点,但可能不会让您的工作更轻松:HTTP 访问日志中的 w3c 时间,以及来自 RUM(真实用户监视器)的 w3c 导航统计数据Javascript 插件。您可以将该数据推送到开源解决方案,例如 ElasticStack,以管理数据。

假设您知道功能运行的时间,您只需比较两者的统计数据,例如

运行时间 = 最大日志输入时间 - 最小日志输入时间(对于给定的一组测试主机的测试集。)如果您的开发人员可以在每个顶级请求中包含一个版本标志作为参数集的一部分在“?”之后 签名会更好,因为您可以将版本信息用作分组项以进行查询。

然后,您可以从日志中查看每个请求的数据,以查看哪些请求正在通过构建进行改进或降级

您还可以查看 RUM 统计信息,例如 domInteractive 和 domComplete,以检查最终用户的响应时间以及它们是改善还是下降。

这都是被动的,无需修改脚本,只需更改日志模型,添加 RUM 代理,然后将数据收集到可以仪表板更改的位置

于 2021-02-28T15:44:08.293 回答