接口測(cè)試知識(shí)儲(chǔ)備

一.什么是接口?

接口測(cè)試主要用于外部系統(tǒng)與系統(tǒng)之間以及內(nèi)部各個(gè)子系統(tǒng)之間的交互點(diǎn),定義特定的交互點(diǎn),然后通過(guò)這些交互點(diǎn)來(lái),通過(guò)一些特殊的規(guī)則也就是協(xié)議,來(lái)進(jìn)行數(shù)據(jù)之間的交互。

二.接口都有哪些類(lèi)型?

接口一般分為兩種:

1.程序內(nèi)部的接口

2.系統(tǒng)對(duì)外的接口

系統(tǒng)對(duì)外的接口:比如你要從別的網(wǎng)站或服務(wù)器上獲取資源或信息,別人肯定不會(huì)把數(shù)據(jù)庫(kù)共享給你,他只能給你提供一個(gè)他們寫(xiě)好的方法來(lái)獲取數(shù)據(jù),你引用他提供的接口就能使用他寫(xiě)好的方法,從而達(dá)到數(shù)據(jù)共享的目的。

程序內(nèi)部的接口:方法與方法之間,模塊與模塊之間的交互,程序內(nèi)部拋出的接口,比如bbs系統(tǒng),有登錄模塊、發(fā)帖模塊等等,那你要發(fā)帖就必須先登錄,那么這兩個(gè)模塊就得有交互,它就會(huì)拋出一個(gè)接口,供內(nèi)部系統(tǒng)進(jìn)行調(diào)用。

接口的分類(lèi):

1.webservice接口?

2.http api接口

webService接口是走soap協(xié)議通過(guò)http傳輸,請(qǐng)求報(bào)文和返回報(bào)文都是xml格式的,我們?cè)跍y(cè)試的時(shí)候都用通過(guò)工具才能進(jìn)行調(diào)用,測(cè)試。

http api接口是走h(yuǎn)ttp協(xié)議,通過(guò)路徑來(lái)區(qū)分調(diào)用的方法,請(qǐng)求報(bào)文都是key-value形式的,返回報(bào)文一般都是json串,有g(shù)et和post等方法,這也是最常用的兩種請(qǐng)求方式。

json是一種通用的數(shù)據(jù)類(lèi)型,所有的語(yǔ)言都認(rèn)識(shí)它。(json的本質(zhì)是字符串,他與其他語(yǔ)言無(wú)關(guān),只是可以經(jīng)過(guò)稍稍加工可以轉(zhuǎn)換成其他語(yǔ)言的數(shù)據(jù)類(lèi)型,比如可以轉(zhuǎn)換成Python中的字典,key-value的形式,可以轉(zhuǎn)換成JavaScript中的原生對(duì)象,可以轉(zhuǎn)換成java中的類(lèi)對(duì)象等。)

三.接口的本質(zhì)及其工作原理是什么?

接口你可以簡(jiǎn)單的理解他就是URL,工作原理就會(huì)說(shuō)URL通過(guò)get或者post請(qǐng)求像服務(wù)器發(fā)送一些東西,然后得到一些相應(yīng)的返回值,本質(zhì)就是數(shù)據(jù)的傳輸與接收。

四.什么是接口測(cè)試?

接口測(cè)試是測(cè)試系統(tǒng)組件間接口的一種測(cè)試。接口測(cè)試主要用于檢測(cè)外部系統(tǒng)與系統(tǒng)之間以及內(nèi)部各個(gè)子系統(tǒng)之間的交互點(diǎn)。測(cè)試的重點(diǎn)是要檢查數(shù)據(jù)的交換,傳遞和控制管理過(guò)程,以及系統(tǒng)間的相互邏輯依賴關(guān)系等。

--百度百科

簡(jiǎn)答的說(shuō)就是通過(guò)URL像服務(wù)器或者其他模塊等,傳輸我們想傳輸?shù)臄?shù)據(jù),然后看看他們返回的是不是我們預(yù)期想要的。

五.問(wèn)什么要做接口測(cè)試?

①.越底層發(fā)現(xiàn)bug,它的修復(fù)成本是越低的。

②.前端隨便變,接口測(cè)好了,后端不用變,前后端是兩撥人開(kāi)發(fā)的。

③.檢查系統(tǒng)的安全性、穩(wěn)定性,前端傳參不可信,比如京東購(gòu)物,前端價(jià)格不可能傳入-1元,但是通過(guò)接口可以傳入-1元。

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

