產品設計|你的測試做對了嗎?設計師和 PM 必收藏的 A/B test 手冊

H.Ching|林筱晴
10 min readAug 5, 2023

--

什麼是 A/B test?

我們都知道,產品優化的流程不外乎是發現現有產品的問題,再提出可能的解決方案。而如果今天我們想準確比較新舊兩版的成效,驗證新版是否真的成功解決了問題,那麽最常見的方法就是做一次 A/B test。

A 版,是舊版,就是所謂的控制組。控制組的存在是作為實驗的 baseline確保新版表現的任何波動不是受到外部因素影響(例如:營業旺季、促銷活動、廣告成效、社群話題等等)。

B 版,是新版,也稱為實驗組或變異組。實驗組就是我們希望表現會符合我們的預期、能夠驗證我們的假說的版本。實驗組不一定只有一個,有些公司會做 A/B/C test,甚至是 A/B/C/D/E/F……。無論有多少版本,只要是控制組以外的版本都是實驗組。

做 A/B test 真的有用嗎?

這個問題的答案就稍微尷尬了些。理想上,A/B test 應該是能夠最客觀比較成效的方法,能夠理性地驗證你的假說是否正確,有效增加產品的轉換率、留存率、營收等。

但是理想很豐滿、現實很骨感,實際上許多 A/B test 創造的價值也許不如你想像中的這麼高。

“At least 80% of winning tests are completely worthless.” — Martin Goodson, Qubit Research Lead

業界最常遇到的問題是:「我做了 A/B test,發現 B 版轉換率比 A 版高,因此將 B 版全面推上線。但是長期下來,公司的營收也沒有增加。」

為什麼會這樣?因為 A/B test 成功的感覺太催眠了,一旦看到 B 版有成功的跡象,許多人就會想趕快宣告成功,把新版推上線。同時,很多團隊沒有正確的 A/B test 觀念,觀測數據結果時就不免產生偏誤,導致測試無效。

想透過 A/B test 得到可靠的結論,你需要符合三個基本條件。

▍條件 1:你有一個完整的假說

一個完整的假說會包含哪些資訊?

  1. 你的預期:做什麼樣的改變會導致哪些 TA 行為發生怎樣的變化?
  2. 如何驗證:當我們看到什麼數據發生什麼樣的變化時,代表假說成立。
  3. 價值:如果假說成立,將會為公司或用戶帶來什麼樣的價值?

Booking.com 的團隊有一個蠻有名的 hypothesis template:

*All rights belong to Booking.com, I do not claim ownership of this content.

大致翻譯起來是這樣的:

  • 理論:基於(過去情況的觀察),我們認為(某種條件)會鼓勵(用戶類型)做出(某種行為)。
  • 驗證:當我們看到(定義的成效)發生(某種變化)時,便會知道假說為真。
  • 目標:這對顧客、夥伴及商業都有好處,因為(原因)。

建立一個完整的假說能讓你更深入思考 A/B test 的意義:這個假說是針對什麼樣的用戶和前提?如果假說成立,我們能很明確地從數據看出變化嗎?這對商業的價值是什麼?

釐清你的假說之後,你才能夠針對這次的目標用戶類型設計 A/B 分群的條件,和團隊討論測試成功的定義,並盡可能排除測試過程可能遇到的外部環境變化。

▍條件 2:你有好好跑完完整的產品週期

什麼是產品週期?

每間公司的產品週期不太一樣,例如購物網站的產品週期容易受到消費力影響,月初發薪日消費力增加、月底吃土消費力下降,所以完整的產品週期可能是一個月以上。

像我們公司的 Codementor,使用數據就有明顯的週期變化:週末的使用人數是平常日的 2 倍以上,並在禮拜天達到巔峰,以這樣的規律每週循環。

同時,由於暑假期間學生數量增加、需求也會增加,所以 Codementor 的另外一個產品週期會長達一年,在夏季時達到高峰。

