OceaBase开发者大会落地上海!4月20日共同探索数据库前沿趋势!报名戳 了解详情
写点什么

Pinterest 如何将 JavaScript 测试速度提升了 15 倍

  • 2015-02-11
  • 本文字数:899 字

    阅读完需:约 3 分钟

任何时候, Pinterest 都运行着数以百计的 A/B“试验(experiment)”,其 JavaScript 测试框架已无法满足他们的试验需求。它需要 15 分钟才能完成整套“测试(test)”,而且经常会因为试验行为变更以及网络 / 浏览器问题而中断。因此,他们借机重构了 Web 测试框架,并于近日在官方博客上介绍了其中几项重点改进。

新框架名为 Affogato ,架构如下:

他们主要从以下几个方面进行了改进:

  • 速度——他们曾试图通过在多个并行的 Headless 浏览器中运行 JavaScript 测试框架来实现优化。但这种方法未能解决整套测试耗时过长的问题,而且还会导致不可预测的机器资源争用问题。后来,他们选择了 jsdom 。这是一个 node.js 命令行工具,实现了 WHATWG DOM HTML 标准。在他们内部进行的大部分基准测试中,测试速度提升了 5 到 20 倍。其中,“DOM 操作多(DOM-heavy)”的测试性能提升最大。另外,鉴于他们的构建系统可以利用任意数量的处理器内核,他们将整套测试分成了多个小块。
  • 可靠性——为了降低数据查找和网络传输代价,他们使用了测试“固件(fixture)”。所谓固件,就是一些包含 JSON 数据的文件。这些数据描述了需要测试的对象。测试框架使用固件创建恰当的“模拟对象(mock object)”,使他们无需编写实例化模拟对象的样板代码就可以测试对象的不同状态。另外,当进行服务器端调用时,可能会因为网络暂时不可用导致测试失败。为了避免这种情况,他们实现了一个 XHR 记录器,监听 Ajax 请求,并将响应写入文件,用于稍后重放。该记录器使测试时间平均减少了 30%。
  • 易用性——他们封装了 Mocha 框架,添加了许多语法糖,使它很容易运行任意数量的试验(它们是给定测试的一部分)。而借助 Sinon.JS 及其沙盒,每次测试完成后,整个环境都可以自动完成清理。他们还使用 ES6 Promise 简化了异步测试的编写。

经过上述改进,他们 1 分钟就可以完成先前需要 15 分钟才能完成的测试。而且,3 个月的使用表明,该测试框架的可靠性也有了很大的改善。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2015-02-11 09:132388
用户头像

发布了 1008 篇内容, 共 373.8 次阅读, 收获喜欢 340 次。

关注

评论

发布
暂无评论
发现更多内容

百度APP iOS端包体积50M优化实践(六)无用方法清理

百度Geek说

ios 百度app 企业号9月PK榜

大连英歌石科技公司与华为云签署盘古大模型大连实验室框架合作协议

新消费日报

开源框架中的责任链模式实践

vivo互联网技术

dubbo 设计模式 sentinel 责任链

CocoaPods 在iOS开发中养活了这么多项目,它到底是个啥? | 京东云技术团队

京东科技开发者

ios CocoaPods 移动开发 企业号9月PK榜

一文给你讲清楚BeanFactory 和 FactoryBean 的关联与区别

华为云开发者联盟

spring 开发 华为云 华为云开发者联盟 企业号9月PK榜

中移链交易模块介绍

BSN研习社

数据驱动创新,应用场景广泛

百度开发者中心

人工智能 数据分析 生成式AI 千帆大模型平台

人工智能在云计算中能发挥什么作用?

Finovy Cloud

浅入深出的微前端MicroApp | 京东云技术团队

京东科技开发者

前端 React 微前端 企业号9月PK榜

HarmonyOS创作激励计划启动:助力技术创作突破边界

HarmonyOS开发者

HarmonyOS

OpenHarmony创新赛 | 您有一份创新激励奖待领取 请查收!

OpenHarmony开发者

OpenHarmony

美国2009年开始入侵华为总部服务器;马斯克脑机公司将进行首次人体试验;全球首个5G卫星电话拨通丨RTE开发者日报 Vol.54

声网

小项目想当大Boss? 你该读读《孙子兵法》 | 京东云技术团队

京东科技开发者

项目管理 项目经理 企业号9月PK榜

慢SQL原因分析之索引失效 | 京东物流技术团队

京东科技开发者

MySQL 数据库 sql 索引失效 企业号9月PK榜

AITO问界全系迎规模最大范围OTA升级,重新定义“智能天花板”

Geek_2d6073

基于Java开发的neo4j知识图谱、elasticsearch全文检索的数字知识库

金陵老街

百度智能云千帆大模型平台 2.0 产品技术解析

Baidu AICLOUD

异构计算 百度百舸 千帆大模型平台

Mac电脑版MarkDown写作推荐 iA Writer 激活中文最新版

胖墩儿不胖y

markdown Mac软件 Markdown 编辑器 写作软件

GLTF编辑器:在线模型材质编辑工具

3D建模设计

纹理处理 GLTF 材质修改

上升到人生法则的贝叶斯理论

小魏写代码

新生产力范式,重塑工作效率

百度开发者中心

人工智能 ChatGPT 生成式AI

传媒软件的未来变革与发展趋势

百度开发者中心

传媒 生成式AI 千帆大模型平台

企业微信针对百万级组织架构的客户端性能优化实践

JackJiang

网络编程 即时通讯 IM

三步实现BERT模型迁移部署到昇腾

华为云开发者联盟

人工智能 华为云 昇腾 华为云开发者联盟 企业号9月PK榜

ELT in ByteHouse 实践与展望

字节跳动数据平台

数据库 大数据 云原生 数仓 企业号9月PK榜

PWA建快应用,小程序建超级App?

没有用户名丶

智能合约跟单系统开发,一键自动跟单平台模式搭建

V\TG【ch3nguang】

Cinema 4D 2024 for mac(c4d2024) v2024.0.1永久激活版

mac

windows 三维建模软件 苹果mac Cinema 4D 2024 c4d2024

Pinterest如何将JavaScript测试速度提升了15倍_JavaScript_谢丽_InfoQ精选文章