SoapUI實踐:自動化測試、壓力測試、持續集成

 

由於項目的緣由,前段時間研究並使用了 SoapUI 測試工具進行自測開發的 api。下面將研究的成果展現給你們,但願對須要的人有所幫助。html


SoapUI 是什麼?

SoapUI 是一個開源測試工具,經過 soap/http 來檢查、調用、實現 Web Service 的功能/負載/符合性測試。該工具既可做爲一個單獨的測試軟件使用,也可利用插件集成到 Eclipse,maven2.X,Netbeans 和 intellij 中使用。java


SoapUI 的安裝

下載地址,最好下載最新版本安裝包,由於 SoapUI 是基於 java 開發的測試工具,3.0 之前版本的安裝包沒有集成 JRE,這樣就得本身安裝和配置 java 運行環境了。api


SoapUI 的使用

1. 在主界面 File 菜單,點擊「New REST Project」,填寫你想要測試的url,根據咱們的項目 Teacher Site 中的 url 舉例:https://teacher-test.grapecitydev.com:服務器

 

參照下圖須要在 Resource 輸入框輸入 /Login/Login 路由,並在 Params 中輸入登陸時須要的查詢參數 accountName 和 password。多線程

2. 點擊綠色按鈕,SoapUI 發送登陸請求,能夠在右側框中看到登陸請求返回的結果。dom

根據 Teacher site 項目的業務需求,發送 Login 請求完成後還得發送 SchoolItemChange 接口才會返回用戶登陸成功後認證的 Token,以下圖中 Set-Cookie 的值將會在下一個 GetOverview 接口的請求頭中 Cookie 屬性使用:jvm

3. 接下來的第三個請求 GetOverview 以下圖,在 Header 框中添加 Cookie 屬性,值就是上一個請求 SchoolItemChange 返回的 Set-Cookie 值:maven

自動化測試

其實以上三個接口的調用,只是簡單的測試接口是否調用正常,若是想要對三個接口的調用進行自動化測試,請看下面的分解:ide

1. 右鍵每個接口下的 Request 請求,如圖所示,選擇」Add TestCase」項,依次爲以上三個接口設置 Test Case,在 TestSteps 下分別有 Login,SchoolItemChange,GetOverview 三個 TestCases。工具

2. 你們有沒有發現,在 Test Steps 下多了個 Set Cookie 項,這是幹什麼的呢?

這是經過 Groovy Script 語法,獲取上一個請求的返回值(此處是獲取 SchoolItemChange 接口的返回值」Set-Cookie」),並將」Set-Cookie」屬性值賦予下一個請求 GetOverview 的請求頭 Cookie 中,是否是和第2,3條很應景啊?!這樣就很好的解決了接口自動化測試,不用複製粘貼請求之間依賴的返回值。

3. 接下來,就要爲測試的接口添加 Assertion 斷言,點擊左下角的,彈出 Add Assertion 對話框,根據斷言註解,選擇須要的測試點,例如 Response SLA 表示請求發送後指望的響應時間:

 

Contains Assertion 則表示請求返回的字符串中包含指定的字符串。此斷言適用對比的內容不超過65535個字符,由於 Soapui 基於 java 語言編寫,這是 jvm 支持的最大字符個數:

4. 爲解決上述不能超過65535個字符的問題,則須要爲接口添加 Script Assertion,以下代碼,表示將本地文件 GetOverview 01.txt 中的內容與請求返回中 HtmlOfPartialView 屬性的值進行對比,判斷二者內容是否相等:

5. 雙擊 Test Case,出現以下圖,點擊按鈕,或者選中 Login 右鍵選擇」Run from here」,則依次執行 Test Steps 步驟,如圖所示,出現紅色背景 Failed 字樣,查看右下角 TestCase Log 框,能夠看出是因爲 Step 4 GetOverview 接口請求的響應時間 1272ms 大於斷言中設置的時間 500ms:


發送郵件功能

