首頁 web api test
文章
Cancel

web api test

前言

待補

概要

WebService 分為 SOAP跟REST兩種 測試WebService需要有WSDL,沒有WSDL會連有哪些function及其有哪些參數可以輸入都無從得知 備註WSDL是XML檔,用來描述Web Service

測試工具 SoapUI

SoapUI官方網址

https://www.soapui.org/downloads/latest-release/

Web Service - SOAP

開啟SoapUI

Desktop View

導入SOAP的WSDL到SoapUI

Desktop View

測試輸出

Step1.左邊資料夾展開後,雙擊Request

Step2.「?」 的部分是Method的參數,測試時任意輸入

Step3.輸入完之後按「▶」,進行輸出

Desktop View

free Web Service

free Web Service

建立自動測試

Step1.左邊右鍵,雙擊new TestSuit

Desktop View

Step2.這邊我將我的new TestSuit命名為Emp,接著右鍵新增測試

Desktop View

Step3.新增測試步驟

Desktop View

Step4.設定

Desktop View

Step5.在Context內,輸入要用來驗證的Value,

除此之外還可以驗證是不是有效的SOAP、有沒有回應HTTP Request CODE

Desktop View

Step6.可以針對已經打好的Test Case進行總測試

Desktop View

Step7.設定Value為變數的方式,建立Property

Desktop View

Step7.設定Property

Desktop View

使用Groovy Script撰寫自動測試

目標是使用Groovy編寫自動化腳本,藉此取代如下圖的手動輸入輸出

Desktop View

Groovy Script的建立方式

Desktop View

在TestStep中,建立SOAP Request,用來進行單獨測試

Desktop View

有了單獨測試的項目後,就可以使用Groovy Script來撰寫腳本了

備註:要記得儲存,不然Add Step時不會顯示Groovy Scrip

Desktop View

輸出結果

Desktop View

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區域變數並輸出的方式 Desktop View

1
log.info  testRunner.testCase.testSuite.testCases['AutoTrans'].getPropertyValue("id")

設定區域變數

1
testRunner.testCase.testSuite.testCases['AutoTrans'].setPropertyValue("id","abcdefg")

可練習使用REST的參考網站

http測試平台httpbin

http://httpbin.org/

Trello - 專案管理網頁

官網

https://trello.com/

官方API說明

https://developer.atlassian.com/cloud/trello/rest/api-group-actions/

官方Api金鑰取得

https://trello.com/app-key

Web Service - REST

使用Trello官方的API網址,在SOAP UI建立測試Procject的方式

Desktop View

設定Api Key 與 Token的方式

Desktop View

>測試使用WebApi 實際操作建立Trello看板的方式

>仔細看文件上,有提到name、key、token這些參數名稱

Desktop View Desktop View

>使用Script Assertion驗證Values

驗證XML格式

轉換JSON格式的網站

https://jsoneditoronline.org/

使用SOAP UI官方提供的資料練習驗證

https://www.soapui.org/resources/tutorials/rest-sample-project/ Desktop View

以非商業用途申請flickr的API KEY

https://www.flickr.com/services/apps/create/apply

這邊我導入在官網下載的flick的XML

並在導入後,輸入從flick官網上獲得的API KEY

Desktop View

使用JsonPath Match驗證JSON資料的方式

這邊我要驗證的是perpage=100

Desktop View

建立驗證的方式

Desktop View

建立

Mock Service

使用Mock Service製作假資料,以便用來在真正的Service開發完成前,可以使用假資料測試資料驗證

加入Mock Service

一樣要先使用SOAP的WSDL或REST的URL導入專案,然後再導入的專案底下,點擊右鍵

Desktop View

建完之後,可以看到用來輸出假資料的視窗

Desktop View

Mock Service Response模式

如果在Mock Service有加入很多Response要來進行測試

Desktop View

需要在Dispatch設定要回傳Response模式

其中,若使用Script,可以用Groovy語法來寫動態回傳Response的腳本

Desktop View

WebService 安全測試

建立安全測試

Steo1

Desktop View

Steo2

Desktop View

SOAP UI Connect MSSQL

安裝JDBC驅動

SOAP UI官網

https://www.soapui.org/docs/jdbc/reference/jdbc-drivers/ Desktop View

下載微軟官網的這個驅動(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」底下

Desktop View

[重要]丟完後,重啟SOAP UI

建立連線

在testCase中,新增JDBC Request

Desktop View

</p>輸入連線資料<p> Desktop View Driver

1
com.microsoft.sqlserver.jdbc.SQLServerDriver

Connection String

1
jdbc:sqlserver://HostName   ; username=    ;   password=

Sql Server Browser要打開,否則測試連線會Error Desktop View TCP/IP監聽也要打開,否則測試連線會Error Desktop View

以上都處理好,就能連線成功 Desktop View

Query輸出

打上SQL語法,輸出會呈現XML架構 Desktop View

Query 可以使用SOAP UI的區域變數 Desktop View

測試連線,因連線失敗而參考的網址

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,會變成如下圖的結構

Desktop View

建立變數

env: 放用來切換是dev還是prod的字串

EnCnTwoWayTranslator : 這邊放Request的URL

Desktop View

把Request的URL替換成區域變數

Desktop View

新增一個TestSuite

Desktop View

將Mock和正式的Request加到Test Step中

Desktop View

備註1: 要注意Mock的輸出方式

備註2: 要注意Mock 要記得打開

Desktop View

建立兩個檔案,副檔名為properties

其內容為 dev的request與正式的request

格式如圖所示,就是與SOAP的Values要一樣

Desktop View

打開TestSuite開始打Groovy腳本(Setup Script)

Desktop View

本文由作者按照 CC BY 4.0 進行授權