⑤. 接口測(cè)試相對(duì)容易實(shí)現(xiàn)自動(dòng)化持續(xù)集成,且相對(duì)UI自動(dòng)化也比較穩(wěn)定,可以減少人工回歸測(cè)試人力成本與時(shí)間,縮短測(cè)試周期,支持后端快速發(fā)版需求。接口持續(xù)集成是為什么能低成本高收益的根源。

⑥. ? 現(xiàn)在很多系統(tǒng)前后端架構(gòu)是分離的,從安全層面來(lái)說(shuō):

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

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

六.怎樣做接口測(cè)試?

--由于我們項(xiàng)目前后端調(diào)用主要是基于http協(xié)議的接口,所以測(cè)試接口時(shí)主要是通過(guò)工具或代碼模擬http請(qǐng)求的發(fā)送與接收。工具有很多如:postman、jmeter、soupUI、java+httpclient、robotframework+httplibrary等。

--也可以用 接口自動(dòng)化來(lái)實(shí)現(xiàn),就是用代碼實(shí)現(xiàn),框架和UI自動(dòng)化差不多,發(fā)送請(qǐng)求用斷言來(lái)判斷。

七.接口測(cè)測(cè)試點(diǎn)是什么?

目的:測(cè)試接口的正確性和穩(wěn)定性;

原理:模擬客戶端向服務(wù)器發(fā)送請(qǐng)求報(bào)文,服務(wù)器接收請(qǐng)求報(bào)文后對(duì)相應(yīng)的報(bào)文做處理并向客戶端返回應(yīng)答,客戶端接收應(yīng)答的過(guò)程;

重點(diǎn):檢查數(shù)據(jù)的交換,傳遞和控制管理過(guò)程,還包括處理的次數(shù);

核心:持續(xù)集成是接口測(cè)試的核心;

優(yōu)點(diǎn):為高復(fù)雜性的平臺(tái)帶來(lái)高效的缺陷監(jiān)測(cè)和質(zhì)量監(jiān)督能力,平臺(tái)越復(fù)雜,系統(tǒng)越龐大,接口測(cè)試的效果越明顯(提高測(cè)試效率,提升用戶體驗(yàn),降低研發(fā)成本);

用例設(shè)計(jì)重點(diǎn):通常情況下主要測(cè)試最外層的兩類(lèi)接口:數(shù)據(jù)進(jìn)入系統(tǒng)接口(調(diào)用外部系統(tǒng)的參數(shù)為本系統(tǒng)使用)和數(shù)據(jù)流出系統(tǒng)接口(驗(yàn)證系統(tǒng)處理后的數(shù)據(jù)是否正常);

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

1、基本功能測(cè)試:

由于是針對(duì)基本業(yè)務(wù)功能進(jìn)行測(cè)試,所以這部分是兩種測(cè)試重合度最高的一塊,開(kāi)發(fā)同學(xué)通常所指的也主要是這部分的內(nèi)容。

2、邊界分析測(cè)試:

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

?3、性能測(cè)試:

這個(gè)比較容易區(qū)分,雖然都需要做性能測(cè)試,但關(guān)注點(diǎn)確大不相同。App端性能主要關(guān)注與手機(jī)相關(guān)的特性,如手機(jī)cpu、內(nèi)存、流量、fps等。而接口性能主要關(guān)注接口響應(yīng)時(shí)間、并發(fā)、服務(wù)端資源的使用情況等。兩種測(cè)試時(shí)的策略和方法都有很大區(qū)別,所以這部分內(nèi)容是需要分開(kāi)單獨(dú)進(jìn)行測(cè)試的,理論上來(lái)說(shuō)這也是不同的部分。

?綜論:

1、接口測(cè)試和app測(cè)試的活動(dòng)有部分重復(fù)的內(nèi)容,主要集中在業(yè)務(wù)功能測(cè)試方面。除此之外,針對(duì)各自特性的測(cè)試都不一樣,需要分別進(jìn)行有針對(duì)性的測(cè)試,才能確保整個(gè)產(chǎn)品的質(zhì)量。

2、接口測(cè)試可以關(guān)注于服務(wù)器邏輯驗(yàn)證,而UI測(cè)試可以關(guān)注于頁(yè)面展示邏輯及界面前端與服務(wù)器集成驗(yàn)證

3、接口測(cè)試持續(xù)集成:

對(duì)接口測(cè)試而言,持續(xù)集成自動(dòng)化是核心內(nèi)容,通過(guò)持自動(dòng)化的手段我們才能做到低成本高收益。目前我們已經(jīng)實(shí)現(xiàn)了接口自動(dòng)化,主要應(yīng)用于回歸階段,后續(xù)還需要加強(qiáng)自動(dòng)化的程度,包括但不限于下面的內(nèi)容:

