close

「AB測試」的圖片搜尋結果

[圖片來源] http://conversionlab.co

 

  在談論暗度發佈跟AB測試之前,我們應該先了解到"部署"與"發佈"之間是不同意義的。

  「部署是指把擁有新功能或已改善既有缺陷的新軟體版本上線到生產環境(Production)的機器上;「發佈則是指開放新功能給使用者使用。這是完全不同的兩件事。通常我們會以為部署就是發佈是因為我們在部署的軟體版本上並未提供新功能的開關,所以一旦新軟體部署到生產環境,所有新功能也就立即開放給使用者了,如此才會誤以為部署等於發佈,但從現在開始,應該嚴格明白這兩個動詞是完全不一樣的兩件事。

  "暗度發佈"與"AB測試"便是基於部署與發佈解耦的基礎而來的,它們的重點都是在於透過功能切換開關來實現對部份使用者開放新功能以期能在生產環境上做到真實的負載測試並快速驗證新功能是否達成預期的業務目標。

  先來談談暗度發佈(Dark Release)吧,「暗度發佈是先把所有軟體新功能上線到生產環境之後,然後對客戶進行仍不可見的新功能測試。一開始軟體部署到生產環境,會先禁用所有新功能,然後透過功能開關先對少量使用者開放新功能但不顯示在使用者的UI畫面上,同時在使用者不知情的狀態下呼叫程式碼調用新功能的函數,但隱藏在使用者端的測試程式碼並不會對使用者顯示呼叫新函數結果Facebook便是用這種方式才測試它的新功能的,例如Facebook聊天室就是透過暗度發佈進行測試的。

  這樣做有什麼好處呢?答案是可以直接用生產環境的流量測試網站新功能是否會造成服務中斷或故障!而且功能切換開關不只要可以on/off受測試功能,還應該可以控制開放使用者的數量,例如可以先開放5%使用者使用新功能,沒有問題再往上開放10%30%55%... 直到百分之百開放,過程中有任何問題便停用該功能並且回到開發階段做修正後重新部署再暗度發佈,重覆這過程直到100%使用者流量都沒問題,再決定正式發佈該功能。此時所有問題早在暗度發佈測試中發現並解決,所以使用者一定可以正常體驗到新功能並且擁有絕佳功能體驗。

  以上是暗度發佈,可以在新功能發佈前用生產環境的流量進行負載測試!而另一個同樣也是直接在生產環境上做測試的應用發佈模式就是AB測試了!

  跟暗度發佈一樣,AB測試也有它的特別目的,它是一種實踐"假設驅動開發"的方法,目的是讓工程開發人員可以在最短的時間內對新業務功能構想進行實驗,在生產環境上交由使用者驗證其開發的功能是否達到預想的業務目標,如果無法達成設定的目標,代表該開發的功能對市場是沒有價值的,應該立即停止並且開發下一個新構想,然後再放到生產環境做AB測試。

  易言之,AB測試是快速驗證我們的"業務假設"的方式,它的運作過程是從產品服務團隊提出一項"業務假設"開始,然後實作能達到該業務假設的功能,在部署管線中進行持續測試與交付,然後最後在生產環境進行功能發佈及AB測試,獲取真實使用者對該功能的反應以及業務數據,然後業務假設方可得到驗證,若結果不符預想結果,則該假設錯誤,應即丟棄或修正。

  AB測試的定義則是在生產環境提供使用者兩種版本的網站頁面,部份使用者會被導到有新功能的頁面,其餘則仍在沒有新功能的頁面,這同樣是透過功能切換開關來完成的。利用這種方式,便可知道用新功能的使用者反應如何,如果不錯再持續讓更多使用者可以使用新功能,直到業務假設被證實為真,這就是假設驅動開發的精神。

  在建構一項功能之前,我們應該問問自己該功能是否真被需要?然後以最低成本且最快速的方式實驗,透過AB測試進行使用者研究來來驗證設想的功能是否能產生預期業務成果,這就是「假設驅動開發」的定義。

  而為了讓我們可以持續假設發起AB測試的實驗,業務假設所對應的開發功能應該愈小愈好,也就是要符合單件流策略,一次AB測試只驗證一個假設或Feature,系統才能不斷改善並推出符合使用者期待的業務功能。

  不管是暗度發佈或AB測試,都是讓我們可以在真實生產環境中用真實使用者來幫我們做功能驗證的方式,在我們的價值流之中應該要把他們納入,畢竟又有什麼測試比得上由使用者親自幫我們驗證真實?

  而假設驅動開發也是很重要的一個觀念,我們應該讓我們的價值流或生產部署管線起於"建立業務假設"而終於"AB測試,因為這樣我們才能時時保持創新並且真正丟棄沒價值的功能,讓我們的系統服務比對手更具競爭力。

 


20191117日星期日

arrow
arrow

    jackterrylau 發表在 痞客邦 留言(0) 人氣()