掃盲內(nèi)容:
1.什么是接口洁奈?
2.接口都有哪些類型喇喉?
3.接口的本質(zhì)是什么?
4.什么是接口測試囱怕?
5.問什么要做接口測試倘待?
6.怎樣做接口測試侯繁?
7.接口測測試點是什么?
8.接口測試都要掌握哪些知識以清?
9.其他相關(guān)知識儿普?
一.什么是接口?
接口測試主要用于外部系統(tǒng)與系統(tǒng)之間以及內(nèi)部各個子系統(tǒng)之間的交互點玖媚,定義特定的交互點箕肃,然后通過這些交互點來,通過一些特殊的規(guī)則也就是協(xié)議今魔,來進(jìn)行數(shù)據(jù)之間的交互勺像。
二.接口都有哪些類型障贸?
接口一般分為兩種:
1.程序內(nèi)部的接口
2.系統(tǒng)對外的接口
系統(tǒng)對外的接口:比如你要從別的網(wǎng)站或服務(wù)器上獲取資源或信息,別人肯定不會把數(shù)據(jù)庫共享給你吟宦,他只能給你提供一個他們寫好的方法來獲取數(shù)據(jù)篮洁,你引用他提供的接口就能使用他寫好的方法,從而達(dá)到數(shù)據(jù)共享的目的殃姓。
程序內(nèi)部的接口:方法與方法之間袁波,模塊與模塊之間的交互,程序內(nèi)部拋出的接口蜗侈,比如bbs系統(tǒng)篷牌,有登錄模塊、發(fā)帖模塊等等踏幻,那你要發(fā)帖就必須先登錄枷颊,那么這兩個模塊就得有交互,它就會拋出一個接口该面,供內(nèi)部系統(tǒng)進(jìn)行調(diào)用夭苗。
接口的分類:
1.webservice接口
2.http api接口
webService接口是走soap協(xié)議通過http傳輸,請求報文和返回報文都是xml格式的隔缀,我們在測試的時候都用通過工具才能進(jìn)行調(diào)用题造,測試。
http api接口是走h(yuǎn)ttp協(xié)議猾瘸,通過路徑來區(qū)分調(diào)用的方法界赔,請求報文都是key-value形式的,返回報文一般都是json串须妻,有g(shù)et和post等方法仔蝌,這也是最常用的兩種請求方式。
json是一種通用的數(shù)據(jù)類型荒吏,所有的語言都認(rèn)識它。(json的本質(zhì)是字符串渊鞋,他與其他語言無關(guān)绰更,只是可以經(jīng)過稍稍加工可以轉(zhuǎn)換成其他語言的數(shù)據(jù)類型,比如可以轉(zhuǎn)換成Python中的字典锡宋,key-value的形式儡湾,可以轉(zhuǎn)換成JavaScript中的原生對象,可以轉(zhuǎn)換成java中的類對象等执俩。)
三.接口的本質(zhì)及其工作原理是什么徐钠?
接口你可以簡單的理解他就是URL,工作原理就會說URL通過get或者post請求像服務(wù)器發(fā)送一些東西役首,然后得到一些相應(yīng)的返回值尝丐,本質(zhì)就是數(shù)據(jù)的傳輸與接收显拜。
四.什么是接口測試?
簡答的說就是通過URL像服務(wù)器或者其他模塊等爹袁,傳輸我們想傳輸?shù)臄?shù)據(jù)远荠,然后看看他們返回的是不是我們預(yù)期想要的。
五.問什么要做接口測試失息?
①.越底層發(fā)現(xiàn)bug譬淳,它的修復(fù)成本是越低的。
②.前端隨便變盹兢,接口測好了邻梆,后端不用變,前后端是兩撥人開發(fā)的绎秒。
③.檢查系統(tǒng)的安全性浦妄、穩(wěn)定性,前端傳參不可信替裆,比如京東購物校辩,前端價格不可能傳入-1元,但是通過接口可以傳入-1元辆童。
④.如今的系統(tǒng)復(fù)雜度不斷上升宜咒,傳統(tǒng)的測試方法成本急劇增加且測試效率大幅下降,接口測試可以提供這種情況下的解決方案把鉴。
⑤. 接口測試相對容易實現(xiàn)自動化持續(xù)集成故黑,且相對UI自動化也比較穩(wěn)定,可以減少人工回歸測試人力成本與時間庭砍,縮短測試周期场晶,支持后端快速發(fā)版需求。接口持續(xù)集成是為什么能低成本高收益的根源怠缸。
⑥. 現(xiàn)在很多系統(tǒng)前后端架構(gòu)是分離的诗轻,從安全層面來說:
(1)、只依賴前端進(jìn)行限制已經(jīng)完全不能滿足系統(tǒng)的安全要求(繞過前面實在太容易)揭北, 需要后端同樣進(jìn)行控制扳炬,在這種情況下就需要從接口層面進(jìn)行驗證。
(2)搔体、前后端傳輸恨樟、日志打印等信息是否加密傳輸也是需要驗證的,特別是涉及到用戶的隱私信息疚俱,如身份證劝术,銀行卡等。
六.怎樣做接口測試?
工具有很多如:postman养晋、jmeter衬吆、soupUI、java+httpclient匙握、robotframework+httplibrary等咆槽。
--也可以用 接口自動化來實現(xiàn),就是用代碼實現(xiàn)圈纺,框架和UI自動化差不多秦忿,發(fā)送請求用斷言來判斷。
七.接口測測試點是什么蛾娶?
目的:測試接口的正確性和穩(wěn)定性灯谣;
原理:模擬客戶端向服務(wù)器發(fā)送請求報文,服務(wù)器接收請求報文后對相應(yīng)的報文做處理并向客戶端返回應(yīng)答蛔琅,客戶端接收應(yīng)答的過程胎许;
重點:檢查數(shù)據(jù)的交換,傳遞和控制管理過程罗售,還包括處理的次數(shù)辜窑;
核心:持續(xù)集成是接口測試的核心;
優(yōu)點:為高復(fù)雜性的平臺帶來高效的缺陷監(jiān)測和質(zhì)量監(jiān)督能力寨躁,平臺越復(fù)雜穆碎,系統(tǒng)越龐大,接口測試的效果越明顯(提高測試效率职恳,提升用戶體驗所禀,降低研發(fā)成本);
用例設(shè)計重點:通常情況下主要測試最外層的兩類接口:數(shù)據(jù)進(jìn)入系統(tǒng)接口(調(diào)用外部系統(tǒng)的參數(shù)為本系統(tǒng)使用)和數(shù)據(jù)流出系統(tǒng)接口(驗證系統(tǒng)處理后的數(shù)據(jù)是否正常)放钦;
PS:設(shè)計用例時還需要注意外部接口提供給使用這些接口的外部用戶什么功能色徘,外部用戶真正需要什么功能;
1操禀、基本功能測試:
由于是針對基本業(yè)務(wù)功能進(jìn)行測試褂策,所以這部分是兩種測試重合度最高的一塊,開發(fā)同學(xué)通常所指的也主要是這部分的內(nèi)容颓屑。
2辙培、邊界分析測試:
在基本功能測試的基礎(chǔ)上考慮輸入輸出的邊界條件,這部分內(nèi)容也會有重復(fù)的部分(比如業(yè)務(wù)規(guī)則的邊界)邢锯。但是,前端的輸入輸出很多時候都是提供固守的值讓用戶選擇(如下拉框)搀别,在這種情況下測試的邊界范圍就非常有限丹擎,但接口測試就不存在這方面的限制,相對來說接口可以覆蓋的范圍更廣,同樣的蒂培,接口出現(xiàn)問題的概率也更高再愈。
3、性能測試:
這個比較容易區(qū)分护戳,雖然都需要做性能測試翎冲,但關(guān)注點確大不相同。App端性能主要關(guān)注與手機相關(guān)的特性媳荒,如手機cpu抗悍、內(nèi)存、流量钳枕、fps等缴渊。而接口性能主要關(guān)注接口響應(yīng)時間、并發(fā)鱼炒、服務(wù)端資源的使用情況等衔沼。兩種測試時的策略和方法都有很大區(qū)別苔埋,所以這部分內(nèi)容是需要分開單獨進(jìn)行測試的吧兔,理論上來說這也是不同的部分诈铛。
綜論:
1库正、接口測試和app測試的活動有部分重復(fù)的內(nèi)容屠升,主要集中在業(yè)務(wù)功能測試方面题翻。除此之外止剖,針對各自特性的測試都不一樣揭鳞,需要分別進(jìn)行有針對性的測試缀磕,才能確保整個產(chǎn)品的質(zhì)量缘圈。
2、接口測試可以關(guān)注于服務(wù)器邏輯驗證袜蚕,而UI測試可以關(guān)注于頁面展示邏輯及界面前端與服務(wù)器集成驗證
3糟把、接口測試持續(xù)集成:
對接口測試而言,持續(xù)集成自動化是核心內(nèi)容牲剃,通過持自動化的手段我們才能做到低成本高收益遣疯。目前我們已經(jīng)實現(xiàn)了接口自動化,主要應(yīng)用于回歸階段凿傅,后續(xù)還需要加強自動化的程度缠犀,包括但不限于下面的內(nèi)容:
a) 流程方面:在回歸階段加強接口異常場景的覆蓋度,并逐步向系統(tǒng)測試聪舒,冒煙測試階段延伸辨液,最終達(dá)到全流程自動化。
b) 結(jié)果展示:更加豐富的結(jié)果展示箱残、趨勢分析滔迈,質(zhì)量統(tǒng)計和分析等
c) 問題定位:報錯信息止吁、日志更精準(zhǔn),方便問題復(fù)現(xiàn)與定位燎悍。
d) 結(jié)果校驗:加強自動化校驗?zāi)芰吹耄鐢?shù)據(jù)庫信息校驗。
e) 代碼覆蓋率:不斷嘗試由目前的黑盒向白盒下探谈山,提高代碼覆蓋率俄删。
f) 性能需求:完善性能測試體系,通過自動化的手段監(jiān)控接口性能指標(biāo)是否正常奏路。
4畴椰、接口測試質(zhì)量評估標(biāo)準(zhǔn):
a) 業(yè)務(wù)功能覆蓋是否完整
b) 業(yè)務(wù)規(guī)則覆蓋是否完整
c) 參數(shù)驗證是否達(dá)到要求(邊界、業(yè)務(wù)規(guī)則)
d) 接口異常場景覆蓋是否完整
e) 接口覆蓋率是否達(dá)到要求
f) 代碼覆蓋率是否達(dá)到要求
g) 性能指標(biāo)是否滿足要求
h) 安全指標(biāo)是否滿足要求
八.接口測試都要掌握哪些知識思劳?
①了解系統(tǒng)及內(nèi)部各個組件之間的業(yè)務(wù)邏輯交互迅矛;
②了解接口的I/O(input/output:輸入輸出);
③了解協(xié)議的基本內(nèi)容潜叛,包括:通信原理秽褒、三次握手、常用的協(xié)議類型威兜、報文構(gòu)成销斟、數(shù)據(jù)傳輸方式、常見的狀態(tài)碼椒舵、URL構(gòu)成等蚂踊;
④常用的接口測試工具,比如:jmeter笔宿、loadrunner犁钟、postman、soapUI等泼橘;
⑤數(shù)據(jù)庫基礎(chǔ)操作命令(檢查數(shù)據(jù)入庫涝动、提取測試數(shù)據(jù)等);
⑥常見的字符類型炬灭,比如:char醋粟、varchar、text重归、int米愿、float、datatime鼻吮、string等育苟;
如何獲取接口相關(guān)信息?
一般的企業(yè)椎木,都會由開發(fā)或者對應(yīng)的技術(shù)負(fù)責(zé)人員編寫接口文檔宙搬,里面會注明接口相關(guān)的地址笨腥、參數(shù)類型、方法勇垛、輸入、輸出等信息士鸥,如果沒有闲孤,想辦法獲取。烤礁。讼积。
接口文檔八要素:
封面:封面最好是本公司規(guī)定的封面,有l(wèi)ogo脚仔,內(nèi)容標(biāo)題勤众,版本號,公司名稱鲤脏,文檔產(chǎn)生日期们颜;
修訂歷史:表格形式較好些,包括:版本猎醇、修訂說明窥突、修訂日期、修訂人硫嘶、審核時間審核人等阻问;
接口信息:接口調(diào)用方式,常用的GET/POST方式沦疾,接口地址称近;
功能描述:簡潔清晰的描述接口功能,比如:接口獲取的信息不包括哪些哮塞;
接口參數(shù)說明:每個參數(shù)都要和實際中調(diào)用的一樣刨秆,包括大小寫;參數(shù)的含義言簡意賅的說明彻桃,格式坛善,是string 還是int 還是long等格式;
說明部分邻眷,說明參數(shù)值是需要哪里提供眠屎,并詳細(xì)說明參數(shù)怎么生成的,例如時間戳肆饶,是哪個時間段的改衩,參數(shù)是否必填,一些參數(shù)是必須要有的驯镊,有些是可選參數(shù)等葫督;
返回值說明:
①最好有一個模板返回值竭鞍,并說明每個返回參數(shù)的意義;
②提供一個真實的調(diào)用接口橄镜,真實的返回值偎快;
調(diào)用限制,安全方面:
加密方式洽胶,或者自己公司一個特殊的加密過程晒夹,只要雙方采用一致的加密算法就可以調(diào)用接口,保證了接口調(diào)用的安全性姊氓,比如常見的md5丐怯;
文檔維護(hù):文檔在維護(hù)的時候,如有修改一定要寫上修改日期翔横,修改人读跷,對大的修改要有版本號變更;
九.其他相關(guān)知識禾唁?
get請求效览,post請求的區(qū)別:
1、GET使用URL或Cookie傳參蟀俊。而POST將數(shù)據(jù)放在BODY中钦铺。
2、GET的URL會有長度上的限制肢预,則POST的數(shù)據(jù)則可以非常大矛洞。
3、POST比GET安全烫映,因為數(shù)據(jù)在地址欄上不可見沼本。
4、一般get請求用來獲取數(shù)據(jù)锭沟,post請求用來發(fā)送數(shù)據(jù)抽兆。
其實上面這幾點,只有最后一點說的是比較靠譜的族淮,第一點post請求也可以把數(shù)據(jù)放到url里面辫红,get請求其實也沒長度限制,post請求看起來參數(shù)是隱式的祝辣,稍微安全那么一些些贴妻,但是那只是對于小白用戶來說的,就算post請求蝙斜,你通過抓包也是可以抓到參數(shù)的名惩。(唯一區(qū)別就是這一點,上面3點區(qū)別都是不準(zhǔn)確的)
http狀態(tài)碼:
1孕荠、200 2開頭的都表示這個請求發(fā)送成功娩鹉,最常見的就是200攻谁,就代表這個請求是ok的,服務(wù)器也返回了弯予。
2戚宦、300 3開頭的代表重定向,最常見的是302熙涤,把這個請求重定向到別的地方了阁苞。
3、400 400代表客戶端發(fā)送的請求有語法錯誤祠挫,401代表訪問的頁面沒有授權(quán),403表示沒有權(quán)限訪問這個頁面悼沿,404代表沒有這個頁面等舔。
4、500 5開頭的代表服務(wù)器有異常糟趾,500代表服務(wù)器內(nèi)部異常慌植,504代表服務(wù)器端超時,沒返回結(jié)果义郑。
webservice接口怎么測試:
它不需要你在拼報文了蝶柿,會給一個webservice的地址,或者wsdl文件非驮,直接在soapui導(dǎo)入交汤,就可以看到這個webservice里面的所有接口,也有報文劫笙,直接填入?yún)?shù)調(diào)用芙扎,看返回結(jié)果就可以了。
天氣預(yù)報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會在一定時間內(nèi)保存在服務(wù)器上磷蜀。當(dāng)訪問增多,會比較占用你服務(wù)器的性能考慮到減輕服務(wù)器性能方面榨汤,應(yīng)當(dāng)使用cookie蠕搜。
4、單個cookie保存的數(shù)據(jù)不能超過4K收壕,很多瀏覽器都限制一個站點最多保存20個cookie妓灌。
5轨蛤、所以個人建議:
將登陸信息等重要信息存放為session
其他信息如果需要保留,可以放在cookie中