Facebook揭秘其應用測試平臺,并開源核心技術

Facebook揭秘其應用測試平臺,并開源核心技術

本周,Facebook讓一群記者參觀了它位于俄勒岡州普賴恩維爾市的數據中心,在這個過程中也展示了他們的一個移動應用測試實驗室,用來測試Facebook app、 Messenger 和Instagram。

目前 這個實驗室總共含有60個機架,每個機架上放置32臺移動設備,這樣整個實驗室擁有有將近2000臺移動設備。每個機架擁有自己單獨的Wi-Fi 信號,并配有電磁干擾附件,以確保周圍的機架不會相互擠占Wi-Fi 信號。

每次Facebook對自己的手機應用做出改變時,都會在這些設備上進行測試,確保沒有程序崩潰以及其他性能問題。為確保所有的測試都是可比較的,每一次測試完成之后,這些手機須全部重新啟動。

Facebook揭秘其應用測試平臺,并開源核心技術

  圖自:Techcrunch

這些移動設備包含了市面上常見機型,例如基本的三星 Galaxy 系列,以及最新版的iPhone系列。同時,這些手機也會運行各版本的操作系統,包含了 KitKat以來所有版本的安卓系統,以及 從 iOS 7 到 iOS 9。

另外,為了加載最新的代碼,所有手機都要連上PC和Mac Mini。分別對應安卓和iOS系統,一臺機架上可能配有4臺OCP Leopard服務器 或8臺Mac Mini(因為一臺Mac Mini 只能連接4臺手機)。

相比于在實體設備上測試,模擬器上測試更加容易,但是Facebook為什么選擇前者呢?

Facebook團隊成員解釋道,盡管在模擬器上可以弄清楚app產生錯誤的原因,但是它不能很好地測試性能,“比如說,我們并不能在模擬器上追蹤1%的性能回歸,所以我們選擇了實體設備測試。”

雖然Facebook沒有明確說明除了使用Chef這個服務器工具以外,他們是怎樣把最新的代碼加載到這些移動設備上的,但是工作人員提到這個實驗室來源于Facebook在CT-Scan領域里的工作(CT-Scan 是一種性能監測服務),或許我們從中能稍微得到一些線索。

在早些時候,工程師只在一臺設備上測試運行app,鑒于市場上多種多樣的手機和平板設備,這是不夠的,所以Facebook“生產工程”(Production Engineering)部門內的一個小團隊就開始著手組建這些機架。

Facebook揭秘其應用測試平臺,并開源核心技術

  圖自:Techcrunch

早期的這些機架構造十分簡單,都是用的金屬材料,這使得Wi-Fi 信號不能有效接收,從而造成整個系統運行不暢。之后員工們嘗試建造一面可以放置240部設備的墻壁,但那樣占的空間就太大了。

現在新版的機架不僅解決了Wi-Fi 信號問題,還增加了新功能--安裝了攝像頭,用來追蹤設備上的各種情況,然而工作人員好像還沒開始用這個功能。

接下來的一段時間,實驗室工作人員正試圖把每個機架上的設備數量增加到64個,同時讓代碼加載到移動設備的效率更快。然而可能更重要的是,Facebook正打算開源機架的設計,以及公開Chef的核心技術秘密。

當然,擁有同樣類型實驗室的并非只有Facebook一家。微軟、亞馬遜和谷歌都有開放的移動應用測試平臺,如果你要測試自己的app,任選一家就行。





====================================分割線================================


本文轉自d1net(轉載)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/281357.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/281357.shtml
英文地址,請注明出處:http://en.pswp.cn/news/281357.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

責任鏈模式 職責鏈模式 Chain of Responsibility Pattern 行為型 設計模式(十七)

責任鏈模式(Chain of Responsibility Pattern)職責鏈模式意圖 使多個對象都有機會處理請求,從而避免請求的發送者和接受者之間的耦合關系將這些對象連接成一條鏈,并沿著這條鏈傳遞請求,直到有一個對象處理它為止。責任…

YOLOv7 在 ML.NET 中使用 ONNX 檢測對象

本文介紹如何在 ML.NET 中使用 YOLOv7 的 ONNX 模型來檢測圖像中的對象。什么是 YOLOYOLO(You Only Look Once)是一種先進的實時目標檢測系統。它是一個在COCO數據集上預訓練的物體檢測架構和模型系列,其版本也是在不斷優化更新。2022年7月&a…

Vue中render: h = h(App)的含義