a) 流程方面:在回歸階段加強(qiáng)接口異常場(chǎng)景的覆蓋度,并逐步向系統(tǒng)測(cè)試,冒煙測(cè)試階段延伸,最終達(dá)到全流程自動(dòng)化。

b) 結(jié)果展示:更加豐富的結(jié)果展示、趨勢(shì)分析,質(zhì)量統(tǒng)計(jì)和分析等

c) 問(wèn)題定位:報(bào)錯(cuò)信息、日志更精準(zhǔn),方便問(wèn)題復(fù)現(xiàn)與定位。

d) 結(jié)果校驗(yàn):加強(qiáng)自動(dòng)化校驗(yàn)?zāi)芰?,如?shù)據(jù)庫(kù)信息校驗(yàn)。

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

f) 性能需求:完善性能測(cè)試體系,通過(guò)自動(dòng)化的手段監(jiān)控接口性能指標(biāo)是否正常。

4、接口測(cè)試質(zhì)量評(píng)估標(biāo)準(zhǔn):

a) 業(yè)務(wù)功能覆蓋是否完整

b) 業(yè)務(wù)規(guī)則覆蓋是否完整

c) 參數(shù)驗(yàn)證是否達(dá)到要求(邊界、業(yè)務(wù)規(guī)則)

d) 接口異常場(chǎng)景覆蓋是否完整

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

f) ?代碼覆蓋率是否達(dá)到要求

g) 性能指標(biāo)是否滿足要求

h) 安全指標(biāo)是否滿足要求

八.接口測(cè)試都要掌握哪些知識(shí)?

①了解系統(tǒng)及內(nèi)部各個(gè)組件之間的業(yè)務(wù)邏輯交互;

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

③了解協(xié)議的基本內(nèi)容,包括:通信原理、三次握手、常用的協(xié)議類(lèi)型、報(bào)文構(gòu)成、數(shù)據(jù)傳輸方式、常見(jiàn)的狀態(tài)碼、URL構(gòu)成等;

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

⑤數(shù)據(jù)庫(kù)基礎(chǔ)操作命令(檢查數(shù)據(jù)入庫(kù)、提取測(cè)試數(shù)據(jù)等);

⑥常見(jiàn)的字符類(lèi)型,比如:char、varchar、text、int、float、datatime、string等;

如何學(xué)這些技能?

①系統(tǒng)間業(yè)務(wù)交互邏輯:通過(guò)需求文檔、流程圖、思維導(dǎo)圖、溝通等很多渠道和方式;

②協(xié)議:推薦《圖解http》這本書(shū),內(nèi)容生動(dòng),相對(duì)算是入門(mén)級(jí)的書(shū)籍,其他的還有《圖解tcp、IP》等;

③接口測(cè)試工具:百度這些工具,然后你會(huì)發(fā)現(xiàn),好多的教學(xué)博客、相關(guān)問(wèn)題解決方案、以及一些基于工具的書(shū)籍,當(dāng)然,選擇合適的書(shū)很重要;

④數(shù)據(jù)庫(kù)操作命令:學(xué)習(xí)網(wǎng)站(W3C、菜鳥(niǎo)教程)、教學(xué)博客,以及一些數(shù)據(jù)庫(kù)相關(guān)書(shū)籍,入門(mén)級(jí)推薦:《mysql必知必會(huì)》、《oracle PL/SQL必知必會(huì)》等

⑤字符類(lèi)型:還是百度,有句話這么說(shuō):內(nèi)事不決問(wèn)百度,外事不決問(wèn)Google。。。

如何獲取接口相關(guān)信息?

一般都會(huì)由開(kāi)發(fā)或者對(duì)應(yīng)的技術(shù)負(fù)責(zé)人員編寫(xiě)接口文檔,里面會(huì)注明接口相關(guān)的地址、參數(shù)類(lèi)型、方法、輸入、輸出等信息,如果沒(méi)有,想辦法獲取。。。

接口文檔八要素:

封面:封面最好是本公司規(guī)定的封面,有l(wèi)ogo,內(nèi)容標(biāo)題,版本號(hào),公司名稱,文檔產(chǎn)生日期;

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

接口信息:接口調(diào)用方式,常用的GET/POST方式,接口地址;

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

