1. 程式人生 > >自動化接口測試一

自動化接口測試一

每次 head 哪裏 開始 輸入 目的 你在 json 模板

一,接口概念

1)系統對外的接口:比如你要從別的網站或服務器上獲取資源或信息,別人肯定不會把數據庫共享給你,他只能給你提供一個他們寫好的方法來獲取數據,你引用他提供的接口就能使用他寫好的方法,從而達到數據共享的目的,比如說咱們用的app、網址這些它在進行數據處理的時候都是通過接口來進行調用的。

2)程序內部的接口:方法與方法之間,模塊與模塊之間的交互,程序內部拋出的接口,比如bbs系統,有登錄模塊、發帖模塊等等,那你要發帖就必須先登錄,要發帖就得登錄,那麽這兩個模塊就得有交互,它就會拋出一個接口,供內部系統進行調用。

二,接口分類:常用webservice和http api

1)webservice接口:是走soap協議通過http傳輸,請求報文和返回報文都是xml格式的,我們在測試的時候都用通過工具才能進行調用,測試。

2)http api接口:是走http協議,通過路徑來區分調用的方法,請求報文都是key-value形式的,返回報文一般都是json串,有get和post等方法,這也是最常用的兩種請求方式。

三,前後端概念

前端是什麽呢,對於web端來說,咱們使用的網頁,打開的網站,這都是前端,這些都是html、css寫的;對於app端來說呢,它就是咱們用的app,android或者object-C(開發ios上的app)開發的,它的作用就是顯示頁面,讓我們看到漂亮的頁面,以及做一些簡單的校驗,比如說非空校驗,咱們在頁面上操作的時候,這些業務邏輯、功能,比如說你購物,發微博這些功能是由後端來實現的,後端去控制你購物的時候扣你的余額,發微博發到哪個賬號下面,那前端和後端是怎麽交互的呢,就是通過接口。 說的通俗點,前端負責貌美如花,後端負責養家糊口。

四,接口測試

接口測試是測試系統組件間接口的一種測試。接口測試主要用於檢測外部系統與系統之間以及內部各個子系統之間的交互點。測試的重點是要檢查數據的交換,傳遞和控制管理過程,以及系統間的相互邏輯依賴關系等。

其實接口測試就和普通功能測試沒什麽區別,區別就是功能測試是在頁面上點點點,在頁面上輸入值,提交數據看結果,而接口測試沒有頁面,通過接口規範文檔上的調用地址、請求參數,拼接報文,然後發送請求,檢查返回結果。

五,接口測試的必要性

1)可以發現很多在頁面上操作發現不了的bug

2)檢查系統的異常處理能力

3)檢查系統的安全性、穩定性

4)前端隨便變,接口測好了,後端不用變

六,接口測試流程

1)需求評審,熟悉業務和需求

2)開發提供接口文檔

3)編寫接口測試用例

4)用例評審

5)提測後開始測試

6)提交測試報告

七,接口文檔規範

接口文檔至少包括:接口說明,調用URL,請求方法(get/post), 請求參數,參數類型,請求參數說明

八,如何測http接口

1)url?param=value&param2=value 這種是最簡單的一種,問號前面是請求url,後面是請求的參數名和參數值,多個參數用&來連接 https://api.douban.com/v2/book/search?q=鄒偉偉

2)還有一種就是入參是json串的,那就不能拼接參數了,需要借助工具來完成比如postman

如何測webservice接口

webservice接口怎麽測試呢,他不需要你在拼報文了,會給一個webservice的地址,或者wsdl文件,直接在soapui導入,就可以看到這個webservice裏面的所有接口,也有報文,直接填入參數調用,看返回結果就可以了。 天氣預報wsdl地址:http://www.webservicex.net/globalweather.asmx?wsdl

九,http接口中GET請求和POST請求的區別

1)GET使用URL或Cookie傳參。而POST將數據放在BODY中。

2)GET的URL會有長度上的限制,則POST的數據則可以非常大。

3)POST比GET安全,因為數據在地址欄上不可見。

4)一般get請求用來獲取數據,post請求用來發送數據。

cookie和session

cookie是存儲在瀏覽器客戶端本地的一個鍵值對 ,用於登錄

session是存放在服務器端的一個鍵值對

十,HTTP狀態碼

1)200 2開頭的都表示這個請求發送成功,最常見的就是200,就代表這個請求是ok的,服務器也返回了。

2)300 3開頭的代表重定向,最常見的是302,把這個請求重定向到別的地方了,

3)400 400代表客戶端發送的請求有語法錯誤,401代表訪問的頁面沒有授權,403表示沒有權限訪問這個頁面,404代表沒有這個頁面

4)500 5開頭的代表服務器有異常,500代表服務器內部異常,504代表服務器端超時,沒返回結果

十一,通用接口用例設計

1)通過性驗證:首先肯定要保證這個接口功能是好使的,也就是正常的通過性測試,按照接口文檔上的參數,正常傳入,是否可以返回正確的結果。

2)接口安全:

1.繞過驗證,比如說購買了一個商品,它的價格是300元,那我在提交訂單時候,我把這個商品的價格改成3元,後端有沒有做驗證,更狠點,我把錢改成-3,是不是我的余額還要增加?

2.繞過身份授權,比如說修改商品信息接口,那必須得是賣家才能修改,那我傳一個普通用戶,能不能修改成功,我傳一個其他的賣家能不能修改成功

