前言
待補
概要
WebService 分為 SOAP跟REST兩種 測試WebService需要有WSDL,沒有WSDL會連有哪些function及其有哪些參數可以輸入都無從得知 備註WSDL是XML檔,用來描述Web Service
測試工具 SoapUI
SoapUI官方網址
https://www.soapui.org/downloads/latest-release/
Web Service - SOAP
開啟SoapUI
導入SOAP的WSDL到SoapUI
測試輸出
Step1.左邊資料夾展開後,雙擊Request
Step2.「?」 的部分是Method的參數,測試時任意輸入
Step3.輸入完之後按「▶」,進行輸出
free Web Service
建立自動測試
Step1.左邊右鍵,雙擊new TestSuit
Step2.這邊我將我的new TestSuit命名為Emp,接著右鍵新增測試
Step3.新增測試步驟
Step4.設定
Step5.在Context內,輸入要用來驗證的Value,
除此之外還可以驗證是不是有效的SOAP、有沒有回應HTTP Request CODE
Step6.可以針對已經打好的Test Case進行總測試
Step7.設定Value為變數的方式,建立Property
Step7.設定Property
使用Groovy Script撰寫自動測試
目標是使用Groovy編寫自動化腳本,藉此取代如下圖的手動輸入輸出
Groovy Script的建立方式
在TestStep中,建立SOAP Request,用來進行單獨測試
有了單獨測試的項目後,就可以使用Groovy Script來撰寫腳本了
備註:要記得儲存,不然Add Step時不會顯示Groovy Scrip
輸出結果
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import com.eviware.soapui.support.XmlHolder
import com.eviware.soapui.impl.wsdl.testcase.WsdlTestRunContext
def getReq = testRunner.testCase.testSuite.testCases["AutoTrans"].testSteps["SOAP Request"].getPropertyValue("Request")
def getEmpxml = new XmlHolder(getReq)
//取得區域變數
def id2= testRunner.testCase.testSuite.testCases['AutoTrans'].getPropertyValue("id2")
def id1= testRunner.testCase.testSuite.testCases['AutoTrans'].getPropertyValue("id1")
//設定xml要設定的Values
getEmpxml.setNodeValue("//web:getEnCnTwoWayTranslator/web:Word",id2)
//取得更新後的xml
def newAddXml = getEmpxml.getXml()
//更新xml輸入端的畫面
testRunner.testCase.testSuite.testCases["AutoTrans"].testSteps["SOAP Request"].setPropertyValue("Request",newAddXml)
log.info newAddXml
//更新xml輸出端的畫面
def addTestStep = testRunner.testCase.testSuite.testCases["AutoTrans"].testSteps["SOAP Request"]
def contextAddEmployee = new WsdlTestRunContext(addTestStep)
addTestStep.run(testRunner,contextAddEmployee)
//讀取結果,以便進行驗證
def getRes = testRunner.testCase.testSuite.testCases["AutoTrans"].testSteps["SOAP Request"].getPropertyValue("Response")
def getEmpRes = new XmlHolder(getRes)
def getResponse1 = getEmpRes.getNodeValue("//*:getEnCnTwoWayTranslatorResult/*:string[1]")
def getResponse2= getEmpRes.getNodeValue("//*:getEnCnTwoWayTranslatorResult/*:string[2]")
log.info getResponse1
log.info getResponse2
Goovy Script語法備註
輸出字串的方式
1
log.info "tsrt"
Get區域變數並輸出的方式
1
log.info testRunner.testCase.testSuite.testCases['AutoTrans'].getPropertyValue("id")
設定區域變數
1
testRunner.testCase.testSuite.testCases['AutoTrans'].setPropertyValue("id","abcdefg")
可練習使用REST的參考網站
http測試平台httpbin
Trello - 專案管理網頁
官網
官方API說明
https://developer.atlassian.com/cloud/trello/rest/api-group-actions/
官方Api金鑰取得
Web Service - REST
使用Trello官方的API網址,在SOAP UI建立測試Procject的方式
設定Api Key 與 Token的方式
>測試使用WebApi 實際操作建立Trello看板的方式
>仔細看文件上,有提到name、key、token這些參數名稱
>使用Script Assertion驗證Values
驗證XML格式
轉換JSON格式的網站
使用SOAP UI官方提供的資料練習驗證
https://www.soapui.org/resources/tutorials/rest-sample-project/
以非商業用途申請flickr的API KEY
https://www.flickr.com/services/apps/create/apply
這邊我導入在官網下載的flick的XML
並在導入後,輸入從flick官網上獲得的API KEY
使用JsonPath Match驗證JSON資料的方式
這邊我要驗證的是perpage=100
建立驗證的方式
建立
Mock Service
使用Mock Service製作假資料,以便用來在真正的Service開發完成前,可以使用假資料測試資料驗證
加入Mock Service
一樣要先使用SOAP的WSDL或REST的URL導入專案,然後再導入的專案底下,點擊右鍵
建完之後,可以看到用來輸出假資料的視窗
Mock Service Response模式
如果在Mock Service有加入很多Response要來進行測試
需要在Dispatch設定要回傳Response模式
其中,若使用Script,可以用Groovy語法來寫動態回傳Response的腳本
WebService 安全測試
建立安全測試
Steo1
Steo2
SOAP UI Connect MSSQL
安裝JDBC驅動
SOAP UI官網
https://www.soapui.org/docs/jdbc/reference/jdbc-drivers/
下載微軟官網的這個驅動(for Mssql)
https://www.microsoft.com/zh-tw/download/confirmation.aspx?id=11774
把sqljdbc42.jar與sqljdbc_auth.dll丟到「C:\Program Files\SmartBear\SoapUI-5.7.0\bin\ext」底下
[重要]丟完後,重啟SOAP UI
建立連線
在testCase中,新增JDBC Request
</p>輸入連線資料<p> Driver
1
com.microsoft.sqlserver.jdbc.SQLServerDriver
Connection String
1
jdbc:sqlserver://HostName ; username= ; password=
Sql Server Browser要打開,否則測試連線會Error TCP/IP監聽也要打開,否則測試連線會Error
以上都處理好,就能連線成功
Query輸出
打上SQL語法,輸出會呈現XML架構
Query 可以使用SOAP UI的區域變數
測試連線,因連線失敗而參考的網址
https://community.smartbear.com/t5/SoapUI-Open-Source-Questions/I-am-facing-problem-while-connecting-MSSQL-connection-in-Soapui/m-p/164597#M26986
https://stackoverflow.com/questions/36822071/how-to-create-a-mssql-server-connection-in-soapui
https://community.smartbear.com/t5/SoapUI-Open-Source-Questions/Solved-JDBC-Cannot-connect-to-a-MS-SQL-database/td-p/132235
正式環境/測試環境 分離的方式
在正式的WebService開發完成之前,可以使用Mock建立假的測試資料
這邊紀錄切換Mock與正式WebService可以參考的方式
首先,導入WebService後,新增Mock,會變成如下圖的結構
建立變數
env: 放用來切換是dev還是prod的字串
EnCnTwoWayTranslator : 這邊放Request的URL
把Request的URL替換成區域變數
新增一個TestSuite
將Mock和正式的Request加到Test Step中
備註1: 要注意Mock的輸出方式
備註2: 要注意Mock 要記得打開
建立兩個檔案,副檔名為properties
其內容為 dev的request與正式的request
格式如圖所示,就是與SOAP的Values要一樣
打開TestSuite開始打Groovy腳本(Setup Script)