杰瑞科技汇

SoapUI怎么用?新手入门教程指南

SoapUI 使用教程:从入门到精通

目录

  1. 什么是 SoapUI?
  2. 为什么选择 SoapUI?
  3. 环境准备与安装
  4. SoapUI 界面详解
  5. 创建第一个 SOAP API 测试项目
  6. 创建第一个 REST API 测试项目
  7. 核心功能详解
  8. 最佳实践与高级技巧
  9. **---

什么是 SoapUI?

SoapUI 是一款功能强大的开源 API 测试工具,主要用于 API 测试Web 服务测试,它支持多种 API 协议和标准,是目前业界应用最广泛的 API 测试工具之一。

SoapUI怎么用?新手入门教程指南-图1
(图片来源网络,侵删)
  • 核心功能:发送请求、接收响应、验证结果、自动化测试流程。
  • 支持协议
    • SOAP:Web 服务的基础协议。
    • REST:现代 Web API 的主流架构风格。
    • HTTP:通用 Web 请求。
    • JMS:Java 消息服务。
    • GraphQL:新兴的 API 查询语言。
    • WebSocket:双向通信协议。

为什么选择 SoapUI?

  1. 功能全面:从单个 API 请求测试到复杂的自动化测试套件,再到服务模拟,一应俱全。
  2. 易于上手:图形化界面,无需编写大量代码即可完成基本测试。
  3. 强大的自动化能力:内置 Groovy 脚本引擎,可以实现复杂的业务逻辑和数据处理。
  4. 开源免费:社区版功能已足够满足大部分测试需求。
  5. 丰富的扩展:支持插件,可以与其他工具(如 Jenkins, Jira)集成。

环境准备与安装

  1. 下载:访问 SoapUI 官网 下载最新版本,社区版 (SoapUI) 是免费的。
  2. 安装:按照安装向导进行即可,Windows 系统下是 .exe 文件,Mac 和 Linux 下是 .sh.dmg 文件。
  3. 启动:安装完成后,启动 SoapUI。

SoapUI 界面详解

熟悉界面是高效工作的第一步。

  • Navigator (导航器):左侧面板,显示你创建的项目、接口、测试用例和请求,是核心的层级结构视图。
  • Request Editor (请求编辑器):中间主要区域,用于编辑请求内容(如 HTTP Header, Body/Parameters)。
  • Response Editor (响应编辑器):下方区域,显示服务器返回的响应结果,通常以 XML 或 JSON 格式呈现,并有语法高亮。
  • Properties (属性):右侧面板,显示当前选中元素的属性(如测试用例的名称、请求的超时时间等)。
  • Log/History (日志/历史):底部或侧边栏,显示执行日志和操作历史,方便调试。

创建第一个 SOAP API 测试项目

假设我们要测试一个简单的 GetWeather SOAP Web 服务,它需要一个城市名作为输入,并返回该城市的天气信息。

WSDL 地址http://www.webservicex.net/globalweather.asmx?WSDL

步骤:

SoapUI怎么用?新手入门教程指南-图2
(图片来源网络,侵删)
  1. 创建项目

    • 点击 File -> New SoapUI Project
    • 在弹出的窗口中,输入项目名称,WeatherAPI_Test
    • Initial WSDL 框中,粘贴上面的 WSDL 地址。
    • 点击 OK
  2. 探索接口

    • SoapUI 会自动解析 WSDL 文件,在 Navigator 中生成接口结构。
    • 你会看到 GlobalWeather 接口,下面有 GetCitiesByCountryGetWeather 两个操作。
  3. 创建测试请求

    • 展开 GetWeather,右键点击 Request 1,选择 Show Request Editor
    • 你会看到一个标准的 SOAP 请求模板,你需要修改 <GetWeather> 标签内的内容。
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://www.webserviceX.NET">
       <soapenv:Header/>
       <soapenv:Body>
          <web:GetWeather>
             <!--Optional:-->
             <web:CityName>Beijing</web:CityName>
             <!--Optional:-->
             <web:CountryName>China</web:CountryName>
          </web:GetWeather>
       </soapenv:Body>
    </soapenv:Envelope>
    • CityNameCountryName 修改为你想查询的城市和国家,ShanghaiChina
  4. 发送请求

    • 点击请求编辑器右上角的 绿色三角形按钮(或按 F9)。
    • SoapUI 会将请求发送到服务器,并在下方的 Response 区域显示结果。
  5. 验证响应

    • 检查 Response 区域,确认返回了正确的天气数据。
    • 至此,你的第一个 API 请求就完成了!

