性能測試如何設計真實場景?
或者換個方式,您在性能測試中,如何去模擬真實的負載,非思考時間類的。
精選回答
回答者:張仁,阿里巴巴技術專家—中科院碩士
性能測試模擬真實負載是比較困難的。性能測試與真實環境的對比,通常有這樣一些點:
1.客戶端展現。如果是Web應用,客戶端使用瀏覽器展現的,則一些的壓力測試工具都不具備展現的功能,也就是說,只是模擬發送http請求到接收請求,而瀏覽器對html內容進行渲染的時間,是無法模擬的,這很可能是真實環境體驗現測試結果不相同的地方。客戶端展現要與真實環境相同,必須單獨進行前端性能的分析。
2.網絡速率。性能測試時通常在局域網環境中,而真實的網絡用戶來自于全國甚至世界各地,其網絡情況不一致,而且有很大的偶然性。除了對壓測工具所在的機器進行一些網絡限速之外,很難完全模擬到真實的網絡負載情況。
3.軟硬件配置。軟件配置比較容易做到與真實環境一致,但硬件配置通常比較難做到。像線上使用的一些負載均衡機器或者路由設備比較昂貴,不可能在測試環境采用完全一樣的拓撲和集群,當然這些對測試結果影響通常可以分析到,不會有很大偏差,但這是一個無法完全與線上保持相同的點。
4.數據分布。數據分布要做到與線上一致有3個難點,1是對新應用而言,根本沒有線上數據,因此無從模擬,只能手動造數據,所以無法跟線上一致;2是即使是老的功能,線上數據因為商業機密等原因也未必能直接拿來作為測試數據;3是用戶的訪問路徑,這點很難與線上做到一致。功能測試尚不能覆蓋掉所有的用戶操作路徑,何況性能測試?
以上四點,都是問題。因此性能測試很多情況下只能作為參考,用來發現明顯的性能問題。如果要做到100的準確,還是要做線上的即時監控才行。