一、HTTP
1、http請(qǐng)求頭和響應(yīng)頭包含那些內(nèi)容?
- 請(qǐng)求頭信息
請(qǐng)求報(bào)頭允許客戶端向服務(wù)器端傳遞請(qǐng)求的附加信息以及客戶端自身的信息。
2、常用的請(qǐng)求報(bào)頭如下:
Accept:瀏覽器可接受的MIME類型。
l MIME用于設(shè)定某種擴(kuò)展名的文件用哪種應(yīng)用程序來打開的方式類型,當(dāng)該擴(kuò)展名文件被訪問的時(shí)候,瀏覽器會(huì)自動(dòng)使用指定應(yīng)用程序來打開。
Accept-Encoding:瀏覽器能夠進(jìn)行解碼的數(shù)據(jù)編碼方式,比如gzip。
Accept-Language:瀏覽器所希望的語言種類,當(dāng)服務(wù)器能夠提供一種以上的語言版本時(shí)會(huì)用到。
Connection:表示是否需要持久連接。從HTTP/1.1起,默認(rèn)都開啟了Keep-Alive,保持連接特性。
Host:初始URL中的主機(jī)和端口,它通常是從HTTPURL中提取出來的。
User-Agent:請(qǐng)求報(bào)頭域允許客戶端將它的操作系統(tǒng)、瀏覽器和其他屬性告訴服務(wù)器。
- 響應(yīng)頭信息
響應(yīng)報(bào)頭允許服務(wù)器傳遞不能放在狀態(tài)行中的附加響應(yīng)信息,以及關(guān)于服務(wù)器的信息和對(duì)Request-URI所標(biāo)識(shí)的資源進(jìn)行下一步訪問的信息。
常用的響應(yīng)報(bào)頭如下:
Content-Type:表示后面的文檔屬于哪種MIME類型。
Date:當(dāng)前的GMT(國際時(shí))時(shí)間。
Server:包含了服務(wù)器用來處理請(qǐng)求的軟件信息。
X-Frame-Options:用來給瀏覽器指示允許一個(gè)頁面可否在<frame>、<iframe>或者<object>中展現(xiàn)的標(biāo)記。網(wǎng)站可以使用此功能,來確保自己網(wǎng)站的內(nèi)容沒有被嵌到別人的網(wǎng)站中去,從而也避免了點(diǎn)擊劫持(click jacking)的攻擊。
二、接口的分類
1、第一種是代碼內(nèi)部的接口或稱程序接口
是程序模塊間的接口,代碼A與代碼B在組合的時(shí)候,必然需要定義一些名稱以及參數(shù)、類型。
對(duì)于程序接口的測試,一般需要使用與開發(fā)程序接口相同的編程語言,通過對(duì)類、方法和函數(shù)的調(diào)用,驗(yàn)證其返回結(jié)果是否正確來進(jìn)行測試。
這種測試一般劃分在白盒測試中,也算是集成測試階段,既可以由開發(fā)人員自己完成,也可以由有良好編程能力的測試人員來做。
2、第二種接口是協(xié)議接口
是系統(tǒng)與系統(tǒng)之間,通過網(wǎng)絡(luò)數(shù)據(jù)的傳遞進(jìn)行交互,這種類型的接口對(duì)底層代碼做了封裝,系統(tǒng)通過不同的協(xié)議提供接口對(duì)外提供調(diào)用。
此類測試一般不涉及底層程序,也看不到代碼,屬于黑盒層面,可以通過各種手段將網(wǎng)絡(luò)數(shù)據(jù)發(fā)送到接口從而得到接口的響應(yīng)信息,達(dá)到測試的目標(biāo)。
這一類測試工作多數(shù)情況下由測試人員完成。通常所說的的接口測試主要是對(duì)協(xié)議接口的測試。
三、接口測試
1、接口測試的含義
- 接口測試主要用于檢測外部系統(tǒng)與系統(tǒng)之間以及內(nèi)部各個(gè)子系統(tǒng)之間的交互點(diǎn)。
- 測試的重點(diǎn)是要檢查數(shù)據(jù)的交換,傳遞和控制管理過程以及系統(tǒng)間的相互邏輯依賴關(guān)系等。
- 接口其實(shí)就是前端頁面或APP等調(diào)用與后端做交互用的,但是功能測試都測了,為什么還要測接口呢?
2、為什么要做測試接口
如測試用戶注冊(cè)功能,規(guī)定用戶名為6~18個(gè)字符,包含字母(區(qū)分大小寫)、數(shù)字、下劃線。
功能測試
對(duì)用戶名規(guī)則進(jìn)行測試,比如輸入20個(gè)字符、輸入特殊字符等
但這些可能只是在前端做了校驗(yàn),后端可能沒做校驗(yàn),如果用戶名和密碼未在后端做校驗(yàn),而有人又繞過前端校驗(yàn)的話,那用戶名和密碼不就可以隨便輸了嗎?如果是登錄可能會(huì)通過SQL注入等手段來隨意登錄,甚至可以獲取管理員權(quán)限,那這樣不是很恐怖?
3、接口測試的意義
- 更早地發(fā)現(xiàn)問題
測試工作應(yīng)該更早地介入到項(xiàng)目開發(fā)中,因?yàn)樵皆绨l(fā)現(xiàn)bug,修復(fù)的成本越低。
功能測試必須要等到系統(tǒng)提供可測試的界面后才能進(jìn)行。
單元測試和接口測試是更早介入測試的兩個(gè)方面。
接口測試可以在功能界面未開發(fā)出來之前對(duì)系統(tǒng)的接口進(jìn)行測試,從而可以更早地發(fā)現(xiàn)問題并以更低的成本修復(fù)問題。
- 縮短產(chǎn)品研發(fā)周期
接口測試的介入可以更早地發(fā)現(xiàn)并解決bug,使得留到功能測試階段被修復(fù)的bug減少,從而縮短整個(gè)項(xiàng)目的上線時(shí)間。
- 發(fā)現(xiàn)更底層的問題
系統(tǒng)中的有些bug如果想通過UI層功能測試會(huì)比較困難,或者構(gòu)造測試條件非常復(fù)雜。通過接口測試可以更簡單更全面地覆蓋到底層的代碼邏輯,從而可以發(fā)現(xiàn)一些隱藏的bug。
通常把UI層的驗(yàn)證稱為弱驗(yàn)證,這是因?yàn)樗苋菀妆焕@過。如果只針對(duì)UI層的功能進(jìn)行測試,就很難發(fā)現(xiàn)后端系統(tǒng)對(duì)一些異常情況的處理能力,而接口測試可以很容易地驗(yàn)證這些異常情況。
- 前端隨便變,接口測好了,后端不用變
前端與后端的分離,是近年來Web應(yīng)用開發(fā)的一個(gè)發(fā)展趨勢(shì)。
這種模式的優(yōu)勢(shì)前端的專業(yè)性越來越高,通過調(diào)用Web接口獲取數(shù)據(jù),從而專注于數(shù)據(jù)展示和頁面交互的設(shè)計(jì)。
后端不必精通前端技術(shù)(HTML5/JavaScript/CSS),只專注于數(shù)據(jù)的處理并提供Web接口即可。
由后端開發(fā)的接口既可以提供給Web頁面調(diào)用,也可以提供給移動(dòng)APP調(diào)用;
既可以提供給公司內(nèi)部系統(tǒng)調(diào)用,也可以提供給公司外部系統(tǒng)調(diào)用。
- 檢查系統(tǒng)的安全性、穩(wěn)定性
現(xiàn)在我也找了很多測試的朋友,做了一個(gè)分享技術(shù)的交流群,共享了很多我們收集的技術(shù)文檔和視頻教程。
如果你不想再體驗(yàn)自學(xué)時(shí)找不到資源,沒人解答問題,堅(jiān)持幾天便放棄的感受
可以加入我們一起交流。而且還有很多在自動(dòng)化,性能,安全,測試開發(fā)等等方面有一定建樹的技術(shù)大牛
分享他們的經(jīng)驗(yàn),還會(huì)分享很多直播講座和技術(shù)沙龍
可以免費(fèi)學(xué)習(xí)!劃重點(diǎn)!開源的!?。?qq群號(hào):110685036
四、協(xié)議接口的分類
1、按系統(tǒng)不同的調(diào)用方式進(jìn)行分類
- 系統(tǒng)與系統(tǒng)之間的接口
系統(tǒng)與系統(tǒng)之間的接口,既可以是公司內(nèi)部不同系統(tǒng)之間調(diào)用的接口,也可以是不同公司不同系統(tǒng)之間調(diào)用的接口。
后者如微信、微博所提供的第三方登錄接口,如果你開發(fā)的系統(tǒng)不想自建用戶體系,那么完全可以調(diào)用這些接口來實(shí)現(xiàn)用戶的登錄。
- 系統(tǒng)內(nèi)部,服務(wù)與服務(wù)之間的調(diào)用
大多情況下是指程序之間的調(diào)用。
假設(shè)系統(tǒng)開發(fā)一個(gè)用戶查詢接口,輸入用戶名,返回用戶信息(性別、年齡、手機(jī)號(hào)、郵箱地址等),如果用戶不存在則返回null。
現(xiàn)在需要新開發(fā)一個(gè)用戶抽獎(jiǎng)的接口,該接口需要用戶名和抽獎(jiǎng)活動(dòng)id,抽獎(jiǎng)接口得到用戶名后可以調(diào)用用戶查詢接口,如果用戶查詢接口返回null,那么抽獎(jiǎng)接口就可以直接返
回用戶不存在了。
這個(gè)例子中,用戶抽獎(jiǎng)接口調(diào)用的就是用戶查詢接口。用戶查詢接口和抽獎(jiǎng)接口本質(zhì)上就是程序開發(fā)的函數(shù)或方法,提供入?yún)⑴c返回值。
- 下層服務(wù)對(duì)上層服務(wù)的接口
應(yīng)用層
可以認(rèn)為是系統(tǒng)所提供的UI層功能。對(duì)于Web系統(tǒng)來說,就是瀏覽器頁面上所提供的功能,如登錄、注冊(cè)、查詢、刪除等。
Service層
可以理解為服務(wù)器所提供數(shù)據(jù)的處理。
DB層
數(shù)據(jù)庫(DataBase)主要用來存放數(shù)據(jù)。
各層之間的調(diào)用過程
首先應(yīng)用層實(shí)現(xiàn)了一個(gè)用戶查詢的功能,需要用戶輸入查詢的關(guān)鍵字,并顯示查詢結(jié)果。
當(dāng)用戶使用查詢功能時(shí),首先底層調(diào)用Service層所提供的查詢接口,查詢接口得到應(yīng)用層調(diào)用的查詢數(shù)據(jù);然后再通過DAO訪問數(shù)據(jù)庫,根據(jù)用戶輸入的查詢數(shù)據(jù),查詢數(shù)據(jù)
庫中的數(shù)據(jù)。
最后,將查詢到的數(shù)據(jù)庫數(shù)據(jù)返回給應(yīng)用層,用戶在應(yīng)用層看到查詢結(jié)果。
在這個(gè)過程中,各層之間的交互就是通過接口,應(yīng)用層與Service主要通過HTTP接口,Service 層與DB層主要通過DAO(Data Access Object)數(shù)據(jù)庫訪問接口。
2、按協(xié)議的不同進(jìn)行分類
- webService接口
使用soap協(xié)議
通過http傳輸,請(qǐng)求報(bào)文和返回報(bào)文都是xml格式的
通常使用的工具SoapUI、jmeter、loadrunner等
- http api接口
使用http協(xié)議
HTTP是Hyper Text Transfer Protocol(超文本傳輸協(xié)議)的縮寫,是從萬維網(wǎng)(www,World Wide Web)服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議。
HTTP基于TCP/IP通信協(xié)議來傳遞數(shù)據(jù)(HTML文件、圖片文件、媒體等)。
HTTP協(xié)議工作于客戶端-服務(wù)端架構(gòu)上。瀏覽器作為HTTP客戶端通過URL向HTTP服務(wù)端(即Web服務(wù)器)發(fā)送請(qǐng)求。
通過路徑來區(qū)分調(diào)用的方法,請(qǐng)求報(bào)文都是key-value形式的,返回報(bào)文一般都是json串,最常用的兩種請(qǐng)求方式是get和post等方法通常使用的工具有postman、
RESTClient、jmeter、loadrunner等
3、接口測試的原理
模擬客戶端向服務(wù)器發(fā)送請(qǐng)求報(bào)文,服務(wù)器接收請(qǐng)求報(bào)文后對(duì)相應(yīng)的報(bào)文做處理并向客戶端返回應(yīng)答,客戶端再接收應(yīng)答的一個(gè)過程。
五、接口的組成
1、接口文檔的內(nèi)容
- 接口說明
- 調(diào)用url
- 請(qǐng)求方法(get/post)
- 請(qǐng)求參數(shù)、參數(shù)類型、請(qǐng)求參數(shù)說明、請(qǐng)求頭header
- 返回參數(shù)說明、請(qǐng)求響應(yīng)的代碼、響應(yīng)內(nèi)容
2、http請(qǐng)求方法與請(qǐng)求參數(shù)
略
3、header
見一
4、響應(yīng)數(shù)據(jù)
- 當(dāng)我們?cè)谡?qǐng)求一個(gè)頁面的時(shí)候,會(huì)顯示服務(wù)器返回的資源,其中包含了HTML、CSS和JavaScript,除此之外,服務(wù)器還可以返回圖片、視頻、字體和插件等類型的資源。這些資源全部使用HTTP協(xié)議傳輸。
- 如果把HTTP協(xié)議看作是高速公路的話,那么在高速公路上跑的各種拉滿不同貨物的車輛就是資源。不同的車輛裝載的貨物不一樣,因此它們的目的地也不一樣。
如有些車輛拉的是生豬,是要送到屠宰場的;有些車輛拉的是西瓜,是要送到水果批發(fā)市場的。
- HTTP協(xié)議上傳輸?shù)馁Y源也是一樣,類型不同,作用也不一樣。數(shù)據(jù)就是其中的一種資源,數(shù)據(jù)是接口的本質(zhì)。
可以選擇不同的運(yùn)輸方式,走高速公路或走鐵路,這就是數(shù)據(jù)傳輸協(xié)議的選擇(如HTTP/SOAP)。
西瓜的存放方式,是直接將西瓜堆積到車廂里,還是把每個(gè)西瓜放到盒子里再裝箱,這就是數(shù)據(jù)格式的選擇(如TEXT/XML/JSON/CSV)。
- JSON格式
JSON(JavaScript Object Notation,即JavaScript對(duì)象表示法)是一種輕量級(jí)的數(shù)據(jù)交換格式。它獨(dú)立于語言和平臺(tái),JSON解析器和JSON庫支持不同的編程語言。
JSON具有自我描述性,很容易理解。
JSON格式是當(dāng)前主流的接口數(shù)據(jù)格式之一。從接口的調(diào)用方式和數(shù)據(jù)格式來 看,JSON不是直接給普通用戶來使用的,它主要為其他開發(fā)者提供調(diào)用
六、怎么做接口測試
1、接口測試的流程
- 熟悉業(yè)務(wù)和需求
- 分析接口文檔
- 編寫接口測試用例
- 提測后開始測試
- 提交測試報(bào)告
2、編寫接口文檔
- 編寫接口文檔是接口開發(fā)中非常重要的一個(gè)環(huán)節(jié),因?yàn)殚_發(fā)的接口是給其他開發(fā)人員調(diào)用的,那么如何知道接口是怎么調(diào)用的呢?當(dāng)然需要通過參考接口文檔了。那么接口文檔就必須要做到更新及時(shí),內(nèi)容準(zhǔn)確。
- 案例
接口名稱 | 添加... | 說明 |
URL | http://127.0.0.1:8000/api/add_event/ | 測試add_event接口 |
調(diào)用方法 | POST | |
傳入?yún)?shù) | eidnamelimitstatus(1/0) | 參數(shù)含義:事件編號(hào)參數(shù)含義:事件名字參數(shù)含義:限時(shí)參數(shù)含義:開啟狀態(tài) |
返回值 | 'status':200,'message':'add event success' | |
狀態(tài)碼 | 10021:parameter error10022:event id already exists10023:event name already exists200:add event success |
3、通用接口用例設(shè)計(jì)
- 通過性驗(yàn)證
首先肯定要保證這個(gè)接口功能是正確的,也就是正常的通過性測試,按照接口文檔上的參數(shù),正常傳入,是否可以返回正確的結(jié)果。
- 參數(shù)組合
現(xiàn)在有一個(gè)操作商品的接口,有個(gè)字段type
type傳1的時(shí)候代表修改商品,商品id、商品名稱、價(jià)格有一個(gè)是必傳的,這樣就要測參數(shù)組合了,type傳1的時(shí)候,只傳商品名稱能不能修改成功,id、名稱、價(jià)格都傳的時(shí)候能不能修改成功。
- 接口安全
繞過驗(yàn)證:
如購買了一個(gè)商品,它的價(jià)格是300元,那我在提交訂單時(shí)候,我把這個(gè)商品的價(jià)格改成3元,后端有沒有做驗(yàn)證,更狠點(diǎn),我把錢改成-3,是不是我的余額還要增加?
- 繞過身份授權(quán)
如修改商品信息接口,那必須得是賣家才能修改,那我傳一個(gè)普通用戶,能不能修改成功,傳一個(gè)其他的賣家能不能修改成功。
- 參數(shù)是否加密
如登陸的接口,用戶名和密碼是不是加密,如果不加密的話,別人攔截到你的請(qǐng)求,就能獲取到你的信息。
加密規(guī)則是否容易破解。
- 密碼安全規(guī)則
對(duì)密碼的復(fù)雜程度校驗(yàn)。
- 異常驗(yàn)證
就是不按照接口文檔上的要求輸入?yún)?shù),來驗(yàn)證接口對(duì)異常情況的校驗(yàn)。
如必填的參數(shù)不填,輸入整數(shù)類型的,傳入字符串類型,長度是10的,傳11
必傳非必傳、參數(shù)類型、入?yún)㈤L度。
4、根據(jù)業(yè)務(wù)邏輯來設(shè)計(jì)用例
- 就是根據(jù)系統(tǒng)的業(yè)務(wù)來設(shè)計(jì)用例,這個(gè)每個(gè)公司的業(yè)務(wù)不一樣,就得具體的看自己公司的業(yè)務(wù)了,其實(shí)這也和功能測試設(shè)計(jì)用例是一樣的。
下面是配套資料,對(duì)于做【軟件測試】的朋友來說應(yīng)該是最全面最完整的備戰(zhàn)倉庫,這個(gè)倉庫也陪伴我走過了最艱難的路程,希望也能幫助到你!
軟件測試面試小程序
被百萬人刷爆的軟件測試題庫!??!誰用誰知道?。。∪W(wǎng)最全面試刷題小程序,手機(jī)就可以刷題,地鐵上公交上,卷起來!
涵蓋以下這些面試題板塊:
1、軟件測試基礎(chǔ)理論 ,2、web,app,接口功能測試 ,3、網(wǎng)絡(luò) ,4、數(shù)據(jù)庫?,5、linux
6、web,app,接口自動(dòng)化 ,7、性能測試?,8、編程基礎(chǔ),9、hr面試題 ,10、開放性測試題,11、安全測試,12、計(jì)算機(jī)基礎(chǔ)
資料獲取方式 :文章來源:http://www.zghlxwxcb.cn/news/detail-578897.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-578897.html
到了這里,關(guān)于【接口自動(dòng)化測試入門】接口測試基礎(chǔ)(超詳細(xì)~)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!