談一談什么是接口測試?怎樣做接口測試?

掃盲內容:

1.什么是接口?

2.接口都有哪些類型?

3.接口的本質是什么?

4.什么是接口測試?

5.問什么要做接口測試?

6.怎樣做接口測試?

7.接口測測試點是什么?

8.接口測試都要掌握哪些知識?

9.其他相關知識?

1.什么是接口?

接口測試主要用于外部系統與系統之間以及內部各個子系統之間的交互點,定義特定的交互點,然后通過這些交互點來,通過一些特殊的規則也就是協議,來進行數據之間的交互。

2.接口都有哪些類型?

接口一般分為兩種:1.程序內部的接口 2.系統對外的接口

系統對外的接口:比如你要從別的網站或服務器上獲取資源或信息,別人肯定不會把數據庫共享給你,他只能給你提供一個他們寫好的方法來獲取數據,你引用他提供的接口就能使用他寫好的方法,從而達到數據共享的目的。

程序內部的接口:方法與方法之間,模塊與模塊之間的交互,程序內部拋出的接口,比如bbs系統,有登錄模塊、發帖模塊等等,那你要發帖就必須先登錄,那么這兩個模塊就得有交互,它就會拋出一個接口,供內部系統進行調用。

接口的分類:1.webservice接口 2.http api接口

webService接口是走soap協議通過http傳輸,請求報文和返回報文都是xml格式的,我們在測試的時候都用通過工具才能進行調用,測試。

http api接口是走http協議,通過路徑來區分調用的方法,請求報文都是key-value形式的,返回報文一般都是json串,有get和post等方法,這也是最常用的兩種請求方式。

json是一種通用的數據類型,所有的語言都認識它。(json的本質是字符串,他與其他語言無關,只是可以經過稍稍加工可以轉換成其他語言的數據類型,比如可以轉換成Python中的字典,key-value的形式,可以轉換成JavaScript中的原生對象,可以轉換成java中的類對象等。)

3.接口的本質及其工作原理是什么?

接口你可以簡單的理解他就是URL,工作原理就會說URL通過get或者post請求像服務器發送一些東西,然后得到一些相應的返回值,本質就是數據的傳輸與接收。

4.什么是接口測試?

接口測試是測試系統組件間接口的一種測試。接口測試主要用于檢測外部系統與系統之間以及內部各個子系統之間的交互點。測試的重點是要檢查數據的交換,傳遞和控制管理過程,以及系統間的相互邏輯依賴關系等。

              –百度百科

簡答的說就是通過URL像服務器或者其他模塊等,傳輸我們想傳輸的數據,然后看看他們返回的是不是我們預期想要的。

現在我也找了很多測試的朋友,做了一個分享技術的交流群,共享了很多我們收集的技術文檔和視頻教程。
如果你不想再體驗自學時找不到資源,沒人解答問題,堅持幾天便放棄的感受
可以加入我們一起交流。而且還有很多在自動化,性能,安全,測試開發等等方面有一定建樹的技術大牛
分享他們的經驗,還會分享很多直播講座和技術沙龍
可以免費學習!劃重點!開源的!!!
qq群號:110685036【暗號:csdn999】

5.問什么要做接口測試?

1.越底層發現bug,它的修復成本是越低的。

2.前端隨便變,接口測好了,后端不用變,前后端是兩撥人開發的。

3.檢查系統的安全性、穩定性,前端傳參不可信,比如京東購物,前端價格不可能傳入-1元,但是通過接口可以傳入-1元。

4.如今的系統復雜度不斷上升,傳統的測試方法成本急劇增加且測試效率大幅下降,接口測試可以提供這種情況下的解決方案。

5. 接口測試相對容易實現自動化持續集成,且相對UI自動化也比較穩定,可以減少人工回歸測試人力成本與時間,縮短測試周期,支持后端快速發版需求。接口持續集成是為什么能低成本高收益的根源。

6. 現在很多系統前后端架構是分離的,從安全層面來說:

   (1)、只依賴前端進行限制已經完全不能滿足系統的安全要求(繞過前面實在太容易), 需要后端同樣進行控制,在這種情況下就需要從接口層面進行驗證。

   (2)、前后端傳輸、日志打印等信息是否加密傳輸也是需要驗證的,特別是涉及到用戶的隱私信息,如身份證,銀行卡等。