创建第一个 REST API 测试项目

现在我们测试一个公共的 REST API:JSONPlaceholder,这是一个用于测试的免费在线 REST API。

API 端点https://jsonplaceholder.typicode.com/posts/1

步骤:

  1. 创建项目

    • 点击 File -> New REST Project
    • 输入项目名称,JSONPlaceholder_Test
    • Initial WSDL 框中,输入上面的 API 端点地址。
    • 点击 OK
  2. 探索接口

    • SoapUI 会自动分析该端点,并发现它是一个 GET 请求。
    • Navigator 中,你会看到一个名为 posts 的资源,下面有一个 1 的方法,代表 GET /posts/1
  3. 创建测试请求

    • 双击 GET /posts/1,它会自动在请求编辑器中打开。
  4. 发送请求

    • 检查请求方法是否为 GET,URL 是否正确。
    • 点击 绿色三角形按钮 发送请求。
  5. 验证响应

    • Response 区域,你会看到返回的 JSON 数据:
      {
      "userId": 1,
      "id": 1,
      "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
      "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
      }
    • 至此,你的第一个 REST API 请求也完成了!

核心功能详解

1. 添加断言 - 验证响应结果

断言是自动化测试的核心,它用来判断 API 响应是否符合预期。

步骤:

  1. Navigator 中,选中你刚才创建的请求(如 GET /posts/1)。

  2. Properties 面板下方,找到 Assertions 标签页。

  3. 点击 Add New Assertion

  4. 你会看到很多内置的断言类型,我们来添加两个常用的:

    • Simple Contains:检查响应中是否包含特定文本。
      • 点击 Add,选择 Simple Contains
      • Text to Contain 中输入 "userId"
      • 点击 OK
    • JSONPath Match:专门用于验证 JSON 响应。
      • 再次点击 Add New Assertion,选择 JSONPath Match
      • JSONPath 中输入 $.title (表示获取 title 字段的值)。
      • Expected Value 中输入 "sunt aut facere repellat provident occaecati excepturi optio reprehenderit"
      • 点击 OK
  5. 运行测试:现在再次运行请求(绿色三角形),SoapUI 会执行所有断言,在 Assertions 标签页,你可以看到每个断言的 通过/失败 状态。

2. 数据驱动测试 - 使用 Data Source

当我们需要用多组数据测试同一个接口时,数据驱动测试就派上用场了。

场景:测试 GetCitiesByCountry 接口,分别查询 "China", "USA", "Japan" 的城市。