接口參數(shù)說(shuō)明:每個(gè)參數(shù)都要和實(shí)際中調(diào)用的一樣,包括大小寫(xiě);參數(shù)的含義言簡(jiǎn)意賅的說(shuō)明,格式,是string 還是int 還是long等格式;

說(shuō)明部分,說(shuō)明參數(shù)值是需要哪里提供,并詳細(xì)說(shuō)明參數(shù)怎么生成的,例如時(shí)間戳,是哪個(gè)時(shí)間段的,參數(shù)是否必填,一些參數(shù)是必須要有的,有些是可選參數(shù)等;

返回值說(shuō)明:

①最好有一個(gè)模板返回值,并說(shuō)明每個(gè)返回參數(shù)的意義;

②提供一個(gè)真實(shí)的調(diào)用接口,真實(shí)的返回值;

調(diào)用限制,安全方面:

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

文檔維護(hù):文檔在維護(hù)的時(shí)候,如有修改一定要寫(xiě)上修改日期,修改人,對(duì)大的修改要有版本號(hào)變更;

九.其他相關(guān)知識(shí)?

get請(qǐng)求,post請(qǐng)求的區(qū)別:

1、GET使用URL或Cookie傳參。而POST將數(shù)據(jù)放在BODY中。

2、GET的URL會(huì)有長(zhǎng)度上的限制,則POST的數(shù)據(jù)則可以非常大。

3、POST比GET安全,因?yàn)閿?shù)據(jù)在地址欄上不可見(jiàn)。

4、一般get請(qǐng)求用來(lái)獲取數(shù)據(jù),post請(qǐng)求用來(lái)發(fā)送數(shù)據(jù)。

其實(shí)上面這幾點(diǎn),只有最后一點(diǎn)說(shuō)的是比較靠譜的,第一點(diǎn)post請(qǐng)求也可以把數(shù)據(jù)放到url里面,get請(qǐng)求其實(shí)也沒(méi)長(zhǎng)度限制,post請(qǐng)求看起來(lái)參數(shù)是隱式的,稍微安全那么一些些,但是那只是對(duì)于小白用戶來(lái)說(shuō)的,就算post請(qǐng)求,你通過(guò)抓包也是可以抓到參數(shù)的。(唯一區(qū)別就是這一點(diǎn),上面3點(diǎn)區(qū)別都是不準(zhǔn)確的)

http狀態(tài)碼:

1、200 2開(kāi)頭的都表示這個(gè)請(qǐng)求發(fā)送成功,最常見(jiàn)的就是200,就代表這個(gè)請(qǐng)求是ok的,服務(wù)器也返回了。

2、300 3開(kāi)頭的代表重定向,最常見(jiàn)的是302,把這個(gè)請(qǐng)求重定向到別的地方了。

3、400 400代表客戶端發(fā)送的請(qǐng)求有語(yǔ)法錯(cuò)誤,401代表訪問(wèn)的頁(yè)面沒(méi)有授權(quán),403表示沒(méi)有權(quán)限訪問(wèn)這個(gè)頁(yè)面,404代表沒(méi)有這個(gè)頁(yè)面。

4、500 5開(kāi)頭的代表服務(wù)器有異常,500代表服務(wù)器內(nèi)部異常,504代表服務(wù)器端超時(shí),沒(méi)返回結(jié)果。

webservice接口怎么測(cè)試:

它不需要你在拼報(bào)文了,會(huì)給一個(gè)webservice的地址,或者wsdl文件,直接在soapui導(dǎo)入,就可以看到這個(gè)webservice里面的所有接口,也有報(bào)文,直接填入?yún)?shù)調(diào)用,看返回結(jié)果就可以了。

cookie與session的區(qū)別:

1、cookie數(shù)據(jù)存放在客戶的瀏覽器上,session數(shù)據(jù)放在服務(wù)器上。

2、cookie不是很安全,別人可以分析存放在本地的cookie并進(jìn)行cookie欺騙考慮到安全應(yīng)當(dāng)使用session。

3、session會(huì)在一定時(shí)間內(nèi)保存在服務(wù)器上。當(dāng)訪問(wèn)增多,會(huì)比較占用你服務(wù)器的性能考慮到減輕服務(wù)器性能方面,應(yīng)當(dāng)使用cookie。

4、單個(gè)cookie保存的數(shù)據(jù)不能超過(guò)4K,很多瀏覽器都限制一個(gè)站點(diǎn)最多保存20個(gè)cookie。

5、所以個(gè)人建議:

將登陸信息等重要信息存放為session

其他信息如果需要保留,可以放在cookie中

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容