本文章轉載于搜狗測試
一、什么是對比測試
一般而言,對比測試是一種將兩個可比較的對象、在相同的環境下、使用特定的工具或方法等進行比較后,分析兩者之間的變化情況是否有潛在風險、是否符合測試預期的方法。
二、為何要做對比測試
后端server測試常遇到這樣的問題:測試某些任務如server重構或業務邏輯特別復雜、引入新計算模型等任務時,小數據集的功能測試和大數據集的性能測試,并不能可靠地評估性能、效果變化是否符合預期。對比測試能在數據多樣、邏輯繁多復雜的測試任務中,幫助測試人員發現更多待測對象內部問題,?更全面地保證任務的測試質量、降低出現問題的風險。
三、對比測試適用對象
需要評估性能、效果變化影響的持續迭代的server或流程測試任務,以及需要驗證功能是否一致但功能自動化測試覆蓋率低的server或流程測試任務。
四、如何做對比測試
后端server對比測試的常規操作方法是,盡可能保持測試環境一致性前提下,通過對新舊兩版server分別進行同大數據量輸入,結束后統計和對比日志,得到對比結果。
對比測試一般有功能一致性對比、效果對比和性能對比。通常情況下,同server的版本迭代,不會引起性能、效果等的大幅度變化。
功能一致性對比
功能一致性對比指將新舊版server輸出結果相關日志按字段逐一進行異同比較,預期結果是除時間、隨機字段等不確定或無意義字段外,其他字段值對比一致。一致性對比對測試環境要求很高,除了新舊版本運行環境一致外,還需事先排除環境配置和數據中不可控因素如流量比例。
案例
在商業廣告后端server測試中一致性對比亦發揮極其重要的作用。某測試任務的測試場景是廣告server的某個id從32位升至64位,涉及到id定義、賦值、輸出等升級修改,但不涉及server代碼邏輯變動。由于廣告server功能模塊多,邏輯復雜,代碼量大,若僅僅采用代碼走讀方法測試需要測試人員非常熟悉server全部代碼且火眼金睛,同時有足夠長的測試時間,否則遺漏未改處不易發現,以致導致極嚴重后果。而采用一致性對比測試,若某正常日志字段對比不一致,即可定位到某處id未修改或修改錯誤。
上圖是server?log中的查詢詞返回廣告對比結果示意圖,通過逐字段對比可見日志35字段有差異,同時本次打壓發現有8%的結果數據有差異,通過該差異定位到server某功能模塊代碼中id修改遺漏導致數據截斷,業務邏輯失效。
效果對比
服務效果有對應的效果指標,如消耗(收益)、過濾比例等。為了能盡快在比較中發現問題,設定的效果指標要全面、并逐級細化。
案例
消耗對比常用于評估商業廣告后端server提升或優化效果。從總體消耗入手,細化到各個渠道或策略,再進一步細化到各個廣告位,分渠道分廣告位統計和對比消耗,并給出差異情況。通常情況,一定比例范圍內的差異如2%屬于正常情況。
消耗對比在商業廣告后端的Xserver中統計,該server日志記錄了與消耗統計相關的多個信息字段。評估后端某個server對廣告消耗的影響時,可通過搭建整套的商業廣告后端server測試拓撲,對比測試時僅切換待測server新舊版本。如下圖所示是某次測試任務消耗對比圖之一,可見新server廣告效果有一定幅度提升。
性能對比
通常性能測試是獲得server在某種特定條件下的性能指標數據,作為后續的參考和對比依據,其往往受硬件系統、測試環境(配置和數據)等外在因素影響,易與標準值產生偏差。性能對比不失為一種獨辟蹊徑的性能評估方法,其可將外在因素導致的偏差降到最低,同時測試人員亦不必準確掌握服務各性能指標的標準值。
案例一
性能對比常用于評估商業廣告后端server的性能影響,測試時除了采用部分通用性能測試指標外,還可根據待測server的自身特點和測試目的建立特有性能指標。在某server性能對比測試中,采用如下性能指標:CPU、虛存、實存、負載均值、句柄數、平均響應時間、總超時率、rs超時率、qs超時率、丟包率10個指標。
特有性能指標對比:
通用性能指標對比:
如上圖所示是該server某測試任務的性能對比圖,其任務場景是server新增一接口字段代替原有字段并更新對應邏輯,server整體功能不變,評估性能影響。對比結果一目了然:新server平均響應時間約增加?0.05ms,其他指標不變(系統負載正常波動),經評估這個結果符合預期。
案例二
案例一server在某次重構測試任務中,性能對比結果除句柄數外其他9個指標不變(系統負載正常波動),句柄數有變化這不符合預期(如下圖所示)。經檢查發現句柄泄露,這是由于新server不斷創建線程卻未相應調用CloseHandle進行釋放,導致句柄數量不斷增加,而操作系統對句柄最大數量是有限制的,在達到最大數量后將會導致server停止提供正常服務。
五、對比測試平臺化
上述三種對比測試方法均沒有特定的比較工具,需要根據需求,編寫腳本或代碼完成各項數據或指標對比。根據測試經驗,為保證對比測試結果的可靠性,每次測試任務中同種對比測試平均進行三次,觀察三次對比結果是否穩定。同時對比測試時務必確保新舊server運行環境的一致性。這些工作包括操作測試、收集測試結果等都非常耗時間人力,也易出差錯,為了提高測試效率和質量,亟需對比測試平臺化,通過測試平臺自動地完成測試環境準備,測試數據收集及測試結果展示。
目前商業測試團隊開發了自動化、可視化的測試平臺,提供測試環境的一鍵式部署和一致性對比,支持多種測試類型的自動化測試,支持測試數據自動收集,并提供多種報表形式展示結果數據。對比測試亦已納入平臺,并正逐步完善中。
對比測試作為一種輔助測試手段,在持續迭代的后端server的巧用能有效提高測試效率、保證測試質量。本文希望帶給大家一種不同的思路,也歡迎大家一起探討。