6.怎樣做接口測試?

–由于我們項目前后端調用主要是基于http協議的接口,所以測試接口時主要是通過工具或代碼模擬http請求的發送與接收。工具有很多如:postman、jmeter、soupUI、java+httpclient、robotframework+httplibrary等。

–也可以用 接口自動化來實現,就是用代碼實現,框架和UI自動化差不多,發送請求用斷言來判斷。

7.接口測測試點是什么?

目的:測試接口的正確性和穩定性;

原理:模擬客戶端向服務器發送請求報文,服務器接收請求報文后對相應的報文做處理并向客戶端返回應答,客戶端接收應答的過程;

重點:檢查數據的交換,傳遞和控制管理過程,還包括處理的次數;

核心:持續集成是接口測試的核心;

優點:為高復雜性的平臺帶來高效的缺陷監測和質量監督能力,平臺越復雜,系統越龐大,接口測試的效果越明顯(提高測試效率,提升用戶體驗,降低研發成本);

用例設計重點:通常情況下主要測試最外層的兩類接口:數據進入系統接口(調用外部系統的參數為本系統使用)和數據流出系統接口(驗證系統處理后的數據是否正常);

PS:設計用例時還需要注意外部接口提供給使用這些接口的外部用戶什么功能,外部用戶真正需要什么功能;

問題1.1、后端接口都測試什么?

  –回答這個問題,我們可以從接口測試活動內容的角度下手,看一下面這張圖,基本反應了當前我們項目后端接口測試的主要內容:

問題2、后端接口測試一遍 ,前端也測試一遍,是不是重復測試了?

  –回答這個問題,我們可以直接對比接口測試和app端測試活動的內容,如下圖為app測試時需要覆蓋或考慮內容:

  從上面這兩張圖對比可以看出,兩個測試活動中相同的部分有功能測試、邊界分析測試和性能測試,其它部分由于各自特性或關注點不同需要進行特殊的測試,在此不做討論。接下來我們針對以上三部分相同的內容再進行分析:

1、基本功能測試:

  由于是針對基本業務功能進行測試,所以這部分是兩種測試重合度最高的一塊,開發同學通常所指的也主要是這部分的內容。

2、邊界分析測試:

  在基本功能測試的基礎上考慮輸入輸出的邊界條件,這部分內容也會有重復的部分(比如業務規則的邊界)。但是,前端的輸入輸出很多時候都是提供固守的值讓用戶選擇(如下拉框),在這種情況下測試的邊界范圍就非常有限,但接口測試就不存在這方面的限制,相對來說接口可以覆蓋的范圍更廣,同樣的,接口出現問題的概率也更高。

3、性能測試:

  這個比較容易區分,雖然都需要做性能測試,但關注點確大不相同。App端性能主要關注與手機相關的特性,如手機cpu、內存、流量、fps等。而接口性能主要關注接口響應時間、并發、服務端資源的使用情況等。兩種測試時的策略和方法都有很大區別,所以這部分內容是需要分開單獨進行測試的,理論上來說這也是不同的部分。

綜論:

1、接口測試和app測試的活動有部分重復的內容,主要集中在業務功能測試方面。除此之外,針對各自特性的測試都不一樣,需要分別進行有針對性的測試,才能確保整個產品的質量。

  2、接口測試可以關注于服務器邏輯驗證,而UI測試可以關注于頁面展示邏輯及界面前端與服務器集成驗證

3、接口測試持續集成:

對接口測試而言,持續集成自動化是核心內容,通過持自動化的手段我們才能做到低成本高收益。目前我們已經實現了接口自動化,主要應用于回歸階段,后續還需要加強自動化的程度,包括但不限于下面的內容:

  a) 流程方面:在回歸階段加強接口異常場景的覆蓋度,并逐步向系統測試,冒煙測試階段延伸,最終達到全流程自動化。

  b) 結果展示:更加豐富的結果展示、趨勢分析,質量統計和分析等

  c) 問題定位:報錯信息、日志更精準,方便問題復現與定位。

  d) 結果校驗:加強自動化校驗能力,如數據庫信息校驗。

  e) 代碼覆蓋率:不斷嘗試由目前的黑盒向白盒下探,提高代碼覆蓋率。

  f) 性能需求:完善性能測試體系,通過自動化的手段監控接口性能指標是否正常。

