清豐網(wǎng)站建設(shè)費(fèi)用怎么推廣產(chǎn)品最有效
目錄:導(dǎo)讀
- 前言
- 一、Python編程入門到精通
- 二、接口自動化項(xiàng)目實(shí)戰(zhàn)
- 三、Web自動化項(xiàng)目實(shí)戰(zhàn)
- 四、App自動化項(xiàng)目實(shí)戰(zhàn)
- 五、一線大廠簡歷
- 六、測試開發(fā)DevOps體系
- 七、常用自動化測試工具
- 八、JMeter性能測試
- 九、總結(jié)(尾部小驚喜)
前言
拋出一個(gè)問題:接口測試需要驗(yàn)證數(shù)據(jù)庫嗎?
Python自動化測試:https://www.bilibili.com/video/BV16G411x76E/
有的接口會返回很多數(shù)據(jù),有的接口可能就返回一個(gè)狀態(tài)碼及success之類的消息,這些需要驗(yàn)證數(shù)據(jù)庫么?
現(xiàn)在在寫一個(gè)測試框架,配置接口參數(shù)和預(yù)期返回值,生成xml文件管理用例,用一個(gè)比較方法對預(yù)期和返回作比較,不需要根據(jù)每個(gè)接口寫腳本,現(xiàn)在的疑惑只是比較返回值,并不清楚接口是否真的成功了,比如刪除之類的接口,返回說成功了,但數(shù)據(jù)是否真的刪除了?
如果要驗(yàn)證數(shù)據(jù)庫,感覺得為每個(gè)用例寫腳本去驗(yàn)證了,這就和初衷不符(只寫個(gè)比較函數(shù),比較返回的所有值,不需要為每個(gè)接口單獨(dú)驗(yàn)證)。
做自動化是都會問要不要驗(yàn)證數(shù)據(jù)庫?
答案是不要的。
根據(jù)分層自動化測試的概念。
UI層自動化模擬的是用戶操作,假設(shè)我是一個(gè)普通的用戶,在你家的系統(tǒng)上購買了一件商品,我怎么知道有沒有購買成功?
難道要去查你家系統(tǒng)的“已購買表”?
沒權(quán)限,就算有權(quán)限我也不會!那我怎么驗(yàn)證?
很簡單啊!系統(tǒng)不是有“已購買” 商品列表嘛!點(diǎn)開“已購買”菜單看就可以了!(如果沒有這功能,那說明你的系統(tǒng)設(shè)計(jì)有問題。用戶體驗(yàn)不好,差評!!)
接口自動化模擬的是開發(fā)的代碼操作,A開發(fā)寫的接口給B開發(fā)去調(diào)用,A系統(tǒng)的接口給B系統(tǒng)去調(diào)用,假設(shè)我是一個(gè)開發(fā),我調(diào)用了微信的接口去做獲取用戶頭像,有個(gè)用戶獲取不到,來!微信團(tuán)隊(duì),你讓我查查你們的數(shù)據(jù)庫唄!微信肯定不答應(yīng)。數(shù)據(jù)庫不是你想查,想查就給你查!
那接口返回了“success”,但沒有把數(shù)據(jù)添加/刪除成功怎么辦?
從幾年接口自動化的經(jīng)驗(yàn)來說,這中情況基本非常少見,因?yàn)殚_發(fā)在寫代碼的時(shí)候,返回“success”的前提條件肯定是基于操作成功的。
開發(fā)寫代碼的時(shí)候肯定會自已運(yùn)行一下啊!
怎么會運(yùn)行都不運(yùn)行,哪兒來的自信!
你們的開發(fā)就是粗心怎么辦?
可以這么做的,開發(fā)提交了新的接口,我會邊讀接口代碼邊設(shè)計(jì)接口用例(如果接口邏輯看不懂接口數(shù)據(jù)可能就構(gòu)造不出來,接口用例自然也不會寫)
代碼有問題就直接告訴開發(fā)改了,在這個(gè)過程中,是會查數(shù)據(jù)庫的。一旦接口用例寫好之后,后面再回歸去跑的時(shí)候就不管了,當(dāng)然,每條接口用例里面肯定不會加查詢數(shù)據(jù)庫的動作。
在特殊情況下,調(diào)用了一個(gè)刪除數(shù)據(jù)的接口,有沒有真的刪除一條數(shù)據(jù),我可以調(diào)用查詢數(shù)據(jù)的接口啊!
查不出來剛才刪除的數(shù)據(jù),不就證明剛才的刪除接口操作是ok的了。
如何做好接口測試?
談起軟件測試,就不得不說一下接口測試,凡是有功能的軟件都離不開接口,沒有接口的軟件只是一個(gè)模具或頁面,不具備任何功能。
為什么要做接口測試?
互聯(lián)網(wǎng)的快速發(fā)展,公司內(nèi)部系統(tǒng)或與外部系統(tǒng)的關(guān)聯(lián)越來越多,一個(gè)業(yè)務(wù)流程關(guān)聯(lián)多個(gè)后端系統(tǒng),它們的關(guān)聯(lián)都是基于接口來實(shí)現(xiàn),接口測試可以將復(fù)雜的系統(tǒng)關(guān)聯(lián)進(jìn)行簡化,只要做好每個(gè)接口的測試就能夠較好的保證系統(tǒng)質(zhì)量。
單個(gè)系統(tǒng)的變更,是否會影響到關(guān)聯(lián)業(yè)務(wù)系統(tǒng),比較難用常規(guī)的測試方面來覆蓋相關(guān)的應(yīng)用系統(tǒng)(例如使用此接口的外部 系統(tǒng)有N個(gè),不可能每個(gè)做功能兼容性測試),但可以通過對接口功能的覆蓋來驗(yàn)證是否影響它人對接口的調(diào)用。
大家都知道,接口其實(shí)就是前端頁面或APP等調(diào)用與后端做交互用的,所以好多人都會問,我功能測試都測好了,為什么還要測接口呢?
OK,在回答這個(gè)問題之前,舉個(gè)例子:
比如測試用戶注冊功能,規(guī)定用戶名為6~18個(gè)字符,包含字母(區(qū)分大小寫)、數(shù)字、下劃線。首先功能測試時(shí)肯定會對用戶名規(guī)則進(jìn)行測試時(shí),比如輸入20個(gè)字符、輸入特殊字符等,但這些可能只是在前端做了校驗(yàn),
后端可能沒做校驗(yàn),如果有人通過抓包繞過前端校驗(yàn)直接發(fā)送到后端怎么辦呢?試想一下,如果用戶名和密碼未在后端做校驗(yàn),而有人又繞過前端校驗(yàn)的話,那用戶名和密碼不就可以隨便輸了嗎?如果是登錄可能會通過SQL注入等手段來隨意登錄,甚至可以獲取管理員權(quán)限,那這樣不是很恐怖?
所以,接口測試的必要性就體現(xiàn)出來了。
接口測試范圍?
業(yè)務(wù)功能(包括正常、異常場景是否實(shí)現(xiàn))
業(yè)務(wù)規(guī)則(覆蓋度是否全面)
參數(shù)驗(yàn)證(邊界、業(yè)務(wù)規(guī)則是否達(dá)到要求)
異常場景(重復(fù)提交、并發(fā)提交、事務(wù)中斷、多機(jī)環(huán)境、大數(shù)據(jù)量測試)
性能測試響應(yīng)時(shí)間、吞吐量、并發(fā)數(shù)、資源要求)
安全測試(權(quán)限驗(yàn)證、SQL注入等)
接口測試的重點(diǎn)?
檢查接口返回的數(shù)據(jù)是否與預(yù)期結(jié)果一致;
檢查接口的容錯(cuò)性,假如傳遞數(shù)據(jù)的類型錯(cuò)誤時(shí)是否可以處理;
接口參數(shù)的邊界值。例如,傳遞的參數(shù)足夠大或?yàn)樨?fù)數(shù)時(shí),接口是否可以正常處理;
接口的性能,http請求接口大多與后端執(zhí)行的SQL語句性能、算法等比較相關(guān)。接口的安全性,外部調(diào)用的接口尤為重要。
接口測試怎么測?
拿到api接口文檔(規(guī)范:swagger,showdoc,不規(guī)范:word文檔,沒有:抓包或錄制,一般需要抓包或者錄制的接口很有可能只測正例),熟練接口業(yè)務(wù),接口地址,接口鑒權(quán),接口入?yún)?#xff0c;接口出參,錯(cuò)誤碼。
頭痛的面試題:在你們的這個(gè)項(xiàng)目你測了哪些接口?
凡是有數(shù)據(jù)交互的地方就有接口。
例如:查詢支付寶余額接口。查詢芝麻分接口等等。
接口用例設(shè)計(jì)?
通過性驗(yàn)證:首先肯定要保證這個(gè)接口功能是好使的,也就是正常的通過性測試,按照接口文檔上的參數(shù),正常傳入,是否可以返回正確的結(jié)果。
參數(shù)組合:現(xiàn)在有一個(gè)操作商品的接口,有個(gè)字段type,傳1的時(shí)候代表修改商品,商品id、商品名稱、價(jià)格有一個(gè)是必傳的,type傳2的時(shí)候是刪除商品,商品id是必傳的,這樣的,就要測參數(shù)組合了,type傳1的時(shí)候,只傳商品名稱能不能修改成功,id、名稱、價(jià)格都傳的時(shí)候能不能修改成功。
接口安全:繞過驗(yàn)證,繞過身份授權(quán),參數(shù)是否加密,密碼安全規(guī)則,密碼的復(fù)雜程度校驗(yàn);
異常驗(yàn)證:比如說必填的參數(shù)不填,輸入整數(shù)類型的,傳入字符串類型,長度是10的,傳11,總之就是你說怎么來,我就不怎么來。
常用工具?
接口測試的工具很多,比如 postman、jmeter、apifox、loadrunner、SoapUI等。
最常用的還是 postman與jmeter。但現(xiàn)在很多企業(yè)都是做的接口自動化測試。
接口自動化測試:Python+requests+pytest+yaml+alluer+Jenkins。
下面是我整理的2023年最全的軟件測試工程師學(xué)習(xí)知識架構(gòu)體系圖 |
一、Python編程入門到精通
二、接口自動化項(xiàng)目實(shí)戰(zhàn)
三、Web自動化項(xiàng)目實(shí)戰(zhàn)
四、App自動化項(xiàng)目實(shí)戰(zhàn)
五、一線大廠簡歷
六、測試開發(fā)DevOps體系
七、常用自動化測試工具
八、JMeter性能測試
九、總結(jié)(尾部小驚喜)
生命不息,奮斗不止。每一份努力都不會被辜負(fù),只要堅(jiān)持不懈,終究會有回報(bào)。珍惜時(shí)間,追求夢想。不忘初心,砥礪前行。你的未來,由你掌握!
生命短暫,時(shí)間寶貴,我們無法預(yù)知未來會發(fā)生什么,但我們可以掌握當(dāng)下。珍惜每一天,努力奮斗,讓自己變得更加強(qiáng)大和優(yōu)秀。堅(jiān)定信念,執(zhí)著追求,成功終將屬于你!
只有不斷地挑戰(zhàn)自己,才能不斷地超越自己。堅(jiān)持追求夢想,勇敢前行,你就會發(fā)現(xiàn)奮斗的過程是如此美好而值得。相信自己,你一定可以做到!