1 接口
1.什么是http協(xié)議
HTTP:是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議括尸,是一個客戶端和服務(wù)器端請求和應(yīng)答的標(biāo)準(zhǔn)(TCP)瘦陈,用于從WWW服務(wù)器傳輸超文本到本地瀏覽器的傳輸協(xié)議健民,它可以使瀏覽器更加高效逻炊,使網(wǎng)絡(luò)傳輸減少键闺。
超文本傳輸協(xié)議(HTTP汗捡,HyperText Transfer Protocol)是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議恒傻。所有的WWW文件都必須遵守這個標(biāo)準(zhǔn)脸侥。設(shè)計HTTP最初的目的是為了提供一種發(fā)布和接收HTML頁面的方法。
HTTP協(xié)議一般用于B/S架構(gòu)()盈厘。瀏覽器作為HTTP客戶端通過URL向HTTP服務(wù)端即WEB服務(wù)器發(fā)送所有請求睁枕。
2.什么是https協(xié)議
HTTPS(HyperText Transfer Protocol over Secure Socket Layer):是以安全為目標(biāo)的HTTP通道,簡單講是HTTP的安全版,即HTTP+SSL /TLS外遇,HTTPS的安全基礎(chǔ)是SSL注簿,因此加密的詳細(xì)內(nèi)容就需要SSL。
3.http與https的區(qū)別
HTTPS協(xié)議是由SSL/TLS+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸跳仿、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議诡渴,要比http協(xié)議安 全。
1菲语、https協(xié)議需要到ca申請證書妄辩,一般免費(fèi)證書較少,因而需要一定費(fèi)用山上。
2恩袱、http是超文本傳輸協(xié)議,信息是明文傳輸胶哲,https則是具有安全性的ssl加密傳輸協(xié)議。
3潭辈、http和https使用的是完全不同的連接方式鸯屿,用的默認(rèn)端口也不一樣,前者是80把敢,后者是443寄摆。
4、http的連接很簡單修赞,是無狀態(tài)的婶恼;HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證
4.http請求的組成
5.消息報頭
請求頭包含許多有關(guān)的客戶端環(huán)境和請求正文的有用信息柏副。例如勾邦,請求頭可以聲明瀏覽器所用的語言,請求正 文的長度等割择。例如:
Accept:image/gif.image/jpeg./(請求的圖片內(nèi)容格式)
Accept-Language:zh-cn(zh-CN 是表示中文眷篇,fr-FR 是表示法語。 這是RFC1766定義的語言表示方 式)
Connection:Keep-Alive(又稱持久連接荔泳、連接重用蕉饼,Keep-Alive功能使客戶端到服務(wù)器端的連接持續(xù) 有效,當(dāng)出現(xiàn)對服務(wù)器的后繼請求時玛歌,Keep-Alive功能避免了建立或者重新建立連接昧港。)Host:localhost(主機(jī)名字)
User-Agent:Mozila/4.0(compatible:MSIE5.01:Windows NT5.0)(客戶端身份信息)
Accept-Encoding:gzip,deflate( 以壓縮格式接收請求數(shù)據(jù))
6.請求正文
請求頭和請求正文之間是一個空行,這個行非常重要支子,它表示請求頭已經(jīng)結(jié)束创肥,接下來的是請求正文。請求正 文中可以包含客戶提交的查詢字符串信息:
username=jinqiao&password=1234
在以上的例子的HTTP請求中,請求的正文只有一行內(nèi)容瓤的。當(dāng)然休弃,在實(shí)際應(yīng)用中,HTTP請求正文可以包含更多 的內(nèi)容圈膏。
7.請求方法
8.http響應(yīng)格式
9.響應(yīng)狀態(tài)碼
10.HTTP/2.0,1.1,1.0的區(qū)別
HTTP1.0最早在網(wǎng)頁中使用是在1996年塔猾,那個時候只是使用一些較為簡單的網(wǎng)頁上和網(wǎng)絡(luò)請求上,而HTTP1.1則在1999年才開始廣泛應(yīng)用于現(xiàn)在的各大瀏覽器網(wǎng)絡(luò)請求中稽坤,同時HTTP1.1也是當(dāng)前使用最為廣泛的HTTP協(xié)議丈甸。 主要區(qū)別主要體現(xiàn)在:
緩存處理,在HTTP1.0中主要使用header里的If-Modified-Since,Expires來做為緩存判斷的標(biāo)準(zhǔn)尿褪,HTTP1.1則引入了更多的緩存控制策略例如Entity tag睦擂,If-Unmodified-Since, If-Match, If-None-Match等更多可供選擇的緩存頭來控制緩存策略。
帶寬優(yōu)化及網(wǎng)絡(luò)連接的使用杖玲,HTTP1.0中顿仇,存在一些浪費(fèi)帶寬的現(xiàn)象,例如客戶端只是需要某個對象的一部分摆马,而服務(wù)器卻將整個對象送過來了臼闻,并且不支持?jǐn)帱c(diǎn)續(xù)傳功能,HTTP1.1則在請求頭引入了range頭域囤采,它允許只請求資源的某個部分述呐,即返回碼是206(Partial Content),這樣就方便了開發(fā)者自由的選擇以便于充分利用帶寬和連接蕉毯。
錯誤通知的管理乓搬,在HTTP1.1中新增了24個錯誤狀態(tài)響應(yīng)碼,如409(Conflict)表示請求的資源與資源的當(dāng)前狀態(tài)發(fā)生沖突代虾;410(Gone)表示服務(wù)器上的某個資源被永久性的刪除进肯。
Host頭處理,在HTTP1.0中認(rèn)為每臺服務(wù)器都綁定一個唯一的IP地址褐着,因此坷澡,請求消息中的URL并沒有傳遞主機(jī)名(hostname)。但隨著虛擬主機(jī)技術(shù)的發(fā)展含蓉,在一臺物理服務(wù)器上可以存在多個虛擬主機(jī)(Multi-homed Web Servers)频敛,并且它們共享一個IP地址。HTTP1.1的請求消息和響應(yīng)消息都應(yīng)支持Host頭域馅扣,且請求消息中如果沒有Host頭域會報告一個錯誤(400 Bad Request)斟赚。
長連接,HTTP 1.1支持長連接(PersistentConnection)和請求的流水線(Pipelining)處理差油,在一個TCP連接上可以傳送多個HTTP請求和響應(yīng)拗军,減少了建立和關(guān)閉連接的消耗和延遲任洞,在HTTP1.1中默認(rèn)開啟Connection: keep-alive,一定程度上彌補(bǔ)了HTTP1.0每次請求都要創(chuàng)建連接的缺點(diǎn)
11.HTTP2.0和HTTP1.X相比的新特性
新的二進(jìn)制格式(Binary Format)发侵,HTTP1.x的解析是基于文本交掏。基于文本協(xié)議的格式解析存在天然缺陷刃鳄,文本的表現(xiàn)形式有多樣性盅弛,要做到健壯性考慮的場景必然很多,二進(jìn)制則不同叔锐,只認(rèn)0和1的組合挪鹏。基于這種考慮HTTP2.0的協(xié)議解析決定采用二進(jìn)制格式愉烙,實(shí)現(xiàn)方便且健壯讨盒。
多路復(fù)用(MultiPlexing),即連接共享步责,即每一個request都是是用作連接共享機(jī)制的返顺。一個request對應(yīng)一個id,這樣一個連接上可以有多個request蔓肯,每個連接的request可以隨機(jī)的混雜在一起,接收方可以根據(jù)request的 id將request再歸屬到各自不同的服務(wù)端請求里面省核。
header壓縮,如上文中所言昆码,對前面提到過HTTP1.x的header帶有大量信息气忠,而且每次都要重復(fù)發(fā)送,HTTP2.0使用encoder來減少需要傳輸?shù)膆eader大小赋咽,通訊雙方各自cache一份header fields表旧噪,既避免了重復(fù)header的傳輸,又減小了需要傳輸?shù)拇笮 ?/p>
服務(wù)端推送(server push)脓匿,同SPDY一樣淘钟,HTTP2.0也具有server push功能。
2.接口測試流程
需求討論—>需求評審—>場景設(shè)計—>用例設(shè)計—>數(shù)據(jù)準(zhǔn)備—>執(zhí)行—>測試報告
3.接口測試內(nèi)容
1.功能邏輯
通過查數(shù)據(jù)庫或緩存等驗(yàn)證數(shù)據(jù)是否處理正確陪毡。通過其他輔助途徑進(jìn)行驗(yàn)證
2.異常測試
接口測試中主要測試接口正常邏輯米母,但僅邏輯測試不能保證數(shù)據(jù)的安全及程序接口在異常情況下的邏輯處理的正確性。
3.路徑測試
當(dāng)被測接口的實(shí)現(xiàn)方法中毡琉,判斷邏輯復(fù)雜分支多铁瞒,且判斷中又調(diào)用了其他的接口,此時必須要進(jìn)行路徑覆蓋測試桅滋。
4.結(jié)構(gòu)檢查
檢查返回值的結(jié)構(gòu)是否正確慧耍,如是json類型還是xml類型的數(shù)據(jù)
字段名稱是否正確等
XML和JSON都使用結(jié)構(gòu)化方法來標(biāo)記數(shù)據(jù)
5.其他異常場景
研發(fā)的項(xiàng)目身辨,有些項(xiàng)目是底層使用的系統(tǒng),根據(jù)項(xiàng)目特點(diǎn)芍碧,可能會存在特殊的異常場景煌珊。例如: 支付的異步操作,支付消息重試等
6.常用接口測試工具
1.典型商業(yè)工具:
1.LoadRunner(LR):一款商業(yè)性能測試工具泌豆,用來做接口測試定庵,很好很強(qiáng)大 ,但是配置比較麻煩践美。
2.SoapUI:開源測試工具洗贰,通過soap/http來檢查、調(diào)用陨倡、實(shí)現(xiàn)Web Service的功能/負(fù)載/符合性測試敛滋;該工具既可作為一個單獨(dú)的接口測試工具使用,也可利用插件集成到Eclipse兴革,maven2.X绎晃,Netbeans 和intellij中使用。? 了解就可以了杂曲,基本已經(jīng)不用了庶艾。
2.典型開源工具
Jmeter :一款開源的接口測試工具,操作簡單擎勘,方便咱揍,既有jdbc request操作數(shù)據(jù)庫數(shù)據(jù),也有http request和soap request應(yīng)對測試
Postman:Postman 是一款restful api的測試工具棚饵,既有g(shù)oogle瀏覽器插件煤裙,也有軟件
3.擴(kuò)展插件
postman:谷歌瀏覽器的擴(kuò)展工具,主要用來做接口測試噪漾,谷歌商店中選中安裝硼砰,界面同poster差別不大,界面簡潔