4、接口測試質量評估標準:

  a) 業務功能覆蓋是否完整

  b) 業務規則覆蓋是否完整

  c) 參數驗證是否達到要求(邊界、業務規則)

  d) 接口異常場景覆蓋是否完整

  e) 接口覆蓋率是否達到要求

  f) 代碼覆蓋率是否達到要求

  g) 性能指標是否滿足要求

  h) 安全指標是否滿足要求

8.接口測試都要掌握哪些知識?

①了解系統及內部各個組件之間的業務邏輯交互;

②了解接口的I/O(input/output:輸入輸出);

③了解協議的基本內容,包括:通信原理、三次握手、常用的協議類型、報文構成、數據傳輸方式、常見的狀態碼、URL構成等;

④常用的接口測試工具,比如:jmeter、loadrunner、postman、soapUI等;

⑤數據庫基礎操作命令(檢查數據入庫、提取測試數據等);

⑥常見的字符類型,比如:char、varchar、text、int、float、datatime、string等;

如何學這些技能?

①系統間業務交互邏輯:通過需求文檔、流程圖、思維導圖、溝通等很多渠道和方式;

②協議:推薦《圖解http》這本書,內容生動,相對算是入門級的書籍,其他的還有《圖解tcp、IP》等;

③接口測試工具:百度這些工具,然后你會發現,好多的教學博客、相關問題解決方案、以及一些基于工具的書籍,當然,選擇合適的書很重要;

④數據庫操作命令:學習網站(W3C、菜鳥教程)、教學博客,以及一些數據庫相關書籍,入門級推薦:《mysql必知必會》、《oracle PL/SQL必知必會》等

⑤字符類型:還是百度,有句話這么說:內事不決問百度,外事不決問Google。。。

如何獲取接口相關信息?

一般的企業,都會由開發或者對應的技術負責人員編寫接口文檔,里面會注明接口相關的地址、參數類型、方法、輸入、輸出等信息,如果沒有,想辦法獲取。。。

接口文檔八要素:

封面:封面最好是本公司規定的封面,有logo,內容標題,版本號,公司名稱,文檔產生日期;

修訂歷史:表格形式較好些,包括:版本、修訂說明、修訂日期、修訂人、審核時間審核人等;

接口信息:接口調用方式,常用的GET/POST方式,接口地址;

功能描述:簡潔清晰的描述接口功能,比如:接口獲取的信息不包括哪些;

接口參數說明:每個參數都要和實際中調用的一樣,包括大小寫;參數的含義言簡意賅的說明,格式,是string 還是int 還是long等格式;

說明部分,說明參數值是需要哪里提供,并詳細說明參數怎么生成的,例如時間戳,是哪個時間段的,參數是否必填,一些參數是必須要有的,有些是可選參數等;

返回值說明:

①最好有一個模板返回值,并說明每個返回參數的意義;

②提供一個真實的調用接口,真實的返回值;

調用限制,安全方面:

加密方式,或者自己公司一個特殊的加密過程,只要雙方采用一致的加密算法就可以調用接口,保證了接口調用的安全性,比如常見的md5;

文檔維護:文檔在維護的時候,如有修改一定要寫上修改日期,修改人,對大的修改要有版本號變更

9.其他相關知識?

get請求,post請求的區別:

1、GET使用URL或Cookie傳參。而POST將數據放在BODY中。
2、GET的URL會有長度上的限制,則POST的數據則可以非常大。
3、POST比GET安全,因為數據在地址欄上不可見。
4、一般get請求用來獲取數據,post請求用來發送數據。
其實上面這幾點,只有最后一點說的是比較靠譜的,第一點post請求也可以把數據放到url里面,get請求其實也沒長度限制,post請求看起來參數是隱式的,稍微安全那么一些些,但是那只是對于小白用戶來說的,就算post請求,你通過抓包也是可以抓到參數的。(唯一區別就是這一點,上面3點區別都是不準確的)

http狀態碼:

1、200 2開頭的都表示這個請求發送成功,最常見的就是200,就代表這個請求是ok的,服務器也返回了。
2、300 3開頭的代表重定向,最常見的是302,把這個請求重定向到別的地方了。
3、400 400代表客戶端發送的請求有語法錯誤,401代表訪問的頁面沒有授權,403表示沒有權限訪問這個頁面,404代表沒有這個頁面。
4、500 5開頭的代表服務器有異常,500代表服務器內部異常,504代表服務器端超時,沒返回結果。

