• 1
  • 3
分享
  • 初探网站监控性能测试
  • 恬恬圈 2019-11-11 13:23:19 字数 1844 阅读 2847 收藏 3

从当初的开发,到后来的功能加自动化测试,觉得自己需要去接触一些新的东西。从9月份开始,开始有个新的团队,专门负责网站的性能提高,于是,就跟老大申请了去支持这个team。

首先,我这里说的性能测试,不是传统意义上的压测,所以我们tech lead一直在纠正我,不叫performance testing,而是叫site speed testing。国外的网站不会像淘宝会有那么大的流量,所以我们不是很看重压测,有监控就够了。

做网站速度测试之前,首先我们要弄明白我们在意的metrics,那么有哪些关键的metrics呢?


Metrics

1.速度指标(SpeedIndex)

速度指数是一个计算的指标,用来衡量页面渲染用户可见内容的迅速程度(越低越好)。关于计算方法, 可以参考https://www.nccgroup.trust/au/about-us/newsroom-and-events/blogs/2015/june/speed-index--how-it-works-and-what-it-means/。一般来说,SpeedIndex跟下列几个指标关联紧密:VisualComplete,StartRender以及Page Load Time。

2.Backend Time

主要是指浏览器向服务器发起一个request,拿到first byte的response的时间(TTFB:Time to First Byte)。

3.Start Render Time

浏览器拿到必要的渲染资源,解析后开始渲染第一个像素点的时间。

4.Blocking CSS reuqests

在浏览器渲染内容前,必须要拿到的CSS文件。

5.Blocking JS requests

在浏览器渲染内容前,必须要拿到的JS文件。

6.Load Time (Page Load Time / Visually Complete Time)

顾名思义,这个是加载一个页面的时间参数。

7.Request count

这个就包含了Image request / css request / html request / js request / font request 等等。 这些指标如果突增,一般都表明了一些问题。

8.Request size

跟第七条类似,只不过这个更关注的是大小。


怎样做site speed testing?

1.工具选择

目前用的最多的应该是WebPageTest,一些付费软件比如说SpeedCurve,其实也是在WPT上包了一层。还有Sitespeed.io大家也可以看看。工具只是辅助手段,最主要的还是你觉得好用就好。

2.怎样做测试?

一般当你拿到一个新的功能需求的时候,你会去思考这个会不会影响site speed,如果会影响,大概会影响哪些指标。

拿最近我做的一个ticket为例,主要的需求是去掉blocking js,那么从第一部分我们说到指标来看,这个很明显的是会影响到Start Render Time,那么我们需要做的就是创建一个测试,跑一段时间后,分析一下趋势。

下面这个是当时我们拿到的测试结果:

1.jpg

从上表来看,Start Render Time 提升了一点点,但是我们会看到Page Load Time却变慢了很多。通过研究发现,原来是整个页面渲染的时候调用js的方式发生了变化,如下图所示:

2.jpg

那么这个时候,我们就不知道这是不是一个成功的尝试,因为page load也很重要,会影响到搜索引擎的ranking。通常这种测试我们都是放在ABtesting后面, 那么我们可以通过AB testing设置真实的用户流量去测试,看看实际测试的结果会不会带来好处,从而决定这是不是一个成功的尝试。

3.怎样分析测试结果?

上面我们说了要有针对性地去做测试,那么当我们发现某些指标忽然升的很高,那么我们需要怎样去分析呢?一般这个时候我们就要借助于waterfall了。从requests waterfall中,我们能看到每个请求的详细信息,通过这些信息,我们可以结合一下监控系统/log系统,来诊断是什么问题。

3.jpg

同样,我们从这些信息中,也可以分析出,我们能做哪些改进来提升整个网站的速度。


版权声明:本文出自《51测试天地》原创测试文章系列(四十八)投稿。51Testing软件测试网及相关内容提供者拥有内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 一、DMLDML是Data Manipulation Language英文缩写,数据操作语言包括:INSERT ( 添加语句 )UPDATE ( 更新语句 )DELETE ( 删除语句 )1、INSERT语法:INSERT [INTO] 表名 [(列名)] VALUES (值列表);实例:INSERT INTO goods (name) VALUES ('饼干');1.1 插入单行数据注意:字段名是可选的,如省略依次插入所有字段。INSERT INTO goods VALUES (8,'肥皂',DEFAULT,'2...
            0 0 1053
            分享
          •   摘要:作者在新项目中搭建了python+requests+unittest+HTMLTestRunner接口自动化测试框架,通过修改配置文件实现环境隔离,一份脚本即可在不同的环境执行接口测试用例。  但是没有实现任何形式的消息通知,也没有集成到jenkins,原因很简单,因为还没做到很大,而且用户活跃不够,问题也相对较少,只在上线前后执行一次uat和prod环境。  那这几天想完善一下消息通知功能,让它具备发送消息及报告的功能。  流程  代码  流程及代码功能已在注释中说明。  '''   Created on 2021年5月12日   @au...
            0 0 893
            分享
          •   一个小案例,实现爬取网站里面的图片,包括源码及实现思路。  一.还原手工操作  所谓爬取页面图片,正常人手动操作可以分为两步:  1.打开页面  2.选中图片下载到指定文件夹  用代码实现的话可以节省掉每次下载图片的操作,运行代码实现批量下载。  二 .设计代码实现  步骤一  导入相关库操作import urllib  #导入urllib包 import urllib.request#导入urllib包里的request方法 import re #导入re正则库  步骤二 定义解析页面 load_page()  这个函...
            12 13 1480
            分享
          • 市场上看到的数百种新的应用程序和产品,在向用户发布之前会进行大量测试。自动化测试可以加快流程,通常被视为手动测试的替代品。但是,手动测试在 QA 领域中仍然具有关键作用。如果将 QA 资源偏重其中一种方法,将错失许多提高质量的机会,而平衡手动和自动测试将带来更高质量、更稳定的产品。让我们来看看手动测试仍然很重要的一些原因。UE测试测试人员可以快速识别出什么时候看起来不对劲。自动化测试脚本不会发现这些视觉问题。当测试人员像用户一样与软件交互时,他们能够发现可用性问题和用户界面故障。自动化测试脚本很难对这些内容进行高效的测试。探索性测试自动化测试只执行预先设置的操作和流程。他们需要计划和准备编写,...
            0 0 577
            分享
          • 功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。常用的测试方法如下:页面链接检查:每一个链接是否都有对应的页面,并且页面之间切换正确。相关性检查:删除/增加一项会不会对其他项产生影响,如果产生影响,这些影响是否都正确。检查按钮的功能是否正确:如update,cancel,delete,save等功能是否正确。字符串长度检查:输入超出需求所说明的字符串长度的内容,看系统是否检查字符串长度,会不会出错.字符类型检查:在应该输入指定类型的内容的地方输入其他类型的内容(如在应该输入整型的地方输入其他字符类型),看系统是否检查字符类型,会否报错.标点符号检...
            0 0 674
            分享
      • 51testing软件测试圈微信