SoapUI 使用教程:从入门到精通
目录
- 什么是 SoapUI?
- 为什么选择 SoapUI?
- 环境准备与安装
- SoapUI 界面详解
- 创建第一个 SOAP API 测试项目
- 创建第一个 REST API 测试项目
- 核心功能详解
- 最佳实践与高级技巧
- **---
什么是 SoapUI?
SoapUI 是一款功能强大的开源 API 测试工具,主要用于 API 测试 和 Web 服务测试,它支持多种 API 协议和标准,是目前业界应用最广泛的 API 测试工具之一。

- 核心功能:发送请求、接收响应、验证结果、自动化测试流程。
- 支持协议:
- SOAP:Web 服务的基础协议。
- REST:现代 Web API 的主流架构风格。
- HTTP:通用 Web 请求。
- JMS:Java 消息服务。
- GraphQL:新兴的 API 查询语言。
- WebSocket:双向通信协议。
为什么选择 SoapUI?
- 功能全面:从单个 API 请求测试到复杂的自动化测试套件,再到服务模拟,一应俱全。
- 易于上手:图形化界面,无需编写大量代码即可完成基本测试。
- 强大的自动化能力:内置 Groovy 脚本引擎,可以实现复杂的业务逻辑和数据处理。
- 开源免费:社区版功能已足够满足大部分测试需求。
- 丰富的扩展:支持插件,可以与其他工具(如 Jenkins, Jira)集成。
环境准备与安装
- 下载:访问 SoapUI 官网 下载最新版本,社区版 (SoapUI) 是免费的。
- 安装:按照安装向导进行即可,Windows 系统下是
.exe文件,Mac 和 Linux 下是.sh或.dmg文件。 - 启动:安装完成后,启动 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
步骤:

