chrispenny/silverstripe-webpagetest

向WebPageTest提交性能测试请求并消费结果

安装次数: 0

依赖项: 0

建议者: 0

安全性: 0

星级: 0

关注者: 2

分支: 0

开放问题: 2

类型:silverstripe-vendormodule

dev-master 2020-03-12 19:37 UTC

This package is auto-updated.

Last update: 2024-09-15 05:08:09 UTC


README

此模块的目标是提供一个队列和查看WebPageTest性能测试的方式。然而,这还处于早期阶段——我们有一些基本功能,但这绝对不能取代付费的测试服务(至少目前还不能)。

开箱即用

  • 提供请求和服务类,您可以用于队列和消费WebPageTest性能测试结果。
  • 提供dev/tasks,可用于按计划队列和消费WebPageTest性能测试结果。
  • 基本ModelAdmin用于查看您的提交和WebPageTest性能测试结果。

待定

  • 报告!
  • 图表?
  • 消费更多性能测试结果数据

安装

$ composer require chrispenny/silverstripe-webpagetest

获取WebPageTest的API密钥

如果您想使用此模块与公共API,那么您需要请求一个API密钥。获取API密钥没有要求,只是为了确保人们不会滥用API。

https://webpagetest.org/getkey.php

所需配置

您可以使用不同的方式使用此模块,但假设您只想使用提供的/dev/tasks,您需要添加两个配置设置,然后才能继续。

  • key(您在上面请求的API密钥)
  • url(您希望WebPageTest对其运行测试的URL)

因此,开箱即用,我们只对相同的单个URL运行性能测试。

在此模块的早期阶段,如果您想支持测试多个不同的URL,则需要实现自己的/dev/task。有关详细信息,请参阅使用服务

默认配置

默认情况下,在_config/submission.yml中,我们设置了一些默认配置

base_url: http://www.webpagetest.org/runtest.php
format: json

base_url是WebPageTest的标准请求URL。该模块支持的格式是json

推荐配置

  • location(如果您不提供位置,则将随机选择,这使得您的持续测试变得有点随机,因为您可能会从不同的位置获得不同的结果)

可用位置可在此处找到:https://webpagetest.org/getLocations.php?f=html

其他配置

开箱即用,该模块支持您发送WebPageTest RESTful API中当前支持的任何/所有GET参数。

可用配置

使用dev/tasks

有两个dev/tasks可供您使用。

  • ChrisPenny\WebPageTest\Submission\Task
  • ChrisPenny\WebPageTest\TestResult\Task

Cron支持不是作为此模块的一部分添加的,但您可以设置cron以(例如)每天运行一次Submission\Task(导致每天请求一个新的WebPageTest),并且您可能希望将TestResult\Task设置为每小时运行一次。

以下是对每个任务执行的操作的完整描述。

Submission\Task

当运行此任务时,它将向WebPageTest发送单个GET请求,请求他们排队进行与您在配置中指定的测试匹配的测试。

WebPageTest上的RESTful API文档将显示如果没有提供,默认值是什么:https://sites.google.com/a/webpagetest.org/docs/advanced-features/webpagetest-restful-apis

需要注意的是,通过WebPageTest进行的测试不一定立即处理。如果您使用的是免费服务,那么您的请求将进入队列,并且当您在队列前端时才会处理。然后,测试当然也需要一段时间才能完成。这就是我们为什么要有一个单独的任务来检索测试数据。

一旦我们从WebPageTest收到“OK”(或其他)响应,我们就会创建一个测试提交记录,您可以在/admin/performance-tests/下的ModelAdmin中查看。

这些提交记录有三种可能的状态,这些状态表示测试本身的状态。

  • 挂起(WebPageTest仍在处理我们的请求——他们还没有测试我们的URL)
  • 成功(测试已由WebPageTest完成,我们应该有结果)
  • 失败(出了点问题…)

如果您希望每天运行一次新的性能测试,那么您应该设置一个cron,每天触发这个任务运行一次。

TestResult\Task

当运行此任务时,它会检查当前设置状态为Pending的提交。然后,它会从WebPageTest请求更新该测试的状态。

一般来说,有三种可能性

  • 您仍在队列中,测试尚未开始
  • 您的测试目前正在运行
  • 您的测试已完成

在前两种情况下,我们将创建(或更新)一个测试结果记录,并将数据设置为您在队列中的位置,或者测试正在进行。

在测试完成的情况下,我们将用我们(目前)关心的结果数据填充测试结果记录。

这些测试结果中有很多数据。所以,目前我们只存储基本数据。我欢迎任何人为我们添加存储结果数据的功能。

如果您每天运行cron来触发测试提交,您可能想要在提交发生后的一段时间内排队检索结果,或者,您可以简单地触发这个任务每20分钟运行一次。如果没有挂起的提交,则任务不会做任何事情。

查看提交和结果

ModelAdmin可以在以下位置找到:/admin/performance-tests/

这将列出您所提交的所有提交。

如果您点击您的任何一个提交,您将看到当前状态,一旦有结果,就会出现一个Result选项卡,您可以在其中查看结果及其“运行”(您可能要求WebPageTest执行多次运行,默认情况下,它还会执行“首次查看”和“重复查看”测试)。