3.參數是否加密,比如說我登陸的接口,用戶名和密碼是不是加密,如果不加密的話,別人攔截到你的請求,就能獲取到你的信息了,加密規則是否容易破解。

4.密碼安全規則,密碼的復雜程度校驗

3)異常驗證:異常的,也就是我不按照你接口文檔上的要求輸入參數,來驗證接口對異常情況的校驗。比如說必填的參數不填,輸入整數類型的,傳入字符串類型,長度是10的,傳11,總之就是你說怎麽來,我就不怎麽來,其實也就這三種,必傳非必傳、參數類型、入參長度。

4)根據業務邏輯:根據業務邏輯來設計的話,就是根據自己系統的業務來設計用例,這個每個公司的業務不一樣,就得具體的看自己公司的業務了,其實這也和功能測試設計用例是一樣的。 舉個例子,拿bbs來說,bbs的需求是這樣的:登錄失敗5次,就需要等待15分鐘之後再登錄 ;新註冊的用戶需要過了實習期才能發帖 ;刪除帖子扣除積分 。像這樣的你就要把這些測試點列出來,然後再去造數據測試對應的測試點。

十二,接口測試用例模板

接口測試用例包含字段:

1)項目 是哪個項目的

2)模塊 這個接口是屬於哪個功能模塊的

3)用例id

4)接口名稱

5)用例標題 用例是幹嘛的

6)請求方式 GET/POST

7)請求url url地址

8)請求參數

9)前置條件 有依賴的時候,比如說要測登錄失敗3次的

10)結果驗證 預期結果

11)請求報文

12)返回報文

13)測試結果 通過/失敗

14)測試人員

技術分享圖片

十三,用Jmeter做接口測試

1.jmeter測http接口腳本流程

1)添加線程組

2)添加http請求

3)在http請求中寫入接口url、路徑、請求方式、參數

4)添加查看結果樹

5)調用接口、查看返回值

技術分享圖片

2.jmeter-http接口添加header

技術分享圖片

比如獲取所有學生信息接口

技術分享圖片

技術分享圖片

3.Jmeter-http接口腳本添加cookie

技術分享圖片

比如金幣充值

技術分享圖片

技術分享圖片

4.Jmeter-webservice腳本

1)在soapui中新建已經soap項目,導入wsdl地址,獲取到請求報文、SOAPAction和請求url(在soapui的raw中能找到)

2)打開jmeter新建一個線程組

3)新建一個SOAP/XML-RPC Request

4)把url、soapaction和請求報文寫到soaprequest中

5)調用接口、查看返回值

技術分享圖片

技術分享圖片

技術分享圖片

5.jmeter-參數化

1)用戶定義的變量 這種就是為了方便管理參數,只能有一個值,比如說ip地址不經常變化的

技術分享圖片

技術分享圖片

2)函數生成器:函數生成器可以參照一定的規則生成數據,這樣的比如說生成一些隨機數

函數助手的話,可以按照規則生成一些參數,比如說隨機數取當前時間,最常用的就是這兩種。

1.隨機數__Random,可以在你指定的一個範圍內取隨機值

2.取當前時間__time,如果在有一些需要傳時間的情況下可以使用,日期格式是: yyyy-MM-dd HH:mm:ss 年-月-日-小時:分鐘:秒 取唯一id,__UUID,這個就是每次會生成一個隨機的uuid,都是唯一的

技術分享圖片

技術分享圖片

技術分享圖片

3)參數化-從文件中讀取

從文件中讀取的話,讀取文件,取文件內容裏面的參數,給它一個名字 ,使用值 從文件讀取的話,需要在線程組裏面添加一個CSV Data Set Config,它就是做前面兩步的操作的

技術分享圖片

6.jmeter斷言

斷言是什麽呢,它是用來檢查返回結果對不對的。 用來驗證結果是否正確,如果正確的話,就代表這個請求的返回是正確的,如果沒有的話就代表這個請求的結果和我們預期的不一致,這樣我們就可以通斷言來檢查返回結果,測試是否通過。

技術分享圖片

技術分享圖片

7.jmeter關聯

關聯就是做這個事的,它就是獲取到返回的值,然後保存起來,給別的請求使用,或者做一些其他的處理。

技術分享圖片

技術分享圖片

通過上面的關聯就可以把返回中我們想要的值抓到了,給其他請求使用的時候,直接使用${name}即可,name就是你關聯的時候設置的變量名。

8.jmeter操作mysql

1)導入jdbc的jar包,因為jmeter本身不能直接連接mysql,所以需要導入第三方的jar包,來連接mysql

2)創建數據庫連接配置,mysql的url、端口號、賬號、密碼

3)寫sql,執行sql

4)查看結果

Jmeter導入jdbcjar包

技術分享圖片

Jmeter配置mysql連接

1)添加一個JDBC Connection Configuration

2)配置mysql連接池的名稱,後面發sql請求的時候指定連接哪裏

3)數據庫的url:jdbc:mysql://192.168.1.116:3307/bugfree?allowMultiQueries=true

4)數據庫驅動:這裏就是指定連接什麽類型的數據庫,mysql、oracle、SqlServer等等

5)賬號密碼

技術分享圖片

Jmeter數據庫驅動列表

技術分享圖片

Jmeter執行sql

技術分享圖片

Jmeter查看sql執行結果

技術分享圖片

2018-05-21

自動化接口測試一