為了避免 A/B test 的結果受到產品週期變化影響,當我們要跑 A/B test 時,應該盡量跑完一整個產品週期。當然,以 Codementor 的例子來說,一個 A/B test 若要跑一年那也是有點超過了,所以我們的 A/B test 時長基本上會是以週為單位進行。

有控制組還會被產品週期影響嗎?

當然會!想像我們今天有一個產品,平常以 returning users 為主,每個月月初則是會有大量的 new users。假設我們想測試的新功能比較多步驟,但是也相對更新手友善,我們有可能會看到月初的表現比 A 好,但平常的表現比 A 差。

這時候如果我們的 A/B test 只跑了兩週,就因為樣本數夠大而停止測試,那我們獲得的結果自然也會是有偏誤的。

另外值得注意的是,我們不只要跑完至少 1 個完整的產品週期,也要記得不能在產品週期的中間停止測試。假設我們的產品週期是 1 個月,期待的樣本數在 35 天時達標,我們還是要讓測試跑完完整的 2 個月才停止,確保獲得的數據公正性不被產品週期影響。

▍條件 3:你有達到需要的樣本數

樣本數應該多大?

由於每個產品、每個功能需要的樣本數不盡相同,同時計算方法也有很多不同方式,如果不想自己算的話,推薦大家可以找一些可靠的 A/B test sample size calculator 決定樣本數。

以上圖這個 calculator 為例,他的基本原理是:

  1. Baseline conversion rate:先找出產品現在的轉換率,例如我們假設目前完成 onboarding 的 conversion 是 40%。
  2. Minimum detectable effect:設定希望看到的最小相對變化,比方說我們期待看到 conversion 增加到 44% 以上,那麼相對變化就是 10%。
  3. Statistical significance:如果 A/B test 要達到顯著性差異,基本上就是設定 95% 以上,意思是我們對這個測試的信心程度高於 95% 。

這時候我們可以看到計算出來的樣本數量為 1700,也就是說 A、B 兩版樣本數都要達到 1700 以上才是有效的 A/B test。

註:計算器有很多版本,不一定要使用我提供的這一版唷~

可是我的產品使用者很少怎麼辦?

從剛才的例子我們可以看到如果 A、B 兩版都要達到 1700,代表總共要有至少 3400 個樣本。如果我們想做 A/B/C/D test 的話呢?那總共要有 6800 個!這對大型產品可能不難,但對 DAU / MAU 很少的小產品來說,那得跑多久才跑得完?

如果你的產品週期是 1 個禮拜,每個禮拜平均有 100 個用戶,代表你做 A/B test 的話每週單一個版本大約才 50 個樣本。想達到 1700 個樣本的話,你得跑 34 週,這樣要 8 個月後才能看到結果!

所以如果是用戶量少的產品,就變成要用樣本數反推相對變化。每個禮拜能有 50 個樣本的你,希望 2 個月內要看到結果,表示你單一個版本最多只能累積 400 個樣本。如果要達到顯著差異,你的相對變化應該要提升到 18.5%,也就是 conversion 要從 40% 升到 47.4% 以上。

這樣做雖然能讓 A/B test 有效地在時限內達到顯著差異,但是犧牲樣本數會帶來其他問題,所以即便 A/B test 成功了,也不能高興得太早,關於這點後面會繼續提到。

這些我都做了,A/B test 就有用了嗎?

問得好!很抱歉,即便你遵守了所有 A/B test 的條件,你的測試依然可能無效,產品的世界就是這麼不公平。

樣本數越大結果越準確

統計學有一個概念叫均值回歸(Regression to the mean),意思是變量會漸漸趨近於平均。

無論一開始的結果如何,時間一久、樣本一大,結果就很有可能會改變,原本顯著成功的測試也可能變成不顯著的結果。