cookie與session的區別:

1、cookie數據存放在客戶的瀏覽器上,session數據放在服務器上。

2、cookie不是很安全,別人可以分析存放在本地的cookie并進行cookie欺騙

考慮到安全應當使用session。

3、session會在一定時間內保存在服務器上。當訪問增多,會比較占用你服務器的性能

考慮到減輕服務器性能方面,應當使用cookie。

4、單個cookie保存的數據不能超過4K,很多瀏覽器都限制一個站點最多保存20個cookie。

5、所以個人建議:

將登陸信息等重要信息存放為session
其他信息如果需要保留,可以放在cookie中

END今天的分享就到此結束了,點贊關注不迷路!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/160339.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/160339.shtml
英文地址,請注明出處:http://en.pswp.cn/news/160339.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

童裝店鋪如何通過軟文增加客流量

在信息超負載、媒介粉塵化、產品同質化多重因素下,傳統營銷疲態盡顯、日漸式微,很難支撐新環境下品牌和企業的持續增長。聚焦童裝行業更是如此,一方面用戶迭代速度快,另一方面,新時代父母的育兒觀念更加精細化&#xf…

安裝pytorch

cuda≤11.6,觀察控制面板 觀察torch對應cuda版本 https://download.pytorch.org/whl/torch/ 安裝cuda11.6.0 CUDA Toolkit Archive | NVIDIA Developer cmd輸入nvcc -V 編輯國內鏡像源 .condarc anaconda prompt輸入 查看環境 conda env list 安裝py3.9…

MySQL面試,MySQL事務,MySQL鎖,MySQL集群,主從,MySQL分區,分表,InnoDB

文章目錄 數據庫-MySQLMySQL主從、集群模式簡單介紹1、主從模式 Replication2、集群模式3、主從模式部署注意事項 UNION 和 UNION ALL 區別分庫分表1.垂直拆分2、水平拆分 MySQL有哪些數據類型1、整數類型**,2、實數類型**,3、字符串類型**,4…

DDoS攻擊頻發,科普防御DDoS攻擊的幾大有效方法

談到目前最兇猛、頻率高,且令人深惡痛絕的網絡攻擊,DDoS攻擊無疑能在榜上占有一席之地。各種規模的企業報包括組織機構都可能受到影響,它能使企業宕機數小時以上,給整個互聯網造成無數損失。可以說,怎樣防御DDoS攻擊是…

python的多層嵌套循環時,break可以退出多層循環嗎?

在Python中,break 語句只能退出當前所在的循環,無法直接退出多層嵌套的循環。但是,你可以通過使用一個標志變量或者通過使用異常來模擬退出多層循環的效果。 使用標志變量: flag False for i in range(5):for j in range(5):if…

Vue 定義只讀數據 readonly

readonly 讓一個響應式數據變為 **深層次的只讀數據**。 isReadonly 判斷一個數據是不是只讀數據。 應用場景&#xff1a;不希望數據被修改時使用。 readonly 深層次只讀&#xff1a; <template><h1>reactive數據</h1><p>姓名&#xff1a;{{ info…

嵌入式系統中相關的高質量開源項目

關于GitHub&#xff0c;可能很多人誤以為這是互聯網人的專屬&#xff0c;其實并不是&#xff0c;那上面嵌入式相關的開源項目是有很多的。現分享一些高星開源項目&#xff08;像RT-Thread、AWTK等大家都熟知的就不介紹了&#xff09;&#xff1a;Avem 項目鏈接&#xff1a; ht…

多功能神器,強勁升級,太極2.x你值得擁有!

嗨&#xff0c;大家好&#xff0c;今天給大家分享一個好用好玩的軟件。那就是太極2.x軟件&#xff0c;最近在1.0版本上進行了全新升級&#xff0c;升級后的功能更強更穩定&#xff0c;輕度用戶使用基本功能就已經足夠了&#xff0c;我們一起來看看吧&#xff01; 首頁 首頁左…

通過ESXi Shell修改ESXi服務器時區

ESXi Shell是ESXi服務器的命令行界面&#xff0c;用戶可以通過它來執行系統命令和管理操作。下面是通過ESXi Shell修改ESXi服務器時區的步驟&#xff1a; 1. 在ESXi服務器上開啟SSH服務&#xff0c;并使用SSH客戶端連接到ESXi服務器。 2. 輸入以下命令來查看當前時…

