目錄
1吼旧、什么是接口凰锡?
2、什么是接口測試掂为?
3、接口組成的要素有哪些员串?
4勇哗、Python 的 requests 包是干什么的?
5寸齐、如何使用 Python 的 requests 包欲诺?
6、為什么開展接口測試渺鹦?
7扰法、為什么要寫接口測試用例?
8毅厚、接口測試用例設(shè)計主要考慮哪些迹恐?
9、接口測試用例包含哪些內(nèi)容?
10殴边、接口測試如何設(shè)計用例憎茂?
11、通用接口用例設(shè)計锤岸?
12竖幔、接口測試報告包含哪些內(nèi)容?
13是偷、測試指標范圍包含哪些拳氢?
14、做接口測試運用過哪些測試工具蛋铆?
15馋评、抓包工具用過哪些?
16刺啦、為什么進行抓包測試留特?
17、TCP/IP 參考模型有哪幾層玛瘸?
18蜕青、常用協(xié)議的端口號?
19糊渊、常見的狀態(tài)碼有哪些右核?
20、你們公司的接口測試流程是怎樣的渺绒?
21贺喝、請詳細闡述接口測試和 UI 測試在測試活動中是如何協(xié)同測試的?
22宗兼、接口測試注意事項躏鱼?
23、接口測試執(zhí)行中對比數(shù)據(jù)庫嗎针炉?
24、請簡述一下 cookie扳抽、session 以及 token 的區(qū)別篡帕?
25、談?wù)勀銓?HTTP 協(xié)議的了解贸呢?
26镰烧、你對 http 請求跟 webservice 請求的了解?
27楞陷、在接口測試中關(guān)聯(lián)是什么含義怔鳖?如何使用 Postman 設(shè)置關(guān)聯(lián)?
28固蛾、接口自動化測試框架一般分為幾層结执?
29度陆、測試框架里如何做到數(shù)據(jù)和代碼分離?
1献幔、什么是接口懂傀?
接口就是 API,意思是應(yīng)用程序編程接口蜡感。
接口本質(zhì)上是程序開發(fā)的函數(shù)和方法蹬蚁,提供參數(shù)和返回值。
2郑兴、什么是接口測試犀斋?
接口測試是測試系統(tǒng)組件間接口的一種測試,接口測試主要用于檢測外部系統(tǒng)和內(nèi)部系統(tǒng)之間以及各個子系統(tǒng)之間的交互點情连。測試的重點是檢查數(shù)據(jù)的交換叽粹、傳遞和控制管理的過程,以及系統(tǒng)間的相互邏輯依賴關(guān)系等蒙具。
3球榆、接口組成的要素有哪些?
接口訪問的地址禁筏、請求的方法持钉、參數(shù)、返回值
(1)接口訪問的地址 協(xié)議://IP 地址或域名:端口號/應(yīng)用名/功能名
(2)請求的方法 get篱昔、post 等
(3)參數(shù) 用戶使用接口時每强,需要向接口提供的數(shù)據(jù)。
(4)返回值 接口給用戶的反饋結(jié)果州刽。
4空执、Python 的 requests 包是干什么的?
requests 是一個 HTTP 庫穗椅,作用是發(fā)送 HTTP 請求辨绊,獲得響應(yīng),往往使用在網(wǎng)絡(luò)爬蟲匹表,接口自動化測試中门坷。
5、如何使用 Python 的 requests 包袍镀?
(1)安裝 Python
(2)安裝 requests 模塊
(3)創(chuàng)建.py 文件
(4)導(dǎo)入 requests 模塊
(5)編寫 Python 代碼
(6)調(diào)用 requests 方法
6默蚌、為什么開展接口測試?
接口測試屬于集成測試苇羡、測試接入越早绸吸,就越能在項目早期發(fā)現(xiàn)問題,修復(fù)問題成本降低。
接口測試非辰踝拢快速攘轩,UI 自動化執(zhí)行一個測試用例 10s 左右,接口用例執(zhí)行一般毫秒級蜻势。
7撑刺、為什么要寫接口測試用例?
(1)理清思路握玛,避免漏測和重復(fù)測試够傍。
(2)提高測試效率、跟進測試進度挠铲、告訴領(lǐng)導(dǎo)做過冕屯、跟進重復(fù)性工作。
(3)更好的記錄問題拂苹、發(fā)現(xiàn)問題安聘、復(fù)現(xiàn)問題、同時這也是接口測試流程中的一個產(chǎn)物瓢棒。
8浴韭、接口測試用例設(shè)計主要考慮哪些?
(1)功能是否正常脯宿。
(2)功能是否按照接口文檔實現(xiàn)念颈、是否依賴業(yè)務(wù)、異常情況(參數(shù)異常连霉、數(shù)據(jù)異常)榴芳、安全測試等。
9跺撼、接口測試用例包含哪些內(nèi)容窟感?
用例名稱、接口地址歉井、請求方式柿祈、前置條件、描述哩至、請求頭部躏嚎、請求參數(shù)、狀態(tài)碼憨募、預(yù)期返回結(jié)果
10紧索、接口測試如何設(shè)計用例袁辈?
接口測試一般考慮入?yún)⑿问降淖兓徒涌诘臉I(yè)務(wù)邏輯菜谣。
一般設(shè)計接口測試用例采用等價類、邊界值、場景法居多尾膊。
接口測試用例設(shè)計思路:
(1)接口業(yè)務(wù)邏輯測試媳危,接口邏輯測試是指根據(jù)業(yè)務(wù)邏輯,輸入?yún)?shù)冈敛,輸出值的描述待笑,對正常輸入情況下所得輸出值是否正確的測試,也就是測試對外提供的接口服務(wù)是否正常抓谴。
(2)模塊接口測試暮蹂,模塊接口測試是為了保證數(shù)據(jù)的安全及程序在異常情況下的邏輯正確性而進行的測試模塊,接口測試主要包括以下幾個方面
a.鑒權(quán)碼 token 異常(為空癌压、沒有仰泻、錯誤、過期)
b.其他參數(shù)的異常滩届,必填項的檢查集侯,參數(shù)的長度、類型帜消、格式異常棠枉。常規(guī)的參數(shù)有數(shù)字,字符串泡挺,日期辈讶;參數(shù)長度,位數(shù)粘衬、身份證荞估、電話的長度;參數(shù)的類型稚新,數(shù)字精度勘伺,字母,中文褂删,帶空格的參數(shù)飞醉,特殊字符;日期格式屯阀,日期年月日缅帘,年月日時分秒,日期格式(包含/-:等)
c.錯誤碼異常覆蓋
11难衰、通用接口用例設(shè)計钦无?
(1)通過性驗證:首先肯定要保證這個接口功能是好使的,也就是正常的通過性測試盖袭,按照接口文檔上的參數(shù)失暂,正常傳入彼宠,是否可以返回正確的結(jié)果。
(2)參數(shù)組合:現(xiàn)在有一個操作商品的接口弟塞,有個字段 type凭峡,傳 1 的時候代表修改商品,商品 id决记、商品名稱摧冀、價格有一個是必傳的,type 傳 2 的時候是刪除商品系宫,商品 id 是必傳的索昂,這樣就要測參數(shù)組合了,type 傳 1 的時候扩借,只傳商品名稱能不能修改成功楼镐,id、名稱往枷、價格都傳的時候能不能修改成功框产。
(3)接口安全:繞過驗證,比如說購買了一個商品错洁,它的價格是 300 元秉宿,那我在提交訂單時候,我把這個商品的價格改成 3 元屯碴,后端有沒有做驗證描睦,更狠點,我把錢改成-3导而,是不是我的余額還要增加忱叭?繞過身份授權(quán),比如說修改商品信息接口今艺,那必須得是賣家才能修改韵丑,那我傳一個普通用戶,能不能修改成功虚缎,我傳一個其他的賣家能不能修改成功撵彻。參數(shù)是否加密,比如說我登陸的接口实牡,用戶名和密碼是不是加密陌僵,如果不加密的話,別人攔截到你的請求创坞,就能獲取到你的信息了碗短,加密規(guī)則是否容易破解。密碼安全規(guī)則题涨,密碼的復(fù)雜程度校驗偎谁。
(4)異常驗證:所謂異常驗證奔坟,也就是我不按照你接口文檔上的要求輸入?yún)?shù),來驗證接口對異常情況的校驗搭盾。比如說必填的參數(shù)不填,輸入整數(shù)類型的婉支,傳入字符串類型鸯隅,長度是 10 的,傳 11向挖,總之就是你說怎么來蝌以,我就不怎么來,其實也就這三種何之,必傳非必傳跟畅、參數(shù)類型、入?yún)㈤L度溶推。
12徊件、接口測試報告包含哪些內(nèi)容?
系統(tǒng)接口概況蒜危、測試目的與范圍虱痕、測試工具與資源、測試記錄及結(jié)果分析(單場景接口辐赞、混合場景接口)部翘、測試結(jié)論
13、測試指標范圍包含哪些响委?
(1)被測接口接收請求和返回報文新思。
(2)被測接口返回狀態(tài)、被測接口對應(yīng)業(yè)務(wù)邏輯處理赘风、涉及數(shù)據(jù)沉淀的處理夹囚、復(fù)雜場景下多個接口串聯(lián)交互。
14邀窃、做接口測試運用過哪些測試工具崔兴?
(1)Postman
(2)JMeter
(3)SoapUI
(4)Python + requests
(5)Java + HttpClient
(6)Java + OkHttp
15、抓包工具用過哪些蛔翅?
(1)Fiddler
(2)Charles
(3)Wireshark
16敲茄、為什么進行抓包測試?
有些時候公司沒有標準的接口文檔山析,測試人員只能抓包來獲取接口信息堰燎。
抓包可以迅速找到請求,通過抓包可以查看整個請求過程笋轨,以及響應(yīng)過程秆剪,可以通過抓包來分辨前臺還是后臺 bug赊淑。
通過抓包,可以查看是否有敏感信息泄露仅讽,比如用戶密碼和個人賬號信息等數(shù)據(jù)陶缺。
通過抓包進行測試,攔截請求洁灵,修改請求數(shù)據(jù)饱岸,查看對應(yīng)響應(yīng)結(jié)果,抓包本身就是接口測試的一部分徽千。
17苫费、TCP/IP 參考模型有哪幾層?
應(yīng)用層双抽、傳輸層百框、網(wǎng)絡(luò)層、網(wǎng)絡(luò)接口層
18牍汹、常用協(xié)議的端口號铐维?
(1)21/tcp FTP 文件傳輸協(xié)議
(2)22/tcp SSH 安全登錄、文件傳送(SCP)和端口重定向
(3)23/tcp Telnet 不安全的文本傳送
(4)25/tcp SMTP Simple Mail Transfer Protocol(E-mail)
(5)69/udp TFTP Trivial File Transfer Protocol(微型文件傳輸協(xié)議)
(6)80/tcp HTTP 超文本傳送協(xié)議(WWW)
(7)110/tcp POP3 Post Office Protocol(E-mail)
(8)443/tcp HTTPS used for securely transferring web pages
(9)3389/tcp 遠程訪問 5631/tcp
(10)5632/udp pcanywhere 端口號
(11)1433 SqlServer 服務(wù)端口號
(12)1521 Oracle 服務(wù)端口號
(13)3306 Mysql 服務(wù)端口號
(14)8080 Tomcat 默認服務(wù)端口號
19慎菲、常見的狀態(tài)碼有哪些方椎?
(1)1XX 信息提示,用于指定客戶端相應(yīng)的某些動作钧嘶。
(2)2XX 成功棠众,用于表示請求成功。
(3)3XX 重定向有决,用于移動的文件并且常被包含在定位頭信息中制定的新的地址信息闸拿。
(4)4XX 客戶端錯誤,用于指出客戶端的錯誤书幕。
(5)5XX 服務(wù)器錯誤新荤,用于指出服務(wù)器的錯誤。
20台汇、你們公司的接口測試流程是怎樣的苛骨?
(1)從開發(fā)中取得接口文檔,了解接口業(yè)務(wù)苟呐,主要包括接口地址痒芝、請求方式、入?yún)⑶K亍⒊鰠⒀铣摹⒎祷馗袷降刃畔ⅰ?/p>
(2)使用 Jmeter 進行接口測試,創(chuàng)建一個線程組笆呆,然后建立一個 http 請求默認值请琳,再新建很多 http 請求粱挡,一個請求是一個用例,輸入相應(yīng)接口路徑俄精、訪問方式询筏、參數(shù)等,創(chuàng)建斷言和察看結(jié)果樹竖慧。
(3)最后調(diào)用并執(zhí)行測試用例嫌套,編寫測試報告。
(4)在做接口測試的時候遇到過很多問題测蘑,都是自己獨立解決的,比如返回值亂碼(修改 Jmeter 的配置文件為 UTF-8)康二。
21碳胳、請詳細闡述接口測試和 UI 測試在測試活動中是如何協(xié)同測試的?
接口測試和 UI 測試這兩塊其實是有一部分是重疊的沫勿,UI 測試是通過前端寫的界面來調(diào)用接口挨约,而接口測試是直接調(diào)接口。所以排除前端的處理的邏輯和調(diào)用的正確性产雹,在理論上接口測試是可以覆蓋所有的 UI 測試诫惭。但實際過程中,如果只是在接口層覆蓋所有的業(yè)務(wù)流蔓挖,在 UI 上只測試前端的邏輯夕土,最終的結(jié)果可能會是忽視很多原有的功能點,導(dǎo)致了 UI 測試的不充分瘟判。所以存在多人分工且時間充分的時候可以嘗試接口去做業(yè)務(wù)流的全覆蓋怨绣,否則不要輕易嘗試。
22拷获、接口測試注意事項篮撑?
(1)改變請求參數(shù),看響應(yīng)結(jié)果是否和接口文檔一致匆瓜。
(2)查看參數(shù)是否有敏感信息(比如個人賬戶信息赢笨,資金信息)。
(3)查看是否對關(guān)鍵參數(shù)進行加密處理(密碼信息)驮吱。
(4)所有列表頁接口必須考慮排序值茧妒。
(5)接口返回的圖片地址能否打開,圖片尺寸是否符合需求左冬。
(6)接口有翻頁時嘶伟,頁碼與頁數(shù)的異常值測試。
(7)當輸出參數(shù)有聯(lián)動性時又碌,需要校驗返回兩參數(shù)的實際結(jié)果是否都符合需求每個接口入?yún)⒌哪J值九昧、異常類型绊袋、非空校驗。
(8)入?yún)⒅С侄鄠€值時铸鹰,要考慮傳的值的個數(shù)多的情況下癌别,接口會不會報錯。
23蹋笼、接口測試執(zhí)行中對比數(shù)據(jù)庫嗎展姐?
肯定要對比,因為接口返回值的數(shù)據(jù)來源于數(shù)據(jù)庫剖毯,接口對數(shù)據(jù)的操作還要進行深層次的數(shù)據(jù)庫檢查圾笨。
24、請簡述一下 cookie逊谋、session 以及 token 的區(qū)別擂达?
cookie 數(shù)據(jù)存放在客戶的瀏覽器上、session 數(shù)據(jù)放在服務(wù)器上胶滋、token 是接口測試時鑒權(quán)碼板鬓,一般情況下登陸后才可以獲取到 token,然后在每次請求接口時需要帶上 token 參數(shù)究恤。
cookie 不安全俭令,別人可以分析存在本地的 cookie 并進行 cookie 欺騙,考慮到安全應(yīng)當使用 session 可以將登錄信息等重要信息存放為 session部宿,其他信息可以保存在 cookie抄腔。
25、談?wù)勀銓?HTTP 協(xié)議的了解理张?
超文本傳輸協(xié)議妓柜,端口為 80,是由請求和響應(yīng)兩部分組成的涯穷。
請求是由請求頭棍掐,請求行,請求正文組成拷况;響應(yīng)是由響應(yīng)頭作煌、響應(yīng)行、響應(yīng)正文組成赚瘦。
面向安全的話使用 https粟誓。
26、你對 http 請求跟 webservice 請求的了解起意?
(1)http api 接口:是走 http 協(xié)議鹰服,通過路徑來區(qū)分調(diào)用的方法,請求報文都是 key-value 形式的,返回報文一般都是 json 串悲酷,有 get 和 post 等方法套菜,這也是最常用的兩種請求方式∩枰祝可以使用的工具有 postman逗柴、RESTClient、jmeter顿肺、loadrunner 等戏溺。
(2)webservice 接口:是走 soap 協(xié)議通過 http 傳輸,請求報文和返回報文都是 xml 格式的屠尊,都是通過工具才能進行調(diào)用與測試旷祸。可以使用的工具有 SoapUI讼昆、jmeter托享、loadrunner 等。
27控淡、在接口測試中關(guān)聯(lián)是什么含義嫌吠?如何使用 Postman 設(shè)置關(guān)聯(lián)止潘?
關(guān)聯(lián)就是把上一個接口返回值的部分截取出來掺炭,作為下一個接口的參數(shù),能讓接口串聯(lián)運行凭戴。
在 Postman 中設(shè)置關(guān)聯(lián)的步驟如下:
(1)通過正則表達式提取的方式或 json 取值的方式把下一個接口需要的信息從上一個接口截取出來涧狮。
(2)使用設(shè)置全局變量的代碼把取出來的值保存到全局變量里。
(3)在下一個接口中么夫,使用(全局變量)代替要替換的靜態(tài)值者冤。
28、接口自動化測試框架一般分為幾層档痪?
自動化測試框架一般分為 5 層(配置層涉枫,腳本層,數(shù)據(jù)層腐螟,測試報告層愿汰,驅(qū)動層)
接口項目工程規(guī)劃大致可分為幾類,首先是測試結(jié)果類乐纸,比如說叫 test_rusult衬廷,里面存放一些比如日志文件,測試報告汽绢。然后是測試用例 testcase吗跋,里面分模塊存放測試用例。接下來是公共方法類,比如說叫 public跌宛,或者是 tools酗宋,里面存放一些,讀取 excel 數(shù)據(jù)的方法秩冈,發(fā)送 http 請求的方法本缠,收集 log 日志的方法,發(fā)送郵件入问,操作數(shù)據(jù)庫等方法丹锹。還有就是配置文件類,比如說叫 config芬失,里面存放一些指定運行部分用例的配置文件楣黍,連接數(shù)據(jù)庫的配置文件。最后是寫一個 run 方法棱烂,運行所有的用例租漂。
29、測試框架里如何做到數(shù)據(jù)和代碼分離颊糜?
第一種:寫在 excel 表格里哩治,像這種主要是讀取 excel 數(shù)據(jù)有點麻煩,常用的用來讀取 excel 的第三方庫有 openpyxl衬鱼,xlrd 等业筏。當然讀取 excel 數(shù)據(jù)最好用的還是用來做數(shù)據(jù)分析的 pandas 模塊,不用寫那么多 for 循環(huán)鸟赫。
第二種:數(shù)據(jù)存放到 yaml 文件里蒜胖,一個模塊或者是一個功能寫一個 yaml 文件,最后寫個讀取 yaml 文件的公共方法就行了抛蚤。yaml 格式的文件比較簡單台谢。
第三種:存放在數(shù)據(jù)庫里面。
第四種:數(shù)據(jù)存放在 json 文件里岁经。