版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
6.1接口測(cè)試的概念6.1.1接口的定義應(yīng)用程序編程接口(ApplicationProgrammingInterface.API).通常簡(jiǎn)稱(chēng)為接口.是一些預(yù)先定義的函數(shù).可以使外部應(yīng)用程序或者其他開(kāi)發(fā)人員在不訪問(wèn)源碼且不需要理解內(nèi)部工作機(jī)制細(xì)節(jié)的情況下使用這些函數(shù).簡(jiǎn)單來(lái)說(shuō).接口就是開(kāi)發(fā)人員將實(shí)現(xiàn)某些功能的代碼封裝起來(lái).僅暴露出一個(gè)提供給他人調(diào)用的入口.調(diào)用方根據(jù)接口預(yù)先設(shè)計(jì)的約定.比如傳入必要的參數(shù).將接口實(shí)現(xiàn)的功能為己所用.總的來(lái)說(shuō).接口具有三個(gè)特點(diǎn):功能性、封裝性、提供入口.下一頁(yè)返回6.1接口測(cè)試的概念
接口大體上可以分為硬件接口、軟件接口兩類(lèi).硬件接口是硬件設(shè)備之間連接的入口.常見(jiàn)的如USB接口、網(wǎng)卡接口等.軟件接口是軟件系統(tǒng)、模塊、服務(wù)之間連接的入口.程序中自行實(shí)現(xiàn)的方法、現(xiàn)有庫(kù)提供的方法、網(wǎng)絡(luò)協(xié)議接口.都可以看作軟件接口.本書(shū)所介紹的.特指HTTP網(wǎng)絡(luò)協(xié)議接口.6.1.2接口測(cè)試簡(jiǎn)介接口測(cè)試的檢測(cè)對(duì)象是外部系統(tǒng)之間、內(nèi)部各子系統(tǒng)之間的交互點(diǎn).測(cè)試的重點(diǎn)是檢查數(shù)據(jù)的交換、傳遞和控制管理過(guò)程.以及系統(tǒng)間的相互邏輯依賴(lài)關(guān)系等.測(cè)試的目的是驗(yàn)證測(cè)試對(duì)象行為的正確性.上一頁(yè)下一頁(yè)返回6.1接口測(cè)試的概念
在通常的產(chǎn)品測(cè)試過(guò)程中.一般都會(huì)采用功能測(cè)試方法去發(fā)現(xiàn)bug.那么為什么要做接口測(cè)試?現(xiàn)今的軟件產(chǎn)品架構(gòu)不斷復(fù)雜化.傳統(tǒng)的功能測(cè)試已經(jīng)難以滿足系統(tǒng)發(fā)展的需求.根據(jù)歷史數(shù)據(jù)模型推算.底層的1個(gè)bug大約會(huì)引發(fā)上層8?jìng)€(gè)bug.而且底層的bug很容易引起全網(wǎng)宕機(jī).可見(jiàn)接口測(cè)試的重要性.而且.接口測(cè)試是可以自動(dòng)化、持續(xù)集成的.相對(duì)功能測(cè)試來(lái)說(shuō).接口測(cè)試是一種成本低且高效的測(cè)試方法.進(jìn)行接口測(cè)試.一方面要以用戶(hù)的角度模擬使用流程.保證功能、邏輯正確.另一方面還要以調(diào)用方的角度考慮接口的易用性、規(guī)范性等.測(cè)試HTTP接口時(shí).可以使用接口測(cè)試工具.指定具體的URL、參數(shù)去調(diào)用接口.檢驗(yàn)返回值是否符合期望.上一頁(yè)返回6.2HTTP協(xié)議基本知識(shí)6.2.1協(xié)議簡(jiǎn)介HTTP(HyperTextTransferProtocol)是一套計(jì)算機(jī)網(wǎng)絡(luò)協(xié)議.約定了計(jì)算機(jī)通過(guò)網(wǎng)絡(luò)進(jìn)行通信時(shí).WWW(WorldWideWeb.萬(wàn)維網(wǎng))文件所必須遵循的規(guī)則.HTTP請(qǐng)求是從HTTP客戶(hù)端(如Web瀏覽器、移動(dòng)端)到HTTP服務(wù)器(Web服務(wù)器)的請(qǐng)求消息.它是一種無(wú)狀態(tài)的協(xié)議.HTTP客戶(hù)端和HTTP服務(wù)器之間不需要建立持久的連接.這意味著當(dāng)一個(gè)客戶(hù)端向服務(wù)器端發(fā)出請(qǐng)求.下一頁(yè)返回6.2HTTP協(xié)議基本知識(shí)
在接收到Web服務(wù)器返回的響應(yīng)(response)后連接就被關(guān)閉了.在服務(wù)器端不保留連接的有關(guān)信息.HTTP遵循請(qǐng)求(Request)/應(yīng)答(Re ̄sponse)模型.HTTP客戶(hù)端向HTTP服務(wù)器發(fā)送請(qǐng)求.服務(wù)器處理請(qǐng)求并返回適當(dāng)?shù)膽?yīng)答.作為Web支持文檔傳輸協(xié)議的HTTP.其版本更新十分緩慢.至今為止經(jīng)歷了以下幾個(gè)版本:1)HTTP/0.9:只有GET請(qǐng)求.不支持傳送超文本以外的任何其他數(shù)據(jù)類(lèi)型.也沒(méi)有為客戶(hù)端和服務(wù)器之間的通信提供任何協(xié)調(diào)機(jī)制.上一頁(yè)下一頁(yè)返回6.2HTTP協(xié)議基本知識(shí)
(2)HTTP/1.0:支持GET、POST、HEAD方法.是第一個(gè)HTTP標(biāo)準(zhǔn)版本.描述了完整的報(bào)文格式.并解釋了如何用于客戶(hù)請(qǐng)求和服務(wù)器響應(yīng).增加了請(qǐng)求和響應(yīng)信息的參數(shù)協(xié)商機(jī)制.在請(qǐng)求和響應(yīng)消息中增加了一些信息.這些信息是放入“報(bào)頭”的.通過(guò)報(bào)頭參數(shù)的交換達(dá)到協(xié)商的目的.(3)HTTP/1.1:增加了報(bào)文頭部.從而通過(guò)HTTP可以傳輸更多類(lèi)型的信息.可對(duì)各種連接復(fù)用.目前互聯(lián)網(wǎng)使用的HTTP協(xié)議版本就是1.1.上一頁(yè)下一頁(yè)返回6.2HTTP協(xié)議基本知識(shí)
6.2.2HTTP通信過(guò)程在一次完整的HTTP通信過(guò)程中.HTTP客戶(hù)端與HTTP服務(wù)端之間有以下7個(gè)交互步驟1)建立TCP連接.HTTP處于TCP/IP模型的應(yīng)用層.是建立在傳輸層的TCP協(xié)議上的.根據(jù)TCP/IP模型的規(guī)則.只有低層協(xié)議建立之后才能進(jìn)行高層次協(xié)議的連接.因此.在HTTP客戶(hù)端和服務(wù)器之間首先要建立TCP連接.上一頁(yè)下一頁(yè)返回6.2HTTP協(xié)議基本知識(shí)
(2)HTTP客戶(hù)端向HTTP服務(wù)器發(fā)送請(qǐng)求命令.一旦建立了TCP連接.HTTP客戶(hù)端就會(huì)向HTTP服務(wù)器發(fā)送請(qǐng)求命令.例如:GET/sample/hello.jspHTTP/1.1.(3)HTTP客戶(hù)端發(fā)送請(qǐng)求頭信息.瀏覽器發(fā)送其請(qǐng)求命令之后.還要以頭信息的形式向HTTP服務(wù)器發(fā)送一些其他信息.發(fā)送完請(qǐng)求頭信息后.客戶(hù)端發(fā)送一個(gè)空行通知服務(wù)器.請(qǐng)求頭信息發(fā)送結(jié)束.(4)HTTP服務(wù)器應(yīng)答.客戶(hù)端向服務(wù)器發(fā)出請(qǐng)求后.服務(wù)器會(huì)向客戶(hù)端回送應(yīng)答.包括狀態(tài)碼和響應(yīng)包體.上一頁(yè)下一頁(yè)返回6.2HTTP協(xié)議基本知識(shí)
(5)HTTP服務(wù)器發(fā)送應(yīng)答頭信息.正如客戶(hù)端會(huì)隨同請(qǐng)求發(fā)送請(qǐng)求頭信息一樣.服務(wù)器也會(huì)隨同應(yīng)答向客戶(hù)端發(fā)送關(guān)于響應(yīng)數(shù)據(jù)的屬性信息.(6)HTTP服務(wù)器向HTTP客戶(hù)端發(fā)送數(shù)據(jù).服務(wù)器向客戶(hù)端發(fā)送頭信息后.會(huì)發(fā)送一個(gè)空行來(lái)表示頭信息的發(fā)送到此結(jié)束.接著.它就以Content-Type應(yīng)答頭信息所描述的格式發(fā)送用戶(hù)所請(qǐng)求的實(shí)際數(shù)據(jù).上一頁(yè)下一頁(yè)返回6.2HTTP協(xié)議基本知識(shí)
(7)HTTP服務(wù)端關(guān)閉TCP連接.客戶(hù)端和服務(wù)端之間不需要建立持久的連接.所以服務(wù)端返回響應(yīng)后.連接被關(guān)閉.但是.如果客戶(hù)端或服務(wù)器在其頭信息中加入了“Connection:Keep-alive”.則TCP連接在發(fā)送后保持打開(kāi)狀態(tài).保持的時(shí)間是給定的超時(shí)時(shí)間.若沒(méi)有給定則為默認(rèn)超時(shí)時(shí)間.6.2.3HTTP報(bào)文構(gòu)成HTTP消息由從客戶(hù)端到服務(wù)端的請(qǐng)求和從服務(wù)端到客戶(hù)端的響應(yīng)組成.上一頁(yè)下一頁(yè)返回6.2HTTP協(xié)議基本知識(shí)
1.請(qǐng)求報(bào)文HTTP請(qǐng)求報(bào)文由請(qǐng)求行(包括請(qǐng)求方法、URL、協(xié)議版本)、請(qǐng)求頭部(headers)、空行和請(qǐng)求包體(body)4個(gè)部分組成.HTTP請(qǐng)求報(bào)文結(jié)構(gòu)如圖6-1所示.(1)請(qǐng)求行:包含請(qǐng)求方法字段、URL字段和HTTP協(xié)議版本字段3個(gè)部分.它們之間使用空格隔開(kāi).(2)請(qǐng)求頭部:有多行數(shù)據(jù).每一行是一對(duì)關(guān)鍵字/值.關(guān)鍵字和值之間用英文冒號(hào)“:”分隔.(3)空行:最后一個(gè)請(qǐng)求頭之后是一個(gè)空行.為回車(chē)符和換行符.通知服務(wù)器以下不再有請(qǐng)求頭.上一頁(yè)下一頁(yè)返回6.2HTTP協(xié)議基本知識(shí)
(4)請(qǐng)求包體:為客戶(hù)端向服務(wù)端傳遞的參數(shù).請(qǐng)求包體不可在GET方法中使用.可以在POST方法中使用.除了POST.還有其他多種請(qǐng)求方法可以帶有請(qǐng)求包體.2.響應(yīng)報(bào)文HTTP響應(yīng)報(bào)文由狀態(tài)行(包含協(xié)議版本、狀態(tài)碼、狀態(tài)碼描述)、響應(yīng)頭部(head ̄ers)、空行和響應(yīng)包體(body)4個(gè)部分組成.如圖6-3所示.上一頁(yè)下一頁(yè)返回6.2HTTP協(xié)議基本知識(shí)
(1)狀態(tài)行:狀態(tài)行包括HTTP協(xié)議版本字段、狀態(tài)碼和狀態(tài)碼的描述文本3個(gè)部分.它們之間使用空格隔開(kāi).(2)響應(yīng)頭部:與請(qǐng)求頭部類(lèi)似.用于表示響應(yīng)數(shù)據(jù)的一些屬性.(3)空行:與請(qǐng)求報(bào)文的空行一樣.(4)響應(yīng)包體:為服務(wù)端返回給客戶(hù)端的文本信息.圖6-4所示是用抓包工具Fiddler抓取到的原始響應(yīng)報(bào)文.抓包工具除了會(huì)把抓取到的報(bào)文按照原始格式展示之外.還會(huì)對(duì)數(shù)據(jù)進(jìn)行解析.以友好的格式進(jìn)一步展示.使用瀏覽器自帶的抓包工具.可以看到每一個(gè)HTTP請(qǐng)求的請(qǐng)求數(shù)據(jù)和響應(yīng)數(shù)據(jù).如圖6-5所示.抓到的是一個(gè)POST請(qǐng)求.數(shù)據(jù)依次是URL、請(qǐng)求方法、狀態(tài)碼、請(qǐng)求頭部、響應(yīng)頭部、請(qǐng)求包體.上一頁(yè)下一頁(yè)返回6.2HTTP協(xié)議基本知識(shí)
響應(yīng)包體如圖6-6所示.返回的是JSON格式的數(shù)據(jù).瀏覽器的抓包工具自動(dòng)對(duì)數(shù)據(jù)作了格式化排版.可以將數(shù)據(jù)收縮、展開(kāi).便于查看.3.URLURL(UniformResourceLocator)是統(tǒng)一資源定位符.用來(lái)表示互聯(lián)網(wǎng)上標(biāo)準(zhǔn)資源(如HTML文件、圖像文件等)的地址.互聯(lián)網(wǎng)上的每個(gè)文件都有一個(gè)唯一的URL.它包含的信息指出文件的位置以及瀏覽器處理它的方式.遵循每種網(wǎng)絡(luò)URL.以下僅對(duì)HTTP協(xié)議的URL進(jìn)行說(shuō)明.上一頁(yè)下一頁(yè)返回6.2HTTP協(xié)議基本知識(shí)
HTTP接口使用的URL即所謂的接口請(qǐng)求地址.其由協(xié)議頭、主機(jī)、端口、路徑、參數(shù)、查詢(xún)串、錨點(diǎn)這幾個(gè)部分組成.格式表示如下([]表示可選項(xiàng)):protocol://host[:port]/path[?query]#fragment(1)協(xié)議頭(protocol):表示URL所遵循的網(wǎng)絡(luò)協(xié)議.HTTP接口遵循的是HTTP協(xié)議.則其URL開(kāi)頭為“http://”.上一頁(yè)下一頁(yè)返回6.2HTTP協(xié)議基本知識(shí)
(2)主機(jī)(host):主機(jī)為服務(wù)端的IP或域名.網(wǎng)絡(luò)設(shè)備(如路由器)將根據(jù)它確定將數(shù)據(jù)發(fā)往哪里.在主機(jī)前也可以包含連接到服務(wù)器所需的用戶(hù)名和密碼(格式:username:password@host).但該用法以明文的方式泄露了賬號(hào)信息.安全性低.因此一般不采用.(3)端口(port):用于指定目標(biāo)主機(jī)綁定在某個(gè)端口上的服務(wù).如果訪問(wèn)的是協(xié)議的默認(rèn)端口.可以不用寫(xiě)出.(4)路徑(path):由零或多個(gè)“/”符號(hào)隔開(kāi).用來(lái)表示主機(jī)上的一個(gè)目錄、文件地址或訪問(wèn)資源的邏輯結(jié)構(gòu).(5)查詢(xún)串(query):多見(jiàn)于GET方式的請(qǐng)求中.在path后以“?”開(kāi)頭.以“&”分隔不同的參數(shù).參數(shù)鍵值對(duì)之間用“=”連接.上一頁(yè)下一頁(yè)返回6.2HTTP協(xié)議基本知識(shí)
(6)錨點(diǎn)(fragment):即頁(yè)面定位符.表示資源中的位置定位.以“?!遍_(kāi)頭.如打開(kāi)一個(gè)網(wǎng)頁(yè).查看到頁(yè)面中間的某個(gè)帶錨點(diǎn)的位置后.按照帶錨點(diǎn)的URL打開(kāi)新的網(wǎng)頁(yè).頁(yè)面將直接定位到原先查看到的位置.(7)以在百度搜索URI時(shí)的URL為例.拆解各個(gè)組成元素.見(jiàn)表6-1.上一頁(yè)下一頁(yè)返回6.2HTTP協(xié)議基本知識(shí)
4.URIURI(UniformResourceIdentifiers)是統(tǒng)一資源標(biāo)識(shí)符.是以特定語(yǔ)法標(biāo)識(shí)某一互聯(lián)網(wǎng)資源名稱(chēng)的字符串.URI的常見(jiàn)模式包括:file(表示本地磁盤(pán)文件)、ftp(FTP服務(wù)器)、http(使用HTTP協(xié)議的Web服務(wù)器)等.URL與URI的區(qū)別如下:URL是URI的子集.URL通常是可以直接訪問(wèn)的.如HTTP地址、FTP地址等.URL強(qiáng)調(diào)定位.上一頁(yè)下一頁(yè)返回6.2HTTP協(xié)議基本知識(shí)
通常標(biāo)志一個(gè)網(wǎng)絡(luò)路徑.URI是一個(gè)資源表示符.強(qiáng)調(diào)標(biāo)志.可以是.但不一定是網(wǎng)絡(luò)路徑.例如在考試服務(wù)中.有“獲取考生信息”的接口的定義如下:GET/v1/exams/{exam_id}/candidates/{candidate_id}其中.“http://host/v1/exams/{exam_id}/candidates/{candidate_id}”為該接口的URL.“/v1/exams/{exam_id}/candidates/{candidate_id}”則為該接口的URI.表示定位到參與某考試的某考生的信息.上一頁(yè)下一頁(yè)返回6.2HTTP協(xié)議基本知識(shí)
5.請(qǐng)求方法HTTP支持的請(qǐng)求方式有GET、POST、PUT、PATCH、DELETE、COPY、HEAD、OP ̄TIONS等.其中比較常用的是GET、POST、PUT、PATCH、DELETE.其主要作用見(jiàn)表6-3.1)GETGET是向服務(wù)器索取數(shù)據(jù)的一種請(qǐng)求類(lèi)型.該方法表示客戶(hù)端只要求從服務(wù)端獲取資源信息.不會(huì)改變資源的內(nèi)容和狀態(tài).向指定的URL(URI)請(qǐng)求資源時(shí).帶有的參數(shù)是明文傳遞.請(qǐng)求的數(shù)據(jù)會(huì)附加在URI之后.以“?”分隔URI和參數(shù)對(duì).多個(gè)參數(shù)對(duì)之間用“&”連接.傳輸數(shù)據(jù)會(huì)受到URI長(zhǎng)度的限制.且請(qǐng)求的數(shù)據(jù)暴露在地址欄中.上一頁(yè)下一頁(yè)返回6.2HTTP協(xié)議基本知識(shí)
2)POSTPOST是向服務(wù)器提交數(shù)據(jù)的一種請(qǐng)求.POST所傳遞的數(shù)據(jù)可以封裝后放置在HTTP消息體(body)中.不是明文傳輸?shù)?安全性較高.如果一個(gè)接口要在服務(wù)端創(chuàng)建數(shù)據(jù).一般會(huì)使用該方法.例如:注冊(cè)(創(chuàng)建了新的用戶(hù)信息)、登錄(創(chuàng)建了用戶(hù)的登錄信息)、提交表單(創(chuàng)建了表單對(duì)應(yīng)的數(shù)據(jù).如學(xué)員報(bào)名信息等)都是使用該方法實(shí)現(xiàn)的.3)GET與POST方法的區(qū)別上一頁(yè)下一頁(yè)返回6.2HTTP協(xié)議基本知識(shí)
(1)GET方法沒(méi)有請(qǐng)求包體(body).只適合少量參數(shù)的請(qǐng)求.因?yàn)椋眨遥涕L(zhǎng)度有字符限制.不能無(wú)限長(zhǎng).POST方法可以把查詢(xún)參數(shù)對(duì)放在請(qǐng)求包體中傳輸.因此比GET方法支持更多的數(shù)據(jù).而且提交的信息沒(méi)有長(zhǎng)度限制.(2)安全性問(wèn)題.使用GET方法的時(shí)候.參數(shù)會(huì)顯示在地址欄上.而POST方法不會(huì).所以.如果這些數(shù)據(jù)是非敏感數(shù)據(jù).那么可以使用GET方法.如果用戶(hù)輸入的數(shù)據(jù)包含敏感數(shù)據(jù)(如賬號(hào)、密碼).那么還是使用POST方法為好.(3)GET方法是安全的和冪等的.所謂安全的.意味著該操作用于獲取信息而非修改信息.冪等的.意味著對(duì)同一個(gè)URL的多次請(qǐng)求應(yīng)該返回同樣的結(jié)果.POST方法的請(qǐng)求往往會(huì)產(chǎn)生新的數(shù)據(jù).因此不具備安全性、冪等性.上一頁(yè)下一頁(yè)返回6.2HTTP協(xié)議基本知識(shí)
4)PUTPUT相當(dāng)于請(qǐng)求文件復(fù)制到服務(wù)器.即修改數(shù)據(jù).出于安全和管理的考慮.如果使用這個(gè)方法.必須和安全鑒別一起使用.5)PATCH與PUT方法類(lèi)似.PATCH方法也是用來(lái)對(duì)數(shù)據(jù)進(jìn)行更新的.二者是有區(qū)別的.從語(yǔ)義上理解.有兩方面的差異:(1)對(duì)已有資源:PATCH方法用于資源的部分內(nèi)容更新.比如只更新用戶(hù)信息的電話號(hào)碼字段.PUT方法用于更新某個(gè)資源較完整的內(nèi)容.比如用戶(hù)要重填完整表單更新所有信息.后臺(tái)處理更新時(shí)可能只是保留內(nèi)部記錄ID不變.上一頁(yè)下一頁(yè)返回6.2HTTP協(xié)議基本知識(shí)
(2)對(duì)不存在的資源:PATCH方法可能會(huì)創(chuàng)建一個(gè)新的資源.就像數(shù)據(jù)庫(kù)的SaveOrUp ̄date操作.而PUT方法只對(duì)已有資源進(jìn)行更新操作.就像是數(shù)據(jù)庫(kù)的Update操作.6)DELETEDELETE方法用來(lái)刪除某個(gè)內(nèi)容.要求刪除服務(wù)器上的資源.和PUT方法類(lèi)似.也只對(duì)已有的資源進(jìn)行操作.7)HEADHEAD方法類(lèi)似于GET方法.但是不返回body信息.只用于檢查對(duì)象是否存在.以及得到對(duì)象的元數(shù)據(jù).上一頁(yè)下一頁(yè)返回6.2HTTP協(xié)議基本知識(shí)
8)TRACETRACE方法允許客戶(hù)端為了診斷目的而收回它發(fā)給服務(wù)器的請(qǐng)求副本.9)CONNECTHTTP/1.1協(xié)議中將CONNECT方法預(yù)留給能夠?qū)⑦B接改為管道方式的代理服務(wù)器.10)OPTIONSOPTIONS方法用于獲得由URL標(biāo)識(shí)的資源在通信過(guò)程中可以使用的功能選項(xiàng).通過(guò)這個(gè)方法.客戶(hù)端可以在作具體的資源請(qǐng)求之前.決定對(duì)該資源采取何種必要的措施.或者了解這個(gè)服務(wù)器的性能.上一頁(yè)下一頁(yè)返回6.2HTTP協(xié)議基本知識(shí)
需要注意的是.方法名稱(chēng)是區(qū)分大小寫(xiě)的.當(dāng)某個(gè)請(qǐng)求所針對(duì)的資源不支持對(duì)應(yīng)的請(qǐng)求方法的時(shí)候.服務(wù)器應(yīng)當(dāng)返回狀態(tài)碼405(MothodNotAllowed).6.端口計(jì)算機(jī)的“端口”(port)可以被認(rèn)為是計(jì)算機(jī)與外界通信交流的出口.在計(jì)算機(jī)網(wǎng)絡(luò)中.端口有好幾種含義.一種含義是硬件的端口.集線器、交換機(jī)、路由器的端口指的是連接其他網(wǎng)絡(luò)設(shè)備的接口.但HTTP協(xié)議中的端口不是指物理意義上的端口.而是特指TCP/IP協(xié)議中的端口.是邏輯意義上的端口.上一頁(yè)下一頁(yè)返回6.2HTTP協(xié)議基本知識(shí)
在Internet上.各主機(jī)間通過(guò)TCP/IP協(xié)議發(fā)送和接收數(shù)據(jù)包.各個(gè)數(shù)據(jù)包根據(jù)其目的主機(jī)的IP地址進(jìn)行互聯(lián)網(wǎng)絡(luò)中的路由選擇.然而大多數(shù)操作系統(tǒng)都支持多程序(進(jìn)程)同時(shí)運(yùn)行.那么目的主機(jī)應(yīng)該把接收到的數(shù)據(jù)包傳送給眾多同時(shí)運(yùn)行的進(jìn)程中的哪一個(gè)呢?端口機(jī)制便由此被引進(jìn).7.請(qǐng)求頭HTTP請(qǐng)求頭(headers)表示HTTP傳輸數(shù)據(jù)的各種特性.headers屬性由“屬性名:屬性值”組成.屬性字段、值因服務(wù)的不同而有所不同.上一頁(yè)下一頁(yè)返回6.2HTTP協(xié)議基本知識(shí)
8.請(qǐng)求包體請(qǐng)求包體(以下簡(jiǎn)稱(chēng)“body”)是請(qǐng)求中帶有的參數(shù)體.可以帶有body的請(qǐng)求類(lèi)型主要有POST、PUT、PATCH、DELETE等.body的數(shù)據(jù)格式通過(guò)請(qǐng)求頭的Content-Type指定.告知服務(wù)端.常見(jiàn)的body類(lèi)型有以下幾種:1)Content-Type:application/x-www-form-urlencoded這是表單的標(biāo)準(zhǔn)編碼格式類(lèi)型.瀏覽器的原生form表單.如果不設(shè)置enctype屬性.那么數(shù)據(jù)就會(huì)以application/x-www-form-urlencoded的方式提交.指定為這種格式時(shí).數(shù)據(jù)以key1=val1&key2=val2鍵值對(duì)的形式編碼.上一頁(yè)下一頁(yè)返回6.2HTTP協(xié)議基本知識(shí)
2)Content-Type:multipart/form-data在使用表單上傳文件時(shí).使form的enctyped=multipart/form-data.則數(shù)據(jù)會(huì)以這種形式上傳.3)Content-Type:text/xml表示發(fā)送的數(shù)據(jù)遵循XML的格式規(guī)定.XML與HTML類(lèi)似.用成對(duì)的標(biāo)記來(lái)包含數(shù)據(jù).可以明確劃分?jǐn)?shù)據(jù)的層次結(jié)構(gòu).表明數(shù)據(jù)的含義.并且便于擴(kuò)展.上一頁(yè)下一頁(yè)返回6.2HTTP協(xié)議基本知識(shí)
4)Content-Type:application/json以上提到的XML.由于其對(duì)結(jié)構(gòu)的要求.為了表示一項(xiàng)數(shù)據(jù)需要成對(duì)的標(biāo)記.用于標(biāo)記結(jié)構(gòu)的字符可能比真正帶有的信息還要多.書(shū)寫(xiě)起來(lái)比較臃腫.近年來(lái)出現(xiàn)了一種更輕量的數(shù)據(jù)表示格式———JSON.它不僅具備XML層次結(jié)構(gòu)清晰的優(yōu)點(diǎn).而且比XML更為簡(jiǎn)潔.各個(gè)主要的抓包工具.如Chrome自帶的開(kāi)發(fā)者工具、Firebug、Fiddler.都提供以樹(shù)形結(jié)構(gòu)展示JSON數(shù)據(jù).非常友好.近年來(lái)HTTP接口的設(shè)計(jì)有遵循RESTful風(fēng)格的趨勢(shì).該風(fēng)格即使用JSON格式來(lái)表示請(qǐng)求、響應(yīng)包體的數(shù)據(jù).所以JSON格式的應(yīng)用越來(lái)越流行.上一頁(yè)下一頁(yè)返回6.2HTTP協(xié)議基本知識(shí)
9.狀態(tài)碼狀態(tài)碼是由RFC2616規(guī)范定義的.用來(lái)表示HTTP接口響應(yīng)狀態(tài)的3位數(shù)代碼.一般稱(chēng)其為code.狀態(tài)碼大致分5種類(lèi)型.由它們的第一位數(shù)字區(qū)別:(1)1xx:信息.請(qǐng)求收到.繼續(xù)處理.(2)2xx:成功.行為被成功地接受、理解和采納.(3)3xx:重定向.為了完成請(qǐng)求.必須進(jìn)一步執(zhí)行的動(dòng)作.(4)4xx:客戶(hù)端錯(cuò)誤.請(qǐng)求包含語(yǔ)法錯(cuò)誤或者請(qǐng)求無(wú)法實(shí)現(xiàn).(5)5xx:服務(wù)器錯(cuò)誤.服務(wù)器不能實(shí)現(xiàn)一種明顯無(wú)效的請(qǐng)求.上一頁(yè)下一頁(yè)返回6.2HTTP協(xié)議基本知識(shí)
在接口測(cè)試過(guò)程中.若遇到狀態(tài)碼與期望結(jié)果不相符的情況.可以根據(jù)狀態(tài)碼初步排查原因.HTTP狀態(tài)碼較多.10.響應(yīng)數(shù)據(jù)響應(yīng)數(shù)據(jù)就是調(diào)用接口后.請(qǐng)求方從響應(yīng)方“讀”到的數(shù)據(jù).若是下載文件的接口.響應(yīng)數(shù)據(jù)就是二進(jìn)制數(shù)字流.否則響應(yīng)數(shù)據(jù)就是字符串.具體的數(shù)據(jù)展示形式有很多種.是根據(jù)接口的設(shè)計(jì)決定的.現(xiàn)今比較流行的一種返回值表示形式是JSON格式.這種格式的數(shù)據(jù)擴(kuò)展性良好.可讀性較XML格式更強(qiáng).可以滿足大多數(shù)類(lèi)型接口的需求.JSON數(shù)據(jù)格式的說(shuō)明.參考“8.請(qǐng)求包體”部分.上一頁(yè)下一頁(yè)返回6.2HTTP協(xié)議基本知識(shí)
6.2.4Cookie與Session1.CookieCookie是存儲(chǔ)在瀏覽器目錄下的文本文件.其最新的規(guī)范文檔是RFC6265.用戶(hù)在使用瀏覽器的過(guò)程中將產(chǎn)生Cookie.記錄用戶(hù)的身份信息、行為信息等.在Cookie有效期內(nèi).用戶(hù)再次訪問(wèn)瀏覽器時(shí).瀏覽器會(huì)將Cookie信息附在請(qǐng)求Headers中發(fā)送給服務(wù)器.上一頁(yè)下一頁(yè)返回6.2HTTP協(xié)議基本知識(shí)
通過(guò)請(qǐng)求頭的Set-Cookie字段.Web服務(wù)器可以創(chuàng)建一個(gè)Cookie.Cookie中可存儲(chǔ)多項(xiàng)數(shù)據(jù).每項(xiàng)數(shù)據(jù)的內(nèi)容使用鍵值對(duì)表示(除secure之外).內(nèi)容不可有空格、逗號(hào)、分號(hào)(如果有.需要轉(zhuǎn)義后表示).不同對(duì)之間以“.”(“.”后還有一個(gè)空格)間隔.單個(gè)Cookie數(shù)據(jù)的格式如所示(“[]”表示內(nèi)容可選):key=value[.expires=date][.domain=domain][.path=path][.secure]其中key為Cookie的屬性名.value為Cookie的屬性值.expires是Cookie的過(guò)期時(shí)間.do ̄mian和path共同決定了Cookie在哪些頁(yè)面下有效.secure表示是否僅在HTTPS協(xié)議下發(fā)送Cookie到服務(wù)端.上一頁(yè)下一頁(yè)返回6.2HTTP協(xié)議基本知識(shí)
2.SessionSession用于控制網(wǎng)絡(luò)應(yīng)用中的會(huì)話.當(dāng)程序需要為某個(gè)客戶(hù)端的請(qǐng)求創(chuàng)建一個(gè)Session時(shí).服務(wù)器首先檢查這個(gè)客戶(hù)端的請(qǐng)求里是否已包含了Sessionid.如果已包含.服務(wù)器會(huì)按照Sessionid去檢索Session.否則就創(chuàng)建一個(gè).Sessionid可以保存在Cookie中.Cookie的名字一般類(lèi)似于“SEEESIONID”.3.Cookie與Session的區(qū)別(1)Cookie信息是存放在瀏覽器上的.而Session信息則存放在服務(wù)器上.上一頁(yè)下一頁(yè)返回6.2HTTP協(xié)議基本知識(shí)
(2)Cookie的安全性不高.存放在本地的Cookie可被分析并進(jìn)行Cookie欺騙.因此建議將登錄等重要信息存放為Session.其他信息可以保存在Cookie中.(3)Session保存在服務(wù)器上也有一定的有效時(shí)間.所以當(dāng)訪問(wèn)量增多時(shí).將會(huì)占用較多的服務(wù)器性能.如果考慮到減輕服務(wù)器的負(fù)擔(dān).應(yīng)當(dāng)使用Cookie存儲(chǔ)數(shù)據(jù).(4)單個(gè)Cookie保存的數(shù)據(jù)不能超過(guò)4KB.多數(shù)瀏覽器都會(huì)限制單個(gè)站點(diǎn)最多保存20個(gè)Cookie.上一頁(yè)下一頁(yè)返回6.2HTTP協(xié)議基本知識(shí)
6.2.5HTTP和HTTPS的區(qū)別HTTPS(HyperTextTransferProtocoloverSecureSocketLayer).是以安全為目標(biāo)的HTTP通道.HTTPS其實(shí)就是HTTP協(xié)議與SSL/TLS協(xié)議的組合.HTTPS在HTTP下加入SSL層.用來(lái)加密詳細(xì)內(nèi)容.它們的層級(jí)關(guān)系如圖6-8所示.HTTPS最初由網(wǎng)景公司(Netscape)研發(fā).并內(nèi)置于其瀏覽器NetscapeNavigator中.提供了身份驗(yàn)證與加密通信方法.HTTPS機(jī)制的主要作用為兩種:一種是建立一個(gè)信息安全通道.保證數(shù)據(jù)傳輸?shù)陌踩?上一頁(yè)下一頁(yè)返回6.2HTTP協(xié)議基本知識(shí)
另一種就是確認(rèn)請(qǐng)求方的真實(shí)性.該機(jī)制能夠在一定程度上避免身份偽造.現(xiàn)在它被廣泛用于萬(wàn)維網(wǎng)上安全敏感的通信.如賬號(hào)登錄、支付類(lèi)的訪問(wèn).HTTP與HTTPS的區(qū)別主要為以下幾點(diǎn):(1)HTTPS協(xié)議需要CA申請(qǐng)證書(shū).一般免費(fèi)證書(shū)很少.多數(shù)證書(shū)需要交費(fèi).(2)HTTP是超文本傳輸協(xié)議.信息是以明文傳輸?shù)?HTTPS則是具有安全性的TLS/SSL加密傳輸協(xié)議.上一頁(yè)下一頁(yè)返回6.2HTTP協(xié)議基本知識(shí)
(3)HTTP和HTTPS的默認(rèn)端口不一樣.分別是80、443.(4)HTTP的連接很簡(jiǎn)單.是無(wú)狀態(tài)的.HTTPS協(xié)議是由TLS/SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議.比HTTP協(xié)議安全.上一頁(yè)返回6.3RESTful接口6.3.1RESTful的定義REST(RepresentationalStateTransfer)即“表現(xiàn)層狀態(tài)轉(zhuǎn)化”.由HTTP協(xié)議(1.0版和1.1版)的主要設(shè)計(jì)者RoyThomasFielding于2000年在他的博士論文中提出.這是一種架構(gòu)風(fēng)格.涉及以下幾個(gè)元素.下一頁(yè)返回6.3RESTful接口
1.資源所謂“資源”.就是網(wǎng)絡(luò)上的一個(gè)實(shí)體.或者說(shuō)是網(wǎng)絡(luò)上的一個(gè)具體信息.它可以是一段文本、一張圖片、一首歌曲、一種服務(wù).前面提到URI可以用來(lái)表示萬(wàn)維網(wǎng)上的資源.這里所說(shuō)的資源.就是URI所指向的東西.每種資源對(duì)應(yīng)一個(gè)特定的URI.要獲取這個(gè)資源.訪問(wèn)它的URI就可以.2.表現(xiàn)層“資源”具體呈現(xiàn)出來(lái)的形式.叫作它的“表現(xiàn)層”.即數(shù)據(jù)的格式類(lèi)型.HTTP協(xié)議用請(qǐng)求頭信息中的Accept和Content-Type字段指定“表現(xiàn)層”的形式.如“Accept:text/xml”表示希望接收的是表現(xiàn)層為xml格式的文本數(shù)據(jù).上一頁(yè)下一頁(yè)返回6.3RESTful接口
3.狀態(tài)轉(zhuǎn)換HTTP是一個(gè)無(wú)狀態(tài)協(xié)議.所有資源的狀態(tài)都保存在服務(wù)端.建立在表現(xiàn)層上.通過(guò)某種方法(如調(diào)用接口)操作處于服務(wù)端的資源.轉(zhuǎn)換資源的狀態(tài).完成操作請(qǐng)求.6.3.2RESTful接口設(shè)計(jì)原則1.請(qǐng)求方法明確每種含義的操作類(lèi)型.都應(yīng)該指定一種且僅指定一種請(qǐng)求方法.1)錯(cuò)誤舉例(1)同樣功能的接口.使用多種方法都可以請(qǐng)求成功.上一頁(yè)下一頁(yè)返回6.3RESTful接口
例如服務(wù)端提供了兩個(gè)接口.其中一個(gè)是GET方法.另一個(gè)是POST方法.都可以獲取到學(xué)生的信息:GET/students/{id}//接口設(shè)計(jì)與具體內(nèi)容無(wú)關(guān).此處省略.{}表示此處的數(shù)據(jù)含義.則{id}表示在實(shí)例中.此處將填入學(xué)生的id.下同POST/students/{id}上一頁(yè)下一頁(yè)返回6.3RESTful接口
(2)使用了錯(cuò)誤的請(qǐng)求方式.例如需要獲取學(xué)生的信息.對(duì)應(yīng)的接口為POST方法:POST/students/{id}2)正確方式在HTTP報(bào)文構(gòu)成的請(qǐng)求方法一節(jié).已對(duì)幾種常用的HTTP請(qǐng)求方法的含義作了說(shuō)明.它們對(duì)應(yīng)的操作含義見(jiàn)表6-5.每種HTTP請(qǐng)求方法都對(duì)應(yīng)明確的操作類(lèi)型.因此獲取學(xué)生信息的HTTP接口應(yīng)該使用且僅使用GET方法.接口定義為:GET/students/{id}上一頁(yè)下一頁(yè)返回6.3RESTful接口
3)特例在項(xiàng)目的實(shí)際操作中.在某些情況下.可合理存在以上錯(cuò)誤舉例的兩種情況.前面章節(jié)當(dāng)中提到GET方法與POST方法的一個(gè)區(qū)別是.GET方法沒(méi)有請(qǐng)求包體.參數(shù)只能通過(guò)URL“?”后的參數(shù)對(duì)來(lái)表示.且有字符長(zhǎng)度限制.所以當(dāng)參數(shù)內(nèi)容較多時(shí).可能會(huì)超出長(zhǎng)度限制.無(wú)法正常請(qǐng)求.在這種情況下.可將獲取信息的接口設(shè)計(jì)為使用POST方法.以解決“?”后參數(shù)長(zhǎng)度限制的問(wèn)題.如某服務(wù)為業(yè)務(wù)課程的管理服務(wù).提供根據(jù)課程各項(xiàng)屬性進(jìn)行查詢(xún)的功能.該服務(wù)中有兩個(gè)接口具有這個(gè)功能:上一頁(yè)下一頁(yè)返回6.3RESTful接口
GET/v1/business_courses/search?$filter={filter}POST/v1/business_courses/search?$filter={filter}其中“{filter}”表示篩選條件.其表達(dá)式內(nèi)容為業(yè)務(wù)課程屬性的條件關(guān)系.例如“titleeq?title?”.而且支持多條件組合.類(lèi)似SQL語(yǔ)句.當(dāng)條件較多時(shí).參數(shù)串很可能使整個(gè)URL長(zhǎng)度超過(guò)GET方法限制的長(zhǎng)度.所以增加相同URL的POST方法.以支持條件復(fù)雜的搜索場(chǎng)景.上一頁(yè)下一頁(yè)返回6.3RESTful接口
2.URI應(yīng)該是名詞接口的操作對(duì)象是資源.URI指定的操作對(duì)象應(yīng)該是名詞.而不是動(dòng)作.動(dòng)作由請(qǐng)求方法來(lái)指明.1)錯(cuò)誤舉例例如獲取學(xué)生信息的接口.其URL設(shè)計(jì)為:GET/students/get_info?student_id={id}例子中URI為帶有動(dòng)作的詞語(yǔ)“get_info”.資源標(biāo)志用參數(shù)“student_id”來(lái)表示.這就違背了URI為名詞的原則.上一頁(yè)下一頁(yè)返回6.3RESTful接口
2)正確方式學(xué)生的信息是學(xué)生這類(lèi)實(shí)體的基本屬性.是接口獲取的目標(biāo)資源.其對(duì)應(yīng)的URI是該學(xué)生的id.所以接口應(yīng)該設(shè)計(jì)為:GET/students/{id}3.使用復(fù)數(shù)形式表示資源根據(jù)“keep-it-simple-stupid”原則(KISS原則).無(wú)論請(qǐng)求的資源個(gè)數(shù)是多少.(在英語(yǔ)中)是單數(shù)還是復(fù)數(shù).都使用復(fù)數(shù)形式表示URI.上一頁(yè)下一頁(yè)返回6.3RESTful接口
1)錯(cuò)誤舉例獲取學(xué)生信息的接口.設(shè)計(jì)為GET/student/{id}2)正確舉例獲取學(xué)生信息的接口.設(shè)計(jì)為GET/students/{id}4.對(duì)URL進(jìn)行版本控制當(dāng)服務(wù)迭代更新時(shí).服務(wù)的可用性和向下兼容變得至關(guān)重要.特別是對(duì)于底層的或被外部引用的服務(wù)而言.在URL中加入Version標(biāo)識(shí)可以使新、舊接口并存.這能在一定程度上解決兼容問(wèn)題上一頁(yè)下一頁(yè)返回6.3RESTful接口
需要更改版本號(hào)的情況有:對(duì)于同一個(gè)功能的接口.需要對(duì)URL路徑、body結(jié)構(gòu)等元素作變動(dòng).更新的版本已經(jīng)無(wú)法兼容舊版本的使用.1)URL路徑變化舉例舊GET/v1/trades?user_id={user_id}新GET/v2/{user_id}/trades上一頁(yè)下一頁(yè)返回6.3RESTful接口
2)body結(jié)構(gòu)變化舉例上一頁(yè)下一頁(yè)返回6.3RESTful接口
6.3.3接口設(shè)計(jì)最佳實(shí)踐1.接口設(shè)計(jì)依據(jù)以上幾點(diǎn)設(shè)計(jì)原則.假設(shè)有一個(gè)在線課程服務(wù).其課程的增、刪、改、查相關(guān)接口的設(shè)計(jì)見(jiàn)表6-6(省略請(qǐng)求包體).2.錯(cuò)誤規(guī)范以下為某互聯(lián)網(wǎng)公司內(nèi)部約定的RESTfulAPI錯(cuò)誤規(guī)范.當(dāng)接口出現(xiàn)非2xx的HTTP響應(yīng)時(shí).采用返回統(tǒng)一HTTP響應(yīng)信息.格式如下:上一頁(yè)下一頁(yè)返回6.3RESTful接口
HTTP/1.1400BadRequestContent-Type:application/json{"code":"INVALID_ARGUMENT"."message":"{errormessage}"."request_id":"01234567-89ab-cdef-0123-456789abcdef"."host_id":"{serveridentity}"."server_time":"2014-01-01T12:00:00Z"}上一頁(yè)返回6.4接口測(cè)試流程6.4.1大致流程接口測(cè)試的大致流程(圖6-9)是:(1)排優(yōu)先級(jí).了解接口需求.(2)評(píng)審接口文檔.(3)編寫(xiě)文字用例.(4)評(píng)審用例.(5)編寫(xiě)測(cè)試代碼.(6)測(cè)試并提交bug.(7)進(jìn)行n輪回歸測(cè)試.(8)持續(xù)構(gòu)建.日常維護(hù).下一頁(yè)返回6.4接口測(cè)試流程
6.4.2測(cè)試前1.排優(yōu)先級(jí)當(dāng)測(cè)試任務(wù)不僅一項(xiàng)時(shí).特別是人手又不足的時(shí)候.需要預(yù)先判斷接口測(cè)試任務(wù)的緊急程度.1)排序原則(1)多套接口服務(wù)之間.優(yōu)先測(cè)試緊急的接口.(2)在同一套接口服務(wù)內(nèi).優(yōu)先測(cè)試涉及重要場(chǎng)景的接口.(3)在同一套接口服務(wù)內(nèi).優(yōu)先執(zhí)行正向用例.上一頁(yè)下一頁(yè)返回6.4接口測(cè)試流程
2)衡量緊急程度的標(biāo)準(zhǔn)(1)接口代碼在測(cè)試環(huán)境部署的時(shí)間先后.(2)測(cè)試結(jié)果提交的時(shí)間先后.如被測(cè)服務(wù)經(jīng)過(guò)測(cè)試保證質(zhì)量后.雖然未發(fā)布.但需要在測(cè)試環(huán)境下與其他服務(wù)聯(lián)調(diào).一般來(lái)說(shuō).緊急程度由測(cè)試負(fù)責(zé)人根據(jù)項(xiàng)目整體的因素決定.測(cè)試人員也可以根據(jù)自己所了解到的情況提供一些建議.2.了解接口需求QA(QualityAssurance.質(zhì)量保證)人員需要根據(jù)開(kāi)發(fā)提供的接口說(shuō)明文檔(Word、wiki等).了解接口設(shè)計(jì)及其中參數(shù)的含義等.上一頁(yè)下一頁(yè)返回6.4接口測(cè)試流程
若接口業(yè)務(wù)比較復(fù)雜.有必要開(kāi)一個(gè)需求澄清會(huì).要求需求人員、設(shè)計(jì)接口的開(kāi)發(fā)人員、接口調(diào)用方開(kāi)發(fā)人員共同參與.確認(rèn)業(yè)務(wù)流程、應(yīng)用場(chǎng)景等細(xì)節(jié)問(wèn)題.若發(fā)現(xiàn)需求設(shè)計(jì)有問(wèn)題.需要馬上提出.QA人員需要從需求階段就介入.3.測(cè)試估時(shí)經(jīng)過(guò)以上兩步.便知道接口測(cè)試可用的大致時(shí)間.也了解到測(cè)試接口所需的時(shí)間.若后者大于前者.那么在測(cè)試完整性上可能需要作一些取舍.通常會(huì)遇到以下幾種情況.分別有不同的估時(shí):上一頁(yè)下一頁(yè)返回6.4接口測(cè)試流程
(1)被測(cè)的是新產(chǎn)品(組件).接口為首個(gè)版本.產(chǎn)品的首個(gè)版本往往需求不明確、變動(dòng)大.或者很可能只是為了做一個(gè)MVP(如果不合適.這個(gè)產(chǎn)品會(huì)廢除掉).在這種情況下.接口測(cè)試的主要目標(biāo)是保證主要功能可用.可以只選定接口的1級(jí)用例進(jìn)行測(cè)試.(2)緊急版本(如hotfix).該類(lèi)型的版本往往變動(dòng)不大.可以針對(duì)變動(dòng)內(nèi)容進(jìn)行1級(jí)用例測(cè)試.但需要同時(shí)保證舊功能正常.(3)常規(guī)版本.其不屬于特殊情況.應(yīng)該有足夠的時(shí)間進(jìn)行全面的測(cè)試.測(cè)試至少要覆蓋到2級(jí)用例上一頁(yè)下一頁(yè)返回6.4接口測(cè)試流程
6.4.3評(píng)審接口文檔在進(jìn)行接口測(cè)試之前.測(cè)試人員可以對(duì)接口文檔進(jìn)行評(píng)審.要求接口設(shè)計(jì)規(guī)范化.具完整性.易用.使接口易于維護(hù).以保證項(xiàng)目質(zhì)量.可見(jiàn).QA人員開(kāi)始接口測(cè)試的時(shí)間.不是接口代碼開(kāi)發(fā)完成之后.而是接口文檔出爐之后.1.書(shū)寫(xiě)規(guī)范要求接口文檔書(shū)寫(xiě)規(guī)范.確定接口各項(xiàng)元素是否可選.名稱(chēng)與實(shí)際名稱(chēng)一致.區(qū)分大小寫(xiě).若文檔中有調(diào)用示例.調(diào)用示例需要與接口的說(shuō)明一致.上一頁(yè)下一頁(yè)返回6.4接口測(cè)試流程
2.必要元素的說(shuō)明接口的必要元素必須說(shuō)明清楚.必要元素有:請(qǐng)求方法、host、port、headers、參數(shù)(query、body等)、狀態(tài)碼、響應(yīng)數(shù)據(jù)的格式等.這些元素的簡(jiǎn)介.6.4.4文字用例的編寫(xiě)了解接口的含義、需求.并且確定接口設(shè)計(jì)之后.就可以開(kāi)始著手編寫(xiě)接口測(cè)試的文字用例.建議使用思維導(dǎo)圖或者Excel書(shū)寫(xiě)用例.用例設(shè)計(jì)需要根據(jù)參數(shù)、流程.考慮正向、逆向的情況.具體的方法見(jiàn)6.5節(jié).編寫(xiě)出的用例需要?jiǎng)澐謨?yōu)先級(jí).劃分原則大致如下(具體業(yè)務(wù)需要具體分析):上一頁(yè)下一頁(yè)返回6.4接口測(cè)試流程
(1)1級(jí)用例:基礎(chǔ)的、正向的業(yè)務(wù)流程.單接口行為.或一旦出現(xiàn)問(wèn)題會(huì)影響主要流程的用例.(2)2級(jí)用例:一般的正向流程、單接口行為、出現(xiàn)問(wèn)題時(shí)不影響主要功能使用的用例.(3)3級(jí)用例:出現(xiàn)概率比較小.或異常的場(chǎng)景、單接口用例.用例編寫(xiě)完成后.需要交付給其他人評(píng)審.“其他人”可以是開(kāi)發(fā)人員也可以是測(cè)試人員.最佳的情況是項(xiàng)目干系人共同參與:需求方、設(shè)計(jì)人員、開(kāi)發(fā)人員、功能測(cè)試人員、接口測(cè)試人員以及這些人員的直接主管.不同的角色會(huì)從不同角度對(duì)測(cè)試設(shè)計(jì)進(jìn)行評(píng)審.因此這個(gè)過(guò)程會(huì)使測(cè)試設(shè)計(jì)得到較大的完善.發(fā)現(xiàn)一些之前未考慮到的細(xì)節(jié)問(wèn)題并統(tǒng)一方案.在前期就避免很多問(wèn)題.上一頁(yè)下一頁(yè)返回6.4接口測(cè)試流程
6.4.5用例評(píng)審首先需要將用例交予同項(xiàng)目的功能測(cè)試人員(此類(lèi)人員了解被測(cè)特性).評(píng)審用例所描述的場(chǎng)景及其期望是否正確、完整.如果項(xiàng)目中還有其他接口測(cè)試人員分工測(cè)試接口.那么互相評(píng)審用例會(huì)更好一些.測(cè)試人員內(nèi)部評(píng)審過(guò)用例后.交予負(fù)責(zé)開(kāi)發(fā)接口的開(kāi)發(fā)進(jìn)行評(píng)審.以消除開(kāi)發(fā)和測(cè)試人員之間對(duì)相同特性的理解差異.避免錯(cuò)誤理解導(dǎo)致的簡(jiǎn)單bug、錯(cuò)誤的測(cè)試方式.同時(shí).提供的用例也可以讓開(kāi)發(fā)盡早進(jìn)行自測(cè).以減少提測(cè)后出現(xiàn)的bug.上一頁(yè)下一頁(yè)返回6.4接口測(cè)試流程
6.4.6測(cè)試代碼的編寫(xiě)如果采用自動(dòng)化的方式進(jìn)行接口測(cè)試.就需要編寫(xiě)對(duì)應(yīng)的接口測(cè)試代碼.如果不采用自動(dòng)化方法.可以借助一些接口模擬工具進(jìn)行測(cè)試.具體見(jiàn)6.7節(jié).1.數(shù)據(jù)準(zhǔn)備測(cè)試接口時(shí).若涉及從數(shù)據(jù)庫(kù)中取數(shù)據(jù).則需要事先與開(kāi)發(fā)人員溝通.了解數(shù)據(jù)庫(kù)信息.如數(shù)據(jù)庫(kù)類(lèi)型、地址、庫(kù)名、表名、屬性名等.涉及的數(shù)據(jù)庫(kù)類(lèi)型可能有Mysql、Mon ̄godb、Redis、Cassandra等.所以也要求測(cè)試人員具備一定的數(shù)據(jù)庫(kù)操作知識(shí).隨后.可以寫(xiě)代碼封裝一些數(shù)據(jù)讀取的方法.根據(jù)需求甚至可能需要封裝造數(shù)據(jù)的過(guò)程.上一頁(yè)下一頁(yè)返回6.4接口測(cè)試流程
還有一種方式.就是編寫(xiě)偽接口.即自己實(shí)現(xiàn)簡(jiǎn)易的接口服務(wù)端程序.根據(jù)用例設(shè)定匹配的返回值.這樣就不需要讀取真實(shí)的數(shù)據(jù)庫(kù)了.這種方法在此不作詳細(xì)說(shuō)明.2.編寫(xiě)測(cè)試代碼參照之前編寫(xiě)的文字用例.根據(jù)優(yōu)先級(jí).先實(shí)現(xiàn)高優(yōu)先級(jí)的用例.再實(shí)現(xiàn)低優(yōu)先級(jí)的用例.在測(cè)試代碼中.需要在測(cè)試方法的注釋中寫(xiě)明用例的測(cè)試點(diǎn)和步驟.以便于后期維護(hù).代碼步驟、變量命名要求清晰明了.另外.在測(cè)試過(guò)程中創(chuàng)建的資源實(shí)例一定要回收(刪除).上一頁(yè)下一頁(yè)返回6.4接口測(cè)試流程
3.代碼運(yùn)行完成測(cè)試代碼的編寫(xiě)后.建議在首次測(cè)試時(shí).以調(diào)試的方式運(yùn)行代碼.在調(diào)試過(guò)程中.關(guān)注接口返回的數(shù)據(jù).在保證腳本無(wú)誤的情況下.若獲取到的數(shù)據(jù)與期望不符合.就要及時(shí)提bug.bug內(nèi)容要求寫(xiě)明幾點(diǎn).6.4.7持續(xù)集成1.每日構(gòu)建在接口的版本測(cè)試完成后.依然需要使用測(cè)試代碼進(jìn)行每日構(gòu)建.部署在測(cè)試環(huán)境、生產(chǎn)環(huán)境.以檢測(cè)開(kāi)發(fā)代碼是否有變動(dòng)、服務(wù)環(huán)境是否發(fā)生變化.每日構(gòu)建發(fā)現(xiàn)的bug.應(yīng)當(dāng)及時(shí)記錄到bug管理系統(tǒng).上一頁(yè)下一頁(yè)返回6.4接口測(cè)試流程
2.接口更新當(dāng)接口有變動(dòng).或者有新版本時(shí).應(yīng)該要求開(kāi)發(fā)人員及時(shí)更新接口文檔.并且列出具體的變動(dòng)內(nèi)容.是否需要修改腳本、重新對(duì)服務(wù)進(jìn)行測(cè)試.需要測(cè)試人員自己作出判斷.測(cè)試人員根據(jù)最新文檔.對(duì)文字用例、測(cè)試代碼進(jìn)行補(bǔ)充.執(zhí)行迭代/回歸測(cè)試.3.準(zhǔn)入測(cè)試當(dāng)新版本提測(cè)時(shí).開(kāi)發(fā)人員可以使用測(cè)試人員編寫(xiě)的往期版本接口測(cè)試代碼進(jìn)行自測(cè).保證舊有功能正確.若準(zhǔn)入測(cè)試出現(xiàn)問(wèn)題.可由開(kāi)發(fā)人員自行排查解決.直至自測(cè)通過(guò).上一頁(yè)返回6.5接口測(cè)試用例設(shè)計(jì)接口測(cè)試用例設(shè)計(jì)的方法.其實(shí)與功能測(cè)試的方法差不多.但功能測(cè)試的出發(fā)點(diǎn)是用戶(hù)的使用行為.即業(yè)務(wù)流程.而接口測(cè)試除了需要考慮業(yè)務(wù)流程.還需要重點(diǎn)關(guān)注接口的輸入?yún)?shù)和預(yù)期輸出結(jié)果.在這個(gè)過(guò)程中很重要的一點(diǎn).就是要為不同的測(cè)試劃分優(yōu)先級(jí).即便在測(cè)試資源很充足的情況下.也需要按照優(yōu)先級(jí)從高到低來(lái)完成測(cè)試.以保證盡快發(fā)現(xiàn)嚴(yán)重的問(wèn)題.6.5.1用例設(shè)計(jì)原則具體的用例設(shè)計(jì)方法(等價(jià)類(lèi)劃分法、邊界值分析法、錯(cuò)誤推測(cè)法、場(chǎng)景法等)可以參考第五章.以下說(shuō)明幾項(xiàng)接口測(cè)試用例設(shè)計(jì)原則:下一頁(yè)返回6.5接口測(cè)試用例設(shè)計(jì)
(1)必須明確每個(gè)接口的功能.需要與開(kāi)發(fā)人員溝通.(2)確定每個(gè)接口在業(yè)務(wù)流程中相關(guān)的其他接口.以及它們的邏輯調(diào)用順序.(3)以正向case為高優(yōu)先級(jí).以逆向case為次要.使用標(biāo)記區(qū)別.(4)每個(gè)case需要在測(cè)試代碼的注釋里明確注明各個(gè)步驟(否則經(jīng)過(guò)很長(zhǎng)時(shí)間就對(duì)不上號(hào).也很難再理解case的測(cè)試點(diǎn)).(5)更高的要求:了解接口內(nèi)部實(shí)現(xiàn).從而可以依據(jù)內(nèi)部邏輯增加測(cè)試用例(此項(xiàng)可作為測(cè)試補(bǔ)充).所以有時(shí)開(kāi)發(fā)人員提供的信息是很有價(jià)值的測(cè)試點(diǎn).上一頁(yè)下一頁(yè)返回6.5接口測(cè)試用例設(shè)計(jì)
6.5.2檢查點(diǎn)(1)狀態(tài)碼.無(wú)論正向/逆向用例.接口返回的狀態(tài)碼都需要與接口文檔中規(guī)定的相同.(2)響應(yīng)數(shù)據(jù).①正向用例:數(shù)據(jù)格式與文檔規(guī)定的相符.其中取值可以確定的、在一定誤差范圍內(nèi)的字段值需要檢查.②逆向用例:提供明確的錯(cuò)誤信息.與期望的錯(cuò)誤相符.(3)單個(gè)/多個(gè)接口間的業(yè)務(wù)邏輯.上一頁(yè)下一頁(yè)返回6.5接口測(cè)試用例設(shè)計(jì)
(4)數(shù)據(jù)庫(kù)數(shù)據(jù).當(dāng)無(wú)其他方法可以驗(yàn)證接口調(diào)用結(jié)果時(shí).需要操作數(shù)據(jù)庫(kù)讀取信息.與期望數(shù)據(jù)進(jìn)行比對(duì).6.5.3接口測(cè)試用例歸納雖然每個(gè)接口的業(yè)務(wù)都不一樣.但是根據(jù)其請(qǐng)求方式、業(yè)務(wù)類(lèi)型.可以歸納出一些通用的、常見(jiàn)的接口測(cè)試用例.如圖6-11~圖6-15所示.上一頁(yè)返回6.6接口測(cè)試質(zhì)量評(píng)估標(biāo)準(zhǔn)1.接口覆蓋率是否達(dá)到要求所有接口必須有相對(duì)應(yīng)的測(cè)試用例.覆蓋率要達(dá)到95%以上.由于條件受限無(wú)法測(cè)試的接口可以通過(guò)其他類(lèi)型的測(cè)試(如功能測(cè)試)進(jìn)行覆蓋.2.對(duì)接口業(yè)務(wù)規(guī)則的驗(yàn)證是否完整(1)測(cè)試用例要覆蓋接口的主要業(yè)務(wù)規(guī)則(即接口涉及的主要流程).(2)測(cè)試用例要覆蓋接口的常用業(yè)務(wù)規(guī)則(即接口涉及的次要流程).(3)參數(shù)驗(yàn)證要覆蓋對(duì)邊界值和參數(shù)特有業(yè)務(wù)規(guī)則的驗(yàn)證.下一頁(yè)返回6.6接口測(cè)試質(zhì)量評(píng)估標(biāo)準(zhǔn)
3.是否覆蓋接口之間的關(guān)聯(lián)性測(cè)試接口關(guān)聯(lián)性.即多接口組成的流程.例如:一個(gè)添加接口的關(guān)聯(lián)性測(cè)試.就要以該添加接口的返回值為參數(shù).來(lái)調(diào)用其他關(guān)聯(lián)接口(修改或刪除).驗(yàn)證是否調(diào)用成功且返回值符合期望.4.遺留bug對(duì)系統(tǒng)的影響程度(1)經(jīng)常調(diào)用的接口.不可含有主要業(yè)務(wù)規(guī)則和常用業(yè)務(wù)規(guī)則相關(guān)的bug.次要業(yè)務(wù)規(guī)則的bug遺留率為0.2%以下.上一頁(yè)下一頁(yè)返回6.6接口測(cè)試質(zhì)量評(píng)估標(biāo)準(zhǔn)
(2)不常調(diào)用的接口.不可含有主要業(yè)務(wù)規(guī)則的bug.常用業(yè)務(wù)規(guī)則的bug遺漏率為2%以下.次要業(yè)務(wù)規(guī)則的bug遺漏率為5%以下.5.接口是否可以達(dá)到需求方的要求經(jīng)過(guò)評(píng)審和測(cè)試的接口.易用性強(qiáng).且功能達(dá)到業(yè)務(wù)需求(調(diào)用)方的要求.調(diào)用方可以使用開(kāi)發(fā)好的接口實(shí)現(xiàn)設(shè)計(jì)的產(chǎn)品.上一頁(yè)返回6.7接口測(cè)試工具6.7.1模擬工具HTTP接口請(qǐng)求模擬工具很多.它們的根本原理都一樣.就是將用戶(hù)填寫(xiě)的請(qǐng)求數(shù)據(jù)按照協(xié)議的要求.組裝成請(qǐng)求報(bào)文.發(fā)送給服務(wù)端.然后接收服務(wù)端的響應(yīng)數(shù)據(jù).進(jìn)行解析、展示.現(xiàn)在市面上有非常多的接口請(qǐng)求模擬工具.一般有幾類(lèi):一種是在線的網(wǎng)頁(yè)版工具.其提供的功能比較簡(jiǎn)單.只能滿足最普通的GET、POST請(qǐng)求.一種是插件類(lèi)的工具.多數(shù)作為瀏覽器的擴(kuò)展程序.如谷歌的Chrome瀏覽器的插件Postman、DHC.Firefox(火狐)瀏覽器的插件Poster.還有一些是桌面應(yīng)用.比如SoapUI、Jmeter(性能測(cè)試工具.但可以管理接口請(qǐng)求、模擬接口發(fā)送)等.其功能比較復(fù)雜.下一頁(yè)返回6.7接口測(cè)試工具
從易用性、易得性、功能完善性等角度衡量.Chrome瀏覽器的插件Postman無(wú)疑是眾多模擬工具中最強(qiáng)大的.Postman不僅可以調(diào)試簡(jiǎn)單的前端頁(yè)面.還可以支持幾乎所有類(lèi)型的HTTP請(qǐng)求.在實(shí)際項(xiàng)目中.不僅測(cè)試人員使用它作接口測(cè)試.開(kāi)發(fā)人員也經(jīng)常使用該工具進(jìn)行自測(cè).此處簡(jiǎn)單舉例介紹如何使用Postman模擬HTTP接口的請(qǐng)求.1.安裝Postman打開(kāi)Chrome瀏覽器.單擊菜單欄中的“應(yīng)用”快捷方式(請(qǐng)先確認(rèn)已打開(kāi))出現(xiàn)“Chrome網(wǎng)上應(yīng)用店”的圖標(biāo).單擊圖標(biāo)進(jìn)入(也可以在網(wǎng)絡(luò)上下載安裝包直接安裝).如圖6-16所示.上一頁(yè)下一頁(yè)返回6.7接口測(cè)試工具
進(jìn)入Chrome網(wǎng)上應(yīng)用店后.搜索“Postman”.單擊“安裝”按鈕.如圖6-17所示.2.發(fā)送請(qǐng)求已知某服務(wù)有分頁(yè)查詢(xún)系統(tǒng)頻道下資源的接口.請(qǐng)求方法及URL定義為:POST/channels/{channel_id}/resources.{"page_size":20.//每一頁(yè)的數(shù)據(jù)量.不傳時(shí)默認(rèn)為20上一頁(yè)下一頁(yè)返回6.7接口測(cè)試工具
"page_no":0.//頁(yè)碼.從0開(kāi)始.不傳時(shí)默認(rèn)為0"status":1.//資源狀態(tài):1上線、0下線"sort_type":3.//排序類(lèi)型:1最新、2最熱、3推薦/綜合"time_status":2//時(shí)間狀態(tài):1即將開(kāi)始、2正在開(kāi)課、3已結(jié)束}上一頁(yè)下一頁(yè)返回6.7接口測(cè)試工具
在Postman中.選擇請(qǐng)求方法為POST.在地址欄中填寫(xiě)完整的URL地址(http://頭+真實(shí)的host+接口定義的URL.URL中的變量channel_id處要替換為目標(biāo)頻道的id).body選擇raw類(lèi)型并填寫(xiě)body參數(shù).如圖6-18所示.然后單擊“Send”按鈕.發(fā)送HTTP請(qǐng)求.3.接收響應(yīng)接口的響應(yīng)數(shù)據(jù)將在工具下半部分展示.如圖6-19所示.返回的數(shù)據(jù)包括狀態(tài)碼、響應(yīng)時(shí)間、請(qǐng)求包體等.其中請(qǐng)求包體為JSON格式.內(nèi)容為該頻道下的資源列表.列表中的每一項(xiàng)為資源的詳情數(shù)據(jù).上一頁(yè)下一頁(yè)返回6.7接口測(cè)試工具
6.7.2抓包工具HTTP抓包工具是用來(lái)捕捉客戶(hù)端(Web頁(yè)面或手機(jī)應(yīng)用)在實(shí)際操作下發(fā)出的請(qǐng)求.其原理都是將抓包工具作為客戶(hù)端和服務(wù)端之間的請(qǐng)求收發(fā)代理.數(shù)據(jù)經(jīng)過(guò)抓包工具中轉(zhuǎn).這樣就可以在抓包工具上查看到所有的請(qǐng)求過(guò)程了.抓包工具作為代理服務(wù)的工作原理.抓包工具主要有兩大類(lèi):一種是瀏覽器自帶的插件.如Chrome瀏覽器的開(kāi)發(fā)者工具、Firefox瀏覽器的Firebug、IE的HTTPWatch等.另一種是專(zhuān)門(mén)的桌面抓包工具.如Fiddler、Wireshark等.在項(xiàng)目測(cè)試過(guò)程中.這兩類(lèi)的抓包工具都經(jīng)常用到.上一頁(yè)下一頁(yè)返回6.7接口測(cè)試工具
1.瀏覽器插件瀏覽器插件是專(zhuān)門(mén)為Web端開(kāi)發(fā)而存在的.無(wú)須額外安裝.方便調(diào)用.可捕捉到前端頁(yè)面問(wèn)題.以及提供其他Web相關(guān)功能.如調(diào)試頁(yè)面、獲取頁(yè)面性能數(shù)據(jù)等.故其在Web端測(cè)試中不可替代.使用瀏覽器插件抓包時(shí).由于瀏覽器本身就是客戶(hù)端.所以無(wú)須進(jìn)行代理設(shè)置.就可以“自然地”抓取到HTTP請(qǐng)求數(shù)據(jù).若有HTTPS請(qǐng)求.也不需要擔(dān)心沒(méi)有合法的證書(shū)而無(wú)法模擬請(qǐng)求.上一頁(yè)下一頁(yè)返回6.7接口測(cè)試工具
2.桌面抓包工具桌面抓包工具以Fiddler?yàn)榈湫?它是一款非常強(qiáng)大的抓包工具.無(wú)論客戶(hù)端是Web瀏覽器還是手機(jī)應(yīng)用.Fiddler都可以捕捉到請(qǐng)求.由于瀏覽器的插件僅可用于抓?。祝澹舛说恼?qǐng)求.所以Fiddler在移動(dòng)端抓包的作用上就顯得尤為重要.Fiddler的具體使用方法將在第九章有詳細(xì)介紹.此處不再贅述.6.7.3數(shù)據(jù)解析工具上一頁(yè)下一頁(yè)返回6.7接口測(cè)試工具
接口請(qǐng)求模擬工具或抓包工具.都會(huì)提供將接收的數(shù)據(jù)格式化顯示的功能.以便友好展示.然而在實(shí)際測(cè)試過(guò)程中.可能需要從龐大的數(shù)據(jù)中抽取重點(diǎn)數(shù)據(jù)進(jìn)行查看.也可能看到的是原始的接口響應(yīng)數(shù)據(jù)(如測(cè)試腳本返回的數(shù)據(jù)).所以.借助數(shù)據(jù)解析工具是很有必要的.用于數(shù)據(jù)解析的工具很多.在網(wǎng)絡(luò)上很容易搜索到.在接口測(cè)試過(guò)程中接觸到的數(shù)據(jù)類(lèi)型有多種.其中最常遇到的是JSON格式數(shù)據(jù).可用于解析JSON數(shù)據(jù)格式的工具有很多.如JSON在線解析工具———JSONEditor(https://jsoneditoronline.org/)等.上一頁(yè)返回6.8接口測(cè)試自動(dòng)化6.8.1自動(dòng)化接口測(cè)試測(cè)試接口可以使用工具手動(dòng)執(zhí)行.也可以使用腳本自動(dòng)執(zhí)行.盡管自動(dòng)化測(cè)試往往需要比較多的時(shí)間準(zhǔn)備腳本.但是其復(fù)用性強(qiáng)、單次運(yùn)行速度快.所以從長(zhǎng)遠(yuǎn)來(lái)看.如果時(shí)間允許.還是推薦使用腳本自動(dòng)化執(zhí)行.自動(dòng)化測(cè)試與手動(dòng)測(cè)試相比有以下優(yōu)點(diǎn):(1)提高測(cè)試質(zhì)量.當(dāng)需要對(duì)軟件進(jìn)行回歸測(cè)試時(shí).若不使用自動(dòng)化測(cè)試.往往會(huì)由于各種各樣的原因(比如人員變更、遺忘測(cè)試點(diǎn)等).回歸不充分.導(dǎo)致漏測(cè).下一頁(yè)返回6.8接口測(cè)試自動(dòng)化
(2)提高測(cè)試效率.在對(duì)外接口功能不變的情況下.自動(dòng)化測(cè)試可以達(dá)到一次編寫(xiě).多次使用的效果.且在單次測(cè)試中.腳本運(yùn)行的速度遠(yuǎn)比手動(dòng)執(zhí)行來(lái)得快.(3)提高測(cè)試覆蓋率.通過(guò)手工測(cè)試很難測(cè)試到一些更深層次的異常和安全的問(wèn)題.通過(guò)一些輔助的測(cè)試工具.可以分析出代碼的覆蓋率.衡量測(cè)試的深度.(4)易于重現(xiàn)bug.由于每次都執(zhí)行相同的代碼.執(zhí)行路徑相同.如果接口存在bug.再次執(zhí)行相同的自動(dòng)化過(guò)程易于回歸重現(xiàn).如果是難以重現(xiàn)的bug.可以通過(guò)在測(cè)試腳本中添加日志等方法.記錄一些輔助信息.經(jīng)過(guò)回放收集數(shù)據(jù).這對(duì)分析問(wèn)題有一定的幫助.上一頁(yè)下一頁(yè)返回6.8接口測(cè)試自動(dòng)化
(5)更早發(fā)現(xiàn)問(wèn)題.接口測(cè)試可以與開(kāi)發(fā)人員的編碼平行工作.因此發(fā)現(xiàn)問(wèn)題會(huì)比系統(tǒng)測(cè)試早很多.從而減少了等待修改bug的時(shí)間成本.降低了項(xiàng)目不能按時(shí)發(fā)布的風(fēng)險(xiǎn).6.8.2接口測(cè)試代碼編寫(xiě)腳本實(shí)現(xiàn)接口測(cè)試需要了解幾個(gè)元素:編程語(yǔ)言、模擬請(qǐng)求的方法、驅(qū)動(dòng)框架、代碼架構(gòu).1.編程語(yǔ)言接口測(cè)試的過(guò)程是根據(jù)設(shè)計(jì)的測(cè)試用例.模擬接口請(qǐng)求.將獲取到的返回值與用例中的期望結(jié)果作對(duì)比.以驗(yàn)證接口的正確性.所以編程語(yǔ)言的種類(lèi)不會(huì)真正影響接口測(cè)試的結(jié)果.上一頁(yè)下一頁(yè)返回6.8接口測(cè)試自動(dòng)化
一般來(lái)說(shuō).選擇熟練掌握的語(yǔ)言即可.但是考慮到接口測(cè)試代碼部署等問(wèn)題.建議使用腳本語(yǔ)言Python.以下列舉的示例即使用Python語(yǔ)言實(shí)現(xiàn).2.模擬請(qǐng)求的方法在確定使用某一種語(yǔ)言之后.可以調(diào)研該語(yǔ)言中模擬HTTP請(qǐng)求的庫(kù)有哪些.并對(duì)比它們的利弊.選擇其中較為合適的一種.此處介紹使用Python的httplib庫(kù)來(lái)模擬POST請(qǐng)求.首先準(zhǔn)備該次請(qǐng)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 未來(lái)五年醫(yī)藥、醫(yī)療用品及器材市場(chǎng)管理服務(wù)企業(yè)縣域市場(chǎng)拓展與下沉戰(zhàn)略分析研究報(bào)告
- 未來(lái)五年新形勢(shì)下商旅行業(yè)順勢(shì)崛起戰(zhàn)略制定與實(shí)施分析研究報(bào)告
- 未來(lái)五年文化、辦公用機(jī)械制造服務(wù)企業(yè)ESG實(shí)踐與創(chuàng)新戰(zhàn)略分析研究報(bào)告
- 2026河南鶴壁市實(shí)驗(yàn)學(xué)校代課教師招聘參考題庫(kù)附答案
- 2025-2030文化創(chuàng)意產(chǎn)品設(shè)計(jì)行業(yè)市場(chǎng)供需環(huán)境分析及投資風(fēng)險(xiǎn)評(píng)估規(guī)劃實(shí)施方案
- 2025-2030文化創(chuàng)意產(chǎn)業(yè)知識(shí)產(chǎn)權(quán)保護(hù)與品牌價(jià)值管理體系
- 2025-2030文化創(chuàng)意產(chǎn)業(yè)市場(chǎng)分析技術(shù)創(chuàng)新市場(chǎng)競(jìng)爭(zhēng)格局投資評(píng)估規(guī)劃發(fā)展分析
- 2025-2030文化傳播行業(yè)市場(chǎng)供需積極投資評(píng)估來(lái)源規(guī)劃分析研究報(bào)告
- 2025-2030文化會(huì)展活動(dòng)產(chǎn)業(yè)鏈生態(tài)現(xiàn)狀分析及產(chǎn)業(yè)鏈整合發(fā)展報(bào)告
- 2025-2030挪威精密儀器制造業(yè)競(jìng)爭(zhēng)分析及企業(yè)投資方向研究報(bào)告
- 2024-2025學(xué)年河南省南陽(yáng)市社旗縣九年級(jí)(上)期末英語(yǔ)試卷(含答案)
- 山東省泰安市泰山區(qū)2024-2025學(xué)年五年級(jí)上學(xué)期期末英語(yǔ)試題
- 擠塑機(jī)工操作規(guī)程(4篇)
- 陜西省咸陽(yáng)市秦都區(qū)2024-2025學(xué)年七年級(jí)上學(xué)期1月期末考試語(yǔ)文試卷(無(wú)答案)
- AI虛擬數(shù)字人教學(xué)課件 第5章 騰訊智影:生成數(shù)字人視頻與主播
- CJJT269-2017城市綜合地下管線信息系統(tǒng)技術(shù)規(guī)范正式版
- 環(huán)保局基礎(chǔ)知識(shí)考試題庫(kù)100道及答案解析
- 道閘施工方案
- 適用于新高考新教材天津?qū)0?024屆高考英語(yǔ)一輪總復(fù)習(xí)寫(xiě)作專(zhuān)項(xiàng)提升Step3變魔句-提升描寫(xiě)逼真情境能力課件外研版
- 腳手架穩(wěn)定性計(jì)算
- DB31T+598-2023政府質(zhì)量獎(jiǎng)個(gè)人評(píng)價(jià)準(zhǔn)則
評(píng)論
0/150
提交評(píng)論