AB測試初探

2021-08-22 13:24:06 字數 1295 閱讀 7912

什麼是ab測試?

ab測試的基本步驟

ab測試是乙個反覆迭代優化的過程,它的基本步驟如下圖所示可以劃分為:

1. 設定專案目標即ab測試的目標

設計優化的迭代開發方案,完成新模組的開發

確定實施的版本以及每個線上測試版本的分流比例

按照分流比例開放線上流量進行測試

收集實驗資料進行有效性和效果判斷

根據試驗結果確定發布新版本、調整分流比例繼續測試或者在試驗效果未達成的情況下繼續優化迭代方案重新開發上線試驗

本文只討論ab測試的分流部分,一種分流演算法

兩個前提 思路

如何才能保證分流的更準確,隨機數是乙個不錯的思路,但差異性過大,當流量巨大時誤差率<1%,由於基數過大,誤差值就會很大

將流量分為100份,每個頁面按照配置比例占用對應的份數,實際上就是乙個長度為100的陣列,然後再將陣列打亂,這樣理論上最大誤差值為佔比例最大的頁面所佔份數(因為做了打亂操作,實際誤差值會比這個值低),例如:三個頁面的比例:60%,30%,10%,則最大誤差值為60。當流量過小時,這個誤差值就不容忽視了。

表面上看,第二種方案更好一些,因為流量太小時ab測試是沒有意義的,偶然因素太大會導致分析資料能反映的問題有限。

當我們單純的考慮分流演算法時,作為乙個有追求的公司,這種誤差也是不允許的,所以我們想出了第三種方案:

基於第二種方案,求每個頁面所佔份數的最大公約數,然後讓份數除以最大公約數,得到乙個長度更小的陣列,然後再做打亂操作,這樣理論上最大誤差值為佔比例最大的頁面所佔份數, 例如:三個頁面的比例:60%,30%,10%,則最大誤差值為6。

實現步驟

求出參與ab測試的頁面的配置比例的最大公約數

const computegreatestcommondivisor = (numberarray) => 

for (let i = 1; i < length; i++)

}return greatestcomomondivisor;

}

建立乙個空陣列array,將每個比例除以最大公約數得到份數,放入對應份數的該頁面的唯一標識,

陣列長度為arraylength,將陣列打亂,存入redis

當使用者訪問時為使用者生成乙個本次ab測試的唯一數值index(從0開始遞增),用index對arraylength取餘remainder, 儲存index到redis

用這個remainder作為索引從array中取值,array[remainder], 這個值就是使用者訪問到的頁面,這樣每個使用者按照訪問順序,順序的從陣列中取值,當使用者在此訪問時取出index值做相同操作

幾點補充

ab 壓力測試

apache自帶的ab的壓力測試 以前安裝好apache總是不知道該如何測試apache的效能,現在總算找到乙個測試工具了。就是apache自帶的測試工具ab apache benchmark 在apache的bin目錄下。格式 ab options http hostname port path ...

ab壓力測試

1.我的環境是windows下的phpstudy,進入到apache bin目錄裡面有個ab.exe,壓力測試命令如下 ab.exe c 200 n 1000 2.mysql.php 如下 正常的邏輯思維,壓力增大後,導致資料庫num欄位成為負數,將下面 貼上到自己 下測試即可。在test資料庫下,...

ab壓力測試

ab命令會建立多個併發訪問執行緒,模擬多個訪問者同時對某一url位址進行訪問。它的測試目標是基於url的,因此,它既可以用來測試apache的負載壓力,也可以測試nginx lighthttp tomcat iis等其它web伺服器的壓力。ab命令對發出負載的計算機要求很低,它既不會占用很高cpu,...