步骤:

  1. 创建数据源

    • Navigator 中,右键点击你的项目或测试套件,选择 Add DataSource -> New DataSource
    • 选择 Excel File 类型,创建一个 countries.xlsx 文件,内容如下: | Country | | :--- | | China | | USA | | Japan |
    • 在 SoapUI 中选择这个 Excel 文件。
  2. 配置数据源

    • DataSource 属性中,设置 SheetSheet1
    • 点击 Test Data 旁边的刷新按钮,你会看到数据被正确加载。
  3. 绑定数据到请求

    • 打开 GetCitiesByCountry 的请求。
    • 修改 <CountryName> 标签为:${#DataSource#Country},这个语法表示从数据源中获取 Country 列的值。
    • 保存请求。
  4. 运行数据驱动测试

    • 右键点击 GetCitiesByCountry,选择 Run with DataSource
    • SoapUI 会自动循环执行请求 3 次,每次使用 Excel 中的一行数据,你可以查看 Log 来确认执行过程。

3. 测试套件 - 组织测试用例

一个 API 通常有多个功能点,我们需要用测试套件来组织它们。

步骤:

  1. Navigator 中,右键点击你的项目,选择 New TestSuite,命名为 UserManagement_Tests
  2. 右键点击这个 TestSuite,选择 New TestCase,命名为 CreateUser
  3. 将你之前创建的 POST /posts 请求拖拽到 CreateUser 测试用例下。
  4. 再创建一个 GetUser 测试用例,将 GET /posts/1 请求拖拽进去。
  5. 你可以右键点击 UserManagement_Tests 测试套件,选择 Run,一键运行该套件下的所有测试用例。

4. 脚本断言与 Groovy

当内置断言无法满足复杂需求时,可以使用 Groovy 脚本进行自定义断言。

场景:验证响应的 userId 是否小于等于 10。

步骤:

  1. GET /posts/1 请求添加一个 Script Assertion

  2. 在脚本编辑器中,编写 Groovy 代码:

    // 1. 将响应字符串转换为 JsonSlurper 对象,方便解析 JSON
    def response = new groovy.json.JsonSlurper().parseText(messageExchange.responseContent)
    // 2. 获取 userId 的值
    def userId = response.userId
    // 3. 进行断言,如果条件不满足,抛出异常,测试即失败
    assert userId <= 10, "userId is ${userId}, which is greater than 10!"
  3. 运行测试,userId 大于 10,测试会失败并显示你自定义的错误信息。

5. 模拟服务 - MockService

MockService 可以模拟一个真实的 API 服务器,用于在下游服务未开发完成时,进行并行开发和测试。

场景:模拟一个 POST /login 接口,当收到正确的用户名密码时,返回成功,否则返回失败。

步骤:

  1. Navigator 中,右键点击项目,选择 New MockService,命名为 UserLogin_Mock
  2. 右键点击 MockService,选择 New MockResponse,命名为 Successful Login
  3. Successful Login 的响应编辑器中,设置一个成功的响应,
    {
      "status": "success",
      "message": "Login successful",
      "token": "fake-jwt-token"
    }
  4. 再创建一个 Failed Login MockResponse,设置失败的响应:
    {
      "status": "error",
      "message": "Invalid username or password"
    }
  5. 设置 MockResponse 的触发条件
    • 双击 Successful Login,进入 MockOperation 设置。
    • Conditions 标签页,点击 Add
    • 选择 XPathJSONPath 来匹配请求内容,使用 JSONPath 匹配请求体中的 usernamepassword
      • JSONPath: $.username
      • Operator: equals
      • Value: admin
      • (同样为 password 添加一个 equals 条件,值为 password123)
  6. 启动 MockService:点击 MockService 左侧的 绿色三角形按钮 启动它。
  7. 测试 MockService:你可以用另一个工具(如 Postman)或 SoapUI 中的另一个测试请求,向 MockService 的地址发送请求,来验证它是否按预期工作。

最佳实践与高级技巧

  1. 版本控制:将整个 SoapUI 项目(.xml 文件)纳入 Git 或 SVN 版本控制。
  2. 环境管理:使用 SoapUI 的 Environments 功能来管理不同环境(如开发、测试、生产)的 API 地址和认证信息,避免频繁修改。
  3. 属性重用:将常用的值(如 API 基础 URL、Token)定义为 Properties,在请求中通过 ${#Project#myProperty} 的方式引用,方便统一修改。
  4. 与 CI/CD 集成:SoapUI 提供了命令行工具 (soapui.sh / soapui.bat),可以轻松集成到 Jenkins, GitLab CI 等持续集成流程中,实现自动化回归测试。
  5. 使用 ReadyAPI:如果需要更高级的功能(如性能测试、API 监控),可以考虑 SmartBear 的商业版产品 ReadyAPI。

SoapUI 是一个功能强大且灵活的 API 测试工具,通过本教程,你已经掌握了它的基本操作,包括创建项目和请求、添加断言、进行数据驱动测试以及使用模拟服务。

从简单的“点击发送”到复杂的自动化测试套件,SoapUI 能够满足不同层次的测试需求,熟练掌握它,将极大地提升你的 API 测试效率和质量,是每一位 API 测试工程师必备的技能,希望这份教程对你有帮助!

分享:
扫描分享到社交APP
上一篇
下一篇