目录结构

一、Sitespeed.io概述
1.Sitespeed.io简介
2.Sitespeed.io使用场景
二、Sitespeed.io的安装和使用
1.安装Sitespeed.io
2.连接Docker,驱动浏览器进行Web性能测试
1)连接Docker
2)驱动浏览器进行测试
3)测试报告查看
三、Sitespeed.io测试原理描述

一、Sitespeed.io概述

1.Sitespeed.io简介

Sitespeed.io:是一款开源的Web性能测试工具,用来衡量Web网站的综合性能,帮助开发和测试人员分析网页的加载速度和渲染性能。
Sitespeed.io通过驱动浏览器(如:Chrome、Firefox)进行测试,然后从开发者的站点收集多个页面的数据,并根据最佳实践等规则来分析这些网页,然后将结果以HTML报告的形式输出。

Sitespeed.io满足了一个完整的Web性能测试工具所需的3个关键功能:
1)使用真实的浏览器测试Web站点,模拟真实的用户进行请求连接,收集以用户为中心的重要指标,如:响应速度指标、第一视觉呈现
2)可分析页面的组成,并给出相应性能反馈,增加终端用户的使用体验友好性
3)通过收集和保存页面组成的数据,便于跟踪定位

2.Sitespeed.io使用场景

1)运行于持续集成环境中,将代码提交or迁入到测试环境时,及早发现Web性能问题,便于提早进行回归检查
2)监控生产环境(正式环境)中的Web性能表现,发现异常及早提醒回归

二、Sitespeed.io的安装和使用

官网-传送门:https://www.sitespeed.io/

 
1.安装Sitespeed.io

Docker安装完成后,通过以下命令可下载安装Sitespeed.io所需的组件,如下:

docker run --shm-size=1g --rm -v "$(pwd)":/sitespeed.io sitespeedio/sitespeed.io https://www.sitespeed.io/
 
 
Pull 完成
2.连接Docker,驱动浏览器进行Web性能测试

1)连接Docker
通过Xshell远程连接,or通过命令docker-machine ssh default连接进入Docker容器

 
docker-machine ssh default 命令连接
 
Xshell连接

2)驱动浏览器进行测试
被测URL=https://www.baidu.com
操作命令:

docker run --shm-size=1g --rm -v "$(pwd)":/sitespeed.io sitespeedio/sitespeed.io https://www.baidu.com
 

备注说明:
1)Sitespeed.io通过工具集(sitespeed.io,Browsertime,Coach,VisualMetrics)中的各个组件协作完成Web性能测试
2)Sitespeed.io测试过程中默认会迭代3次,一定程度上可以增加分析的可靠性
3)本次驱动测试的浏览器默认是:Chrome 70.x
4)测试完成之后,所生成的HTML报告,存放路径为:/home/docker/sitespeed-result/之下

 

利用WinSCP连接Docker虚拟机之后,即可在以上输出的指定目录下查看到本次Web性能测试生成的测试报告
报告的详细路径:/home/docker/sitespeed-result/www.baidu.com/2018-11-10-10-51-06

 
 

3)测试报告查看
综合评分、性能数据展示:

 
 

性能优化建议:

 

页面概要信息描述:

 
 

三、Sitespeed.io测试原理描述

Sitespeed.io工具集中的部分组件&作用:

  • Sitespeed.io:基于其他一系列开源工具构建而成的sitespeed.io集
  • Browsertime:作为驱动浏览器、收集Web性能度量指标的工具
  • Coach:该组件知道如何构建快速响应的网站,通过分析测试页面,反馈所需调整的优化项
  • VisualMetrics:通过从浏览器的屏幕进行视频录制,收集Web性能度量的视觉指标(如:视觉变化、速度指数)

Sitespeed.io测试执行过程:

  1. sitespeed.io启动并初始化所有需要的组件
  2. URL通过队列传递给组件
    1)Browsertime获取URL并打开浏览器
    2)开始对浏览器屏幕录制视频
    3)驱动浏览器访问URL
    4)当页面加载完成时,Browsertime会对页面截屏
    5)然后运行一些JavaScript脚本(Coach、Browsertime脚本)来分析页面
    6)停止视频录制,并关闭浏览器
    7)分析视频,以获取视觉指标,如:第一视觉变化、速度指数
    8)Browsertime传递队列上的所有指标和数据,以使其他组件可以使用这些指标和数据
  3. HTML/Graphite/InfluxDB组件,收集队列中的指标
  4. 当所有URL都被测试完成时,sitespeed会发送一条消息通知组件集进行总结指标,然后将指标呈现出来
  5. 组件集获取到所呈现的信息,然后HTML组件将这些信息以HTML格式写入到磁盘进行存储为测试报告

参考资料:
[1] Welcome to the wonderful world of web performance!
[2] PUBLIC|AUTOMATED BUILD <sitespeedio/sitespeed.io>
[3] web 性能测试与报告
[4] 前端利器,6款开源的Web性能优化辅助工具推荐

