API自动化测试 Soap UI工具介绍
一、 建立测试用例
(一) 基本概念
soapUI 中工程的层次结构
-
项目名称:位于最上层
(BookStoreTest),项目可以包含多个服务的定义。 -
REST 服务定义:服务其实是对多个 REST
资源的一个分组,在我们的例子中只有一个服务 BookStoreServie - REST 资源定义:具体描述该资源的名称,URI, 参数等属性
-
REST 方法定义:针对每个资源的方法
(GET,POST,PUT,DELETE 等 ),图
1 中的方法名就是 GetBookList -
REST 操作请求定义:基于每个方法,可以有一个或多个请求操作,如 GetBookListRequest,这些请求操作才是真正被
soapUI 所调用执行的。每个请求可以设置非常丰富的信息,例如 Accept 类型,请求的 Header 信息,运行了该请求以后,就能以各种方式查看运行结果。但是这里还不能加入断言来验证结果
– 必须在建立测试用例以后才能使用。
TestCase 定义
- TestSuite:类似于 Junit 中的测试套件,其中可以加入多个 TestCase
- TestCase:可以包含多个 TestStep
-
TestStep:一个 TestCase 可以包含多个 TestStep,TestStep 有多种类型,它可以是上面提到一个
REST 操作请求,也可以是一个 Groovy 的脚本,还可以试一个设置属性的操作。
TestStep 甚至支持分支跳转操作:根据特定的条件,从一个 step 可以跳转到其他 step, 而不必顺序执行。
(二)
创建REST 服务
1. 新建一个名为 RESTTest 的项目
2. 在项目上点击右键,选择”New
Rest Service”,在对话框中输入 Service Name(AuthenticationService)
和Endpoint(http://qa-server11.achievo.com:33080)
3. 在” AuthenticationService
“上点击右键,选择“New Resource”, 在对话框中输入 Resource Name(Auth) 和
Resource Path (/apis/v1/auth/agency),点击 OK
4. 在弹出的对话框中输入 Method Name:
signon4AgencyUser,HTTP Method 选择默认的 POST, 点击 OK
5. 在“signon4AgencyUser”上点击右键,选择“New
Request”,在对话框中输入“Request login success”
创建一个 REST 服务
(三)
创建测试用例
主要有两种方式:
- 自动生成,步骤如下:
(1). 右键点击一个 REST 服务,例如本例中的”AuthenticationService”,
选择”Generate TestSuite”
(2). 在弹出的对话框中,保持默认设置, 选择”OK”
(3). 输入名称 , 例如”AuthenticationService
TestSuite”, 选择”OK”即可。 - 手工创建,步骤如下:
(1). 在项目”RESTTest”上点击右键,选择“New
TestSuite”, 在对话框中输入”AuthenticationService
TestSuite”
(2). 在 AuthenticationService TestSuite 上点击右键, 选择”New TestCase”, 在对话框中输入”login
TestCase”
(3). 然后在左边的导航栏中展开 login TestCase, 在“Test Steps”上点右键,选择 Add
Step->Rest Test Request
(4). 在弹出的对话框中选择 “Request login success”
(四)
添加断言
测试用例建好之后,需要向测试用例中添加
Assertions 以便验证结果的正确性。soapUI 支持
Response SLA, Script Assertion, Contains, XQuery Match, Schema Compliance,
XPath Match 以及 Not Contains 等多种断言来对
response 进行判断来保证对 Web 服务高质量的测试。
点击 TestCase 的添加 Assertions 按钮。 在弹出的 Select
Assertion 窗口中选择 XPath Match 断言,点击
OK。配置 XPath 如下图所示:
(五)
运行测试用例
二、
性能测试
性能测试在 soapUI 中称为 Load Test, 针对一个 soapUI 的 TestCase, 可以建立一个或多个 LoadTest, 这些 LoadTest 会自动的 把 TestCase 中的所有步骤都添加到其中, 在运行的时候,soapUI 会自动的使用多个线程来运行这些
TestStep,同时也会监控 它们的运行时间, 例如最短时间,最长时间,平均时间等等。这样用户能够很直观的看到
REST 服务的响应时间,从而对性能进行调优。
建立 LoadTest 非常简单,只需要在“Load Tests”上点击右键, 选择”New
LoadTest”, 然后输入名称即可,下图是一个针对 GetBookList 的 性能测试, 可以看到有两个 TestStep : “GetBookList_xml” 和”GetBookList_json” , 100 个线程并发执行,
时间限制是 60 秒。 最后的结果是,最短时间 4 毫秒,最长时间
1204 毫秒,平均时间 20.54 毫秒。