標籤:style blog http java 使用 io strong 檔案
摘要:
optimizaly是一個提供A/B測試服務的網站,可以可視化地線上編輯測試內容和目標,簡單方便。
1. A/B測試簡介
所謂 A/B 測試,簡單來說,就是為同一個目標制定兩個方案(比如兩個頁面),讓一部分使用者使用 A 方案,另一部分使用者使用 B 方案,記錄下使用者的使用方式,看哪個方案更符合設計目標。參考:
http://oldj.net/article/ab-testing-basic-concept
http://www.zhihu.com/question/20045543
http://en.wikipedia.org/wiki/A/B_testing
https://www.optimizely.com/ab-testing
2. optimizaly是什麼
optimizaly是一個提供A/B測試SaaS服務的互連網公司,網址是https://www.optimizely.com。是家美國公司,2010年創立,獲得$1.2M,2013.04獲得A輪$28M,2014.05獲得B輪$57M。參考:
https://www.optimizely.com/about
http://en.wikipedia.org/wiki/Optimizely
http://www.zhihu.com/question/23756936
3. optimizaly的使用簡述
(1)測試發布
測試發布流程:登陸optimizaly的網站 —>輸入要測試的URL —>在optimizaly上編輯對照版本的頁面 —>在optimizaly設定測試目標 —>在頁面源碼上加入一小段js,該js由optimizaly產生 —>啟動測試
所有測試發佈動作都是可視化的。可以線上編輯頁面各元素的內容、座標、樣式,也可以插入或刪除元素。新增圖片時,可以上傳到optimizaly的cdn上,也可以提供已存在圖片的URL。
提供了多種測試目標的設定:
a)點擊事件,在一個預覽頁面上,可視化地進行點擊頁面配置
b)pageView,提供精確、簡單、子串、Regex四種URL匹配方法
c)自訂事件,要通過optimizaly提供的api進行設定
操作細節詳見:https://www.optimizely.com/gettingstarted
測試發布的關鍵在於optimizaly產生的js代碼,所有與測試相關的線上編輯,都會相應地體現在該js代碼裡,最終也是通過此js控制頁面顯示與資料統計。
注意:該js需要加入到html的head中。該js儲存在optimizaly的cdn伺服器上,每個測試有一個固定的js的url,但每次修改測試內容或目標,都會產生一個新的js,但url不變。
實際的頁面大改版,不適合線上編輯頁面,會有實際的分頁檔存在於我們自己的伺服器,可以通過重新導向的方式,對新舊版本頁面做A/B測試,詳見:https://help.optimizely.com/hc/en-us/articles/200040675-Redirect-experiments-Comparing-two-separate-pages
(2)頁面瀏覽與統計
頁面瀏覽流程:輸入網址並斷行符號 —>下載頁面元素,並要下載optimizaly的js —>optimizaly的js通過hash計算出展示給使用者的頁面版本,並通過js控制展示,發送一個uv記錄到optimizaly伺服器—>使用者操作... —>如果觸發預設的事件,則通過ajax發送相應記錄到optimizaly伺服器
使用者瀏覽測試頁面,會額外產生兩類流量:
a)下載optimizaly的js代碼:因為js是在head中,所以開啟頁面時必然要先載入此js,且會影響到使用者開啟頁面的速度。js檔案大小是46KB,位於美國的伺服器上,我的網路的開啟速度在200-500ms之間。可以考慮把此js放到自己的國內伺服器上,但要保證每次修改測試時,都要及時更新js檔案。
b)觸發統計事件,發送訊息給optimizaly伺服器:接受動作記錄的伺服器也在美國,我的網路延遲在300ms以上,低機率出現發送失敗或時間超長的情況,但因為是非同步發送動作記錄,對使用者是沒有影響的。如果發送失敗,則丟失統計資料
(3)統計結果查看
optimizaly有專門的測試結果頁面,使用比較簡單,結果也直觀。有幾個指標,說明如下:
• visitor over time:統計周期的uv數
• conversion over time:如果使用者對頁面進行操作,此處數值就加1;多次操作也算1
• conversion rate:conversion/visitor的計算結果
• improvement:會挑選一個版本叫做baseline,此數值表示與baseline的轉換率差值
• chance to beat baseline: 若用目前的版本替換baseline,戰勝它的機率
4. optimizaly的一些技術細節
(1) 如何辨別UV
關鍵在於cookie,會儲存使用者id,測試id,瀏覽版本記錄,使用者裝置資訊,最近10次曆史操作,時間戳記等資訊。詳見:
https://help.optimizely.com/hc/fr/articles/200040335-What-information-does-Optimizely-store-in-its-cookies-
https://help.optimizely.com/hc/en-us/articles/200040335-How-Optimizely-Works-Snippet-order-of-operations-JavaScript-evaluation-timing-and-cookies
optimizaly產生的js中,根據使用者cookies,通過一個hash演算法,計算出目前使用者展示的頁面樣式,或者跳轉頁面,一個使用者總會看到相同版本的頁面,演算法的細節沒能找到資料。如果刪除了cookie,即便是同一台電腦同一個瀏覽器,再次訪問時,又會當做一個新的uv。
(2) optimizaly的架構
有三個組件:
a) Google App Engine,用於儲存使用者賬戶、測試組態資訊
b) Amazon Elastic Compute Cloud and Simple Storage Service,用於接收、儲存、計算統計資料
c) Akamai ,用於儲存產生的js檔案
optimizaly的官方網站沒有披露更多技術細節
5. optimizaly的坑
(1)費用
它提供的A/B測試是收費的,按照被測網站的uv收費,類似電訊廠商套餐,按月計費,不同套餐提供不同的月uv上限,超出部分費用另算。詳見:https://www.optimizely.com/pricing
(2)統計精度
可能出現統計不準的情況,可能的原因有
a)統計事件發送失敗:統計伺服器在美國,低機率發送失敗,文檔前面有描述
b)統計結果非即時:一次使用者操作後,一般5分鐘以後才能在統計結果裡查到,並且各指標是分開統計的,例如可能使用者的uv數已經+1了,但該使用者的點擊操作還沒有+1
c)可能optimizaly本身就不準
(3)optimizaly網站最好翻XX牆
測試組態、統計結果等頁面經常打不開,最好帶梯子。