品質保證
回到LAB主頁
在效能測試中使用機器學習
在效能測試中使用機器學習
https://www.qualitestgroup.com/white-papers/lets-perform-right-performance-testing-planning-overcoming-challenges/
致謝:
感謝Christy Jacob和Nikhil Guddati對於本白皮書中所使用到的ML演算法和效能測試數據的技術協助。
摘要
機器學習在社群媒體、商品推薦等各界已非常普遍,本白皮書將聚焦於機器學習演算法在效能測試領域中的實施。
總覽:監督式學習是一項機器學習任務。機器透過使用訓練資料集習得一組函數,或是建立一組輸入特徵和一組輸出特徵之間的關係。這組習得的函數可根據測試資料集,預測一組新輸入的輸出。
迴歸 是一種監督式學習任務,能利用從資料集取得的變數之間的關係預測目標值。
測試環境為效能測試中最嚴峻的挑戰之一。
理想的效能測試環境應與生產環境有相同的容量及規模,以避免任何與生產環境的解譯系統效能特性相關的風險。不過,專用環境通常因為預算的問題而無法使用,某些業界也因為安全問題放棄在生產環境中執行測試。因此,測試人員最後只好縮減效能測試的環境規模。這些測試都有額外的風險。
我們使用機器學習來處理上述的挑戰。實驗的結果都記錄在此白皮書中。
為了執行效能測試的機器學習,我們會討論建立及評估ML模型所涉及的階段:
定義參數
首先,我們必須辨認輸入及定義預期的輸出。反應時間為一個臨界參數,在效能測試的過程中需仔細監控。所以在這個例子中,我們會饋入全部樣本、送出位元、接收位元和委託名稱當作輸入,來預測委託/頁面的反應時間。
輸出(標籤) -> 反應時間
輸入(特徵) -> 線程、送出位元、接收位元、委託/頁面
產出訓練數據
首要步驟,也是最重要的一步,就是收集與問題陳述對應的相關數據。我們透過使用JMeter,在對照測試環境中執行效能測試,以建立輸入數據(如此可消除對於伺服器效能或額外網路流量的雜訊)。
效能報告係由下列測試數據產生:送出位元、接收位元、線程、委託名稱,以及反應時間。
下列的效能測試為每一頁面的委託建立了490筆紀錄。
線程 衝刺(秒) 每疊代總頁數 疊代
選擇ML模型:
訓練ML模型的過程包括指派一套ML演算法(學習演算法)以利其從訓練數據中學習。ML模型是由訓練過程建立的結果。
我們安裝了機器學習程式館,並將我們的效能測試數據上傳至內。該程式館能夠使用多樣的計算和設定,來評估不同的演算法,以辨認出效能最高的模型。
以我們的測試數據來說,以下是經過評估的演算法。其中以FastTree迴歸演算法得出的準確率最高,為82.3%。
訓練迴歸 判定係數 絕對損 平方損 均方根損
評估模型
模型評估的目標在於根據未來(看不見/無樣本)數據估算出該模型的普遍性準確率。 如今我們有了ML模型,就能用它來預測一組新的(在訓練模型過程中沒被使用)資料集的反應時間。我們將ML模型的結果與實際數據核對,而最終偏差仍在可接受的範圍內。
特徵(輸入) 標籤(輸出)
委託名稱 每頁全部樣本 位元 送出位元 預期反應時間 實際反應時間 偏差(毫秒)
實際值與演算法預測結果之間的偏差僅為數毫秒。換句話說,ML模型在不須建立生產環境副本的情況下,成功評估了該應用的效能。
每一套應用的行為在載入狀況下均不同,因此如需建立一套最佳模組,必須仰賴執行效能測試所收集的數據。我們必須依據應用行為,估算哪一部分的數據能提供最準確的結果。這也是為何建立一系列測試數據至關重要的原因,因為那能提供更佳的預測結果。
參考資料
https://www.agileconnection.com/presentation/machine-learning-and-data-science-quality-and-performance-engineering
https://www.datasciencecentral.com/profiles/blogs/performance-testing-training
https://data-flair.training/blogs/machine-learning-applications/