最近幾年,隨著大數據、人工智能等領域的快速發(fā)展,算法受到前所未有的重視,算法測試也隨之興起。
為了讓大家能對算法測試有個初步的了解,這篇文章將對“如何做算法測試”進行梳理,大綱如下:
1、算法測試測什么?
2、算法測試如何做?
3、算法測試的一個真實案例
4、答疑解惑
一、算法測試測什么?
先來看幾個大家耳熟能詳的算法應用成功的例子:
1、阿爾法圍棋機器人,打敗了人類棋手,其實就是運用了復雜的人工智能算法;
2、今日頭條、抖音等APP,使用了興趣算法推薦,推送的都是你感興趣的內容;
3、購物軟件,你搜過什么商品,就會不勝其煩的一直推薦,也是使用了算法推薦機制。
區(qū)別于一般的功能測試,算法測試的側重點不同。一般功能測試關注前端操作之后服務端返回數據的正確性(增刪改查),而算法測試則要關注算法(模型)啟用之后,數據的增量(有正負)是否符合預期。
舉兩個例子例子
例子1:某軟件中的廣告推薦更新了一套算法,預期要把推薦轉化率提升幾個百分點。
測試要關注的是:新算法有沒有提升轉化率百分比,提升量的有沒有達到預期。
例子2:某人臉識別Q軟件更新了識別算法,預期是減少識別耗時。
測試要關注的是:耗時減少的同時準確率有沒有下降。
二、如何測試算法?
1、普通功能測試會使用到的方法
1)算法穩(wěn)定性測試
長時間運行,算法是否奔潰;
數據量提升后,算法模型的結果是否符合預期;
2)算法性能測試
算法模型的響應時間;
算法模型對處理器cpu和磁盤的消耗;
3)算法兼容性測試
設置不同閾值內的數據,算法結果是否穩(wěn)定(比如用戶年齡、區(qū)域、性別等)。
上面說到測試方法,是不是似曾相識?沒錯,這幾個與普通功能測試中用到的測試方法基本一樣。
2、普通功能測試中不會用到的測試方法
1)算法pk (賽馬)
對于一個需求,不同的人或團隊可以設計出不同的算法模型,到底哪個更靠譜,是騾子是馬拉出來溜溜,pk一下就知道了。
這個環(huán)節(jié)是算法測試的關鍵部分,用例設計主要采用場景法,通過列舉不同場景,對多個算法分別進行測試驗證,最終綜合所有場景中的算法模型的表現,選出前幾名。
你可能會有疑問:為什么要前幾名,選第一名不就可以了嗎?下文中通過實例列舉了這個環(huán)節(jié)中的測試用例,可以更好地理解這樣設計用例的原因(在此暫時不表述)。
2)?A/B測試
由于算法的準確性會受到測試數據的影響,而在測試環(huán)境中,數據的來源一般是手動插入數據庫或從線上導入數據。
盡管測試數據會接近于真實數據,但仍會有數據類型覆蓋不夠全面、數據量不夠大等方面的問題。因此,即使算法模型在測試環(huán)境通過驗收,仍然不能在生產環(huán)境全部放量。
通常采用的方法是:拿出線上流量的5%-10%,其中一部分數據作為對照組,其它部分作為一個或多個實驗組(實驗組采用的算法為pk中勝出的前幾名算法)。對照組和實驗組數據分別打不同的標簽,一段時間后分別統(tǒng)計計算的各項指對照組合實驗組的各項指標,根據關鍵指標來驗證算法是否有效。
實際測試中,對算法的選擇往往不是通過一項指標來定的,通常是多項指標綜合比較??吹竭@里,你是不是還有點迷糊?別擔心,我們也通過下面的例子來說明。
三、算法測試實例某導航APP,要升級導航路線推薦算法,預期是找到耗時更少的路線并推薦給用戶。
首先來理解一下需求中的關鍵詞「耗時更少」:耗時不等同于距離,有可能距離短但是堵車,實際比繞路耗時還長。經過n天的研發(fā),算法同學最終給出了3個優(yōu)化后的算法模型,現在到了測試驗證環(huán)節(jié)。為方便描述,我把舊導航路線推薦算法稱為算法0,新算法分別稱算法1、算法2、算法3。
1、算法pk(下面是場景化測試用例的列舉)
同一條路線,默認為當前時間和天氣狀況,多輪測試之后,選出最優(yōu)的算法,假定是算法2;
同一條路線,分別設定不同時間段(早晚高峰、工作日、節(jié)假日等),找出最優(yōu)算法,假定是算法1;
同一條路線,分別設定不同的天氣狀況(雨、雪、雷、沙塵、冰雹等),找出最優(yōu)算法,假定是算法3;
還有其它很多場景的測試,這里就不——列舉了…....
2、穩(wěn)定性測試
長時間(24小時以上)運行算法模型,是否有穩(wěn)定的表現,假定這里的最優(yōu)算法是算法1;
超長距離(1000km以上)測試算法模型,對比推薦效果是否穩(wěn)定,假定這里的最優(yōu)算法是算法2;
……
3、兼容性測試
選取不同城市的道路測試(比如重慶、貴州等地),測試山路、爬坡、轉彎等不同路況下導航推薦算法的表現,假定這里的最優(yōu)算法是算法1;
選取不同通行能力的道路(城市和鄉(xiāng)間小路等),測試小路、窄路等不同路況下,推薦算法是否有穩(wěn)定表現,假定這里的最優(yōu)算法是算法3;
……
4、性能測試
同一條路線下,不同算法模型的耗時,假定耗時最少的算法是算法3;
同一條路線下,不同算法模型對服務器的壓力,假定對服務器壓力最小的算法是算法2;
5、AB測試
經過上面幾個環(huán)節(jié)的測試,綜合所有結果,假定最終選出的算法1和算法2;
線上灰度放量,選取目標用戶,被選中的用戶會收到「是否參加內測/灰度」之類的消息。
經過一段時間的A/B測試之后,拿到真實的數據,最終經過架構師、研發(fā)經理、產品經理等研討之后選出符合預期的算法
四、答疑解惑
上述例子中,假定最終要采用的是算法2,但是你可能會有很多疑問:
1、算法1在早晚高峰期時段表現最好,我就是上下班使用導航軟件,為什么不采用?
2、耗時最少的是算法3。我就希望推薦路線要快,為什么不采用?
算法的測試,要經過多個環(huán)節(jié)綜合來評估效果,所以即使某個環(huán)節(jié)表現好最終也不一定入選。最終會結合效果、成本、穩(wěn)定性等多方面的因素,最終往往會選擇妥協(xié)折中后的方法。
實戰(zhàn)案例
光學理論是沒用的,要學會跟著一起敲,要動手實操,才能將自己的所學運用到實際當中去,這時候可以搞點實戰(zhàn)案例來學習。
如果對你有幫助的話,點個贊收個藏,給作者一個鼓勵。也方便你下次能夠快速查找。
如有不懂還要咨詢下方小卡片,博主也希望和志同道合的測試人員一起學習進步
在適當的年齡,選擇適當的崗位,盡量去發(fā)揮好自己的優(yōu)勢。
我的自動化測試開發(fā)之路,一路走來都離不每個階段的計劃,因為自己喜歡規(guī)劃和總結,文章來源:http://www.zghlxwxcb.cn/news/detail-704770.html
自動化測試視頻教程、學習筆記領取傳送門?。?!文章來源地址http://www.zghlxwxcb.cn/news/detail-704770.html
到了這里,關于軟件測試工程師如何對算法做測試?的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!