摘要:
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,提供精確、簡單、子串、正則表達式四種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/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牆
測試配置、統計結果等頁面經常打不開,最好帶梯子。