最近我在一個論壇上看到了一個關於性能測試和接口測試的經典問題,問題如下:
問題:后端性能測試,一個功能其實都是由后台多個接口組成的。
例如一個單據的保存,可能后台需要調用幾個接口。用LR錄制這個功能做性能測試。和把它這個功能調用的幾個接口連接起來一起做接口性能測試有什么區別呢?
相信很多開始測試自動化的測試同學的入門都是從一些培訓班或者網上課程開始的。很多培訓在講授接口測試或者性能測試的時候往往是拿LoadRunner或者jmeter去演示測試過程的。通常的課程安排一般先拿LoadRunner(或者jmeter)講接口測試,然后繼續使用LoadRunner(或者jmeter)去講性能測試。
無論是接口測試還是性能測試,貌似老濕們講的步驟好像都差不多,先錄制接口,然后配置場景,然后執行測試場景,給人感覺好像沒啥差別。感覺好暈。。那到底兩者差別在哪里呢?我們從入門者的角度來談談差別吧!
這里我准備從三個部分去闡述兩者的關聯和區別:
1. 至關重要的觀念:測試與工具的關系。
2. 接口測試和性能測試的側重點。
3. 在實際場景中二者的配置區別。
首先我們要正試一個理念,LoadRunner和Jmeter只是一個工具,而培訓班大力推崇的都是工具培訓,容易讓我們落入一種XXX就是性能測試的趕腳,其實不然(差別蠻多,后面會單獨去寫文章分享),性能測試包含了工具(LoadRunner和Jmeter),工具僅僅是扮演了性能測試中的一個執行環節而已。
我們可以拿LoadRunner(Jmeter)做接口測試,當然也可以拿到做性能測試。所以工具是什么不重要,關鍵在於我們怎么去使用它,例如下面一個生活中的例子:鐵鍬。我們可以拿鐵鍬來鏟土,也可以用鐵鍬來炒大鍋飯,是不是就像LoadRunner既能做接口測試,又能做性能測試一樣?
挖土的鐵鍬
炒飯的鐵鍬
梳理清楚了第一個概念:工具和測試沒有完全對等的關系后,我們來說第二個,性能測試和接口測試的區別。
測試分很多種,如果細細羅列,從單測,接口,功能,性能,UI,至少有五層,那其實區分這些測試類型的關鍵點就在於測試的側重點不一樣,接口測試是針對后端開發的接口(不一定是http的,也有可能是tcp的),而性能測試是偏重於產品的各方面各階段性能(接口的性能,頁面的性能,app的性能),可以說性能測試的覆蓋度比接口更大一些。那我們就拿http類型的接口測試和性能測試舉例,有啥側重點區別呢?
簡單來說,它倆區別就在於性能測試有多用戶(並發)的概念,而接口測試只是單用戶場景。我們做接口測試是是用於驗證接口的請求和返回是否匹配(其實可以理解成接口測試也是一種功能測試);而性能測試則是很多人同時在做這種接口測試,更側重於真實的用戶場景。因為我們研發完的產品投入市場后,不會就專門給某一個人使用功能,肯定是會有很多人同時在用我們的產品功能。那在這里,很多人同時在用其實就是性能的一個關鍵點。
所以總結第二點:性能測試近乎等同於很多用戶同時在做接口測試。
第三部分,也是回答本文最初拋出的問題,在實際的應用過程中,二者是否存在什么聯系與區別?
我們就簡單地拿LR做接口測試和性能測試的過程為例吧,拿LR執行測試對於大多數人來說就三步:錄制接口(或者接口抓包),配置場景,執行測試場景。
錄制接口這一步是沒有區別的,因為我們剛才講到過,性能測試其實也是一種特殊的接口測試。那配置場景這一步有區別嗎?可能很多人也說沒有區別,但其實是有的,我們舉例幾個區別。如果是性能測試,首先要配置多用戶(或者說多線程),而接口測試不用;其次如果是性能測試,建議關掉斷言(否則可能壓不上去,因為斷言會耗費LR或者Jmeter自身的性能);最后如果是性能測試,如果壓測不上去,還可能需要做分布式(簡單來說,就是多台機器同時執行性能測試)。
那第三步:執行測試場景的時候有什么區別嗎?剛才說到,接口測試一般是用斷言來驗證接口的正確性,那性能測試怎么去驗證呢?在執行性能測試場景的時候,我們拋棄斷言,要加入另外的校驗方式:
1. 最基本的三個:多用戶下接口的響應時間,qps/tps(每秒請求量),出錯率。
2.服務器上的資源監控(cpu,內存,io)。
3.被測服務的資源監控(多個服務的cpu,內存,io)以及錯誤日志。
以上三點都是衡量性能測試的標准,也是當執行性能測試場景出問題時候,用於定位問題的重要證據,所以我們可以知道,當接口測試出了問題,我們可以通過斷言迅速知道出了問題;而性能測試出了問題,需要從多個方面多個維度去調試定位,性能測試對於系統架構的理解能力要求更高!
以上就是我從入門角度,對接口測試和性能測試的區別的一些知識分享,希望對一些即將入門或者剛入門的你有幫助!有任何疑問請直接在文末留言,你的留言是對我原創最大的鼓勵,謝謝!
博主:測試生財(一個不為996而996的測開碼農)
座右銘:專注測試開發與自動化運維,努力讀書思考寫作,為內卷的人生奠定財務自由。
內容范疇:技術提升,職場雜談,事業發展,閱讀寫作,投資理財,健康人生。
csdn:https://blog.csdn.net/ccgshigao
博客園:https://www.cnblogs.com/qa-freeroad/
51cto:https://blog.51cto.com/14900374
微信公眾號:測試生財(定期分享獨家內容和資源)