原文地址:Explanation for render: h > h(App) please 翻譯如下: render: h > h(App) 是下面內容的縮寫: render: function (createElement) {return createElement(App); }進一步縮寫為(ES6 語法): render (createElem…

NppFTP小插件的使用

大家在Linux系統中配置運行環境時,一定會遇到相關配置文件的修改,雖說在Linux系統中可以使用vi,vim的命令進行文本編輯,但是操作起來還是沒有在Windows系統中用的爽,特別是操作大文本量的文件時。Notepad里提供了一個小插件&#…

『實戰』使用Excel催化劑二維碼功能批量生成帶不同圖案二維碼。

熟悉Excel催化劑的老讀者都知道,每逢圖書大促,筆者都會向出版社申請優惠碼優惠券來惠及廣大粉絲。當然公眾號上幫出版社推薦圖書,會有傭金回報,這也是筆者唯一能接受的推廣方式。公眾號自創立以來,沒有接過軟文&#x…

springboot ElasticSearch 簡單的全文檢索高亮

前陣子和張三豐聊天提到了es。這次正好有機會學習并使用 首先引入依賴 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency> 配置文件 spring.data.…

JavaScriptSerializer類 對象序列化為JSON,JSON反序列化為對象

JavaScriptSerializer 類由異步通信層內部使用&#xff0c;用于序列化和反序列化在瀏覽器和 Web 服務器之間傳遞的數據。說白了就是能夠直接將一個C#對象傳送到前臺頁面成為javascript對象。要添加System.Web.Extensions.dll的引用。該類位于System.Web.Script.Serialization命…

nodejs 實踐:express 最佳實踐(六) express 自省獲得所有的路由

nodejs 實踐&#xff1a;express 最佳實踐(六) express 自省獲得所有的路由 某些情況下&#xff0c;你需要知道你的應用有多少路由&#xff0c;這在 express 中沒有方法可以。因此我這邊曲線了一下&#xff0c;做成了一個函數進行處理。遍歷所有的方法進行處理。 代碼 const _ …

使用vue組件搭建網頁應用

使用vue組件搭建網頁應用搭建開發環境開發組件搭建開發環境 搭建一個 vue 項目最快的方式就是使用 vue cli 腳手架進行初始化&#xff0c;包含了所有完整的依賴及開發配置。 首先全局安裝 vue cli&#xff0c;打開 cmd 命令提示符 或者 power shell&#xff0c;輸入以下命令&…

重新整理 .net core 實踐篇 —linux上排查問題實用工具 [外篇]

前言介紹下面幾個工具:Lldbcreatedumpdotnet-dumpdotnet-gcdumpdotnet-symbolProcdump該文的前置篇為:https://www.cnblogs.com/aoximin/p/16839812.html獻給初學者&#xff0c;這篇就只介紹下看下日志和lldb&#xff0c;畢竟東西太多了。正文我以官網的例子作為演示&#xff1…

Office 365離線安裝

Office 365除了可以在線安裝外&#xff0c;還可以進行離線安裝&#xff0c;但激活還是需要連接互聯網的喲首先下載Office部署工具https://www.microsoft.com/en-us/download/details.aspx?id49117 下載文件后&#xff0c;運行自解壓縮可執行文件&#xff0c;其中包含 Office 部…

reduceByKey和groupByKey區別與用法

2019獨角獸企業重金招聘Python工程師標準>>> 在Spar看中&#xff0c;我們知道一切的操作都是基于RDD的。在使用中&#xff0c;RDD有一種非常特殊也是非常實用的format——pair RDD&#xff0c;即RDD的每一行是&#xff08;key, value&#xff09;的格式。這種格式很…

python自動化測試-D6-學習筆記之一(常用模塊補充datetime模塊)

# datetime 模塊import datetimeprint(datetime.datetime.today()) #當前日期&#xff0c;到秒 打印結果&#xff1a;2018-01-21 10:23:46.034410print(datetime.datetime.now()) # 當前日期&#xff0c;到秒 打印結果&#xff1a;2018-01-21 10:23:46.034410print(datetime.d…

Vue如何在data中正確引入圖片路徑

方法一&#xff1a;將圖片資源放入項目 /static 目錄下&#xff0c;使用絕對或相對路徑引用即可 // 文件結構 |-- src | |-- components | | |-- banner.vue |-- static | |-- images | | |-- pic.jpg<template><div id"banner"><img :s…

軟件工程的第一性原理丨SmartIDE

作者&#xff1a;徐磊原文地址&#xff1a;https://smartide.cn/zh/blog/2022-1022-software-engineering/徐磊英捷創軟科技&#xff08;北京&#xff09;有限公司創始?/?席架構師 / CEO / SmartIDE開源項?創始?。微軟最有價值專家MVP&#xff0c;微軟區域技術總監&#xf…

排序算法之快速排序詳解

一、算法介紹 快速排序&#xff1a;快速排序的基本思想是通過一次排序將等待的記錄分成兩個獨立的部分&#xff0c;其中一部分記錄的關鍵字小于另一部分的關鍵字。C部分的快速排序一直持續到整個序列被排序。 任取一個元素 (如第一個) 為中心提出所有小于它的元素&#xff0c;并…

openstack 中國聯盟公開課參會總結

主流趨勢 1. openstack defcore 互操作性認證。打通不同的openstack 廠商之間的連接2. 首批OpenStack管理員認證(COA)將于2016年進行3. 混合云應用廣泛 Cloud Broker,cascading openstack 云連接器4. DevOps5. 虛擬桌面6. Storage 方面&#xff0c;Ceph和Glusterfs 7. Network…

bzoj1088[SCOI2005]掃雷Mine

1088: [SCOI2005]掃雷Mine Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4284 Solved: 2552[Submit][Status][Discuss]Description 相信大家都玩過掃雷的游戲。那是在一個n*m的矩陣里面有一些雷&#xff0c;要你根據一些信息找出雷來。萬圣節到了&#xff0c;“余”人國流…

Re:從零開始的Vue項目搭建

Re&#xff1a;從零開始的Vue項目搭建初始的終結與結束的開始Nodejs項目的簡單測試從零開始webpack開發模式webpack編譯打包后記初始的終結與結束的開始 最開始接觸vue項目搭建是從vue-cli開始&#xff0c;模板式操作&#xff0c;一鍵搞定&#xff0c;幾乎可以無縫進入代碼開發…

在數據庫插入帶小數點數據的問題

想在mysql插入以下數據設計表的時候沒有注意,之前都用的int,這次換成了double,但是插入第一條3.50的時候數據庫顯示為:查了之后知道是設計表的時候沒有注意小數點的設置轉載于:https://juejin.im/post/5c0f61bb6fb9a049ea38cbe9