掃盲內(nèi)容:
1.什么是接口脆丁?
2.接口都有哪些類型奢讨?
3.接口的本質(zhì)是什么稚叹?
4.什么是接口測(cè)試哈垢?
5.問什么要做接口測(cè)試叠洗?
6.怎樣做接口測(cè)試?
7.接口測(cè)測(cè)試點(diǎn)是什么歼培?
8.接口測(cè)試都要掌握哪些知識(shí)亩码?
9.其他相關(guān)知識(shí)季率?
一.什么是接口?
接口測(cè)試主要用于外部系統(tǒng)與系統(tǒng)之間以及內(nèi)部各個(gè)子系統(tǒng)之間的交互點(diǎn)描沟,定義特定的交互點(diǎn)飒泻,然后通過這些交互點(diǎn)來,通過一些特殊的規(guī)則也就是協(xié)議啊掏,來進(jìn)行數(shù)據(jù)之間的交互蠢络。
二.接口都有哪些類型?
接口一般分為兩種:
1.程序內(nèi)部的接口
2.系統(tǒng)對(duì)外的接口
系統(tǒng)對(duì)外的接口:比如你要從別的網(wǎng)站或服務(wù)器上獲取資源或信息迟蜜,別人肯定不會(huì)把數(shù)據(jù)庫共享給你刹孔,他只能給你提供一個(gè)他們寫好的方法來獲取數(shù)據(jù),你引用他提供的接口就能使用他寫好的方法娜睛,從而達(dá)到數(shù)據(jù)共享的目的髓霞。
程序內(nèi)部的接口:方法與方法之間,模塊與模塊之間的交互畦戒,程序內(nèi)部拋出的接口方库,比如bbs系統(tǒng),有登錄模塊障斋、發(fā)帖模塊等等纵潦,那你要發(fā)帖就必須先登錄徐鹤,那么這兩個(gè)模塊就得有交互,它就會(huì)拋出一個(gè)接口邀层,供內(nèi)部系統(tǒng)進(jìn)行調(diào)用返敬。
接口的分類:
1.webservice接口
2.http api接口
webService接口是走soap協(xié)議通過http傳輸,請(qǐng)求報(bào)文和返回報(bào)文都是xml格式的寥院,我們?cè)跍y(cè)試的時(shí)候都用通過工具才能進(jìn)行調(diào)用劲赠,測(cè)試。
http api接口是走h(yuǎn)ttp協(xié)議秸谢,通過路徑來區(qū)分調(diào)用的方法凛澎,請(qǐng)求報(bào)文都是key-value形式的,返回報(bào)文一般都是json串估蹄,有g(shù)et和post等方法塑煎,這也是最常用的兩種請(qǐng)求方式。
json是一種通用的數(shù)據(jù)類型臭蚁,所有的語言都認(rèn)識(shí)它轧叽。(json的本質(zhì)是字符串,他與其他語言無關(guān)刊棕,只是可以經(jīng)過稍稍加工可以轉(zhuǎn)換成其他語言的數(shù)據(jù)類型炭晒,比如可以轉(zhuǎn)換成Python中的字典,key-value的形式甥角,可以轉(zhuǎn)換成JavaScript中的原生對(duì)象网严,可以轉(zhuǎn)換成java中的類對(duì)象等。)
三.接口的本質(zhì)及其工作原理是什么嗤无?
接口你可以簡(jiǎn)單的理解他就是URL震束,工作原理就會(huì)說URL通過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ù)的交換,傳遞和控制管理過程拓诸,以及系統(tǒng)間的相互邏輯依賴關(guān)系等侵佃。
--百度百科
簡(jiǎn)答的說就是通過URL像服務(wù)器或者其他模塊等,傳輸我們想傳輸?shù)臄?shù)據(jù)奠支,然后看看他們返回的是不是我們預(yù)期想要的馋辈。
五.問什么要做接口測(cè)試?
①.越底層發(fā)現(xiàn)bug倍谜,它的修復(fù)成本是越低的迈螟。
②.前端隨便變叉抡,接口測(cè)好了,后端不用變答毫,前后端是兩撥人開發(fā)的卜壕。
③.檢查系統(tǒng)的安全性、穩(wěn)定性烙常,前端傳參不可信,比如京東購(gòu)物鹤盒,前端價(jià)格不可能傳入-1元蚕脏,但是通過接口可以傳入-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)是分離的题篷,從安全層面來說:
(1)词身、只依賴前端進(jìn)行限制已經(jīng)完全不能滿足系統(tǒng)的安全要求(繞過前面實(shí)在太容易), 需要后端同樣進(jìn)行控制番枚,在這種情況下就需要從接口層面進(jìn)行驗(yàn)證法严。
(2)、前后端傳輸葫笼、日志打印等信息是否加密傳輸也是需要驗(yàn)證的深啤,特別是涉及到用戶的隱私信息,如身份證路星,銀行卡等溯街。
六.怎樣做接口測(cè)試?
--由于我們項(xiàng)目前后端調(diào)用主要是基于http協(xié)議的接口洋丐,所以測(cè)試接口時(shí)主要是通過工具或代碼模擬http請(qǐng)求的發(fā)送與接收苫幢。工具有很多如:postman、jmeter垫挨、soupUI韩肝、java+httpclient、robotframework+httplibrary等九榔。
--也可以用 接口自動(dòng)化來實(shí)現(xiàn)哀峻,就是用代碼實(shí)現(xiàn)涡相,框架和UI自動(dòng)化差不多,發(fā)送請(qǐng)求用斷言來判斷剩蟀。
七.接口測(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)答的過程;
重點(diǎn):檢查數(shù)據(jù)的交換缰冤,傳遞和控制管理過程犬缨,還包括處理的次數(shù);
核心:持續(xù)集成是接口測(cè)試的核心棉浸;
優(yōu)點(diǎn):為高復(fù)雜性的平臺(tái)帶來高效的缺陷監(jiān)測(cè)和質(zhì)量監(jiān)督能力怀薛,平臺(tái)越復(fù)雜,系統(tǒng)越龐大迷郑,接口測(cè)試的效果越明顯(提高測(cè)試效率枝恋,提升用戶體驗(yàn),降低研發(fā)成本)嗡害;
用例設(shè)計(jì)重點(diǎn):通常情況下主要測(cè)試最外層的兩類接口:數(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.1呐能、后端接口都測(cè)試什么?
--回答這個(gè)問題抑堡,我們可以從接口測(cè)試活動(dòng)內(nèi)容的角度下手摆出,看一下面這張圖,基本反應(yīng)了當(dāng)前我們項(xiàng)目后端接口測(cè)試的主要內(nèi)容:
問題2首妖、后端接口測(cè)試一遍 偎漫,前端也測(cè)試一遍,是不是重復(fù)測(cè)試了有缆?
--回答這個(gè)問題象踊,我們可以直接對(duì)比接口測(cè)試和app端測(cè)試活動(dòng)的內(nèi)容,如下圖為app測(cè)試時(shí)需要覆蓋或考慮內(nèi)容:
從上面這兩張圖對(duì)比可以看出棚壁,兩個(gè)測(cè)試活動(dòng)中相同的部分有功能測(cè)試杯矩、邊界分析測(cè)試和性能測(cè)試,其它部分由于各自特性或關(guān)注點(diǎn)不同需要進(jìn)行特殊的測(cè)試袖外,在此不做討論史隆。接下來我們針對(duì)以上三部分相同的內(nèi)容再進(jìn)行分析:
1、基本功能測(cè)試:
由于是針對(duì)基本業(yè)務(wù)功能進(jìn)行測(cè)試曼验,所以這部分是兩種測(cè)試重合度最高的一塊泌射,開發(fā)同學(xué)通常所指的也主要是這部分的內(nèi)容粘姜。
2、邊界分析測(cè)試:
在基本功能測(cè)試的基礎(chǔ)上考慮輸入輸出的邊界條件熔酷,這部分內(nèi)容也會(huì)有重復(fù)的部分(比如業(yè)務(wù)規(guī)則的邊界)孤紧。但是,前端的輸入輸出很多時(shí)候都是提供固守的值讓用戶選擇(如下拉框)拒秘,在這種情況下測(cè)試的邊界范圍就非常有限号显,但接口測(cè)試就不存在這方面的限制,相對(duì)來說接口可以覆蓋的范圍更廣躺酒,同樣的押蚤,接口出現(xià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)容是需要分開單獨(dú)進(jìn)行測(cè)試的,理論上來說這也是不同的部分蒲犬。
綜論:
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)注于頁面展示邏輯及界面前端與服務(wù)器集成驗(yàn)證
3嘹吨、接口測(cè)試持續(xù)集成:
對(duì)接口測(cè)試而言,持續(xù)集成自動(dòng)化是核心內(nèi)容境氢,通過持自動(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) 問題定位:報(bào)錯(cuò)信息酌泰、日志更精準(zhǔn),方便問題復(fù)現(xiàn)與定位匕累。
d) 結(jié)果校驗(yàn):加強(qiáng)自動(dòng)化校驗(yàn)?zāi)芰α晟玻鐢?shù)據(jù)庫信息校驗(yàn)。
e) 代碼覆蓋率:不斷嘗試由目前的黑盒向白盒下探欢嘿,提高代碼覆蓋率衰琐。
f) 性能需求:完善性能測(cè)試體系,通過自動(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é)議類型探颈、報(bào)文構(gòu)成僻焚、數(shù)據(jù)傳輸方式、常見的狀態(tài)碼膝擂、URL構(gòu)成等虑啤;
④常用的接口測(cè)試工具,比如:jmeter架馋、loadrunner狞山、postman、soapUI等叉寂;
⑤數(shù)據(jù)庫基礎(chǔ)操作命令(檢查數(shù)據(jù)入庫萍启、提取測(cè)試數(shù)據(jù)等);
⑥常見的字符類型,比如:char勘纯、varchar局服、text、int驳遵、float淫奔、datatime、string等堤结;
如何學(xué)這些技能唆迁?
①系統(tǒng)間業(yè)務(wù)交互邏輯:通過需求文檔、流程圖竞穷、思維導(dǎo)圖唐责、溝通等很多渠道和方式;
②協(xié)議:推薦《圖解http》這本書瘾带,內(nèi)容生動(dòng)鼠哥,相對(duì)算是入門級(jí)的書籍,其他的還有《圖解tcp看政、IP》等朴恳;
③接口測(cè)試工具:百度這些工具,然后你會(huì)發(fā)現(xiàn)帽衙,好多的教學(xué)博客菜皂、相關(guān)問題解決方案贞绵、以及一些基于工具的書籍厉萝,當(dāng)然,選擇合適的書很重要榨崩;
④數(shù)據(jù)庫操作命令:學(xué)習(xí)網(wǎng)站(W3C谴垫、菜鳥教程)、教學(xué)博客母蛛,以及一些數(shù)據(jù)庫相關(guān)書籍翩剪,入門級(jí)推薦:《mysql必知必會(huì)》、《oracle PL/SQL必知必會(huì)》等
⑤字符類型:還是百度彩郊,有句話這么說:內(nèi)事不決問百度前弯,外事不決問Google。秫逝。恕出。
如何獲取接口相關(guān)信息?
一般的企業(yè)违帆,都會(huì)由開發(fā)或者對(duì)應(yīng)的技術(shù)負(fù)責(zé)人員編寫接口文檔浙巫,里面會(huì)注明接口相關(guān)的地址、參數(shù)類型、方法的畴、輸入渊抄、輸出等信息,如果沒有丧裁,想辦法獲取护桦。。渣慕。
接口文檔八要素:
封面:封面最好是本公司規(guī)定的封面嘶炭,有l(wèi)ogo,內(nèi)容標(biāo)題逊桦,版本號(hào)眨猎,公司名稱,文檔產(chǎn)生日期强经;
修訂歷史:表格形式較好些睡陪,包括:版本、修訂說明匿情、修訂日期兰迫、修訂人、審核時(shí)間審核人等炬称;
接口信息:接口調(diào)用方式汁果,常用的GET/POST方式,接口地址玲躯;
功能描述:簡(jiǎn)潔清晰的描述接口功能据德,比如:接口獲取的信息不包括哪些;
接口參數(shù)說明:每個(gè)參數(shù)都要和實(shí)際中調(diào)用的一樣跷车,包括大小寫棘利;參數(shù)的含義言簡(jiǎn)意賅的說明,格式朽缴,是string 還是int 還是long等格式善玫;
說明部分,說明參數(shù)值是需要哪里提供密强,并詳細(xì)說明參數(shù)怎么生成的茅郎,例如時(shí)間戳,是哪個(gè)時(shí)間段的或渤,參數(shù)是否必填系冗,一些參數(shù)是必須要有的,有些是可選參數(shù)等劳坑;
返回值說明:
①最好有一個(gè)模板返回值毕谴,并說明每個(gè)返回參數(shù)的意義;
②提供一個(gè)真實(shí)的調(diào)用接口,真實(shí)的返回值涝开;
調(diào)用限制循帐,安全方面:
加密方式,或者自己公司一個(gè)特殊的加密過程舀武,只要雙方采用一致的加密算法就可以調(diào)用接口拄养,保證了接口調(diào)用的安全性,比如常見的md5银舱;
文檔維護(hù):文檔在維護(hù)的時(shí)候瘪匿,如有修改一定要寫上修改日期,修改人寻馏,對(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ù)在地址欄上不可見液样。
4振亮、一般get請(qǐng)求用來獲取數(shù)據(jù),post請(qǐng)求用來發(fā)送數(shù)據(jù)蓄愁。
其實(shí)上面這幾點(diǎn)双炕,只有最后一點(diǎn)說的是比較靠譜的狞悲,第一點(diǎn)post請(qǐng)求也可以把數(shù)據(jù)放到url里面撮抓,get請(qǐng)求其實(shí)也沒長(zhǎng)度限制,post請(qǐng)求看起來參數(shù)是隱式的摇锋,稍微安全那么一些些丹拯,但是那只是對(duì)于小白用戶來說的,就算post請(qǐng)求荸恕,你通過抓包也是可以抓到參數(shù)的乖酬。(唯一區(qū)別就是這一點(diǎn),上面3點(diǎn)區(qū)別都是不準(zhǔn)確的)
http狀態(tài)碼:
1融求、200 2開頭的都表示這個(gè)請(qǐng)求發(fā)送成功咬像,最常見的就是200,就代表這個(gè)請(qǐng)求是ok的,服務(wù)器也返回了县昂。
2肮柜、300 3開頭的代表重定向,最常見的是302倒彰,把這個(gè)請(qǐng)求重定向到別的地方了审洞。
3、400 400代表客戶端發(fā)送的請(qǐng)求有語法錯(cuò)誤待讳,401代表訪問的頁面沒有授權(quán)芒澜,403表示沒有權(quán)限訪問這個(gè)頁面,404代表沒有這個(gè)頁面创淡。
4痴晦、500 5開頭的代表服務(wù)器有異常,500代表服務(wù)器內(nèi)部異常琳彩,504代表服務(wù)器端超時(shí)阅酪,沒返回結(jié)果。
webservice接口怎么測(cè)試:
它不需要你在拼報(bào)文了汁针,會(huì)給一個(gè)webservice的地址术辐,或者wsdl文件,直接在soapui導(dǎo)入施无,就可以看到這個(gè)webservice里面的所有接口辉词,也有報(bào)文,直接填入?yún)?shù)調(diào)用猾骡,看返回結(jié)果就可以了瑞躺。
天氣預(yù)報(bào)wsdl地址:http://www.webservicex.net/globalweather.asmx?wsdl
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)訪問增多岸售,會(huì)比較占用你服務(wù)器的性能考慮到減輕服務(wù)器性能方面,應(yīng)當(dāng)使用cookie厂画。
4凸丸、單個(gè)cookie保存的數(shù)據(jù)不能超過4K,很多瀏覽器都限制一個(gè)站點(diǎn)最多保存20個(gè)cookie袱院。
5屎慢、所以個(gè)人建議:
將登陸信息等重要信息存放為session
其他信息如果需要保留瞭稼,可以放在cookie中