當你但願某個接口請求的結果以郵件方式通知給你時,以下圖所示,右鍵 Test Steps -> Add Step -> Groovy Script,添加 Send Email 腳本,其中 Username 和 Password 分別是公司郵件服務器的帳戶和密碼,Internet Address 即爲接收的郵箱地址。

」${teacher-test#TestCase#Getoverview#Response}」的順序依次爲

Test Suite name # Test Case name # Test Step name # Response:


壓力測試

以上是功能性測試,接下來是壓力測試,右鍵 Load Tests 建立測試用例,

Limit:60 即爲壓力測試的時間 60s,Thread 表示多線程,能夠同時運行5個線程,Test Delay * Radom,表示隨機延遲的時間數。

min 表示最小響應時間,max 表示最大響應時間,avg 爲平均響應時間,last 表示上一次請求響應時間,cnt 表示請求數,tps 表示每秒處理請求數,bps 表示吞吐率,rat 表示錯誤率。

右鍵能夠爲請求添加斷言,Max Errors 設置最大的錯誤數,Step Average 設置指望的平均時間,其餘的依次類推:

以下圖,能夠選擇不一樣策略的負載和性能測試:

最經常使用的是簡單策略(Simple),若是你想運行功能測試,並想在10秒內延遲5個線程,則 Threads 設置爲5,延遲 1000s,隨機延遲比率0.5(即將致使延誤5至10秒)。

方差策略(Variance),Threads 爲方差的線程數量,Interval 爲間隔設置所需的值。例如設置20個線程,間隔60和方差0.8,線程的數量將在第一個15秒從20增長到36,而後又減小到20,45秒後繼續減小到4個線程,最後等到60秒時返回到初始值20。在統計圖中咱們很容易遵循這個方差:

線性策略(Thread),從一個線程到另外一個線程的數量的運行。它的主要功能是肯定某些統計數據變化或事件發生時的水平,例如設置開始和結束線程值(例如1 - 10),並設置持續時間(此例中每一個線程至少30秒)得到準確的測量數據:


持續集成

在UI界面進行持續集成:右鍵項目名稱 REST Project 1 -> 選擇 Launch TestRunner,出現以下圖,在 Basic Tab 頁選擇 TestRunner 安裝路徑:

在 Reports Tab 頁選擇報告輸出文件夾:

點擊 Launch 按鈕,自動執行測試項目。


經過執行命令進行持續集成,以管理員身份打開 Command Prompt 對話框,執行以下命令:

testrunner.bat -s'teacher-test' -cLogin -r -j -f'D:\Trivals\SoapUI\Logs' D:\Trivals\SoapUI\REST-Project-1-project.xml

該命令行的各個參數含義以下:

  • s : The TestSuite to run, used to narrow down the tests to run

  • c : The TestCase to run, used to narrow down the tests to run

  • r : Turns on printing of a small summary report (see below)

  • j : Turns on exporting of JUnit-compatible reports, see below

  • f : Specifies the root folder to which test results should be exported

其餘更多的參數設置,請參考 SoapUI 官網地址:

https://www.soapui.org/test-automation/running-functional-tests.html

本文概要介紹了 SoapUI 工具的基本使用方法,也歡迎感興趣的讀者留言補充 SoapUI 的更多功能使用方法,你們共同窗習進步。

轉載請註明出自:葡萄城控件


葡萄城年底福利火熱放送中 

凡在 2017 年 12 月 31 日以前,購買葡萄城控件團隊受權企業受權的用戶,不只能夠享受到優惠的價格,還可獲贈葡萄城技術專家根據客戶項目需求提供的定製培訓服務。老客戶推薦新客戶成單,也將得到「客戶推薦雙重感恩禮」。

瞭解更多:http://www.gcpowertools.com.cn/order/specialoffers.htm


關於葡萄城

葡萄城成立於1980年,是全球最大的控件提供商,世界領先的企業應用定製工具、企業報表和商業智能解決方案提供商,爲超過75%的全球財富500強企業提供服務。葡萄城於1988年在中國設立研發中心,在全球化產品的研發過程當中,不斷適應中國市場的本地需求,併爲軟件企業和各行業的信息化提供優秀的軟件工具和諮詢服務。