【腾讯TMQ】移动H5性能测试平台解决方案

作者:廖亿富

1.平台的目的

说到H5性能测试,大家想到最多的是在PC端利用Firebug、Fiddle和HttpWatch等工具进行测试和性能指标的分析,但是如果我们测试的是Android上的H5,我们该如何保证数据准确度、如何测试起来更方便快捷、如何才能够小白式进行性能测试呢?

2.解决方案

带着这些问题进行了深入的学习、思考与讨论,最后敲定了一键测试的解决方案,就是用户只需提交一个Url,就可以得到一份完美的报告。

带着这些思路,让我们一起走进H5性能测试平台的实现,手把手一起打造H5性能测试平台。

3.搭建平台所需的知识

搭建平台的方式和使用的语言有很多,为了方便、快捷、高效,我们使用了Python的Web架构进行页面的展示和数据交互,Jenkins进行任务的调度和处理,Harviewer进行har文件的解析与瀑布流的展示。

3.1 Django

PythonWeb框架

Django采用了MVT的框架模式,即模型M,视图V和模板T。从Django的架构图可以清晰地把握Django的组成部分。

3.2 Jenkins

Jenkins是一个可扩展的持续集成引擎,Jenkins非常易于安装和配置,简单易用。主要利用Jenkins的定时任务功能实现H5性能测试任务的调度功能。

3.3 Harviewer

HarViewer是基于Json格式来可视化Http跟踪工具创建的Har日志文件。可以很方便的展示生成的Har文件。

4.平台架构

整个平台涉及到的资源比较多,包括:Jenkins、H5平台、Linux Web服务和手机端的功能。

主要流程:

1)用户提交Url,H5平台将数据保存入数据库并加入到任务队列

2) Jenkins任务每1分钟向H5平台发起执行任务请求,H5平台查询是否有等待任务,有则向Linux的Python Web接口执行H5测试任务与数据收集

3) H5测试任务执行完毕后,将测试结果传给H5平台进行解析与入库处理

4)结果完成后,请求页面会自动跳转到结果页面或到任务列表查看结果信息

注:H5平台、Jenkins与Linux Web服务之前的调用采用的是Http get/post的请求方式。

5.平台的实现

5.1 H5性能平台功能实现

根据Django的架构流程逻辑,可以轻易的实现从Http请求到View视图/Http响应的流程。

1) 用户在浏览器上打开一个链接。

2) Django接收到一个Http请求后,会在配置文件中查找url对应的函数。

3)在GetHtmlControllerView实现请求参数获取、数据库查询和返回到View。

4)最后在Template中实现页面的展示,包括了Html、CSS和JS。

5.2 Jenkins任务调度的实现

Jenkins任务调度主要实现配置定时任务和实现Http请求。

1)Jenkins任务配置

在Jenkins中配置一个job,定时任务配置成1分钟执行一次。

在配置信息里面指定执行的批处理任务。

2)Http请求实现的python代码。

通过python的httplib轻松实现一个Http请求的访问。

6.平台页面功能解说

6.1 H5请求页面

用户在页面上提交一个Url,H5平台将url存储到数据库中,并每隔5s查询任务执行的状态。目前平台暂时只支持公司Wifi下的测试,后续将扩展到更多手机和各种网络下进行H5性能测试。

6.2 H5任务列表

用户提交了H5页面测试后可以在任务列表中查看任务排队和执行情况,如果执行完成,可以进行结果查看。

6.3 结果详情展示

结果页面提供了丰富的H5性能指标,包括:11项关键指标、域名资源统计、资源统计信息、图片资源统计,并给出了详细的建议和终端的瀑布流。可以根据这些指标和详细建议对其进行分析和定位。

相关推荐

【腾讯TMQ】从0到1:打造移动端H5性能测试平台

手机QQ会员H5加速方案——sonic技术内幕

腾讯移动分析MTA

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据库新发现

Sun Cluster工作原理介绍(转)

本章的结构安排是以介绍Sun Cluster中重要的概念为主线。相关的工作原理分布在各个概念的介绍之中。     quorum的概念在分布式系统中经常被用到。...

683
来自专栏数据和云

【新书连载】应用无法连接数据库问题分析

编辑说明:《Oracle性能优化与诊断案例精选》出版以来,收到很多读者的来信和评论,我们会通过连载的形式将书中内容公布出来,希望书中内容能够帮助到更多的读者朋友...

3135
来自专栏主机笔记

Windows2012搭建我的世界(Minecraft)服务器超简单

有台qq云的服务器一直在挂机没事干,使用Windows2012系统搭建我的世界服务端,傻瓜式安装简单快速,亲测试可以玩。 0.安装环境 服务器配置:2核2G1M...

6209
来自专栏逸鹏说道

亿级Web系统搭建:单机到分布式集群

当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题。为了解决这些性能...

4177
来自专栏云计算教程系列

什么是高可用性?

随着对旨在为关键系统提供服务的可靠和高性能基础架构的需求不断增加,术语可扩展性和高可用性不再受欢迎。虽然处理增加的系统负载是一个常见问题,但减少停机时间和消除单...

2020
来自专栏phodal

博客系统的架构思考(中)——静态与CQRS

对于复杂的系统来说,上一篇的做法做确实很不错。但是对于一个简单地系统来说,这样做是不是玩过火了?如果我们要设计一个博客系统的话,那么我们是不是可以考虑将Writ...

2069
来自专栏开源项目

揭秘互联网防火墙核心技术 | 码云周刊第 55 期

在日益复杂的互联网活动中,一个网络防火墙扮演着防备潜在的恶意的活动的屏障,并可通过一个”门”来允许人们在你的安全网络和开放的不安全的网络之间通信。今天,小编推荐...

2923
来自专栏开心的学习之路

01 用Intellij idea+Gradle+jmonkey开发3d仿真应用

由于项目需求是某一施工过程的模拟,对准确性的要求高于视觉效果,交付时间又比较紧,需要从数据库和dll中实时读入数据,进行可视化显示,因此选用了JmonkeyEn...

2838
来自专栏追不上乌龟的兔子

微服务实现 - Netflix技术栈

你好。今天我将讨论并解释如何实现基于微服务的系统。有很多用于实现微服务的工具和技术。我今天关注的是Netflix技术栈和SpringBoot。目前微服务是业内热...

1481
来自专栏butterfly100

Chris Richardson微服务翻译:构建微服务之使用API网关

Chris Richardson 微服务系列翻译全7篇链接: 微服务介绍 构建微服务之使用API网关(本文) 构建微服务之微服务架构的进程通讯 微服务架构中的服...

2856

扫码关注云+社区