數位行銷專家 Chase Dumont 曾做過一次有趣的 A/B test:一開始,A 版(藍線)的表現遠遠比 B 版好,這讓團隊非常意外,因為他們預期優化後的版本應該要讓成效有明顯的提升才對。但是觀測 2 個月後,A、B 版本的表現越來越接近,3 個月時,兩版已經沒有太大的差異。

*Source: Validating A/B tests

任何東西都有異常表現的可能性,這會導致結果看起來特別好,或是特別差。如果 Chase 在觀測了一個月後,看到 B 版的表現不如預期便停止了測試,那麼他們就觀測不到均值回歸後,A 版表現下降的結果了。

“Sample size is king when it comes to A/B testing.” — Chase Dumont, Digital Marketer

樣本數越大越有意義,就算 A/B test 包含完整的產品週期,也達到顯著差異,如果樣本數不夠大,那麼最終的結果可能還是會「充滿驚喜」。

有時候看到新的東西就會手癢想點點看

A/B test 的另一個常見殺手就是新奇效應(Novelty effect),也就是使用者會因為覺得新奇或陌生而主動去使用。比方說 Instagram 上突然多了一個 Threads 的 ID 按鈕,你不知道那是幹嘛用的但你就是想點點看,點了以後就代表你想使用 Threads,或是這個入口比別的入口成效更好了嗎?

A/B test 初期容易出現 novelty effect,但是長期觀測的話通常會回歸均值。比較進階的測試可能會針對 TA 做分群,例如 B 版只會出現在 new user 的介面上,或是統計數據結果時只 filter new user 的數據。

有時候看到新的東西就會下意識討厭

首因效應(Primacy effect),又稱為初始效應,指的是第一印象會影響到後續對事物的認知。當產品出現超大幅度的變化時,用戶會因為不願意接受新的設計而導致 B 版成效明顯低落。例如 facebook 介面 redesign 時引發用戶集體抱怨、拒絕使用,或是近期 twitter 更換 logo 為 X 以後可能導致用戶流失,都是 primary effect 影響成效的案例。

和 novelty effect 相同的是,初期的異常表現經過長期觀測的話通常會回歸均值。常見的迴避方式包含漸進式更換(讓用戶自行選擇開始使用新版)或是提供回到舊版的選項,不過這些手段也會讓 A/B test 變得更加複雜。

那… 這樣做 A/B test 還有意義嗎?

整篇文章寫下來 A/B test 感覺真的是很多缺點欸,相信有些人看到了這邊可能在想:

「做個 A/B test 毛一大堆,結果還有可能充滿偏誤,這樣還要做嗎?」

當然要做!因為即便 A/B test 有很多缺點和無效的可能性,他依舊是能夠最理性判斷設計成效的方法,沒有之一。只是做 A/B test 之前要先做好功課,發現成效不錯時也不要高興得太早,始終保持客觀理性的頭腦,才不會讓自己誤入這些常見的陷阱。

⭐️ 即將做 A/B test 的你可以… ⭐️

  1. 確認自己的假說是完整的,釐清這項改變會帶來什麼樣的價值
  2. 觀察現在的產品週期和可能造成波動的原因
  3. 在自己能力所及的範圍內盡量拉大樣本數
  4. 嚴格遵守你訂下的 A/B test 規則,不要提早結束測試
  5. 可以相信測試結果,但要記得持 5% 的保留態度
  6. 相隔一段時間後再次推出同樣的測試,看會不會得出相同的結論

以上就是今天的分享,希望這次的文章同樣對你有幫助,祝你測試愉快!🙌

↓↓ 如果喜歡這篇文章,請幫我掌聲鼓勵鼓勵~也歡迎追蹤,我會不定時發布新文章!👏👏👏

--

--

H.Ching|林筱晴

Design Lead at Arc & Codementor 🖥 為產品癡迷的實戰派設計師——理論是拿來用的!派不上用場的理論都是空談。// Contact me at: hching.design@gmail.com