這是《落葉》文集里第 263?片落葉,希望你能喜歡刚陡,不為別的氏捞,只為這份堅(jiān)持碧聪。
自己挖坑自己填,好記性不如爛筆頭液茎,盡在《老兵愛(ài)學(xué)習(xí)》
【已學(xué)習(xí)】
第一節(jié)課 總體設(shè)計(jì)思想 / 第二節(jié)課 接口基礎(chǔ) / 第三節(jié)課 接口手工測(cè)試
1逞姿、什么是接口
接口其實(shí)就是由一段具備邏輯處理的程序代碼所組成的,可被其他方法豁护、服務(wù)或應(yīng)用所使用哼凯。
調(diào)用接口的人,可以把接口看作一個(gè)黑匣子楚里,只需要按接口文檔的約定傳入正確的參數(shù)断部,再接收并處理返回的數(shù)據(jù),不需要知道黑匣子里的處理機(jī)制班缎;
2蝴光、為什么要做接口測(cè)試,及接口自動(dòng)化
接口測(cè)試是測(cè)試系統(tǒng)組件間接口的一種測(cè)試达址。接口測(cè)試主要用于檢測(cè)外部組件與系統(tǒng)之間以及內(nèi)部各個(gè)子系統(tǒng)之間的交互蔑祟。測(cè)試的重點(diǎn)是要檢查數(shù)據(jù)的交換,傳遞和控制管理過(guò)程沉唠,以及系統(tǒng)間的相互邏輯及依賴關(guān)系等疆虚。?
1、產(chǎn)品的系統(tǒng)復(fù)雜度越來(lái)越高,只靠手工的前端測(cè)試径簿,很難確保很高的覆蓋度罢屈,但是通過(guò)接口測(cè)試,我們能模擬出各種類型的入?yún)⒅灯ぃㄒ恍那岸四M不了的入?yún)⒅挡疲覀兡芨鶕?jù)接口文檔的定義,設(shè)計(jì)出相對(duì)完善的入?yún)⒅狄氲伲?zhēng)在接口層先保證業(yè)務(wù)邏輯的正確曼月,剩余的大多數(shù)問(wèn)題就只是 APP 自身的交互和數(shù)據(jù)展示問(wèn)題了。
2柔昼、接口測(cè)試相對(duì) UI/功能測(cè)試來(lái)說(shuō)哑芹,自動(dòng)化的成本更低,性價(jià)比更高岳锁,特別是在產(chǎn)品進(jìn)入穩(wěn)定維護(hù)期之前绩衷,UI 和功能都不穩(wěn)定,變化較大激率,導(dǎo)致腳本返工甚至于廢棄重寫的幾率都很大咳燕,而接口大多都是可以重用的。
3乒躺、現(xiàn)在很多系統(tǒng)前后端是分離的招盲,從安全層面來(lái)說(shuō),只依賴于前端進(jìn)行 Input Validation 已經(jīng)完全不能滿足系統(tǒng)的安全要求嘉冒,因?yàn)槔@過(guò)前端相對(duì)容易曹货,所以就需要后端同樣進(jìn)行 Output Validation,這就需要用接口測(cè)試工具去驗(yàn)證讳推;
3顶籽、Fiddler
a. 打開(kāi)Fiddler->Tools->Fiddler
Options在Connection面板里將Allow remote computers to connect勾選起來(lái),確定后银觅,關(guān)閉Fiddler并重新打開(kāi)Fiddler
b. 在cmd里執(zhí)行netstat-anop tcp查看Fiddler進(jìn)程是否正常監(jiān)聽(tīng)8888端口礼饱,如果服務(wù)沒(méi)有正常開(kāi)啟,可以嘗試使用其他端口究驴,端口修改的位置镊绪,如上圖位置
c. 從上圖我們看到,進(jìn)程ID為7724的Fiddler正在監(jiān)聽(tīng)8888端口洒忧,說(shuō)明代理已經(jīng)在工作了.
d. 在cmd里執(zhí)行ipconfig查看本機(jī)IP號(hào)
e. 設(shè)置手機(jī)端網(wǎng)絡(luò)代理
(1) 打開(kāi)你手機(jī)連接的無(wú)線蝴韭,代理設(shè)置->手動(dòng)
(2) 主機(jī):192.168.0.153(你的運(yùn)行Fiddler的電腦IP)
(3) 端口:8888
(4) 確定,蘋果手機(jī)直接后退就可以了
f. 手機(jī)端操作app熙侍,檢查fiddler是否有數(shù)據(jù)記錄
g. 測(cè)試完成后榄鉴,記得關(guān)閉代理履磨,以免 Fiddler 關(guān)掉之后,手機(jī)上不了網(wǎng)
4庆尘、接口測(cè)試用例設(shè)計(jì)
聽(tīng)完了老師關(guān)于設(shè)計(jì)方法的講解蹬耘,結(jié)合我自己的認(rèn)知,我對(duì)接口測(cè)試的用例設(shè)計(jì)做了下面一些思考和總結(jié)减余。
參數(shù)校驗(yàn):
a. 參數(shù)完整性
通常是用來(lái)做入?yún)?shù)必填項(xiàng)檢查的,因?yàn)榍岸送鶗?huì)做必填項(xiàng)保護(hù)和響應(yīng)提示信息惩系,為了確保服務(wù)端也做了必填項(xiàng)保護(hù)位岔,我們需要將必填項(xiàng)對(duì)應(yīng)的入?yún)?shù)值置為空,看服務(wù)端是否會(huì)返回相應(yīng)的提示信息和響應(yīng)狀態(tài)碼堡牡。
b. 參數(shù)合法性
入?yún)?shù)值的合法性檢查一般也會(huì)在前端做保護(hù)抒抬,但后端往往容易忽視或遺漏,為了確保服務(wù)端也做了入?yún)?shù)值的合法性檢查晤柄,我們除了設(shè)計(jì)合法的入?yún)⒅抵獠两#€需要設(shè)計(jì)一些非法的參數(shù)值,看服務(wù)端是否會(huì)拋出相應(yīng)的異常和響應(yīng)狀態(tài)碼芥颈。
邏輯校驗(yàn):
這里的邏輯性檢查惠勒,就是檢查服務(wù)端返回的 JSON 串里的參數(shù)值,是否與根據(jù)入?yún)⒌闹岛蜆I(yè)務(wù)邏輯推演出來(lái)的期望值一致爬坑,以此來(lái)測(cè)試該接口的業(yè)務(wù)邏輯處理是否正確纠屋。
關(guān)于這兩類校驗(yàn)的自動(dòng)化實(shí)現(xiàn),我其實(shí)也一直在糾結(jié)它們的性價(jià)比盾计。
前者是自動(dòng)化測(cè)試工具很容易實(shí)現(xiàn)的售担,應(yīng)用面也較廣,比如回歸測(cè)試署辉、環(huán)境檢查族铆、現(xiàn)網(wǎng)巡檢等場(chǎng)景,而且也易于復(fù)制哭尝,因?yàn)樗旧砗蜆I(yè)務(wù)邏輯耦合性不大哥攘,更多的只是檢查該接口的健康狀態(tài)。
后者因?yàn)樾枰r?yàn)邏輯正確與否刚夺,所以在做返回值比對(duì)時(shí)献丑,就不僅僅只是比較 JSON 串里的返回參數(shù)值和期望結(jié)果是否一致了,在某些場(chǎng)景下還需要對(duì)數(shù)據(jù)庫(kù)里的數(shù)據(jù)進(jìn)行實(shí)時(shí)比對(duì)或操作侠姑。這在設(shè)計(jì)工具時(shí)创橄,不可避免地會(huì)增加實(shí)現(xiàn)的難度,同時(shí)還縮小了可應(yīng)用范圍莽红,至少這類校驗(yàn)就不能在真實(shí)的客戶環(huán)境去執(zhí)行妥畏,會(huì)存在風(fēng)險(xiǎn)邦邦。
所以,比較期待在后續(xù)課程的學(xué)習(xí)過(guò)程中醉蚁,能讓我關(guān)于接口邏輯校驗(yàn)自動(dòng)化工具的構(gòu)思變得清晰燃辖。
【待學(xué)習(xí)】
第四節(jié)課:Python 操作 MySQL(2017.08.11 周五晚 21:00)
作者簡(jiǎn)介:14 年測(cè)試 + 11 年項(xiàng)目管理 + 11 年團(tuán)隊(duì)管理 = 一個(gè)測(cè)試?yán)媳?/p>