網(wǎng)絡(luò)協(xié)議
<meta charset="utf-8">
0.1 http與https
10.1.1 什么是超文本
1960年美國(guó)人Ted Nelson構(gòu)思了一種通過計(jì)算機(jī)處理文本信息的方法,并稱之為超文本(hypertext),這成為了HTTP超文本傳輸協(xié)議標(biāo)準(zhǔn)架構(gòu)的發(fā)展根基。
超文本是用超鏈接的方法嗡载,將各種不同空間的文字信息組織在一起的網(wǎng)狀文本踏拜。超文本更是一種用戶界面范式鞋邑,用以顯示文本及與文本之間相關(guān)的內(nèi)容∶ダ保現(xiàn)時(shí)超文本普遍以電子文檔方式存在,其中的文字包含有可以鏈結(jié)到其他位置或者文檔的連結(jié)袱蚓,允許從當(dāng)前閱讀位置直接切換到超文本連結(jié)所指向的位置钞啸。
10.1.2 http協(xié)議
HTTP(HyperText Transport Protocol)是超文本傳輸協(xié)議的縮寫,它用于傳送WWW方式的數(shù)據(jù)喇潘。
超文本傳輸協(xié)議(HTTP体斩,HyperText Transfer Protocol)是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議。所有的WWW文件都必須遵守這個(gè)標(biāo)準(zhǔn)颖低。設(shè)計(jì)HTTP最初的目的
是為了提供一種發(fā)布和接收HTML頁(yè)面的方法絮吵。
10.1.3 http與https基本概念
- HTTP:是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議,是一個(gè)客戶端和服務(wù)器端請(qǐng)求和應(yīng)答的標(biāo)準(zhǔn)(TCP)忱屑,用于從WWW服務(wù)器傳輸超文本到本地瀏覽器的傳輸協(xié)議蹬敲,它可以使瀏覽器更加高效,使網(wǎng)絡(luò)傳輸減少莺戒。
- HTTPS:是以安全為目標(biāo)的HTTP通道伴嗡,簡(jiǎn)單講是HTTP的安全版,即HTTP下加入SSL(Secure Sockets Layer)層从铲,HTTPS的安全基礎(chǔ)是SSL瘪校,因此加密的詳細(xì)內(nèi)容就需要SSL。
HTTPS協(xié)議的主要作用可以分為兩種:一種是建立一個(gè)信息安全通道,來保證數(shù)據(jù)傳輸?shù)陌踩逖铮涣硪环N就是確認(rèn)網(wǎng)站的真實(shí)性泣懊。
10.1.4 http與https的區(qū)別
簡(jiǎn)單來說,HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸麻惶、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議馍刮,要比http協(xié)議安全。區(qū)別主要如下:
1用踩、https協(xié)議需要到ca申請(qǐng)證書渠退,一般免費(fèi)證書較少,因而需要一定費(fèi)用脐彩。
2碎乃、http是超文本傳輸協(xié)議,信息是明文傳輸惠奸,https則是具有安全性的ssl加密傳輸協(xié)議梅誓。
3、http和https使用的是完全不同的連接方式佛南,用的默認(rèn)端口也不一樣梗掰,前者是80,后者是443嗅回。
4及穗、http的連接很簡(jiǎn)單,是無狀態(tài)的绵载;HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸宣脉、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議漆枚,比http協(xié)議安全。
10.2 http請(qǐng)求的組成
從客戶端到服務(wù)器端的請(qǐng)求消息,信息由4部分組成請(qǐng)求行令花、消息報(bào)頭掏父、空行兜叨、請(qǐng)求正文
10.2.1 請(qǐng)求行(請(qǐng)求方法URI協(xié)議/版本)
請(qǐng)求的第一行是“方法URI協(xié)議/版本”例如:GET/sample.jsp HTTP/1.1
以上代碼中“GET”代表請(qǐng)求方法档玻,“/sample.jsp”表示URI,“HTTP/1.1代表協(xié)議和協(xié)議的版本躯畴。
10.2.2 消息報(bào)頭(請(qǐng)求頭Request Header)
請(qǐng)求頭包含許多有關(guān)的客戶端環(huán)境和請(qǐng)求正文的有用信息民鼓。例如,請(qǐng)求頭可以聲明瀏覽器所用的語(yǔ)言蓬抄,請(qǐng)求正文的長(zhǎng)度等摹察。例如:
Accept:image/gif.image/jpeg./(請(qǐng)求的圖片內(nèi)容格式)
Accept-Language:zh-cn(zh-CN 是表示中文,fr-FR 是表示法語(yǔ)倡鲸。 這是RFC1766定義的語(yǔ)言表示方式)
Connection:Keep-Alive(又稱持久連接供嚎、連接重用,Keep-Alive功能使客戶端到服務(wù)器端的連接持續(xù)有效,當(dāng)出現(xiàn)對(duì)服務(wù)器的后繼請(qǐng)求時(shí)克滴,Keep-Alive功能避免了建立或者重新建立連接逼争。)
Host:localhost(主機(jī)名字)
User-Agent:Mozila/4.0(compatible:MSIE5.01:Windows NT5.0)(客戶端身份信息)
Accept-Encoding:gzip,deflate( 以壓縮格式接收請(qǐng)求數(shù)據(jù))
10.2.3 空行
必須有,發(fā)送回車符和換行符劝赔,通知服務(wù)器以下不再有請(qǐng)求頭
10.2.4 請(qǐng)求正文(body)
請(qǐng)求頭和請(qǐng)求正文之間是一個(gè)空行誓焦,這個(gè)行非常重要,它表示請(qǐng)求頭已經(jīng)結(jié)束着帽,接下來的是請(qǐng)求正文杂伟。請(qǐng)求正文中可以包含客戶提交的查詢字符串信息:
username=jinqiao&password=1234
在以上的例子的HTTP請(qǐng)求中,請(qǐng)求的正文只有一行內(nèi)容仍翰。當(dāng)然赫粥,在實(shí)際應(yīng)用中,HTTP請(qǐng)求正文可以包含更多的內(nèi)容予借。
案例
10.4 請(qǐng)求方法
請(qǐng)求方法 | 解釋 |
---|---|
GET | 請(qǐng)求獲取Request-URI所標(biāo)識(shí)的資源 |
POST | 在Request-URI所標(biāo)識(shí)的資源后附加新的數(shù)據(jù) |
HEAD | 請(qǐng)求獲取由Request-URI所標(biāo)識(shí)的資源的響應(yīng)消息報(bào)頭 |
PUT | 請(qǐng)求服務(wù)器存儲(chǔ)一個(gè)資源越平,并用Request-URI作為其標(biāo)識(shí) |
DELETE | 請(qǐng)求服務(wù)器刪除Request-URI所標(biāo)識(shí)的資源 |
TRACE | 請(qǐng)求服務(wù)器回送收到的請(qǐng)求信息,主要用于測(cè)試或診斷 |
CONNECT | 保留將來使用 |
OPTIONS | 請(qǐng)求查詢服務(wù)器的性能灵迫,或者查詢與資源相關(guān)的選項(xiàng)和需求 |
10.5 http響應(yīng)格式
從服務(wù)器端到客戶器端的響應(yīng)信息秦叛,信息由4部分組成:狀態(tài)行、消息報(bào)頭瀑粥、空行挣跋、響應(yīng)正文。
10.5.1 狀態(tài)行
HTTP-1.1 Status-Code Reason-Phrase CRLF其中狞换,HTTP-Version表示服務(wù)器HTTP協(xié)議的版本浆劲;Status-Code表示服務(wù)器發(fā)回的響應(yīng)狀態(tài)代碼;Reason-Phrase表示狀態(tài)代碼的文本描述哀澈。
例如:HTTP/1.1 200 OK \r\n
狀態(tài)碼
當(dāng)瀏覽者訪問一個(gè)網(wǎng)頁(yè)時(shí),瀏覽者的瀏覽器會(huì)向網(wǎng)頁(yè)所在服務(wù)器發(fā)出請(qǐng)求度气。當(dāng)瀏覽器接收并顯示網(wǎng)頁(yè)前割按,此網(wǎng)頁(yè)所在的服務(wù)器會(huì)返回一個(gè)包含HTTP狀態(tài)碼的信息頭(server header)用以響應(yīng)瀏覽器的請(qǐng)求。
HTTP狀態(tài)碼的英文為HTTP Status Code磷籍。
下面是常見的HTTP狀態(tài)碼:
狀態(tài)碼 | 描述 |
---|---|
200 | 請(qǐng)求成功 |
301 | 資源(網(wǎng)頁(yè)等)被永久轉(zhuǎn)移到其它URL |
404 | 請(qǐng)求的資源(網(wǎng)頁(yè)等)不存在 |
500 | 內(nèi)部服務(wù)器錯(cuò)誤 |
HTTP狀態(tài)碼分類
HTTP狀態(tài)碼由三個(gè)十進(jìn)制數(shù)字組成适荣,第一個(gè)十進(jìn)制數(shù)字定義了狀態(tài)碼的類型,后兩個(gè)數(shù)字沒有分類的作用院领。HTTP狀態(tài)碼共分為5種類型:
狀態(tài)碼 | 解釋 |
---|---|
100-199 | 信息狀態(tài)碼弛矛,表示成功接收請(qǐng)求,要求客戶端繼續(xù)提交下一次請(qǐng)求才能完成整個(gè)處理過程比然。100(continue)繼續(xù)發(fā)送 |
200-299 | 成功狀態(tài)碼丈氓,表示成功接收請(qǐng)求并已完成整個(gè)處理過程,常用200(OK)成功接收 |
300-399 | 重定向狀態(tài)碼,例如万俗,請(qǐng)求的資源已經(jīng)移動(dòng)一個(gè)新地址湾笛,常用302、307和304 |
400-499 | 客戶端的請(qǐng)求有錯(cuò)誤闰歪,常用404(Not Found)嚎研,403(Fobidden) |
500-599 | 服務(wù)器端出現(xiàn)錯(cuò)誤,常用 500 |
<meta charset="utf-8">
<article class="_2rhmJa">
10.5.2 消息報(bào)頭
服務(wù)器傳遞給客戶端用于說明服務(wù)器的一些信息库倘,以及將來繼續(xù)訪問該資源時(shí)的策略临扮。
Location:Location響應(yīng)報(bào)頭域用于重定向接受者到一個(gè)新的位置。
Server:Server響應(yīng)報(bào)頭域包含了服務(wù)器用來處理請(qǐng)求的軟件信息教翩。?WWW-Authenticate:WWW-Authenticate響應(yīng)報(bào)頭域必須被包含在401(未授權(quán)的)響應(yīng)消息中下面是WWW-Authenticate響應(yīng)報(bào)頭域的一個(gè)杆勇,例子:WWW-Authenticate: Basic realm="Basic Auth Test!“
Content-Encoding:Content-Encoding實(shí)體報(bào)頭域被使用作媒體類型的修飾符.
Content-Language:Content-Language實(shí)體報(bào)頭域描述了資源所用的自然語(yǔ)言。
Content-Length: Content-Length實(shí)體報(bào)頭域用于指明正文的長(zhǎng)度.
Content-Type:Content-Type實(shí)體報(bào)頭域用語(yǔ)指明發(fā)送給接收者的實(shí)體正文的媒體類型迂曲。
Last-Modified:Last-Modified實(shí)體報(bào)頭域用于指示資源最后的修改日期及時(shí)間靶橱。
Expires: Expires實(shí)體報(bào)頭域給出響應(yīng)過期的日期和時(shí)間。
Expires實(shí)體報(bào)頭域使用的日期和時(shí)間必須是RFC 1123中的日期格式路捧,例如:?Expires: Thu, 15 Sep 2005 16:00:00 GMT
10.5.3 響應(yīng)正文
服務(wù)端返回給客戶端的HTML文本內(nèi)容关霸,或者其他格式的數(shù)據(jù),比如:視頻流杰扫、圖片或者音頻數(shù)據(jù)队寇。
如果請(qǐng)求的是HTML頁(yè)面,那么返回的就是HTML代碼章姓。如果是JS就是JS代碼佳遣。
10.4 http協(xié)議的各版本
版本號(hào) | 詳情 |
---|---|
HTTP/0.9 | 只接受GET一種請(qǐng)求方法,沒有在通信中指定版本號(hào)凡伊,且不支持請(qǐng)求頭零渐。由于該版本不支持POST方法,因此客戶端無法向服務(wù)器傳遞太多信息系忙。 |
HTTP/1.0 | 第一個(gè)在通信中指定的版本號(hào)诵盼,至今被廣泛采用,特別是在代理服務(wù)器中银还。 |
HTTP/1.1 | 當(dāng)前版本號(hào)风宁,持久連接被默認(rèn)采用,并能很好地配合代理服務(wù)器工作蛹疯。還支持以管道方式在同時(shí)發(fā)送多個(gè)請(qǐng)求戒财,以便降低線路負(fù)載,提高傳輸速度捺弦。 |
HTTP/2.0 | 為了解決1.1版本利用率不高的問題饮寞,提出了HTTP/2.0版本孝扛。增加雙工模式,增加服務(wù)器推送的功能 |
當(dāng)前主流的協(xié)議版本還是HTTP/1.1版本骂际。
HTTP/1.1與HTTP/1.0的區(qū)別
1疗琉、persistent connection(持久連接)
HTTP/1.0中,每對(duì)請(qǐng)求/ 響應(yīng)都使用一個(gè)新的連接歉铝。
HTTP/1.1則支持持久連接(默認(rèn))盈简。
2、Host域
HTTP/1.1在請(qǐng)求消息頭多一個(gè)Host域太示;HTTP/1.0 則沒有這個(gè)域柠贤,建立TCP連接的時(shí)候已經(jīng)指定了IP地址,而且默認(rèn)一個(gè)IP地址只對(duì)應(yīng)一個(gè)主機(jī)名类缤,IP地址上只有一個(gè)host臼勉。
3、.帶寬優(yōu)化
HTTP/1.1加入了一個(gè)新的狀態(tài)碼100(Continue)餐弱⊙绨裕客戶端事先發(fā)送一個(gè)只帶頭域的請(qǐng)求,如果服務(wù)器因?yàn)闄?quán)限拒絕了請(qǐng)求膏蚓,就回送響應(yīng)碼 401(Unauthorized)
4瓢谢、請(qǐng)求方法和狀態(tài)碼
HTTP1.1增加了OPTIONS, PUT, DELETE, TRACE, CONNECT這些Request方法。
在HTTP/1.1中新增了24個(gè)狀態(tài)響應(yīng)碼驮瞧,如409(Conflict)表示請(qǐng)求的資源與資源的當(dāng)前狀態(tài)發(fā)生沖突氓扛;410(Gone)表示服務(wù)器上的某個(gè)資源被永久性的刪除。
接口測(cè)試以及用例編寫
<meta charset="utf-8">
11.1 接口
11.1.1 接口概述
定義:接口就是API(Application Programming Interface论笔,應(yīng)用程序接口)采郎,是一個(gè)軟件或服務(wù)對(duì)外提供的接口,別人只要調(diào)用這接口狂魔,而內(nèi)部如何實(shí)現(xiàn)蒜埋,不需要關(guān)心窖维。你只要按照要求進(jìn)行接口調(diào)用即可议惰。
外部系統(tǒng)與系統(tǒng)之間以及內(nèi)部各子系統(tǒng)之間的交互點(diǎn)。包括外部接口勉失、內(nèi)部接口管嬉。
舉例:
假設(shè)物流中“貨物”是數(shù)據(jù),存放貨物的“總倉(cāng)庫(kù)”是數(shù)據(jù)庫(kù)朗鸠,“店鋪”是我們的網(wǎng)站蚯撩、App。頁(yè)面上顯示的內(nèi)容烛占、數(shù)字胎挎,以及用戶的操作請(qǐng)求和結(jié)果都是需要不停搬運(yùn)的“貨物”——數(shù)據(jù)沟启,則負(fù)責(zé)調(diào)配分配打包的中轉(zhuǎn)站就是API,快遞小哥直接從中轉(zhuǎn)站取貨就好犹菇。
作用:對(duì)于軟件提供商來說德迹,留出API,讓別的應(yīng)用程序來調(diào)用揭芍,軟件才能發(fā)揮最大的價(jià)值胳搞,才能更有生命力。(同時(shí)別人也看不見代碼称杨,不傷害商業(yè)機(jī)密肌毅。)
對(duì)于應(yīng)用開發(fā)者來說,有了開放的API姑原,就可以直接調(diào)用多家公司做好的功能來做自己的應(yīng)用悬而,不需要所有的事情都自己操刀,節(jié)省精力锭汛。
11.1.2 接口的表現(xiàn)形式
客戶端要先操作服務(wù)端資源笨奠,首先要找到服務(wù)端提供的接口,然后才能向服務(wù)端發(fā)送資源請(qǐng)求唤殴,那么何為服務(wù)端接口呢般婆?其實(shí)就是一個(gè)地址(URL),比如:
http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1
- 采用的協(xié)議(http:):一般來講網(wǎng)址中第一個(gè)“:”前面的就是該網(wǎng)址所采用的協(xié)議眨八。這里的HTTP就是個(gè)協(xié)議 腺兴。HTTPS是HTTP的安全版本,HTTPS在HTTP的基礎(chǔ)對(duì)傳輸?shù)臄?shù)據(jù)進(jìn)行了加密和簽名廉侧,以保證數(shù)據(jù)傳輸?shù)陌踩砸诚臁N覀兤匠4蜷_兩頁(yè)的時(shí)候會(huì)看到網(wǎng)址前面都有一個(gè)HTTP或HTTPS,這就是告訴你段誊,你在向服務(wù)器發(fā)送此請(qǐng)求的過程中要遵循的協(xié)議是HTTP或HTTPS (也就是規(guī)則)闰蚕。
- 服務(wù)器地址(//www.qubaobei.com):以雙斜杠“//”開頭,后面跟的就是這個(gè)服務(wù)器的地址连舍,專業(yè)術(shù)語(yǔ)叫域名没陡。
- 請(qǐng)求資源路徑(/ios/cf/dish_list.php) :表示你要請(qǐng)求的資源在該服務(wù)器下/ios/cf/dish_list.php的路徑下。
- 參數(shù)(?stage_id=1&limit=20&page=1):參數(shù)可以找到具體內(nèi)容索赏,和路徑之間使用“?”隔開盼玄,參數(shù)之間使用“&”隔開。參數(shù)是以鍵值對(duì)的形式表現(xiàn)出來的潜腻。
把此URLhttp://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1
稱為食品模塊個(gè)接口埃儿, 也稱為接口地址。
11.2 接口文檔
接口文檔展示
11.2.1 封皮
封面最好是本公司規(guī)定的封面融涣,有l(wèi)ogo童番,內(nèi)容標(biāo)題精钮,版本號(hào),公司名稱剃斧,文檔產(chǎn)生
日期轨香。(錯(cuò)誤地方在于,文檔的標(biāo)題要和頁(yè)眉中的標(biāo)題一致)
11.2.2 修訂歷史
表格形式較好些幼东。包括:
版本臂容,修訂說明,修訂日期筋粗,修訂人策橘,審核時(shí)間,審核人娜亿。
11.2.3 接口信息
接口調(diào)用方式丽已,是post方式還是get方式,接口地址买决,別人需要線上的哪個(gè)地址就寫哪個(gè)沛婴。(自己提前測(cè)試好線上的這個(gè)接口,是否有其他問題督赤,千萬別犯低級(jí)的錯(cuò)誤嘁灯,尤其是某個(gè)字母寫錯(cuò))
11.2.4 功能描述
一定要清晰的描述接口功能。(不要遺漏一些細(xì)節(jié)躲舌,比如接口獲取的信息不包括哪些丑婿,哪些要寫明白)
11.2.5 接口參數(shù)說明
每個(gè)參數(shù)都要和實(shí)際中調(diào)用的一樣,包括大小寫没卸;參數(shù)的含義言簡(jiǎn)意賅的說明羹奉;格式是string 還是int 還是long等格式(例如參數(shù)為@RequestParam("appKey") StringappKey, @RequestParam("randomId") Integer randomId);說明部分约计,說明參數(shù)值是需要哪個(gè)公司提供诀拭,并詳細(xì)說明參數(shù)怎么生成的,例如時(shí)間戳煤蚌,是哪個(gè)時(shí)間段的耕挨;參數(shù)是否必填,一些參數(shù)是必須要有的尉桩,有些是可選參數(shù)筒占,一定要注意寫清晰。
11.2.6 返回值說明
1蜘犁、有一個(gè)模板返回值翰苫,并說明每個(gè)返回參數(shù)的意義。
2沽瘦、提供一個(gè)真實(shí)的調(diào)用接口革骨,真實(shí)的返回值。
注:現(xiàn)實(shí)工作中析恋,對(duì)接口有疑問要及時(shí)跟同事交流良哲。
11.3 接口測(cè)試的概念
11.3.1 概念
測(cè)試系統(tǒng)組件間接口的一種測(cè)試。接口測(cè)試主要用于檢測(cè)外部系統(tǒng)與系統(tǒng)之間以及內(nèi)部各個(gè)子系統(tǒng)之間的交互點(diǎn)助隧。
11.3.2 接口測(cè)試本質(zhì)
實(shí)質(zhì)就是數(shù)據(jù)的傳輸和接受筑凫,傳輸?shù)氖墙涌诘刂分械膮?shù),接受的是文本字符串并村,然后對(duì)比文本字符串是否正確巍实。
11.4 接口測(cè)試的目的和原理
11.4.1 目的
測(cè)試接口的正確性和穩(wěn)定性。
11.4.2 原理
接口測(cè)試的原理是通過測(cè)試程序模擬客戶端向服務(wù)器發(fā)送請(qǐng)求報(bào)文哩牍,服務(wù)器接收請(qǐng)求報(bào)文后對(duì)相應(yīng)的報(bào)文做出處理然后再把應(yīng)答報(bào)文發(fā)送給客戶端棚潦,客戶端接收應(yīng)答報(bào)文這一個(gè)過程。
11.5 常用接口測(cè)試工具
11.5.1 典型商業(yè)工具:
- LoadRunner(LR):一款商業(yè)性能測(cè)試工具膝昆,用來做接口測(cè)試丸边,很好很強(qiáng)大 ,但是配置比較麻煩荚孵。
- SoapUI:開源測(cè)試工具妹窖,通過soap/http來檢查、調(diào)用收叶、實(shí)現(xiàn)Web Service的功能/負(fù)載/符合性測(cè)試骄呼;該工具既可作為一個(gè)單獨(dú)的接口測(cè)試工具使用,也可利用插件集成到Eclipse判没,maven2.X蜓萄,Netbeans 和intellij中使用。 了解就可以了哆致,基本已經(jīng)不用了绕德。
11.5.2 典型開源工具
Jmeter :一款開源的接口測(cè)試工具,操作簡(jiǎn)單摊阀,方便耻蛇,既有jdbc request操作數(shù)據(jù)庫(kù)數(shù)據(jù),也有http request和soap request應(yīng)對(duì)測(cè)試
13.5.3 擴(kuò)展插件
postman:谷歌瀏覽器的擴(kuò)展工具胞此,主要用來做接口測(cè)試臣咖,谷歌商店中選中安裝,界面同poster差別不大漱牵,界面簡(jiǎn)潔夺蛇。
<meta charset="utf-8">
13.6 接口測(cè)試應(yīng)該測(cè)什么
13.6.1 單一接口
單一接口功能的測(cè)試主要測(cè)試返回的數(shù)據(jù)結(jié)構(gòu)是否和接口文檔給出的一致,接口的正常功能是否完成,接口的參數(shù)檢查測(cè)試赡矢,接口的異常測(cè)試。
13.6.2 組合接口
定義:組合接口測(cè)試主要是通過組合多個(gè)單一接口斥滤,來測(cè)試一個(gè)業(yè)務(wù)場(chǎng)景
案例:測(cè)試購(gòu)物網(wǎng)站的一個(gè)下單的功能甚脉,那么因?yàn)樵谙聠沃斑€有一些流程丸升,所以要測(cè)試一個(gè)場(chǎng)景。
測(cè)試:搜索商品 --> 選中商品 --> 添加進(jìn)購(gòu)物車 --> 提交訂單 -->支付
(提交訂單時(shí)還涉及到地址的選取等)
注:涉及到如果使用從cookie或者session在本例中的區(qū)別:如果使用cookie加入購(gòu)物車牺氨,那么換一臺(tái)電腦購(gòu)物車?yán)锏纳唐肪筒淮嬖诹私瞥埽绻褂玫氖莝ession,購(gòu)物車?yán)锩娴臇|西就一直存在猴凹,即:cookie是本機(jī)作用的夷狰,session不止于本機(jī)作用。
13.6.3 結(jié)構(gòu)檢查
(1)檢查返回值的結(jié)構(gòu)是否正確郊霎,如是json類型還是xml類型的數(shù)據(jù)
(2)字段名稱是否正確等
XML和JSON都使用結(jié)構(gòu)化方法來標(biāo)記數(shù)據(jù)
13.7 接口測(cè)試內(nèi)容
13.7.1 功能邏輯
通過查數(shù)據(jù)庫(kù)或緩存等驗(yàn)證數(shù)據(jù)是否處理正確沼头。
通過其他輔助途徑進(jìn)行驗(yàn)證
13.7.2 異常測(cè)試
接口測(cè)試中主要測(cè)試接口正常邏輯,但僅邏輯測(cè)試不能保證數(shù)據(jù)的安全及程序接口在異常情況下的邏輯處理的正確性书劝。
13.7.3 路徑測(cè)試
當(dāng)被測(cè)接口的實(shí)現(xiàn)方法中瘫证,判斷邏輯復(fù)雜分支多,且判斷中又調(diào)用了其他的接口庄撮,此時(shí)必須要進(jìn)行路徑覆蓋測(cè)試背捌。
13.7.4 其他異常場(chǎng)景
研發(fā)的項(xiàng)目,有些項(xiàng)目是底層使用的系統(tǒng)洞斯,根據(jù)項(xiàng)目特點(diǎn)毡庆,可能會(huì)存在特殊的異常場(chǎng)景。
例如: 支付的異步操作烙如,支付消息重試等
11.8 測(cè)試案例
11.8.1 get請(qǐng)求
11.8.2 post請(qǐng)求
13.9 接口測(cè)試用例模板
抓包工具的安裝與使用 Charles Fiddler
<meta charset="utf-8">
一么抗、抓包概述
1. 抓包概念
抓包是將網(wǎng)絡(luò)傳輸發(fā)送與接收的數(shù)據(jù)包進(jìn)行截獲、重發(fā)亚铁、編輯蝇刀、轉(zhuǎn)存等操作,也用來檢查網(wǎng)絡(luò)安全等徘溢。下面小編就介紹幾種抓包軟件吞琐。
2. 常見抓包工具
Charles、fiddler然爆、wireShark
軟件名稱 | 簡(jiǎn)介 | 獨(dú) 立運(yùn)行 | 支持移動(dòng)設(shè)備 | 是否收費(fèi) |
---|---|---|---|---|
Fiddler | 免費(fèi)的HTTP查看工具站粟,系統(tǒng)代理,工作在應(yīng)用層 | 是 | 是 | 否 |
Charles | HTTP代理曾雕、HTTP監(jiān)控奴烙、HTTP反代理、查看HTTP通訊、查看工作信息工具 | 是 | 是 | 收費(fèi)版/免費(fèi)版 |
Wireshark | 半免費(fèi)切诀,網(wǎng)絡(luò)抓包揩环、監(jiān)聽網(wǎng)卡,工作在網(wǎng)絡(luò)接口層 | 是 | 否 | 否 |
HttpWatch | 集成到IE幅虑、Chrome中的網(wǎng)頁(yè)數(shù)據(jù)分析工具 | 否 | 否 | 基礎(chǔ)版/專業(yè)版 |
BurpSuite | Http代理检盼。是用于攻擊web應(yīng)用程序的集成平臺(tái),包含了許多工具:抓包翘单、掃漏、爆破等蹦渣。黑客必備工具之一 | 是 | 是 | 是 |
測(cè)試為什么要學(xué)習(xí)Charles抓包哄芜?
- 能夠使用Charles來分析前后端問題
- 能夠使用Charles模擬弱網(wǎng)測(cè)試環(huán)境
- 能夠使用Charles的斷點(diǎn)構(gòu)建異常的測(cè)試場(chǎng)景
一、Charles簡(jiǎn)介
1. 什么是Charles
- Charles中文名字青花瓷柬唯,是一款Http代理服務(wù)器和Http監(jiān)視器认臊,當(dāng)移動(dòng)端在無線網(wǎng)連接中按要求設(shè)置好代理服務(wù)器,使所有對(duì)網(wǎng)絡(luò)的請(qǐng)求都經(jīng)過Charles客戶端來轉(zhuǎn)發(fā)時(shí)锄奢,Charles可以監(jiān)控這個(gè)客戶端各個(gè)程序所有連接互聯(lián)網(wǎng)的Http通信失晴。
- 特點(diǎn):跨平臺(tái)、半免費(fèi)
- 免費(fèi)版本:一是啟動(dòng)等待十秒才能啟動(dòng)拘央,二是半小時(shí)重啟一次
2. Charles工作原理
2.1 原理
截獲真實(shí)客戶端的HTTPS請(qǐng)求涂屁,偽裝客戶端向真實(shí)服務(wù)端發(fā)送HTTPS請(qǐng)求
接受真實(shí)服務(wù)器響應(yīng),用Charles自己的證書偽裝服務(wù)端向真實(shí)客戶端發(fā)送數(shù)據(jù)內(nèi)容
2.2 原理圖
2.3 原理案例
租房子 房客 中介 房東
前置步驟:
(1)需要運(yùn)行Charles并配置代理
(2)在客戶端上面需要配置代理
步驟:
(1)有客戶端發(fā)送請(qǐng)求
(2)Charles接受再發(fā)送給服務(wù)端
(3)服務(wù)端返回請(qǐng)求結(jié)果給Charles
(4)由Charles轉(zhuǎn)發(fā)給客戶端
3. Charles主要功能
- 支持HTTP/HTTPS代理
- 支持流量控制
- 支持接口并發(fā)請(qǐng)求
- 支持重發(fā)網(wǎng)絡(luò)請(qǐng)求灰伟,方便后端調(diào)試
- 支持?jǐn)帱c(diǎn)調(diào)試
- 支持修改網(wǎng)絡(luò)請(qǐng)求參數(shù)
- 支持網(wǎng)絡(luò)請(qǐng)求的截獲并動(dòng)態(tài)修改
- 支持模擬慢速網(wǎng)絡(luò)
4. Charles優(yōu)點(diǎn)(相對(duì)Fiddler)
- Charles能夠支持Linux拆又、macOS,fiddler不支持
- Charles支持按域名和按接口查看報(bào)文栏账,簡(jiǎn)潔明了
- Charles支持反向代理帖族,fiddler不支持
- Charles網(wǎng)絡(luò)限速可選擇網(wǎng)絡(luò)類型,選擇3G挡爵、4G竖般、5G等
- Charles可以解析AMF協(xié)議,一般用不到
二 茶鹃、安裝與配置
1. Charles安裝
官網(wǎng)下載:官網(wǎng)
雙擊涣雕,下一步即可
2. Charles組件介紹
校驗(yàn)是否符合w3c標(biāo)準(zhǔn)。
3. Charles設(shè)置
3.1 代理設(shè)置
3.2 Charles訪問控制
4. 客戶端設(shè)置
4.1 Windows代理設(shè)置
4.2 Android手機(jī)代理設(shè)置(見3.1)
三闭翩、實(shí)戰(zhàn)
3.1 抓取移動(dòng)設(shè)備發(fā)送的Http請(qǐng)求
-
先將移動(dòng)設(shè)備連接到Charles客戶端胞谭。首先在電腦中輸入cmd打開命令行窗口,輸入ipconfig查看本機(jī)連接無線網(wǎng)絡(luò)的IP地址男杈,這個(gè)地址作為移動(dòng)設(shè)備連接Charles客戶端的代理地址
-
打開Charles客戶端丈屹,點(diǎn)擊Proxy->Proxy Settings菜單,可以設(shè)置移動(dòng)設(shè)備連接到Charles的端口(8888),這樣移動(dòng)設(shè)備代理配置需要的ip地址和端口號(hào)都有了旺垒。
-
打開手機(jī)wifi彩库,設(shè)置所連接的wifi的代理網(wǎng)絡(luò);wifi代理設(shè)置為手動(dòng)先蒋,代理的服務(wù)器ip填寫上一步驟中查看到的電腦ip骇钦,端口填寫上一步驟提到的charles的服務(wù)端口:
注意:
①移動(dòng)設(shè)備配置之后,第一次通過手機(jī)訪問手機(jī)中的發(fā)送請(qǐng)求時(shí)竞漾,Charles會(huì)彈出提示框眯搭,提示有設(shè)備嘗試連接到Charles,是否允許业岁,如果不允許的話鳞仙,手機(jī)發(fā)送請(qǐng)求失敗,點(diǎn)擊Allow允許笔时,這樣這個(gè)設(shè)備的IP地址就會(huì)添加到允許列表中棍好,如果錯(cuò)誤點(diǎn)擊了Deny可以重啟Charles會(huì)再此提示,或者通過Proxy->Access Control Settings手動(dòng)添加地址允耿,如果不想每個(gè)設(shè)備連接Charles都要點(diǎn)擊允許的話借笙,可以添加0.0.0.0/0允許所有設(shè)備連接到Charles。
②手機(jī)與電腦必須連接同一個(gè)WiFi
③不要勾選Proxy → SSL Proxying setting 中的Enable SSL Proxying
④Charles是通過將自己設(shè)置成代理服務(wù)器來完成抓包的较锡,勾選系統(tǒng)代理后业稼,本地系統(tǒng)(如果通過瀏覽器發(fā)送請(qǐng)求)發(fā)送出去的請(qǐng)求都能被截取下來。因此蚂蕴,如果想只抓取手機(jī)APP發(fā)送的請(qǐng)求的話盼忌,可以不勾選WindowsProxy選項(xiàng),這樣在測(cè)試時(shí)就不會(huì)被本機(jī)Http請(qǐng)求所干擾掂墓。
⑤如果想要抓取瀏覽器發(fā)送的請(qǐng)求包谦纱,勾選WindowsProxy選項(xiàng)之后還是抓取失敗,可能是瀏覽器沒有設(shè)置成使用系統(tǒng)的代理服務(wù)器君编,只要設(shè)置成使用系統(tǒng)的代理服務(wù)器跨嘉,或者將瀏覽器的代理服務(wù)器設(shè)置成127.0.0.1:8888也可以成功。
-
啟動(dòng)手機(jī)吃嘿,打開軟件祠乃,就可以進(jìn)行聯(lián)網(wǎng)抓包測(cè)試
Charles提供兩種查看封包的頁(yè)簽,一個(gè)是Structure(結(jié)構(gòu))兑燥,另一個(gè)是Sequence(序列)亮瓷,Structure用來將訪問請(qǐng)求按訪問的域名分類,Sequence用來將請(qǐng)求按訪問的時(shí)間排序降瞳。任何程序都可以在Charles中的Structure窗口中看到訪問的域名嘱支。
<meta charset="utf-8">
四蚓胸、證書安裝
1. 為什么要安裝證書
我們以前抓包都是抓取的是HTTP的請(qǐng)求,如果抓取HTTPS就會(huì)亂碼除师,并不是沒有抓取到沛膳,見下圖:
怎么解決呢?安裝證書
2. Windows證書安裝
3. Charles證書導(dǎo)出
1汛聚、打開charles
2锹安、選擇help-ssl proxying
3、save
4倚舀、選擇存放路徑以及證書名
4. charls證書導(dǎo)入
IE瀏覽器:設(shè)置 → Internet選項(xiàng) → 內(nèi)容 → 證書 → 導(dǎo)入 → 下一步 → 選擇證書 → 選擇所有證書都放入下列存儲(chǔ)(P) → 瀏覽叹哭,選擇“受信任的根證書頒發(fā)機(jī)構(gòu)” → 下一步 → 完成。
chrome瀏覽器:設(shè)置 → 管理證書(安全) → 導(dǎo)入 → 下一步 → 選擇證書 → 選擇所有證書都放入下列存儲(chǔ)(P) → 瀏覽痕貌,選擇“受信任的根證書頒發(fā)機(jī)構(gòu)” → 下一步 → 完成风罩。
<meta charset="utf-8">
5. Chales HTTPS代理配置
證書安裝之后發(fā)現(xiàn)還是亂碼和unknown,需要配置代理
五竹挡、Charles常用功能
1. 過濾不必要的網(wǎng)絡(luò)包
在抓取手機(jī)發(fā)送的請(qǐng)求時(shí)抄罕,有許多請(qǐng)求包是對(duì)圖片等不需要關(guān)注的資源的請(qǐng)求,我們只想對(duì)指定目錄服務(wù)器上發(fā)送的請(qǐng)求進(jìn)行抓取,這時(shí)候就可以通過過濾網(wǎng)絡(luò)包的方式實(shí)現(xiàn)乳附。有兩種實(shí)現(xiàn)方式:
1)選擇Proxy->Recording Settings菜單,然后在include欄添加需要抓取包的指定服務(wù)器請(qǐng)求協(xié)議箱残、地址求妹、端口號(hào),也可以在exclude欄添加不抓取包的地址汹忠。
include:能抓取到的
exclude:不能抓取到的
2)在主界面的中部的 Filter 欄中填入需要過濾出來的關(guān)鍵字淋硝。例如我們的服務(wù)器的地址是:http://blog.csdn.net, 那么只需要在 Filter 欄中填入 csdn 即可。
注意:通常情況下宽菜,我們使用方法一做一些臨時(shí)性的封包過濾谣膳,使用方法二做一些經(jīng)常性的封包過濾。
2. 斷點(diǎn)替換/修改數(shù)據(jù)
2.1. 斷點(diǎn)的作用:用來構(gòu)建異常的測(cè)試場(chǎng)景
2.2. 步驟:
方式一:
-
右擊接口鏈接铅乡,選擇“BreakPoints”
在瀏覽器刷新對(duì)應(yīng)接口的頁(yè)面
此時(shí)會(huì)自動(dòng)跳轉(zhuǎn)到Charles并顯示出接口請(qǐng)求信息
-
點(diǎn)擊“Edit Request”继谚,修改請(qǐng)求信息,點(diǎn)擊“Execute”
點(diǎn)擊“Edit Response”
在數(shù)據(jù)格式蘭中選擇合適的顯示格式阵幸,比如“json”
修改對(duì)應(yīng)的數(shù)據(jù)花履,點(diǎn)擊“Execute”
回到瀏覽器查看數(shù)據(jù)應(yīng)該為修改之后的response的信息
方式二:
-
Proxy → Breakpoint settings...中手動(dòng)新建/啟用某個(gè)斷點(diǎn);
要求勾選enable breakpoints之后當(dāng)下次再有該請(qǐng)求時(shí),會(huì)自動(dòng)進(jìn)入斷點(diǎn)模式 -
新建斷點(diǎn)
<meta charset="utf-8">
3. 模擬慢網(wǎng)速
-
為什么要做模擬慢網(wǎng)速
不是所有的地方網(wǎng)絡(luò)都好,所以要模擬慢網(wǎng)速挚赊。主要用在App端诡壁,因?yàn)镻C一般都是寬帶聯(lián)網(wǎng),而App哪里都有可能去荠割。比如妹卿,測(cè)試上廁所
4. 壓測(cè)服務(wù)器
依次點(diǎn)擊tools—Repeat Advanced
選擇好并發(fā)線程數(shù)和打壓次數(shù),點(diǎn)擊ok就能進(jìn)行對(duì)產(chǎn)品的GET和POST請(qǐng)求進(jìn)行測(cè)試服務(wù)器并發(fā)處理的性能,當(dāng)然這里只是簡(jiǎn)單的進(jìn)行壓測(cè)纽帖,并且只能對(duì)Charles抓到的http協(xié)議的請(qǐng)求進(jìn)行重復(fù)并發(fā)宠漩,缺點(diǎn)就是如TCP類的抓不到的就不能了,算是個(gè)小小的缺陷吧懊直。
5 . 模擬404
1扒吁、tools——>blacklist
2、 允許啟用黑名單功能室囊,選擇接口返回錯(cuò)誤的形式(404 或者403)雕崩,添加接口地址并保存
【blocking connection】 選項(xiàng)可以選擇“drop connection”或者 “403 respose”.前者接口會(huì)直接返回404錯(cuò)誤,后者接口返回403錯(cuò)誤
3融撞、 選中需要返回404/403的接口,點(diǎn)擊【ok】
Charles破解
<meta charset="utf-8">
14.1 Fiddler簡(jiǎn)介
14.1.1 簡(jiǎn)介
Fiddler是位于客戶端和服務(wù)器端之間的代理盼铁,也是目前最常用的抓包工具之一 。它能夠記錄客戶端和服務(wù)器之間的所有請(qǐng)求尝偎,可以針對(duì)特定的請(qǐng)求饶火,分析請(qǐng)求數(shù)據(jù)、設(shè)置斷點(diǎn)致扯、調(diào)試web應(yīng)用肤寝、修改請(qǐng)求的數(shù)據(jù),甚至可以修改服務(wù)器返回的數(shù)據(jù)抖僵,功能非常強(qiáng)大鲤看,是web調(diào)試的利器。
14.1.2 功能
1耍群、能夠監(jiān)聽http/httpS的流量义桂,可以截獲從瀏覽器或者客戶端軟件向服務(wù)器發(fā)送的http/https請(qǐng)求;
2蹈垢、對(duì)截獲之后的請(qǐng)求慷吊,我們還能夠查看請(qǐng)求中的內(nèi)容;
3曹抬、偽造請(qǐng)求罢浇。不僅可以偽造客戶端的請(qǐng)求,還能夠偽造服務(wù)器的響應(yīng)沐祷∪卤眨——該功能能夠方便我們進(jìn)行前后端的調(diào)式。
4赖临、測(cè)試網(wǎng)站的性能胞锰;
5、解密https的外部會(huì)話兢榨。因?yàn)閔ttps本身是一種加密的協(xié)議嗅榕,通過fiddle我們可以進(jìn)行解密操作顺饮;
6、提供第三方擴(kuò)展插件凌那,滿足更多需求兼雄。
14.1.3 Fiddler工作原理
14.2 Fiddler下載安裝
- 下載:打開官網(wǎng)
- 安裝:
- 漢化:
14.3 Fiddler界面介紹
Fiddler界面從上到下分為:菜單欄、工具欄帽蝶、回話列表赦肋、功能頁(yè)簽、命令行励稳,狀態(tài)欄六大板塊
14.4 菜單欄
14.4.1File菜單
1佃乘、Capture Traffic:可以控制是否把Fiddler注冊(cè)為系統(tǒng)代理。
2驹尼、New Viewer:打開一個(gè)新的fiddler窗口
3趣避、Load Archive:用于重新加載之前捕獲的以SAZ文件格式保存的數(shù)據(jù)包。
4新翎、Save:支持以多種方式把數(shù)據(jù)包保存到文件中程帕。
5、Import Sessions...:支持導(dǎo)入從其他工具捕獲的數(shù)據(jù)包地啰,也支持導(dǎo)入以其他格式存儲(chǔ)的數(shù)據(jù)包愁拭。
6、Export Sessions...:把Fiddler捕捉到的回話以多種文件格式保存髓绽。
7敛苇、Exit:取消把Fiddler注冊(cè)為系統(tǒng)代理妆绞,并關(guān)閉Fiddler
14.4.2 Edit菜單
1顺呕、Copy:復(fù)制會(huì)話。
2括饶、Remove:刪除會(huì)話株茶。
3、Select All:選擇所有會(huì)話图焰。
4启盛、Undelete:撤銷刪除會(huì)話。
5技羔、Paste as Session把剪貼板上的內(nèi)容粘貼成一個(gè)或多個(gè)模擬的會(huì)話僵闯。
6、Mark:選擇一種顏色標(biāo)記選中會(huì)話藤滥。
7鳖粟、Unlock for Editing 解鎖會(huì)話。
8拙绊、Find Session...打開Find Session窗口向图,搜索捕獲到的數(shù)據(jù)包泳秀。
14.4.3 Rules菜單
1、Hide Image Request:隱藏圖片回話榄攀。
2嗜傅、Hide CONNECTS:隱藏連接通道回話。
3檩赢、Automatic Breakpoints:自動(dòng)在[請(qǐng)求前]或[響應(yīng)后]設(shè)置斷點(diǎn)吕嘀。Ignore Image觸發(fā)器控制這些斷點(diǎn)是否作用于圖片請(qǐng)求。
4漠畜、Customize Rules...:打開Fiddler腳本編輯窗口币他。
5、Require Proxy Authentication:憔狞,要求客戶端安裝證書蝴悉。該規(guī)則可以用于測(cè)試HTTP客戶端,確保所有未提交Proxy-Authorization請(qǐng)求頭的請(qǐng)求會(huì)返回HTTP/407響應(yīng)碼瘾敢。
6拍冠、Apply GZIP Encoding:只要請(qǐng)求包含具有g(shù)zip標(biāo)識(shí)的Accept-Encoding請(qǐng)求頭,就會(huì)對(duì)所有響應(yīng)使用GZIP HTTP進(jìn)行壓縮(圖片請(qǐng)求除外)簇抵。
7庆杜、Remove All Encoding:刪除所有請(qǐng)求和響應(yīng)的HTTP內(nèi)容編碼和傳輸編碼
8、Hide 304s:隱藏響應(yīng)為HTTP/304 Not Modified狀態(tài)的所有回話碟摆。
9晃财、Request Japanese Content:選項(xiàng)會(huì)把所有請(qǐng)求的Accept-Encoding請(qǐng)求頭設(shè)置或替換為ja標(biāo)識(shí),表示客戶端希望響應(yīng)以日語(yǔ)形式發(fā)送典蜕。
10断盛、User-Agents:把所有請(qǐng)求的User-Agent請(qǐng)求頭設(shè)置或替換成指定值。
11愉舔、performance:模擬弱網(wǎng)測(cè)試速度钢猛。
14.4.4 Tools菜單
1、Options...:打開Fiddler選項(xiàng)窗口轩缤。
2命迈、WinINET Options...打開IE的Internet屬性窗口
3、Clear WinINET Cache:清空IE和其他應(yīng)用中所使用的WinINET緩存中的所有文件火的。
4壶愤、Clear WinINET Cookies:清空IE和其他應(yīng)用中所發(fā)送的WinINET Cookie
5、TextWizard...:選項(xiàng)會(huì)啟動(dòng)TextWizard窗口馏鹤,對(duì)文本進(jìn)行編碼和解碼征椒。
6、Compare Session:比較回話假瞬。
7陕靠、Reset Script:重置Fiddler腳本迂尝。
8、Sandbox:打開http://webdbg.com/sandbox/
9剪芥、View IE Cache:打開IE緩存窗口鳖悠。
14.4.5 View菜單
1旬陡、Show Toolbar:控制Fiddler工具欄是否可見
2趣钱、Default Layout负乡、Stacked Layout、Wide Layout三種界面布局
3益兄、Minimize to Tray:最小化Fiddler到系統(tǒng)托盤(快捷鍵:CTRL+M )
4锻梳、Squish Session List:控制回話列表是否水平收縮。
5净捅、AutoScroll Session list:添加新的回話時(shí)疑枯,自動(dòng)滾動(dòng)到回話列表底部
14.5 工具欄
1.備注功能
2.重新發(fā)送請(qǐng)求,快捷鍵:R鍵蛔六。
3.刪除請(qǐng)求
4.當(dāng)有請(qǐng)求前斷點(diǎn)時(shí)荆永,點(diǎn)擊去發(fā)送請(qǐng)求。
5.流模式国章。(默認(rèn)是緩沖模式)
6.解碼
7.保持回話的數(shù)量具钥。
8.選擇你想要抓包或者監(jiān)聽的程序
9.查找
10.保存所有會(huì)話,文件名以.saz為擴(kuò)展名
11.截圖
12.計(jì)時(shí)器
13.快捷的打開IE瀏覽器
14.清除IE緩存
15.文本的編碼解碼工具
16.分離面板
17.MSDN查詢
18.本機(jī)的信息
14.6 會(huì)話列表
1.請(qǐng)求的ID編號(hào)
2.http響應(yīng)狀態(tài)碼
3.會(huì)話使用的協(xié)議
4.請(qǐng)求發(fā)送到的服務(wù)器主機(jī)名
5.數(shù)據(jù)包在服務(wù)器中的路徑和文件
6.響應(yīng)body的字節(jié)數(shù)
7.響應(yīng)頭信息Cache-Control的值
8液兽、響應(yīng)頭信息Content-Type的值
9.發(fā)起請(qǐng)求的本地windows進(jìn)程
10.注釋
11.自定義備注
14.7 功能頁(yè)簽
14.7.1 Statistics頁(yè)簽
通過該頁(yè)簽骂删,用戶可以通過選擇多個(gè)會(huì)話來得到這幾個(gè)會(huì)話的總的信息統(tǒng)計(jì),比如多個(gè)請(qǐng)求傳輸?shù)淖止?jié)數(shù)四啰。訪問頁(yè)面時(shí)選擇第一個(gè)請(qǐng)求和最后一個(gè)請(qǐng)求宁玫,可獲得整個(gè)頁(yè)面加載所消耗的總體時(shí)間。從條形圖表中還可以分別出哪些請(qǐng)求耗時(shí)最多拟逮,從而對(duì)頁(yè)面的訪問進(jìn)行速度性能優(yōu)化撬统。
14.7.2 inspectors頁(yè)簽(常用頁(yè)簽)
<meta charset="utf-8">
它提供headers适滓、textview敦迄、hexview,Raw等多種方式查看一條http請(qǐng)求的請(qǐng)求和響應(yīng),它分為上下兩部分:上部分為請(qǐng)求展示凭迹,下部分為響應(yīng)展示罚屋。
14.7.3 AutoResponse頁(yè)簽(常用頁(yè)簽)
它可以抓取在線頁(yè)面保存到本地進(jìn)行調(diào)試,大大減少了在線調(diào)試的困難嗅绸,可以讓我們修改服務(wù)器端返回的數(shù)據(jù)脾猛,例如讓返回都是404的數(shù)據(jù)包讀取本地文件作為返回內(nèi)容。
14.7.4 composer頁(yè)簽常用頁(yè)簽)
支持手動(dòng)構(gòu)建和發(fā)送HTTP鱼鸠,HTTPS和FTP請(qǐng)求猛拴,我們還可以從回話列表中拖曳回話羹铅,把它放到composer選項(xiàng)卡中,當(dāng)我們點(diǎn)擊Execute按鈕時(shí)則把請(qǐng)求發(fā)送到服務(wù)器端愉昆。
14.7.5 FiddlerScripts頁(yè)簽
打開Fiddler腳本編輯职员。
log頁(yè)簽:
打印日志
14.7.6 Filters頁(yè)簽(常用頁(yè)簽)
過濾器可以對(duì)左側(cè)的數(shù)據(jù)流列表進(jìn)行過濾,我們可以標(biāo)記跛溉、修改或隱藏某些特征的數(shù)據(jù)流焊切。
14.7.7 Timeline頁(yè)簽
時(shí)間軸,也稱為Fiddler的瀑布圖芳室,展示網(wǎng)絡(luò)請(qǐng)求時(shí)間的功能专肪。每個(gè)網(wǎng)絡(luò)請(qǐng)求都會(huì)經(jīng)歷域名解析、建立連接堪侯、發(fā)送請(qǐng)求嚎尤、接受數(shù)據(jù)等階段。把多個(gè)請(qǐng)求以時(shí)間作為X軸伍宦,用圖表的形式展現(xiàn)出來诺苹,就形成了瀑布圖。在左側(cè)會(huì)話窗口點(diǎn)擊一個(gè)或多個(gè)回話雹拄,Timeline 便會(huì)顯示指定內(nèi)容從服務(wù)端傳輸?shù)娇蛻舳说臅r(shí)間收奔。
14.7.8 命令行
help 打開官方的使用頁(yè)面介紹,所有的命令都會(huì)列出來滓玖。
cls 清屏 (Ctrl+x 也可以清屏)
select 選擇所有相應(yīng)類型的回話(如select image或select css)坪哄。
?sometext 查找字符串并高亮顯示查找到的會(huì)話。
size 選擇請(qǐng)求響應(yīng)大小小于size字節(jié)的會(huì)話势篡。
=status/=method/@host 查找狀態(tài)翩肌、方法、主機(jī)相對(duì)應(yīng)的會(huì)話
1uit 退出fiddler
bpafter xxx 中斷URL包含指定字符的全部回話響應(yīng)
bps xxx 中斷HTTP響應(yīng)狀態(tài)為指定字符的全部回話響應(yīng)禁悠。
bpv xxx 中斷指定請(qǐng)求方式的全部回話響應(yīng)
bpm xxx 中斷指定請(qǐng)求方式的全部回話響應(yīng)念祭。等同于bpv xxx
bpu xxx: 與bpafter類似。
14.8 狀態(tài)欄
1碍侦、顯示的Fiddler是否處于捕捉狀態(tài)(開啟/關(guān)閉狀態(tài)),可以點(diǎn)擊該區(qū)域切換
2粱坤、顯示當(dāng)前捕捉哪些進(jìn)程。
All Processes 捕獲所有進(jìn)程的請(qǐng)求
Web Browsers 捕獲 Web 瀏覽器的請(qǐng)求瓷产,應(yīng)該特指 IE
Non-Browser 捕獲非 Web 瀏覽器的請(qǐng)求
Hide All 隱藏所有請(qǐng)求
3站玄、顯示當(dāng)前斷點(diǎn)設(shè)置狀態(tài),通過鼠標(biāo)點(diǎn)擊切換濒旦。有三種:
不設(shè)置斷點(diǎn)
所有請(qǐng)求在斷點(diǎn)處被暫停
所有響應(yīng)在斷點(diǎn)處被暫停
4株旷,顯示當(dāng)前共捕獲了多少回話(如:300,表示共捕獲了300個(gè)會(huì)話尔邓,如:10/300晾剖,表示當(dāng)前選擇10個(gè)會(huì)話锉矢,共捕獲300個(gè)會(huì)話)。
5齿尽,第五區(qū)塊沈撞,描述當(dāng)前狀態(tài)。
如果是剛打開Fiddler雕什,會(huì)顯示什么時(shí)間加載了CustomRules.js缠俺;如果選擇了一個(gè)會(huì)話,會(huì)顯示該會(huì)話的URL贷岸;如果在命令行輸入一個(gè)命令壹士,就會(huì)顯示命令相關(guān)信息。
14.9 web抓包
我們雙擊打開軟件偿警,進(jìn)入到如下的一個(gè)界面躏救,然后點(diǎn)擊某一個(gè)請(qǐng)求,你會(huì)發(fā)現(xiàn)請(qǐng)求的內(nèi)容是一堆明顯不對(duì)的文字螟蒸,然后該請(qǐng)求的左邊是一個(gè)鎖的樣式盒使,聯(lián)想到https加密,你會(huì)發(fā)現(xiàn)原因可能是沒有配置Fiddler七嫌。然后解釋一下右邊的默認(rèn)返回內(nèi)容少办,第一句是“這是一個(gè)CONNECT隧道,加密的HTTPS流量通過該隧道流動(dòng)诵原∮⒓耍”,就證實(shí)了我們的猜測(cè)绍赛,果然是因?yàn)閔ttps加密的原因蔓纠。
那么如何配置FIddler來解析這些加密的請(qǐng)求呢?
方法一:是查官網(wǎng)的安裝文檔吗蚌,
方法二:看提示腿倚,軟件公司還是很人性化的在返回內(nèi)容里面提示了需要在哪里設(shè)置,就是第二行那一句:enable the Tools > Options > HTTPS > Decrypt HTTPS traffic option.
我們按照提示來進(jìn)行設(shè)置蚯妇,先在左上角的工具欄里面找到Tools敷燎,然后依次選擇Options、HTTPS 侮措,然后勾選Decrypt HTTPS traffic選項(xiàng)懈叹,勾選后安裝證書乖杠。
安裝證書兩種方法:
勾選后點(diǎn)擊右邊的Actions按鈕選擇“Trust Root Certificate”選項(xiàng)分扎,然后全部選擇是就行了。
勾選后點(diǎn)擊右邊的Actions按鈕選擇第二個(gè)選項(xiàng)將證書導(dǎo)出到桌面胧洒,然后再在對(duì)應(yīng)的瀏覽器里面添加即可畏吓。
然后我們?cè)俅蜷_一個(gè)新的網(wǎng)頁(yè)(例如百度)墨状,查看請(qǐng)求
至此,已經(jīng)可以監(jiān)聽PC端瀏覽器的請(qǐng)求了菲饼。
14.10 移動(dòng)端抓包
首先你的Fiddler所在的電腦和手機(jī)必須處在同一個(gè)局域網(wǎng)內(nèi)(即連著同一個(gè)路由器)肾砂。
查看你的本機(jī)IP地址,在Fiddler的右上角有一個(gè)Online按鈕宏悦,點(diǎn)擊一下會(huì)顯示你的IP信息
配置連接信息:Tools > Options >Connections
端口默認(rèn)是8888镐确,你可以進(jìn)行修改。
-
勾選Allow remote computers to connect選項(xiàng)饼煞,然后重啟Fiddler源葫,再次打開時(shí)會(huì)彈出一個(gè)信息,選擇ok即可砖瞧。
打開你的手機(jī)息堂,找到你所連接的WIFI,長(zhǎng)按選擇修改網(wǎng)絡(luò)块促,輸入密碼后往下拖動(dòng)荣堰,然后勾選顯示高級(jí)選項(xiàng),然后在代理一欄選擇手動(dòng)竭翠,再將你先前查看的IP地址和端口號(hào)輸入進(jìn)去振坚,然后保存。
最后安裝手機(jī)證書斋扰,在手機(jī)瀏覽器一欄輸入電腦的IP地址和端口號(hào)
這里我是192.168.1.157:8888進(jìn)入一個(gè)網(wǎng)頁(yè)屡拨,點(diǎn)擊最下面那個(gè)FiddlerRoot certificate下載證書,下載成功后在設(shè)置里面安裝褥实,安裝步驟:打開高級(jí)設(shè)置->安全->從SD卡安裝證書->找到證書文件->點(diǎn)擊后為證書命名點(diǎn)擊確定即可安裝成功
測(cè)試一下呀狼,比如在手機(jī)上打開抖音app,找到評(píng)論的那一個(gè)請(qǐng)求损离。可以看到我們已經(jīng)成功的找到了評(píng)論所對(duì)應(yīng)的那個(gè)請(qǐng)求
Jmeter組件介紹
<meta charset="utf-8">
一. 性能測(cè)試
1.1. 性能測(cè)試是什么
1.1.1 廣義定義
基于協(xié)議模擬用戶發(fā)出請(qǐng)求哥艇,對(duì)服務(wù)器形成一定負(fù)載,來測(cè)試服務(wù)器的性能指標(biāo)是否滿足要求性能指標(biāo)關(guān)注點(diǎn):時(shí)間性能僻澎、空間性能性能測(cè)試與頁(yè)面無關(guān)
1.1.1 狹義定義
指通過自動(dòng)化的測(cè)試工具模擬多種正常貌踏、峰值以及異常負(fù)載條件來對(duì)系統(tǒng)的各項(xiàng)性能指標(biāo)進(jìn)行測(cè)試。
1.2. 性能測(cè)試工具
二. Jmeter簡(jiǎn)介
2.1. 我們?yōu)槭裁词褂肑meter
開源窟勃,免費(fèi)祖乳,基于Java編寫,可集成到其他系統(tǒng)可拓展各個(gè)功能插件
支持接口測(cè)試秉氧,壓力(負(fù)載和壓力)測(cè)試等多種功能眷昆,支持錄制回放认轨,
入門簡(jiǎn)單相較于自己編寫框架活其他開源工具誊抛,有較為完善的UI界面,便于接口調(diào)試
多平臺(tái)支持,可在Linux随珠,Windows归榕,Mac上運(yùn)行走芋,支持多協(xié)議
2.2. Jmeter的作用
- 接口測(cè)試 面試說postman陈症,因?yàn)榉奖愫糜谩?/li>
- 性能測(cè)試 jmeter,也可以用postman(runner)赖瞒,但是沒有性能指標(biāo)
- 數(shù)據(jù)庫(kù)測(cè)試
2.3. Jmeter怎么用
Windows下Jmeter下載安裝女揭,登錄 http://jmeter.apache.org/download_jmeter.cgi ,根據(jù)自己平臺(tái)栏饮,下載對(duì)應(yīng)文件
2.4. 安裝JAVA環(huán)境
安裝JDK田绑,配置環(huán)境變量(具體步驟不做介紹)
將下載Jmeter文件解壓,打開/bin/jmeter.bat
2.5. Jmeter的目錄結(jié)構(gòu)
/bin 目錄常用文件介紹:
examples:目錄下包含Jmeter使用實(shí)例
ApacheJMeter.jar:JMeter源碼包
jmeter.bat:windows下啟動(dòng)文件
jmeter.sh:Linux下啟動(dòng)文件
jmeter.log:Jmeter運(yùn)行日志文件
jmeter.properties:Jmeter配置文件
jmeter-server.bat:windows下啟動(dòng)負(fù)載生成器服務(wù)文件
jmeter-server:Linux下啟動(dòng)負(fù)載生成器文件
/docs目錄——Jmeter幫助文檔
/extras目錄——提供了對(duì)Ant的支持文件抡爹,可也用于持續(xù)集成
/lib目錄——存放Jmeter依賴的jar包掩驱,同時(shí)安裝插件也放于此目錄
/licenses目錄——軟件許可文件,不用管
/printable_docs目錄——Jmeter用戶手冊(cè)
三. 使用Jmeter測(cè)試快速入門
3.1. 線程組是什么
進(jìn)程: 一個(gè)正在執(zhí)行的程序?qū)?yīng)一個(gè)進(jìn)程
線程: 一個(gè)進(jìn)程有多個(gè)執(zhí)行線程
線程組: 按照線程性質(zhì)對(duì)線程分組冬竟。查看任務(wù)管理器(愛奇藝有多個(gè))
三者關(guān)系: 一個(gè)進(jìn)程有多個(gè)線程組欧穴,一個(gè)線程組有多個(gè)線程
測(cè)試計(jì)劃—線程組—線程組屬性中的線程數(shù)
并發(fā)執(zhí)行:多個(gè)線程同時(shí)執(zhí)行,特點(diǎn):執(zhí)行結(jié)束的順序與開始的順序不一致
順序執(zhí)行:按照線程的啟動(dòng)順序挨個(gè)執(zhí)行
默認(rèn)情況下泵殴,線程組中的線程是并發(fā)執(zhí)行
每一個(gè)線程都要執(zhí)行組內(nèi)的http請(qǐng)求
設(shè)置線程組順序執(zhí)行:勾選測(cè)試計(jì)劃中的(獨(dú)立運(yùn)行每個(gè)線程組)
線程組用來模擬用戶的并發(fā)訪問
3.1.1. 創(chuàng)建線程組
<meta charset="utf-8">
3.1.2. 線程組主要包含三個(gè)參數(shù):
線程數(shù)涮帘、準(zhǔn)備時(shí)長(zhǎng)(Ramp-Up Period(in seconds))、循環(huán)次數(shù)笑诅。
3.1.3. 線程數(shù):
虛擬用戶數(shù)调缨。一個(gè)虛擬用戶占用一個(gè)線程。設(shè)置多少虛擬用戶數(shù)在這里也就是設(shè)置多少個(gè)線程數(shù)吆你。
3.1.4. 準(zhǔn)備時(shí)長(zhǎng)(秒):
設(shè)置的虛擬用戶數(shù)需要多長(zhǎng)時(shí)間全部啟動(dòng)弦叶。如果線程數(shù)為20 ,準(zhǔn)備時(shí)長(zhǎng)為10 妇多,那么需要10秒鐘啟動(dòng)20個(gè)線程伤哺。也就是每秒鐘啟動(dòng)2個(gè)線程。
3.1.5. 循環(huán)次數(shù):
每個(gè)線程發(fā)送請(qǐng)求的次數(shù)者祖。如果線程數(shù)為20 立莉,循環(huán)次數(shù)為100 ,那么每個(gè)線程發(fā)送100次請(qǐng)求七问◎殉埽總請(qǐng)求數(shù)為20*100=2000 。如果勾選了“永遠(yuǎn)”械巡,那么所有線程會(huì)一直發(fā)送請(qǐng)求刹淌,一直到選擇停止運(yùn)行腳本饶氏。
3.1.6. 調(diào)度器
設(shè)置線程組啟動(dòng)的開始時(shí)間和結(jié)束時(shí)間(配置調(diào)度器時(shí),需要勾選循環(huán)次數(shù)為永遠(yuǎn))
3.1.7. 持續(xù)時(shí)間(秒)
測(cè)試持續(xù)時(shí)間芦鳍,會(huì)覆蓋結(jié)束時(shí)間
3.1.8. 啟動(dòng)延遲(秒)
測(cè)試延遲啟動(dòng)時(shí)間嚷往,會(huì)覆蓋啟動(dòng)時(shí)間
3.1.9. 啟動(dòng)時(shí)間
測(cè)試啟動(dòng)時(shí)間葛账,啟動(dòng)延遲會(huì)覆蓋它柠衅。當(dāng)啟動(dòng)時(shí)間已過,手動(dòng)只需測(cè)試時(shí)當(dāng)前時(shí)間也會(huì)覆蓋它籍琳。
3.1.10. 結(jié)束時(shí)間
測(cè)試結(jié)束時(shí)間菲宴,持續(xù)時(shí)間會(huì)覆蓋它。
3.2. 創(chuàng)建http請(qǐng)求
見得最多趋急,所以我們著重講解:
3.3. 指定請(qǐng)求域名喝峦,請(qǐng)求路徑
一個(gè)HTTP請(qǐng)求有著許多的配置參數(shù),下面將詳細(xì)介紹: |
---|
名稱:本屬性用于標(biāo)識(shí)一個(gè)取樣器呜达,建議使用一個(gè)有意義的名稱谣蠢。 |
注釋:對(duì)于測(cè)試沒有任何作用,僅用戶記錄用戶可讀的注釋信息查近。 |
服務(wù)器名稱或IP :HTTP請(qǐng)求發(fā)送的目標(biāo)服務(wù)器名稱或IP地址眉踱。 |
端口號(hào):目標(biāo)服務(wù)器的端口號(hào)。 |
方法:發(fā)送HTTP請(qǐng)求的方法霜威,可用方法包括GET谈喳、POST、HEAD戈泼、PUT婿禽、OPTIONS、TRACE大猛、DELETE等扭倾。 |
Content encoding :內(nèi)容的編碼方式,默認(rèn)值為iso8859 |
路徑:目標(biāo)URL路徑(不包括服務(wù)器地址和端口) |
點(diǎn)擊run測(cè)試挽绩,很麻煩吆录,我們使用postman測(cè)試更簡(jiǎn)單,使用postman操作琼牧。
可以使用剛才的接口文檔中的恢筝,聚合接口中演示一個(gè)。
3.4. 設(shè)置對(duì)應(yīng)的查看內(nèi)容
注意:如果監(jiān)聽器中有jp@gc開頭的巨坊,都是第三方插件
3.5. 查看表格信息
Sample:每個(gè)請(qǐng)求的序號(hào) |
---|
Start Time:每個(gè)請(qǐng)求開始時(shí)間 |
Thread Name:每個(gè)線程的名稱 |
Label:Http請(qǐng)求名稱 |
Sample Time:每個(gè)請(qǐng)求所花時(shí)間撬槽,單位毫秒 |
Status:請(qǐng)求狀態(tài),如果為勾則表示成功趾撵,如果為叉表示失敗侄柔。 |
Bytes:請(qǐng)求的字節(jié)數(shù) |
樣本數(shù)目:也就是上面所說的請(qǐng)求個(gè)數(shù)共啃,成功的情況下等于你設(shè)定的并發(fā)數(shù)目乘以循環(huán)次數(shù) |
平均:每個(gè)線程請(qǐng)求的平均時(shí)間 |
最新樣本:表示服務(wù)器響應(yīng)最后一個(gè)請(qǐng)求的時(shí)間 |
偏離:服務(wù)器響應(yīng)時(shí)間變化、離散程度測(cè)量值的大小暂题,或者移剪,換句話說,就是數(shù)據(jù)的分布薪者。 |
3.6. 查看結(jié)果樹
-
請(qǐng)求的數(shù)據(jù)展示(請(qǐng)求頭信息纵苛,請(qǐng)求參數(shù),,)
-
響應(yīng)的數(shù)據(jù)展示(響應(yīng)碼,響應(yīng)頭,,)
通過察看結(jié)果樹言津,我們可以看到每個(gè)請(qǐng)求的結(jié)果攻人,其中紅色的是出錯(cuò)的請(qǐng)求,綠色的為通過悬槽。
Thread Name:線程組名稱
Sample Start: 啟動(dòng)開始時(shí)間
Load time:加載時(shí)長(zhǎng)
Latency:等待時(shí)長(zhǎng)
Size in bytes:發(fā)送的數(shù)據(jù)總大小
Headers size in bytes:發(fā)送數(shù)據(jù)的其余部分大小
Sample Count:發(fā)送統(tǒng)計(jì)
Error Count:交互錯(cuò)誤統(tǒng)計(jì)
Response code:返回碼
Response message:返回信息
Response headers:返回的頭部信息
3.7. 聚合報(bào)告參數(shù)說明
lable:對(duì)應(yīng)每一個(gè)http請(qǐng)求怀吻,顯示的是http請(qǐng)求的Name,如百度http請(qǐng)求name為baidu |
---|
#Samples:表示這一次的測(cè)試中一共發(fā)出了多少請(qǐng)求初婆,如上圖所示蓬坡,sougou和baidu的http請(qǐng)求每個(gè)都發(fā)出30個(gè)請(qǐng)求 |
Average:平均響應(yīng)時(shí)間,指的是所有的請(qǐng)求的平均響應(yīng)時(shí)間磅叛,如上圖的30個(gè)請(qǐng)求的總的響應(yīng)時(shí)間除以30得出的平均響應(yīng)時(shí)間屑咳,默認(rèn)的情況下是單個(gè)請(qǐng)求的平均響應(yīng)時(shí)間,但當(dāng)使用了“事務(wù)控制器”時(shí)宪躯,則以事物為單位顯示平均響應(yīng)時(shí)間 |
Median:中位數(shù)乔宿,也就是50%用戶的響應(yīng)時(shí)間 |
90%Line:90%用戶的響應(yīng)時(shí)間 |
Min:最小響應(yīng)時(shí)間 |
Max:最大的響應(yīng)時(shí)間 |
Error%:本次測(cè)試中出現(xiàn)錯(cuò)誤的請(qǐng)求的數(shù)量/請(qǐng)求的總數(shù),如上圖所示访雪,本次的測(cè)試中详瑞,sougou的http請(qǐng)求66.6%的請(qǐng)求出錯(cuò),而baidu的請(qǐng)求則沒有出錯(cuò)的請(qǐng)求 |
Throughput:吞吐量臣缀,默認(rèn)情況下表示每秒完成的請(qǐng)求數(shù)坝橡,如上圖所示,每秒完成的請(qǐng)求數(shù)分別為6.6個(gè)每秒精置,6.2個(gè)每秒 |
Recived KB/Sec:每秒從服務(wù)器端接收到的數(shù)據(jù)量计寇,以kb為計(jì)算的單位 |
掌握:平均時(shí)間、錯(cuò)誤率脂倦、吞吐量番宁。
<meta charset="utf-8">
3.8. 圖形結(jié)果
作用:通過圖形展示出本次性能測(cè)試數(shù)據(jù)的分布。 圖形結(jié)果一般作為聚合報(bào)告的分析輔佐
樣本數(shù)目:總共發(fā)送到服務(wù)器的請(qǐng)求數(shù)赖阻。
最新樣本:代表時(shí)間的數(shù)字蝶押,是服務(wù)器響應(yīng)最后一個(gè)請(qǐng)求的時(shí)間。
吞吐量:服務(wù)器每分鐘處理的請(qǐng)求數(shù)火欧。
平均值:總運(yùn)行時(shí)間除以發(fā)送到服務(wù)器的請(qǐng)求數(shù)棋电。
中間值:有一半的服務(wù)器響應(yīng)時(shí)間低于該值而另一半高于該值茎截。
偏離:表示服務(wù)器響應(yīng)時(shí)間變化、離散程度測(cè)量值的大小赶盔。
四. Jmeter主要組件介紹
- 測(cè)試計(jì)劃:使用 JMeter 進(jìn)行測(cè)試的起點(diǎn)企锌,它是其它 JMeter 測(cè)試元件的容器。
- 線程組:代表一定數(shù)量的并發(fā)用戶于未,它可以用來模擬并發(fā)用戶發(fā)送請(qǐng)求撕攒。實(shí)際的請(qǐng)求內(nèi)容在Sampler中定義,它被線程組包含沉眶〈蛉矗可以在“測(cè)試計(jì)劃->添加->線程組”來建立它杉适,然后在線程組面板里有幾個(gè)輸入欄:線程數(shù)谎倔、Ramp-Up Period(in seconds)、循環(huán)次數(shù)猿推,其中Ramp-Up Period(in seconds)表示在這時(shí)間內(nèi)創(chuàng)建完所有的線程片习。如有8個(gè)線程,Ramp-Up = 200秒蹬叭,那么線程的啟動(dòng)時(shí)間間隔為200/8=25秒藕咏,這樣的好處是:一開始不會(huì)對(duì)服務(wù)器有太大的負(fù)載。線程組是為模擬并發(fā)負(fù)載而設(shè)計(jì)秽五。
- 取樣器(Sampler):模擬各種請(qǐng)求孽查。所有實(shí)際的測(cè)試任務(wù)都由取樣器承擔(dān),存在很多種請(qǐng)求坦喘。如:HTTP 盲再、ftp請(qǐng)求等等。
- 監(jiān)聽器:負(fù)責(zé)收集測(cè)試結(jié)果瓣铣,同時(shí)也被告知了結(jié)果顯示的方式答朋。功能是對(duì)取樣器的請(qǐng)求結(jié)果顯示、統(tǒng)計(jì)一些數(shù)據(jù)(吞吐量棠笑、KB/S……)等梦碗。
- 斷言:用于來判斷請(qǐng)求響應(yīng)的結(jié)果是否如用戶所期望,是否正確蓖救。它可以用來隔離問題域洪规,即在確保功能正確的前提下執(zhí)行壓力測(cè)試。這個(gè)限制對(duì)于有效的測(cè)試是非常有用的循捺。
- 邏輯控制器:允許自定義JMeter發(fā)送請(qǐng)求的行為邏輯斩例,它與Sampler結(jié)合使用可以模擬復(fù)雜的請(qǐng)求序列。
- 定時(shí)器:負(fù)責(zé)定義請(qǐng)求(線程)之間的延遲間隔巨柒,模擬對(duì)服務(wù)器的連續(xù)請(qǐng)求樱拴。
- 配置元件維護(hù)Sampler需要的配置信息柠衍,并根據(jù)實(shí)際的需要會(huì)修改請(qǐng)求的內(nèi)容。
- 前置處理器和后置處理器負(fù)責(zé)在生成請(qǐng)求之前和之后完成工作晶乔。前置處理器常常用來修改請(qǐng)求的設(shè)置珍坊,后置處理器則常常用來處理響應(yīng)的數(shù)據(jù)。
4.1. 測(cè)試計(jì)劃
1.測(cè)試計(jì)劃就是一個(gè)完整的場(chǎng)景
2.“獨(dú)立運(yùn)行每個(gè)線程組” :勾選以后所有的線程組都是順序執(zhí)行的了正罢。一般不勾選阵漏,讓所有 的線程組并發(fā)啟動(dòng)九默。
3.“函數(shù)測(cè)試模式” :勾選后會(huì)有詳細(xì)的請(qǐng)求記錄好渠,消耗資源,影響客戶端性能拼窥。一般不勾選裆泳。
4.用戶定義的變量:全局變量叹洲,測(cè)試計(jì)劃上可以添加用戶定義的變量。一般添加一些系統(tǒng)常用的配置工禾。如果測(cè)試過程中想切換環(huán)境运提,切換配置,一般不建議在測(cè)試計(jì)劃上添加變量
4.2. 線程組
(1)thread group(線程組)
這個(gè)就是我們通常添加運(yùn)行的線程闻葵。通俗的講一個(gè)線程組民泵,可以看做一個(gè)虛擬用戶組,線程組中的每個(gè)線程都可以理解為一個(gè)虛擬用戶槽畔。
(2)setup thread group
一種特殊類型的ThreadGroup的栈妆,可用于執(zhí)行預(yù)測(cè)試操作。這些線程的行為完全像一個(gè)正常的線程組元件厢钧。不同的是鳞尔,這些類型的線程執(zhí)行測(cè)試前進(jìn)行定期線程組的執(zhí)行;類似LoadRunner的init坏快,測(cè)試開始時(shí)進(jìn)行初始化的工作铅檩。
(3)teardown thread group
一種特殊類型的ThreadGroup的,可用于執(zhí)行測(cè)試后動(dòng)作莽鸿。這些線程的行為完全像一個(gè)正常的線程組元件昧旨。不同的是,這些類型的線程執(zhí)行測(cè)試結(jié)束后執(zhí)行定期的線程組祥得;類似LoadRunnner的end兔沃,測(cè)試結(jié)束時(shí)進(jìn)行回收工作。
4.3. 取樣器(Http請(qǐng)求)
關(guān)于http請(qǐng)求的的屬性參數(shù)說明:
1)名稱:用于標(biāo)識(shí)一個(gè)sample级及。建議使用一個(gè)有意義的名稱
2)注釋:對(duì)于測(cè)試沒任何影響乒疏,僅用來記錄用戶可讀的注釋信息
3)服務(wù)器名稱或IP:http請(qǐng)求發(fā)送的目標(biāo)服務(wù)器名稱或者IP地址,比如http://www.baidu.com
4)端口號(hào):目標(biāo)服務(wù)器的端口號(hào)饮焦,默認(rèn)值為80怕吴,可不填
5)協(xié)議:向目標(biāo)服務(wù)器發(fā)送http請(qǐng)求時(shí)的協(xié)議窍侧,http/https,大小寫不敏感转绷,默認(rèn)http
6)方法:發(fā)送http請(qǐng)求的方法(鏈接:http://www.cnblogs.com/imyalost/p/5630940.html)
7)Content encoding:內(nèi)容的編碼方式(Content-Type=application/json;charset=utf-8)
8)路徑:目標(biāo)的URL路徑(不包括服務(wù)器地址和端口)
9)自動(dòng)重定向:如果選中該項(xiàng)伟件,發(fā)出的http請(qǐng)求得到響應(yīng)是301/302,jmeter會(huì)重定向到新的界面
10)Use keep Alive:jmeter 和目標(biāo)服務(wù)器之間使用 Keep-Alive方式進(jìn)行HTTP通信(默認(rèn)選中)
11)Use multipart/from-data for HTTP POST :當(dāng)發(fā)送HTTP POST 請(qǐng)求時(shí)议经,使用
12)Parameters斧账、Body Data以及Files Upload的區(qū)別:
1. parameter是指函數(shù)定義中參數(shù),而argument指的是函數(shù)調(diào)用時(shí)的實(shí)際參數(shù)
2. 簡(jiǎn)略描述為:parameter=形參(formal parameter)煞肾, argument=實(shí)參(actual parameter)
3.在不很嚴(yán)格的情況下咧织,現(xiàn)在二者可以混用,一般用argument籍救,而parameter則比較少用
While defining method, variables passed in the method are called parameters.
當(dāng)定義方法時(shí)习绢,傳遞到方法中的變量稱為參數(shù).
While using those methods, values passed to those variables are called arguments.
當(dāng)調(diào)用方法時(shí),傳給變量的值稱為引數(shù).(有時(shí)argument被翻譯為“引數(shù)“)
4钧忽、Body Data指的是實(shí)體數(shù)據(jù)毯炮,就是請(qǐng)求報(bào)文里面主體實(shí)體的內(nèi)容逼肯,一般我們向服務(wù)器發(fā)送請(qǐng)求耸黑,攜帶的實(shí)體主體參數(shù),可以寫入這里
5篮幢、Files Upload指的是:從HTML文件獲取所有有內(nèi)含的資源:被選中時(shí)大刊,發(fā)出HTTP請(qǐng)求并獲得響應(yīng)的HTML文件內(nèi)容后還對(duì)該HTML
進(jìn)行Parse 并獲取HTML中包含的所有資源(圖片、flash等):(默認(rèn)不選中)
如果用戶只希望獲取特定資源三椿,可以在下方的Embedded URLs must match 文本框中填入需要下載的特定資源表達(dá)式缺菌,只有能匹配指定正則表達(dá)式的URL指向資源會(huì)被下載
4.4. 監(jiān)聽器
監(jiān)聽器(Listener)負(fù)責(zé)收集測(cè)試結(jié)果,同時(shí)也被告知了結(jié)果顯示的方式搜锰。我們常用的包括:聚合報(bào)告伴郁、查看結(jié)果樹、用表格查看結(jié)果蛋叼,都支持將結(jié)果數(shù)據(jù)寫入文件焊傅。其他的添加上去看看就行。聚合報(bào)告前面我們介紹過狈涮,后面是查看結(jié)果樹和用表格查看結(jié)果的截圖狐胎。
<meta charset="utf-8">
4.5. 循環(huán)控制器
4.6. 事務(wù)控制器
作用: 事務(wù)控制器會(huì)生產(chǎn)一個(gè)額外的采樣器,用來統(tǒng)計(jì)該控制器子結(jié)點(diǎn)的所有時(shí)間歌馍。
在線程組下創(chuàng)建事務(wù)控制器
參數(shù):
· Generate parent sample:(選中這個(gè)參數(shù)結(jié)果展示如下圖紅框握巢,否則顯示為下圖藍(lán)框)
· Include duration of timer and pre-post processors in generated sample:選中這一項(xiàng)會(huì)統(tǒng)計(jì)定時(shí)器(timer)的時(shí)間,否則只統(tǒng)計(jì)采樣器(sample)的時(shí)間
創(chuàng)建sample 訪問首頁(yè)和注冊(cè)頁(yè)面
生成聚合報(bào)告
勾選
聚合報(bào)告中只有一項(xiàng)事務(wù)報(bào)告
4.7. 斷言---檢查點(diǎn)
斷言(Assertions)可以用來判斷請(qǐng)求響應(yīng)的結(jié)果是否如用戶所期望的松却。它可以用來隔離問題域暴浦,即在確保功能正確的前提下執(zhí)行壓力測(cè)試溅话。這個(gè)限制對(duì)于有效的測(cè)試是非常有用的。
兩個(gè)重要斷言:響應(yīng)斷言和JSONAssertion
響應(yīng)斷言:
JSON斷言:
4.8. 前置處理器和后置處理器
前置處理器(Pre Processors)和后置處理器(Post Processors)負(fù)責(zé)在生成請(qǐng)求之前和之后完成工作歌焦。前置處理器常常用來修改請(qǐng)求的設(shè)置公荧,后置處理器則常常用來處理響應(yīng)的數(shù)據(jù)。我們主要在動(dòng)態(tài)關(guān)聯(lián)中用到后置處理器的正則表達(dá)式提取器同规。
https://www.cnblogs.com/fengpingfan/p/4755411.html
4.9. 定時(shí)器
定時(shí)器(Timer)負(fù)責(zé)定義請(qǐng)求之間的延遲間隔
五. Jmeter組件參數(shù)化
5.1. 參數(shù)化是什么
動(dòng)態(tài)的獲取并設(shè)置數(shù)據(jù)
5.2. 為什么使用參數(shù)化
執(zhí)行批量操作循狰,批量添加批量刪除,人工效率太低
運(yùn)用程序代替人工獲取并設(shè)置數(shù)據(jù)券勺,安全高效
比如:對(duì)被測(cè)系統(tǒng)的用戶名和密碼進(jìn)行參數(shù)化绪钥,來模擬多個(gè)用戶同時(shí)登錄系統(tǒng)
5.3. 參數(shù)化實(shí)現(xiàn)之用戶自定義變量
通過這個(gè)功能,能實(shí)現(xiàn)多接口共享數(shù)據(jù)关炼,修改一條即可修改全部
Filename:所需數(shù)據(jù)文件的路徑程腹。如和腳本同一路徑,可直接填寫文件名
File encoding:編碼和文件保持一致即可儒拂,默認(rèn)為ANSI寸潦。如有中文,建議為UTF-8
Variable Names:引用變量時(shí)的變量名社痛,對(duì)應(yīng)數(shù)據(jù)文件中的每一列见转,以逗號(hào)分隔。如不填寫蒜哀,文件的第一行數(shù)據(jù)將被讀取為變量名
Delimiter:在.txt斩箫、.dat文件中,可以用逗號(hào)(,)或者Tab鍵(\t)來區(qū)分列與列
Allow quote data:選項(xiàng)選為“true”的時(shí)候?qū)θ亲址奶幚沓霈F(xiàn)亂碼
Recycle on EOF:到數(shù)據(jù)文件結(jié)尾時(shí)是否循環(huán)讀取撵儿。設(shè)置為True時(shí)乘客,線程數(shù)過多,數(shù)據(jù)文件讀取到最后一行時(shí)淀歇,會(huì)再次從第一行開始讀取易核。設(shè)置為False,到達(dá)文件結(jié)尾時(shí)如繼續(xù)讀取浪默,則值會(huì)默認(rèn)為<EOF>牡直,可通過設(shè)置jmeter屬性csvdataset.eofstring來改變?cè)撝怠?br>
Stop thread on EOF:Recycle on EOF設(shè)置為False,Stop thread on EOF設(shè)置為True浴鸿,則讀取數(shù)據(jù)文件最后一行后井氢,停止測(cè)試,不管還有多少線程組未執(zhí)行岳链。
Sharing mode:共享模式花竞。默認(rèn)在所有線程組中使用,可選擇每個(gè)線程組單獨(dú)打開
相同的部分使用用戶自定義變量
只需要修改一次接口
效果展示
<meta charset="utf-8">
5.4. 參數(shù)化實(shí)現(xiàn)之CSV Data Set Config
添加CSV Data Set Config:
添加界面:
通過這個(gè)組件可以動(dòng)態(tài)獲取并設(shè)置數(shù)據(jù),實(shí)現(xiàn)批量添加操作
名詞解釋:
Filename:所需數(shù)據(jù)文件的路徑约急。如和腳本同一路徑零远,可直接填寫文件名
File encoding:編碼和文件保持一致即可,默認(rèn)為ANSI厌蔽。如有中文牵辣,建議為UTF-8
Variable Names:引用變量時(shí)的變量名,對(duì)應(yīng)數(shù)據(jù)文件中的每一列奴饮,以逗號(hào)分隔纬向。Delimiter:在.txt、.dat文件中戴卜,可以用逗號(hào)(,)或者Tab鍵(\t)來區(qū)分列與列
Allow quote data:選項(xiàng)選為“true”的時(shí)候?qū)θ亲址奶幚沓霈F(xiàn)亂碼
Recycle on EOF:到數(shù)據(jù)文件結(jié)尾時(shí)是否循環(huán)讀取逾条。設(shè)置為True時(shí),線程數(shù)過多投剥,數(shù)據(jù)文件讀取到最后一行時(shí)师脂,會(huì)再次從第一行開始讀取。設(shè)置為False江锨,到達(dá)文件結(jié)尾時(shí)如繼續(xù)讀取吃警,則值會(huì)默認(rèn)為<EOF>,可通過設(shè)置jmeter屬性csvdataset.eofstring來改變?cè)撝怠?Stop thread on EOF:Recycle on EOF設(shè)置為False啄育,Stop thread on EOF設(shè)置為True酌心,則讀取數(shù)據(jù)文件最后一行后,停止測(cè)試灸撰,不管還有多少線程組未執(zhí)行谒府。
Sharing mode:共享模式。默認(rèn)在所有線程組中使用浮毯,可選擇每個(gè)線程組單獨(dú)打開
添加引用文件:
引用:
在jmeter中添加
線程數(shù)改為某個(gè)值
查看結(jié)果樹:
其他:
- 線程組線程數(shù)改為大于文件中數(shù)據(jù)的處理:
遇到結(jié)束符在循環(huán)
遇到結(jié)束符停止線程 - 如果數(shù)據(jù)來自數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)導(dǎo)出txt文件
<meta charset="utf-8">
5.5. 使用Jmeter函數(shù)助手(文件中不要出現(xiàn)中文):
1、點(diǎn)擊 選項(xiàng)-->函數(shù)助手 調(diào)出函數(shù)助手對(duì)話框
2泰鸡、選擇 _CSVRead 函數(shù)(下圖第一個(gè)框)
3债蓝、函數(shù)參數(shù):
1)第一個(gè)參數(shù):填寫文件路徑。
2)第二個(gè)參數(shù):文件列號(hào)是從0開始的盛龄,第一列0饰迹、第二列1、第三列2余舶、依次類推,然后點(diǎn)擊【生成】按鈕啊鸭,則會(huì)自動(dòng)生成我們需要的參數(shù)化函數(shù)。
3) 復(fù)制生成的參數(shù)化函數(shù)匿值, copy過程需要使用的地方即可赠制。
4) _Random函數(shù)是從某數(shù)據(jù)段隨機(jī)讀取數(shù)據(jù)替換參數(shù),當(dāng)需要添加多條數(shù)據(jù)記錄且某些字段需要唯一性時(shí)使用挟憔。
六. Jmeter正則表達(dá)式提取
6.1. 使用正則提取
運(yùn)用Jmeter正則提取器钟些,可以從請(qǐng)求的響應(yīng)結(jié)果中取到需要的內(nèi)容烟号,從而實(shí)現(xiàn)關(guān)聯(lián)。關(guān)聯(lián)是請(qǐng)求與請(qǐng)求之間存在數(shù)據(jù)依賴關(guān)系政恍,需要從上一個(gè)請(qǐng)求獲取下一個(gè)請(qǐng)求需要回傳回去的數(shù)據(jù)
正則表達(dá)式(regular expression)描述了一種字符串匹配的模式(pattern)汪拥,可以用來檢查一個(gè)串是否含有某種子串、將匹配的子串替換或者從某個(gè)串中取出符合某個(gè)條件的子串等篙耗。
字符 | 描述 |
---|---|
* | 匹配前面的子表達(dá)式零次或多次迫筑。例如,zo* 能匹配 "z" 以及 "zoo"宗弯。* 等價(jià)于{0,}铣焊。 |
+ | 匹配前面的子表達(dá)式一次或多次。例如罕伯,'zo+' 能匹配 "zo" 以及 "zoo"曲伊,但不能匹配 "z"。+ 等價(jià)于 {1,}追他。 |
? | 匹配前面的子表達(dá)式零次或一次坟募。例如,"do(es)?" 可以匹配 "do" 邑狸、 "does" 中的 "does" 懈糯、 "doxy" 中的 "do" 。? 等價(jià)于 {0,1}单雾。 |
( ) | 標(biāo)記一個(gè)子表達(dá)式的開始和結(jié)束位置赚哗。子表達(dá)式可以獲取供以后使用。 |
. | 匹配除換行符 \n 之外的任何單字符硅堆。要匹配 . 屿储,請(qǐng)使用 . 。 |
構(gòu)造正則表達(dá)式的方法和創(chuàng)建數(shù)學(xué)表達(dá)式的方法一樣渐逃。也就是用多種元字符與運(yùn)算符可以將小的表達(dá)式結(jié)合在一起來創(chuàng)建更大的表達(dá)式够掠。正則表達(dá)式的組件可以是單個(gè)的字符、字符集合茄菊、字符范圍疯潭、字符間的選擇或者所有這些組件的任意組合。
正則表達(dá)式提取的相關(guān)設(shè)置
說明:
(1)引用名稱:下一個(gè)請(qǐng)求要引用的參數(shù)名稱面殖,如填寫title竖哩,則可用${title}引用它。
(2)正則表達(dá)式:
():括起來的部分就是要提取的脊僚。
.:匹配任何字符串相叁。
+:一次或多次。
?:不要太貪婪,在找到第一個(gè)匹配項(xiàng)后停止钝荡。
(3)模板:用$$引用起來街立,如果在正則表達(dá)式中有多個(gè)正則表達(dá)式,則可以是$2$$3$等等埠通,表示解析到的第幾個(gè)值給title赎离。如:$1$表示解析到的第1個(gè)值
(4)匹配數(shù)字:0代表隨機(jī)取值,1代表全部取值端辱,通常情況下填0
(5)缺省值:如果參數(shù)沒有取得到值梁剔,那默認(rèn)給一個(gè)值讓它取。
案例:api接口