F2etest是一個面向前端、測試、產品等崗位的多瀏覽器兼容性測試整體解決方案
F2etest
F2etest是一個面向前端、測試、產品等崗位的多瀏覽器兼容性測試整體解決方案。
在之前,我們一般有三種解決方案:
- 本機安裝大量的虛擬機,一個瀏覽器一個虛擬機,優點:真實,缺點:消耗硬盤資源,消耗CPU資源,打開慢,無法同時打開多個虛擬機
- 使用IeTester等模擬軟件,優點:體積小,資源消耗小,缺點:不真實,很多特性不能代表真實瀏覽器
- 公用機器提供多種瀏覽器,優點:不需要本地安裝,不消耗本機資源,缺點:資源利用率低,整體資源消耗非常恐怖
現在,有了F2etest,一臺普通的4核CPU的服務器,我們就可以提供給20人以上同時使用。
在這之前我們需要20臺機器,相比之下,至少10倍的硬件利用率提升。
相比之前的方案,我們有以下優勢:
- 10倍硬件利用率,降低企業運營成本
- 非常棒的用戶體驗,極大的提高測試效率
- 真實瀏覽器環境,還原真實測試場景
在這個解決方案中,我們使用了以下技術:
- Guacamole: 開源的HTML5遠程解決方案
- Windows Server: Server版Windows,最大化復用機器資源
- hostsShare: 跨瀏覽器,跨服務器的hosts共享
產品截圖
安全風險警示(非常重要)
由于本系統基于Windows Server體系搭建,因此系統的安全性完全取決于部署人的安全部署能力。
如果您希望部署本系統,請確保以下幾點:
- 嚴禁將本系統部署在公網環境,僅可部署在內網環境中使用,作為內部測試用途
- 請將Windows Server服務端升級到最新版本及補丁,以保證沒有出現安全漏洞
- 請將User用戶之間做到完全隔離,僅提供User用戶文件的訪問權限,別的任何權限請勿多余授權
- 請將f2etest-client僅設置為管理員擁有權限,防止API接口被惡意訪問
安裝
-
安裝nodejs
安裝請訪問官網:https://nodejs.org/,如果已安裝好,請略過。
-
下載f2etest代碼
git clone https://github.com/alibaba/f2etest.git
clone后,會發現以下幾個目錄:
- f2etest-guacamole: 這是我們定制過的開源版本,方便f2etest進行調用
- f2etest-web: f2etest的WEB站點,用來提供f2etest服務
- f2etest-client: f2etest的執行機客戶端站點,主要提供API給f2etest-web使用
- hostsshare-server: 實現跨瀏覽器跨系統的hosts服務器
- hostsShare-client: 安裝在f2etest遠程環境中的客戶端,用來修改hostsShare上的hosts綁定
下面會分別針對以上5個組件,會有針對性的安裝教程。
我們建議將1,2,4組件安裝在同一臺Linux服務器上,建議使用CentOs系統。
-
安裝f2etest-guacamole
f2etest-guacamole是定制版本的guacamole,安裝方法請查看:Install Guacamole
-
安裝hostsShare-server
hostsShare是為了實現跨瀏覽器的hosts共享,一次修改,所有瀏覽器同時生效。
由于我們使用的是Windows Server操作系統,并且基于多用戶實現的機器資源復用,存在一個嚴重的缺陷。
那就是hosts是系統級共享的,任何一個用戶修改hosts文件,都會影響所有別的用戶。
因此hostsShare正是為了解決這個問題而開發,同時也讓hosts實現了跨瀏覽器跨服務器成為現實。
安裝方法:
cd hostsshare-server npm install node app
啟動成功后,會發現shostsShare默認工作在:4000端口號
小建議:
- 建議使用pm2或forever等組件實現系統開機自動運行。
-
安裝mysql
安裝mysql: https://www.mysql.com/,如果已安裝好,請略過安裝步驟。
初始化表結構:f2etest-web/f2etest.sql,建議表名:f2etest
-
配置f2etest-web
初始化f2etest-web
cd f2etest-web npm install
修改conf/site.json:
- port: 站點監聽端口號
- name: 站點名稱,修改為自己站點名稱
- about: 站點介紹,顯示在網頁title后面,修改為自己的站點介紹
- icon: 站點icon,默認不需要修改
- dbHost: 數據庫連接信息,修改為mysql服務器IP地址
- dbUser: 同上
- dbPass: 同上
- dbTable: 同上
- clientApiKey: f2etest遠程桌面客戶端的ApiKey,正確的ApiKey才能訪問遠程的API,用來創建當前用戶的賬號,請更改為隨機值,并保持和f2etest-client中的值一致
- guacamoleApi: guacamole的API,請修改為上面第3步安裝完成的API
- footer: 根據需要修改
- statNav: 如果需要自行擴展統計頁面,根據需要修改
修改conf/server.json:
這里的id必需要與f2etest-guacamole中的名字保持一致
2003系統不支持remoteApp,2008以上Server系統支持
修改conf/app.json:
這里的server必需為server.json中已配置的id。program為可選參數,如果不填則直接連接桌面。
修改sso.js:
由于f2etest系統要求必需是登錄用戶才能訪問,因此必需要對接SSO系統才能工作。
請參考現有的sso.js文件進行修改,對接到您公司內部SSO系統。
啟動f2etest-web服務:
node dispatch.js
啟動成功后,可以發現WEB服務默認工作在:3000端口號
小建議:
- 為了方便用戶使用,建議安裝nginx等軟件做反向代理,將端口號隱藏掉。
- 建議使用pm2或forever等組件實現系統開機自動運行。
-
安裝windows server機群
- 1號機:Server 2003: IE6
- 2號機:Server 2003: IE7
- 3號機:Server 2008: IE8
- 4號機:Server 2008: IE9
- 5號機:Server 2008: IE10
- 6號機:Server 2008: IE11
將來如果出現IE12,可以即時增加新的服務器,用來部署新瀏覽器或軟件。
由于Server 2008可安裝的最低IE版本是8,因此IE6和IE7只能安裝在Server 2003系統中。
安裝軟件及配置:
- 遠程桌面會話主機:授權模式請選擇按用戶,會話請選擇5分鐘自動結束,空閑會話不允許超過6小時,顏色限制最大24位色
- 遠程桌面授權:必需要進行正確激活并安裝授權,安裝時請選擇企業授權,并按用戶授權
- IIS:用來部署f2etest-client,由于我們的腳本使用asp編寫,因此請安裝asp相關支持組件
- 設置當前主機每天凌晨自動重啟:防止開機久了,系統出現不穩定
- 用戶組配置:請將Authenticated Users添加到Remote Desktop Users,允許普通用戶可以登錄遠程
- 安裝curl: 將curl的路徑添加到PATH路徑中,以供APP快捷方式調用
- 配置Remote App:如果是2008操作系統,需要將被遠程的程序添加到Remote App,否則無法遠程,添加快捷方式時請選擇:允許任何命令行參數
- 安裝周邊軟件:輸入法,Flash等
提示及注意事項:
- chrome由于和遠程桌面有點小沖突,必需安裝在2003操作系統中
- 使用頻率比較低的瀏覽器,建議硬件配置可以適當降低
- 2008如果默認安裝的是IE10瀏覽器,可以從安裝補丁上卸載,從而降級到IE8
- 建議在任務計劃程序中添加每周磁盤碎片整理,以保持最高工作性能
IE瀏覽器安全級別低解決方案:
- 以桌面模式連接一個User用戶
- 按照需要自由配置IE
- 打開regedit,導出HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\為c:\ie.reg
- 切換為administrator用戶
- 用文本軟件打開c:\ie.reg,替換HKEY_CURRENT_USER為HKEY_Users\Default
- 打開regedit,注冊表編輯器中選擇節點:HKEY_USERS,文件菜單->加載配置單元,選擇C:\Users\Default\NTUser.dat,項名稱輸入:Default
- 雙擊c:\ie.reg導入注冊表
- 在注冊表編輯器中選擇剛才加載的配置單元:Default,文件菜單->卸載配置單元,并確認上載
如何在每臺服務器全局添加可信的根證書:
- 命令行打開mmc
- 菜單->添加/刪除管理單元, 并選擇:證書
- 下一步選擇:計算機帳戶,再點擊下一步
- 在受信任的根證書頒發機構的證書欄目中添加CA即可
-
部署f2etest-client
每臺Server服務器上都需要部署f2etest-client,實現以下兩個功能:
- 提供API給f2etest-web調用,用來初始化用戶賬號
- 遠程桌面連接時,需要打開指定的瀏覽器或軟件,并統計相應軟件的使用次數
bat文件中需要修改兩處地方:
- 代理服務器pac地址:修改為hostsShare服務所在的Ip地址
- 最后一行修改為當前服務的部署域名,用來統計用戶的應用使用情況
由于需要在當前系統中添加新用戶,f2etest-web站點必需設置為administrator權限,否則無法工作
修改setuser.asp中的apiKey,保持和f2etest-web中一致。
2008中必需要安裝Remote App,并且要在Remote App的設置中:允許任何命令行參數。
重要安全說明:f2etest-client的www目錄必需要設置為僅管理員有權限,否則任何人都可以查看到setuser.asp中的apiKey,會有嚴重的安全風險
-
安裝hostsShare-client
hostsShare-client基于node-webkit開發,默認已經提供了一個編譯版本在build目錄中,可以直接部署使用。
建議選擇IE11所在機器上部署hostsShare-client。
hostsShare-client的bat在f2etest-client中的app中:hostsshare.bat
使用
-
WEB方式
我們基于guacamole實現WEB方式的使用,沒有任何學習成本。
詳細教程請參考f2etest-web中的幫助信息
-
桌面方式
桌面方式基于TSWF Schema協議實現的分發,目前Windows和MAC下都有完美的協議實現軟件。
Win7天然就支持遠程TSWF分發技術,Mac下僅需安裝Microsoft Remote Desktop,也可完美支持TSWF。
無論是Win7還是Mac,目前都已經完美支持Remote APP技術,實現遠程應用本地化的完美體驗。
相比較之下,由于桌面方式屬于直連,性能上會更加理想,因此我們建議用戶使用桌面方式。