利用叉積計算向量的旋向及折線段的拐向

一、向量叉積 兩個向量 u u u、 v v v的叉積寫作 u v n ∥ u ∥ ∥ v ∥ s i n θ \mathbf{u \times v n \left \| u \right \| \left \| v \right \| sin\theta } uvn∥u∥∥v∥sinθ 式中&#xff0c; n n n: 與 u u u、 v v v均垂直的單位向量&#xff0c;theta是兩向量…

webpack的鉤子集合

總之有這么多鉤子可以用&#xff1a; entryOption&#xff1a;在entry配置項處理前被調用&#xff0c;可以修改entry配置項&#xff1b;beforeRun&#xff1a;在運行編譯器前被調用&#xff1b;run&#xff1a;在開始讀取記錄時被調用&#xff1b;emit&#xff1a;生成資源到ou…

Java 編碼

編碼: 加密: 通過加密算法和密鑰進行 也可通過碼表進行加密 對稱加密: 缺點:可被截獲 元數據---加密算法密鑰密文 ----> 解密算法密鑰元數據 算法:DES(短 56位),AES(長 128位)破解時間加長 非對稱加密: 元數據-加密算法加密密鑰 密文 --->加密算法解密密鑰元數據 …

mysql面試內容點

left join和inner join的區別 1.返回不同 innerjoin只返回兩個表中聯結字段相等的行。left join返回包括左表中的所有記錄和右表中聯結字段相等的記錄。 2.數量不同 inner join的數量小于等于左表和右表中的記錄數量。left join的數量以左表中的記錄數量相同。 3.記錄屬性不同…

C++學習——C++運算符重載(含義、格式、示例、遵循的規則)

以下內容源于C語言中文網的學習與整理&#xff0c;非原創&#xff0c;如有侵權請告知刪除。 一、運算符重載的含義 所謂重載&#xff0c;就是賦予新的含義。函數重載&#xff08;Function Overloading&#xff09;可以讓一個函數名有多種功能&#xff0c;在不同情況下進行不同…

Vue 重寫push和replace方法,解決:Avoided redundant navigation to current location

當我們使用編程式路由導航跳轉路徑時&#xff0c;如果我們兩次攜帶同樣的參數進行跳轉&#xff0c;會進行頁面報錯&#xff1a; 那產生這個問題的原因是什么呢&#xff1f; 我們接收并輸出調用push方法返回的結果&#xff1a; 會發現這是一個Promise對象 我們都知道&#xff…

SAP_ABAP_面試篇_關于Function Module函數的三種處理類型

關于 Function Module 這個技術點&#xff0c;在面試過程中一般會考察以下幾個問題&#xff1a; 1 函數處理類型的更新模式 一般會問到異步和事務&#xff08;邏輯單元 LUW&#xff09;&#xff0c;異步函數的調試方式、SM13監控更新函數的執行過程&#xff08;V1 與 V2 模式…

Epub書籍閱讀工具

Epub書籍閱讀工具 前言WIndows總結Neat ReaderAquile ReaderWPS Android總結Neat Reader掌閱 前言 Epub文件為電子書文件格式&#xff0c;此格式的電子書相比txt書籍&#xff0c;增加了目錄跳轉功能&#xff0c;并可以顯示圖片。本文介紹WIndows和Android端的epub書籍閱讀工具…

SpringBoot中的classpath都包含啥

一句話總結&#xff1a;classpath 等價于 main/java main/resources 第三方jar包的根目錄。下面詳細解釋。 參考&#xff1a;SpringBoot中的classpath

使用Burp發送請求,左下角顯示Unsupported or unrecognized SSL message

這個問題很簡單&#xff0c;那就是源網址使用http協議 而不是https協議

來吧,SpringBoot的自動配置原理都在這里了

&#x1f497;推薦閱讀文章&#x1f497; &#x1f338;JavaSE系列&#x1f338;&#x1f449;1??《JavaSE系列教程》&#x1f33a;MySQL系列&#x1f33a;&#x1f449;2??《MySQL系列教程》&#x1f340;JavaWeb系列&#x1f340;&#x1f449;3??《JavaWeb系列教程》…