Apache - Jmeter 安裝方法:準(zhǔn)備好Jmeter安裝包,,解壓到D盤jmeter文件夾 此軟件依賴于jdk 打開環(huán)境變量,新建系統(tǒng)變量JMETER_HOME,,路徑為自己jmeter的bin文件夾所在所在 路徑,。如:D:\apache-jmeter-3.0(不含/bin) 配置CLASSPATH變量,路徑后增加: %JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar; 找到j(luò)meter的bin目錄jmeter.bat雙擊,,然后將其發(fā)送到桌面快捷方式
? 接口測試?yán)碚摚?/h2>什么是接口測試,?接口測試是測試系統(tǒng)組件之間數(shù)據(jù)傳輸?shù)囊环N測試,主要檢測系統(tǒng)與系統(tǒng)之間或系統(tǒng)與 內(nèi)部組件之間的數(shù)據(jù)正確性,。
接口測試的原理是什么,?接口測試的原理就是模擬客戶端向服務(wù)器發(fā)出請求,服務(wù)器接收請求之后,,對請求做出 處理并把響應(yīng)結(jié)果返回給客戶端,。
接口文檔包含哪些內(nèi)容?(1)請求地址 (2)請求方式 (3)請求參數(shù) (4)參數(shù)詳解(每個(gè)參數(shù)代表什么意思,,如果沒有詳解就去問開發(fā)) (5)響應(yīng)結(jié)果 (6)結(jié)果詳解(響應(yīng)結(jié)果中每個(gè)參數(shù)所代表的意思)
常見的接口協(xié)議類型有什么,?最常見的是http接口和https接口,除此之外還有webservice接口,、dubbo接口等
常見的接口測試工具Jmeter(開源的,,接口/性能)、postman,、soap UI,、load runner(接口/性能)
典型接口的例子:(1)物流訂單信息,一般物流信息都是通過各大物流公司的接口獲取到的 (2)通過攜程等APP訂不同航空公司的機(jī)票,,機(jī)票信息一般都是通過各大航空公司的接獲取到的,。 (3)12306訂票支付的時(shí)候,使用微信,、支付寶,、銀行卡支付都是調(diào)用的接口 (4)軟件實(shí)名認(rèn)證時(shí)驗(yàn)證姓名身份證號是否匹配就是調(diào)用公安系統(tǒng)的接口 (5)綁卡時(shí)需要輸入姓名身份證號銀行卡號也是調(diào)用的銀行系統(tǒng)的接口。
什么時(shí)候開始接口測試,?一般情況下在單元測試之后,,進(jìn)行集成測試的時(shí)候我們進(jìn)行接口測試,,或者在功能測試之前我們會進(jìn)行接口測試。 一般問有沒有做過集成測試,,可以理解為有沒有做過接口測試
為什么要進(jìn)行接口測試(1)現(xiàn)在很多系統(tǒng)都是前后端分離的,,從安全層面上來說,只依賴前端進(jìn)行限制已經(jīng)完全 不能滿足安全需求,,因?yàn)槔@前端太容易了,,這種情況下我們需要去測試接口。 (2)因?yàn)榻涌谥袀鬏數(shù)氖菙?shù)據(jù),,所以我們要測試數(shù)據(jù)的正確性 (3)接口測試能夠覆蓋功能測試覆蓋不到的點(diǎn),,而且接口測試效率更快,覆蓋相對更全面,, 結(jié)合功能測試能夠更好的提高測試覆蓋率,。
接口測試的流程:(1)首先我們要了解需求,熟悉業(yè)務(wù)場景 (2)然后根據(jù)需求文檔,,接口文檔以及業(yè)務(wù)場景來編寫測試用例,。 (3)再進(jìn)行測試用例的評審,征求開發(fā),、測試,、產(chǎn)品的意見對用例進(jìn)行完善 (4)再然后準(zhǔn)備測試數(shù)據(jù),測試工具以及測試用例 (5)最后執(zhí)行接口測試,,提交bug并驗(yàn)證bug測試完畢后發(fā)送測試報(bào)告并確定是否能上線
如果沒有接口文檔我們?nèi)绾稳y試接口,?我們會通過抓包,先把這個(gè)接口的信息抓到然后再去測試這個(gè)接口
Jmeter使用:步驟:抓包 打開jmeter 編輯里 添加 threads users 里 線程組 添加 sampler 里http請求 添加 監(jiān)聽器里 查看結(jié)果樹 打開http請求 設(shè)置請求類型 輸入(拷貝)路徑 參數(shù) 查看結(jié)果樹 點(diǎn)擊啟動 點(diǎn)擊否 設(shè)置展示類型 (HTML) 查看結(jié)果
一,、Jmeter測接口的詳細(xì)步驟:第1步:右鍵點(diǎn)擊測試計(jì)劃選擇 添加- threads(users)-線程組 ? 第2步:右鍵單擊線程組,選擇添加- sampler - HTTP請求 ? 第3步:右鍵單擊線程組,,選擇添加-監(jiān)聽器-查看結(jié)果樹 ? 第4步:打開fiddler,,在抓到的登錄接口上,右鍵單擊那條地址,,copy-just URL復(fù)制網(wǎng)址 第5步:打開jmeter的線程組-HTTP請求,,將復(fù)制的地址粘貼到路徑中 第6步:打開打開fiddler,復(fù)制表單數(shù)據(jù),,然后打開打開jmeter的線程組-HTTP請求,,在 Parameters中點(diǎn)擊下方的Add from Clipboard就可以將復(fù)制的表單數(shù)據(jù)自動粘貼上 ? 第7步:在HTTP請求中方法選擇POST,點(diǎn)擊上方工具欄播放按鈕運(yùn)行,,跳出的彈窗選擇否 ? 第8步:查看結(jié)果樹,,然后在左下角將TEXT改為HTML,然后點(diǎn)擊HTTP請求查看相應(yīng)數(shù)據(jù) ? 二,、Jmeter抓包 (1)瀏覽器配置代理,,主機(jī)127.0.0.1 端口:8888 (2)Jmeter在工作臺右鍵添加-非測試元件- HTTP代理服務(wù)器 (3)點(diǎn)擊HTTP代理服務(wù)器,,將端口改為8888,IP設(shè)置為127.0.0.1目標(biāo)控制器選擇測試 計(jì)劃-線程組,,然后點(diǎn)擊啟動 (4)點(diǎn)擊下方啟動按鈕,,就可以抓包了 錄制腳本(基于抓包)配置好瀏覽器代理,并在Jmeter - 測試計(jì)劃中添加 - Threads -線程組,,在線程組中添加 - 配置元件 - HTTP Cookie管理器,,在線程組中添加 - 監(jiān)聽器 - 察看結(jié)果樹, jmeter - 工作臺- 添加- 非測試元件 - HTTP代理服務(wù)器,。然后設(shè)置HTTP代理服務(wù)器端口號8888和HTTPS Domains為127.0.0.1,,目標(biāo)控制器改為測試計(jì)劃>線程組。然后點(diǎn)擊啟動(可以正常抓包) 清空之前的抓包數(shù)據(jù),。然后在瀏覽器輸入需要錄制腳本的網(wǎng)址,,從第一步操作到最后一步,然后關(guān)閉瀏覽器代理,,停止Jmeter中的HTTP代理服務(wù)器,。 在抓包中將非本次錄制腳本主機(jī)的其他網(wǎng)頁刪除。然后就可以修改操作步驟中的參數(shù),,點(diǎn)擊工具欄啟動按鈕(綠色播放鍵),,出現(xiàn)彈窗,選擇是保存腳本,,選擇否不保存腳本,。然后在結(jié)果樹和網(wǎng)頁中查看效果。
HTTP請求默認(rèn)值的使用(元件)1.在線程組中右鍵添加 - 配置元件 - HTTP請求默認(rèn)值 2.然后在HTTP請求默認(rèn)值同級目錄下添加 - sampler - HTTP請求(可以添加多個(gè)) 3.如果一次測試需要測試HTTP的服務(wù)器IP或路徑相同的多個(gè)接口時(shí),,只要在HTTP請求默認(rèn)值中填寫IP和路徑,,其他的HTTP請求中就可以直接默認(rèn)成HTTP請求默認(rèn)值中填寫的IP和路徑,如果填寫就按照填寫的內(nèi)容執(zhí)行,。 4.如果需要換機(jī)器(IP測試),,那么只需要在HTTP請求默認(rèn)值中修改就可以了,無需每個(gè)HTTP請求都修改,,可節(jié)省很多時(shí)間 ? http cookie管理器(元件)(1)錄制腳本的時(shí)候可以自動保存cookie,,保存登錄狀態(tài) (2)也可以手動把cookie維護(hù)在cookie管理器里邊去保持登錄狀態(tài)
用戶定義的變量(元件)我們可以把一些經(jīng)常變動的參數(shù),維護(hù)在用戶定義的變量里面 當(dāng)下面的http請求需要使用這些參數(shù)的時(shí)候我們直接用${變量名} 去引用用戶定義的變量里面的變量就可以了,。
正則表達(dá)式提取器(1)在某個(gè)HTTP請求下右鍵 添加 - 后置處理器 - 正則表達(dá)式提取器,,然后引用名稱自己新命名,正則表達(dá)式復(fù)制源代碼(中包含這個(gè)變量值的一行代碼在察看結(jié)果樹將查看類型從HTML改為Text可以查看源代碼,,這行代碼在源代碼中必須是唯一的,,如果不唯一則無法定位要取哪個(gè)的值)將變量值改為括號點(diǎn)加問號(.+?)其他的代碼比如空格一定不要刪除,。 (2)在另外一個(gè)HTTP請求中就可以${新的命名}調(diào)用正則表達(dá)式中提取的值,。如下圖 ? ? 如何測試兩個(gè)相互依賴(關(guān)聯(lián))的接口/怎么使上個(gè)請求的返回結(jié)果作為下個(gè)請求的參數(shù) 我們可以使用正則表達(dá)式提取器,,把正則表達(dá)式提取器放到第一個(gè)請求的下面,然后把想要提取的內(nèi)容用(.+?)去代替,,然后起一個(gè)變量名,,當(dāng)下一個(gè)請求(同級)需要調(diào)用這個(gè)返回結(jié)果的時(shí)候就直接在請求的參數(shù)值里面用${變量名}去引用就可以了。 **${變量名****}****學(xué)名叫做參數(shù)化****(.+,?)中****.代表匹配任意字符串****+代表匹配一次或者多次****,?代表找到之后就停止****$1$ 代表匹配第一個(gè)模板****$2$代表匹配第二個(gè)模板****…****以此類推****匹配多個(gè)的時(shí)候用逗號隔開$1$,$2$** 七、隨機(jī)函數(shù)Random/Random String (1)_Random 生成隨機(jī)數(shù)字 ? (2)_Random String 生成隨機(jī)字符串 8代表隨機(jī)生成8位數(shù),,ABCDEFabcdef123456代表范圍在ABCDEFabcdef123456中 ? (3)復(fù)制生成的字符串,,操作查看結(jié)果 GET請求抓到一個(gè)GET請求,然后在jmeter測試計(jì)劃中右鍵添加線程組,,然后在線程組中添加一個(gè)HTTP請求,,然后在HTTP請求中改參數(shù),請求方式為GET,,服務(wù)器名,、路徑輸入上,參數(shù)直接跟在路徑后以,?分割或者將參數(shù)放在parameters中 CSV(讀取*TXT*中的測試用例)批量運(yùn)行用例加響應(yīng)斷言**斷言:判斷預(yù)期結(jié)果是否與實(shí)際結(jié)果一致 (1)在測試計(jì)劃中新建線程組,,然后在線程組中添加-配置元件-CSV Data Set Config (2)在桌面(自己選擇路徑)新建一個(gè)txt文件,輸入?yún)?shù): 如lee011,[email protected],000000,13133132532,注冊成功(每個(gè)變量值間使用,隔開,,每行 代表執(zhí)行一次的所有參數(shù),,注冊成功是預(yù)期結(jié)果,在下方在變量名中命名為duanyan) (3)在CSV Data Set Config中將filename填寫自己寫的TXT文件的完整路徑加文件名 Variable Names填寫文件中變量值相對應(yīng)的變量名 ? (4)新建一個(gè)HTTP請求,,填寫參數(shù),,參數(shù)中使用${變量名}調(diào)用CSV Data Set Config中的變 量名 ? (5)在HTTP請求下級目錄添加-斷言-響應(yīng)斷言。然后在響應(yīng)斷言的要測試模式中添加 ${duanyan} 其中duanyan為CSV Data Set Config中的一個(gè)變量名,,即TXT文件中變量值 中的預(yù)期結(jié)果那項(xiàng)的變量名(預(yù)期結(jié)果是根據(jù)接口文檔要求來寫的),。模式匹配規(guī)則選 擇包括。線程組中修改線程數(shù)為TXT中用例的個(gè)數(shù) ? (6)在線程組中添加-監(jiān)聽器-察看結(jié)果樹,。然后運(yùn)行在結(jié)果樹中查看結(jié)果,如果實(shí)際運(yùn)行 結(jié)果與預(yù)期結(jié)果一致則顯示綠色通過?不一致代表運(yùn)行結(jié)果與接口文檔規(guī)定的預(yù)期結(jié) 果不符合(即出現(xiàn)BUG),,顯示? 數(shù)據(jù)庫批量對比JDBC Connection Configuration,、JDBC Request加循環(huán)控制器Jmeter中函數(shù)里邊套函數(shù)(如${name_${M}})系統(tǒng)無法識別,需要使用V函數(shù) (1)將數(shù)據(jù)庫配置jar包放在jmeter的bin目錄: D:\apache-jmeter-3.0\bin\mysql-connector-java-5.1.7-bin.jar(Mysql驅(qū)動jar包) (2)打開jmeter的測試計(jì)劃,,點(diǎn)擊瀏覽,,然后將jar包找到選中。 ? (3)在測試計(jì)劃中添加線程組,,在線程組中添加-配置元件-JDBC Connection Configuration 在JDBC Connection Configuration中配置變量名稱Variable Name,,數(shù)據(jù)庫URL(數(shù)據(jù)庫 連接) jdbc:mysql://192.168.2.2:3306/test(mysql的固定格式),, JDBC Driver class配置為:com.mysql.jdbc.Driver(也是固定格式)以及Mysql的賬號密碼: ? (4)在線程組中添加-Sampler-JDBC Request,在其中設(shè)置變量名Variable Name(需要與JDBC Connection Configuration中的變量名一致,,因?yàn)樯婕暗交ハ嗾{(diào)用)然后在SQL Query中 輸入查詢語句,,查詢數(shù)據(jù)庫表中我們需要調(diào)用的幾列資源(通過字段名),然后在下方 Variable Name中自己給查詢的資源列設(shè)置變量名 (5)在線程組中添加-邏輯控制器-循環(huán)控制器,。在循環(huán)控制器下級目錄添加-配置元件-計(jì)數(shù) 器,,在計(jì)數(shù)器中配置技術(shù)參數(shù)以及引用名稱,啟動為1代表從查到的第一條數(shù)據(jù)開始 ? (6)循環(huán)控制器下級目錄中添加HTTP請求,。填寫參數(shù),,參數(shù)中需要調(diào)用Sampler-JDBC Request中定義的變量以及計(jì)數(shù)器中的引用名稱M,因?yàn)樾枰獌纱握{(diào)用${xingming_${M}} 代表引用數(shù)據(jù)庫中的xingming列中的第M行,。系統(tǒng)無法解析,,需要用到函數(shù)助手中的 V函數(shù),將兩次調(diào)用改為${_V(xingming${M}) ?? (7)在線程組中添加-監(jiān)聽器-察看結(jié)果樹,,然后點(diǎn)擊運(yùn)行查看最后的運(yùn)行結(jié)果 最后實(shí)現(xiàn)結(jié)果:調(diào)用數(shù)據(jù)庫中的姓名和電話號碼來批量注冊14次賬號 Cookie元件(維護(hù)登錄狀態(tài))(1)在測試計(jì)劃中添加線程組,,線程組中添加HTTP cookie管理器HTTP請求察看結(jié)果樹 (2)在火狐中登錄,然后瀏覽器打開F12找到cookie,,然后將參數(shù)(名稱,、值、域,、路徑) 復(fù)制,,將復(fù)制的參數(shù)填入到cookie的里 ? ? (3)在網(wǎng)頁中加入購物車,然后通過抓包抓到接口,。將參數(shù)信息填入HTTP請求中 (4)點(diǎn)擊運(yùn)行,,然后在網(wǎng)頁中查看效果。 HTTP信息頭管理器*/*添加圖片(1)在jmeter中添加線程組,,線程組中添加HTTP信息頭管理器,、HTTP請求、察看結(jié)果樹,。 (2)瀏覽器中打開頁面留言,,然后使用工具抓包獲取留言成功的接口,復(fù)制參數(shù),,去其他的只剩參數(shù)名稱和值,。將圖片那兩行參數(shù)刪除。然后打開Files Upload將圖片那兩行信息的參數(shù)名稱和類型添加到Files Upload的參數(shù)名稱和MIME類型內(nèi),。文件名稱填寫自己電腦上圖片位置的完整路徑,。如:C:\Users\Administrator\Desktop\test.png。然后將HTTP請求中Implementation改為HttpClient3.1,,方法改為POST,,并勾選Use multipart-data for POST ? (3)在fiddler中抓取留言頁,,然后打開Inspectors-Headers右鍵單擊其中內(nèi)容選擇復(fù)制全部 信息頭(Copy All Headers),然后在HTTP信息頭管理器中將復(fù)制的全部信息頭添加到參 數(shù)中 (4)點(diǎn)擊運(yùn)行查看結(jié)果 測HTTPS方法將HTTP請求中的協(xié)議改為https 端口號改為443 Postman安裝先安裝.Net4.5,然后安裝postman Postman使用Postman主要用來測試接口是否可用,,使用斷言來判斷通過的數(shù)量以及不通過的數(shù)量 在postman中輸入網(wǎng)址,,參數(shù)、tests點(diǎn)擊send查看結(jié)果,。
|