利用Docker安装Web前端性能测试工具Sitespeed.io的更多相关文章

  1. Docker安装Web前端性能测试工具Sitespeed.io

    一.Sitespeed.io概述 1.Sitespeed.io简介 Sitespeed.io:是一款开源的Web性能测试工具,用来衡量Web网站的综合性能,帮助开发和测试人员分析网页的加载速度和渲染性 ...

  2. 两款较好的Web前端性能测试工具

    前段时间接手了一个 web 前端性能优化的任务,一时间不知道从什么地方入手,查了不少资料,发现其实还是蛮简单的,简单来说说. 一.前端性能测试是什么 前端性能测试对象主要包括: HTML.CSS.JS ...

  3. 【转】两款 Web 前端性能测试工具

    前段时间接手了一个 web 前端性能优化的任务,一时间不知道从什么地方入手,查了不少资料,发现其实还是蛮简单的,简单来说说. 一.前端性能测试是什么? 前端性能测试对象主要包括: HTML.CSS.J ...

  4. sitespeedio前端性能测试工具介绍

    很久没有写博客了,今天给大家介绍一款比较好用的前端性能测试工具. sitespeedio简介: sitespeed.io是Jonathan Lee发布的一款可监视和衡量网站前端性能的开源工具. 1.开 ...

  5. Web Service 性能测试工具比较

    背景 希望选择一款Web Service性能测试工具,能真实模拟大量用户访问网站时的请求,从而获取服务器当前的请求处理能力(请求数/秒).以微信服务器为例,每个用户用独立的登录token,做各种操作, ...

  6. [原创]H5前端性能测试工具介绍

    [原创H5前端性能测试工具介绍 一 网络抓包工具 网络抓包工具选择原则,可以捕获网络请求,抓取具体请求信息流,同时可以针对网络请包进行修改或拦截: 1.Fiddler(推荐) 2.Charles(推荐 ...

  7. 性能测试工具 Web Service 性能测试工具比较

    [转自]https://testerhome.com/topics/3003 背景 希望选择一款Web Service性能测试工具,能真实模拟大量用户访问网站时的请求,从而获取服务器当前的请求处理能力 ...

  8. CentOS7利用docker安装MySQL5.7

    CentOS7利用docker安装MySQL5.7 前提条件 centos7 且内核版本高于3.10, 可通过以下命令查看内核版本 uname -r 利用yum 安装docker 安装一些必要的系统工 ...

  9. CentOS中利用Docker安装RabbitMQ

    CentOS中利用Docker安装RabbitMQ 1.拉取镜像(带管理平台) #docker pull rabbitmq:3.7.7-management 2.启动容器: #docker run - ...

随机推荐

  1. 笔记(assert 断言)

    并发:在同一个时间段交替执行多个任务并行:在同一个时间点同时执行多个任务串行:同时执行的多个任务按顺序执行(换句话说就是一个任务执行完后才能执行下一个任务) #mysql limit用法: selec ...

  2. SSM 框架基于ORACLE集成TKMYBATIS 和GENERATOR自动生成代码(Github源码)

    基于前一个博客搭建的SSM框架 https://www.cnblogs.com/jiangyuqin/p/9870641.html 源码:https://github.com/JHeaven/ssm- ...

  3. 20155323 2016-2017-2 《Java程序设计》第10周学习总结

    20155323 2016-2017-2 <Java程序设计>第10周学习总结 教材学习内容总结 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据. 狭义的网络编程范畴就是程序 ...

  4. 20145234黄斐《Java程序设计》实验二—Java面向对象程序设计

    1.提交最后三个测试用例都通过的截图,截图上要有画图加水印,输入自己的学号. 2. 以 TDD的方式研究学习StringBuffer 3.对设计模式示例进行扩充,体会OCP原则和DIP原则的应用,初步 ...

  5. [arc063F]Snuke's Coloring 2-[线段树+观察]

    Description 传送门 Solution 我们先不考虑周长,只考虑长和宽. 依题意得答案下限为max(w+1,h+1),并且最后所得一定是个矩形(矩形内部无点). 好的,所以!!!答案一定会经 ...

  6. 【LG4491】[HAOI2018]染色

    [LG4491][HAOI2018]染色 题面 洛谷 题解 颜色的数量不超过\(lim=min(m,\frac nS)\) 考虑容斥,计算恰好出现\(S\)次的颜色至少\(i\)种的方案数\(f[i] ...

  7. R的数据结构

    R语言中的数据结构包括标量.向量.矩阵.数组.列表以及数据框 目录 1 向量 2 矩阵 3 数据框 1 向量 向量是用于存储单一数据类型(数值.字符.逻辑值)的一维数组,示例如下: a <- c ...

  8. C# 远程图片下载到本地

    下载方法 using System; using System.Net; using System.IO; using System.Text; namespace Common { /// < ...

  9. Unity标准材质官方教程合集

  10. JavaScript学习笔记(三)——对象

    第四章 理解对象 1 说明 对象的状态:属性,行为:方法: 对象定义放在花括号内: 用冒号分隔属性名和属性值: 用逗号分隔属性名和属性值对,包括方法: 最后一个属性值后面不加逗号: 属性名可以是任何字 ...