1.什么是接口?
接口測(cè)試主要用于外部系統(tǒng)與系統(tǒng)之間以及內(nèi)部各個(gè)子系統(tǒng)之間的交互點(diǎn)懦傍,定義特定的交互點(diǎn)奄容,然后通過這些交互點(diǎn)來,通過一些特殊的規(guī)則也就是協(xié)議筑煮,來進(jìn)行數(shù)據(jù)之間的交互油啤。
2.接口都有哪些類型评凝?
接口一般分為兩種: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交播、httpapi接口
? ? ? ?webService接口是走soap協(xié)議通過http傳輸重虑,請(qǐng)求報(bào)文和返回報(bào)文都是xml格式的践付,我們?cè)跍y(cè)試的時(shí)候都用通過工具才能進(jìn)行調(diào)用秦士,測(cè)試。
? ? ? ?httpapi接口是走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ì)象等。)
3.接口的本質(zhì)及其工作原理是什么絮重?
? ? ? ?接口你可以簡(jiǎn)單的理解他就是URL冤寿,工作原理就會(huì)說URL通過get或者post請(qǐng)求像服務(wù)器發(fā)送一些東西歹苦,然后得到一些相應(yīng)的返回值,本質(zhì)就是數(shù)據(jù)的傳輸與接收督怜。
4.什么是接口測(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ù)期想要的芬探。
5.問什么要做接口測(cè)試神得?
1、越底層發(fā)現(xiàn)bug偷仿,它的修復(fù)成本是越低的哩簿。
2、前端隨便變酝静,接口測(cè)好了节榜,后端不用變,前后端是兩撥人開發(fā)的别智。
3宗苍、檢查系統(tǒng)的安全性、穩(wěn)定性薄榛,前端傳參不可信讳窟,比如京東購物,前端價(jià)格不可能傳入-1元敞恋,但是通過接口可以傳入-1元丽啡。
4、如今的系統(tǒng)復(fù)雜度不斷上升硬猫,傳統(tǒng)的測(cè)試方法成本急劇增加且測(cè)試效率大幅下降阻问,接口測(cè)試可以提供這種情況下的解決方案融击。
5、接口測(cè)試相對(duì)容易實(shí)現(xiàn)自動(dòng)化持續(xù)集成,且相對(duì)UI自動(dòng)化也比較穩(wěn)定尸执,可以減少人工回歸測(cè)試人力成本與時(shí)間营密,縮短測(cè)試周期划址,支持后端快速發(fā)版需求劲妙。接口持續(xù)集成是為什么能低成本高收益的根源。
6冕香、現(xiàn)在很多系統(tǒng)前后端架構(gòu)是分離的蛹尝,從安全層面來說:
7后豫、只依賴前端進(jìn)行限制已經(jīng)完全不能滿足系統(tǒng)的安全要求(繞過前面實(shí)在太容易),需要后端同樣進(jìn)行控制突那,在這種情況下就需要從接口層面進(jìn)行驗(yàn)證挫酿。
8、前后端傳輸愕难、日志打印等信息是否**傳輸也是需要驗(yàn)證的早龟,特別是涉及到用戶的隱私信息,如身份證猫缭,銀行卡等葱弟。
6.怎樣做接口測(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)求用斷言來判斷来吩。
7.接口測(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)容:
(有興趣的小伙伴可以加扣扣裙164549428或者加威dingyu-003免費(fèi)領(lǐng)取各種測(cè)試資料)
從上面這兩張圖對(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)容:
流程方面:在回歸階段加強(qiáng)接口異常場(chǎng)景的覆蓋度,并逐步向系統(tǒng)測(cè)試南窗,冒煙測(cè)試階段延伸揍很,最終達(dá)到全流程自動(dòng)化。
結(jié)果展示:更加豐富的結(jié)果展示万伤、趨勢(shì)分析窒悔,質(zhì)量統(tǒng)計(jì)和分析等
問題定位:報(bào)錯(cuò)信息、日志更精準(zhǔn)敌买,方便問題復(fù)現(xiàn)與定位简珠。
結(jié)果校驗(yàn):加強(qiáng)自動(dòng)化校驗(yàn)?zāi)芰Γ鐢?shù)據(jù)庫信息校驗(yàn)放妈。
代碼覆蓋率:不斷嘗試由目前的黑盒向白盒下探北救,提高代碼覆蓋率荐操。
性能需求:完善性能測(cè)試體系芜抒,通過自動(dòng)化的手段監(jiān)控接口性能指標(biāo)是否正常。
4托启、接口測(cè)試質(zhì)量評(píng)估標(biāo)準(zhǔn):
業(yè)務(wù)功能覆蓋是否完整
業(yè)務(wù)規(guī)則覆蓋是否完整
參數(shù)驗(yàn)證是否達(dá)到要求(邊界宅倒、業(yè)務(wù)規(guī)則)
接口異常場(chǎng)景覆蓋是否完整
接口覆蓋率是否達(dá)到要求
代碼覆蓋率是否達(dá)到要求
性能指標(biāo)是否滿足要求
安全指標(biāo)是否滿足要求
8.接口測(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ì)》、《oraclePL/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)變更莲组;
9.其他相關(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馏艾、2002開頭的都表示這個(gè)請(qǐng)求發(fā)送成功劳曹,最常見的就是200,就代表這個(gè)請(qǐng)求是ok的攒至,服務(wù)器也返回了厚者。
2、3003開頭的代表重定向迫吐,最常見的是302库菲,把這個(gè)請(qǐng)求重定向到別的地方了。
3志膀、400400代表客戶端發(fā)送的請(qǐng)求有語法錯(cuò)誤熙宇,401代表訪問的頁面沒有授權(quán),403表示沒有權(quán)限訪問這個(gè)頁面溉浙,404代表沒有這個(gè)頁面烫止。
4、5005開頭的代表服務(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中
如果你覺得本文對(duì)你有幫助的話洋机,可以給小編點(diǎn)贊加關(guān)注坠宴,多多支持哦!