-
创建项目
- 点击
File->New SoapUI Project。 - 在弹出的窗口中,输入项目名称,
WeatherAPI_Test。 - 在
Initial WSDL框中,粘贴上面的 WSDL 地址。 - 点击
OK。
- 点击
-
探索接口
- SoapUI 会自动解析 WSDL 文件,在
Navigator中生成接口结构。 - 你会看到
GlobalWeather接口,下面有GetCitiesByCountry和GetWeather两个操作。
- SoapUI 会自动解析 WSDL 文件,在
-
创建测试请求
- 展开
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>- 将
CityName和CountryName修改为你想查询的城市和国家,Shanghai和China。
- 展开
-
发送请求
- 点击请求编辑器右上角的 绿色三角形按钮(或按
F9)。 - SoapUI 会将请求发送到服务器,并在下方的
Response区域显示结果。
- 点击请求编辑器右上角的 绿色三角形按钮(或按
-
验证响应
- 检查
Response区域,确认返回了正确的天气数据。 - 至此,你的第一个 API 请求就完成了!
- 检查
创建第一个 REST API 测试项目
现在我们测试一个公共的 REST API:JSONPlaceholder,这是一个用于测试的免费在线 REST API。
API 端点:https://jsonplaceholder.typicode.com/posts/1
步骤:
-
创建项目
- 点击
File->New REST Project。 - 输入项目名称,
JSONPlaceholder_Test。 - 在
Initial WSDL框中,输入上面的 API 端点地址。 - 点击
OK。
- 点击
-
探索接口
- SoapUI 会自动分析该端点,并发现它是一个
GET请求。 - 在
Navigator中,你会看到一个名为posts的资源,下面有一个1的方法,代表GET /posts/1。
- SoapUI 会自动分析该端点,并发现它是一个
-
创建测试请求
- 双击
GET /posts/1,它会自动在请求编辑器中打开。
- 双击
-
发送请求
- 检查请求方法是否为
GET,URL 是否正确。 - 点击 绿色三角形按钮 发送请求。
- 检查请求方法是否为
-
验证响应
- 在
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 响应是否符合预期。
步骤:
-
在
Navigator中,选中你刚才创建的请求(如GET /posts/1)。 -
在
Properties面板下方,找到Assertions标签页。 -
点击
Add New Assertion。 -
你会看到很多内置的断言类型,我们来添加两个常用的:
- 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。
- 再次点击
- Simple Contains:检查响应中是否包含特定文本。
-
运行测试:现在再次运行请求(绿色三角形),SoapUI 会执行所有断言,在
Assertions标签页,你可以看到每个断言的 通过/失败 状态。
2. 数据驱动测试 - 使用 Data Source
当我们需要用多组数据测试同一个接口时,数据驱动测试就派上用场了。
场景:测试 GetCitiesByCountry 接口,分别查询 "China", "USA", "Japan" 的城市。
步骤:
-
创建数据源
- 在
Navigator中,右键点击你的项目或测试套件,选择Add DataSource->New DataSource。 - 选择
Excel File类型,创建一个countries.xlsx文件,内容如下: | Country | | :--- | | China | | USA | | Japan | - 在 SoapUI 中选择这个 Excel 文件。
- 在
-
配置数据源
- 在
DataSource属性中,设置Sheet为Sheet1。 - 点击
Test Data旁边的刷新按钮,你会看到数据被正确加载。
- 在
-
绑定数据到请求
- 打开
GetCitiesByCountry的请求。 - 修改
<CountryName>标签为:${#DataSource#Country},这个语法表示从数据源中获取Country列的值。 - 保存请求。
- 打开
-
运行数据驱动测试
- 右键点击
GetCitiesByCountry,选择Run with DataSource。 - SoapUI 会自动循环执行请求 3 次,每次使用 Excel 中的一行数据,你可以查看
Log来确认执行过程。
- 右键点击
3. 测试套件 - 组织测试用例
一个 API 通常有多个功能点,我们需要用测试套件来组织它们。
步骤:
- 在
Navigator中,右键点击你的项目,选择New TestSuite,命名为UserManagement_Tests。 - 右键点击这个
TestSuite,选择New TestCase,命名为CreateUser。 - 将你之前创建的
POST /posts请求拖拽到CreateUser测试用例下。 - 再创建一个
GetUser测试用例,将GET /posts/1请求拖拽进去。 - 你可以右键点击
UserManagement_Tests测试套件,选择Run,一键运行该套件下的所有测试用例。
4. 脚本断言与 Groovy
当内置断言无法满足复杂需求时,可以使用 Groovy 脚本进行自定义断言。
场景:验证响应的 userId 是否小于等于 10。
步骤:
-
为
GET /posts/1请求添加一个Script Assertion。 -
在脚本编辑器中,编写 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!" -
运行测试,
userId大于 10,测试会失败并显示你自定义的错误信息。
5. 模拟服务 - MockService
MockService 可以模拟一个真实的 API 服务器,用于在下游服务未开发完成时,进行并行开发和测试。
场景:模拟一个 POST /login 接口,当收到正确的用户名密码时,返回成功,否则返回失败。
步骤:
- 在
Navigator中,右键点击项目,选择New MockService,命名为UserLogin_Mock。 - 右键点击
MockService,选择New MockResponse,命名为Successful Login。 - 在
Successful Login的响应编辑器中,设置一个成功的响应,{ "status": "success", "message": "Login successful", "token": "fake-jwt-token" } - 再创建一个
Failed LoginMockResponse,设置失败的响应:{ "status": "error", "message": "Invalid username or password" } - 设置 MockResponse 的触发条件:
- 双击
Successful Login,进入MockOperation设置。 - 在
Conditions标签页,点击Add。 - 选择
XPath或JSONPath来匹配请求内容,使用 JSONPath 匹配请求体中的username和password:JSONPath:$.usernameOperator:equalsValue:admin- (同样为
password添加一个equals条件,值为password123)
- 双击
- 启动 MockService:点击 MockService 左侧的 绿色三角形按钮 启动它。
- 测试 MockService:你可以用另一个工具(如 Postman)或 SoapUI 中的另一个测试请求,向 MockService 的地址发送请求,来验证它是否按预期工作。
最佳实践与高级技巧
- 版本控制:将整个 SoapUI 项目(
.xml文件)纳入 Git 或 SVN 版本控制。 - 环境管理:使用 SoapUI 的
Environments功能来管理不同环境(如开发、测试、生产)的 API 地址和认证信息,避免频繁修改。 - 属性重用:将常用的值(如 API 基础 URL、Token)定义为
Properties,在请求中通过${#Project#myProperty}的方式引用,方便统一修改。 - 与 CI/CD 集成:SoapUI 提供了命令行工具 (
soapui.sh/soapui.bat),可以轻松集成到 Jenkins, GitLab CI 等持续集成流程中,实现自动化回归测试。 - 使用 ReadyAPI:如果需要更高级的功能(如性能测试、API 监控),可以考虑 SmartBear 的商业版产品 ReadyAPI。
SoapUI 是一个功能强大且灵活的 API 测试工具,通过本教程,你已经掌握了它的基本操作,包括创建项目和请求、添加断言、进行数据驱动测试以及使用模拟服务。
从简单的“点击发送”到复杂的自动化测试套件,SoapUI 能够满足不同层次的测试需求,熟练掌握它,将极大地提升你的 API 测试效率和质量,是每一位 API 测试工程师必备的技能,希望这份教程对你有帮助!
