最近我在一個論壇上看到了一個關於性能測試和接口測試的經典問題,問題以下:後端
問題:後端性能測試,一個功能其實都是由後臺多個接口組成的。服務器
例如一個單據的保存,可能後臺須要調用幾個接口。用LR錄製這個功能作性能測試。和把它這個功能調用的幾個接口鏈接起來一塊兒作接口性能測試有什麼區別呢?多線程
相信不少開始測試自動化的測試同窗的入門都是從一些培訓班或者網上課程開始的。不少培訓在講授接口測試或者性能測試的時候每每是拿LoadRunner或者jmeter去演示測試過程的。一般的課程安排通常先拿LoadRunner(或者jmeter)講接口測試,而後繼續使用LoadRunner(或者jmeter)去講性能測試。架構
不管是接口測試仍是性能測試,貌似老溼們講的步驟好像都差很少,先錄製接口,而後配置場景,而後執行測試場景,給人感受好像沒啥差異。感受好暈。。那到底二者差異在哪裏呢?咱們從入門者的角度來談談差異吧!併發
這裏我準備從三個部分去闡述二者的關聯和區別:app
1. 相當重要的觀念:測試與工具的關係。tcp
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)以及錯誤日誌。
以上三點都是衡量性能測試的標準,也是當執行性能測試場景出問題時候,用於定位問題的重要證據,因此咱們能夠知道,當接口測試出了問題,咱們能夠經過斷言迅速知道出了問題;而性能測試出了問題,須要從多個方面多個維度去調試定位,性能測試對於系統架構的理解能力要求更高!
以上就是我從入門角度,對接口測試和性能測試的區別的一些知識分享,但願對一些即將入門或者剛入門的你有幫助!有任何疑問請直接在文末留言,你的留言是對我原創最大的鼓勵,謝謝!
博主:測試生財
座右銘:用測試完成原始積累,用投資奔向財務自由
csdn:https://blog.csdn.net/ccgshigao