performance - 我们如何使用现有的 selenium 脚本(java)来获得一些端到端的性能指标(低负载)
问题描述
我正在尝试利用自动化团队开发的 java 中现有的 selenium 自动化脚本来获得一些端到端的性能指标(总页面加载时间等)——非常小的负载,与 api 负载测试并行。
请让我知道最有效的方法是什么。此外,我正在寻找对 selenium 脚本进行最小更改,因为这将是每个版本的持续活动,我正在寻找使用功能性脚本,因为它与围绕它的性能包装器一起使用。
您的建议将不胜感激。
谢谢你!
解决方案
我会避免使用 Selenium 进行负载测试。如果设置专用性能测试不是一个选项,您至少可以这样做:
//Put this into the loaded scripts of your page under test. Make sure loadTimeMs is a global variable or saved to a hidden control.
var loadTimeMs = 0;
var pageContentRecieved = (new Date()).getTime();
$(window).load(function () {
var pageLoaded = (new Date()).getTime();
loadTimeMs = pageLoaded - pageContentRecieved;
});
这将为您提供加载页面同步部分的大致时间。更重要的是 Web 服务器为您提供内容的时间。我建议通过将页面作为 javascript 中的 API 回调来以受控方式执行此操作。
//Return previous value for page load time.
JavascriptExecutor je = (JavascriptExecutor)driver;
int pageLoad = je.executeAsyncScript("return loadTimeMs;");
//Goes into Java code.
je = (JavascriptExecutor)driver;
int apiResponseTime = je.executeAsyncScript(
"var loadTimeMs = 0;" +
"var pageContentRecieved = (new Date()).getTime();" +
"$.ajax({url: "demo_test.txt", success: function(result){" +
"var pageLoaded = (new Date()).getTime();" +
"return pageLoaded - pageContentRecieved;" +
"}});" +
);
int fullLoadTime = pageLoad + apiResponseTime;
最后,在现有的 selenium 测试中将这两个值相加以进行粗略/近似的性能检查。
推荐阅读
- azure - 无法使用高级服务计划部署 Azure Function
- html - 我的导航栏无法正确填充 100% 的屏幕宽度。导航栏中的项目水平对齐
- google-cloud-platform - GCP Cloud Armor DDoS 设置
- java - 当我们使用 Kodein Aware 框架时,是否也需要使用 Dagger?
- javascript - 边界改变后清除标记,vue cookbook google map
- angular - 从角度 9 中的一个组件单击按钮时显示组件
- regex - 如何匹配包含多个给定单词的字符串?
- qt - 达到屏幕限制后,突出显示矩形被放置在列表元素后面
- docker - kubectl 公开部署 hello-minikube --type=NodePort 不工作
- python - 如何使用 NLTK 从 Python 中的文本字符串中提取数字