上一篇对Katalon进行了快速介绍: 自动化测试工具Katalon 之快速介绍和示例 , 本篇来看看Katalon 中的一些核心概念。


1. Test Case(测试用例)

  • 定义:自动化测试的最小执行单位,包含一系列操作步骤
  • 组成
    • 手动视图:图形化操作界面(拖拽式)
    • 脚本视图:Groovy 脚本编写(推荐高级用户)

  • 特点
    • 支持数据驱动(参数化)
    • 可添加验证点(Checkpoints)
    • 支持关键字调用
  • 示例结构
WebUI.openBrowser('https://example.com')
WebUI.click(findTestObject('Object Repository/btn_Login'))
WebUI.setText(findTestObject('Object Repository/input_Username'), 'testuser')
WebUI.verifyElementPresent(findTestObject('Object Repository/welcome_message'))

2. Test Suite(测试套件)

  • 定义:测试用例的集合容器,用于批量执行
  • 类型
    • 静态测试套件:手动添加测试用例
    • 动态测试套件:基于标签/条件自动收集用例
  • 关键功能
    • 设置执行顺序
    • 配置失败重试机制
    • 绑定数据文件
    • 定义环境变量
  • 执行方式
    • IDE 内执行
    • 命令行执行:katalon -runMode=console -testSuitePath="Test Suites/MySuite"

3. Object Repository(对象仓库)

  • 定义:UI 元素的中央存储库
  • 对象类型
    • Web 元素:按钮、输入框等
    • 移动元素:Android/iOS 控件
    • API 端点:REST 请求
  • 管理功能
    • 智能定位器生成(XPath/CSS)
    • 元素截图捕获
    • 分层结构管理
  • 最佳实践
/* 推荐使用相对定位 */
//input[@id='username'] 
.login-button

4. Data Files(数据文件)

  • 作用:数据驱动测试的源文件
  • 支持格式
格式特点适用场景
Excel多sheet支持复杂数据结构
CSV轻量级大数据量
InternalKatalon 内置表格快速原型
DatabaseJDBC 连接实时数据
  • 使用示例
def data = findTestData("LoginData")
for (int i = 0; i < data.getRowNumbers(); i++) {
    WebUI.setText(findTestObject('input_Username'), data.getValue("Username", i))
    // ...
}

5. Checkpoints(检查点/验证点)

  • 目的:验证应用状态是否符合预期
  • 类型
    • UI 验证
WebUI.verifyElementText(findTestObject('title'), "Welcome")
- **API 响应验证**:
WS.verifyResponseStatusCode(response, 200)
- **数据库验证**:
def result = SQL.execute('SELECT * FROM users')
KeywordUtil.verifyEqual(result.size(), 5)
- **自定义脚本验证**:
assert System.getProperty("os.name").contains("Windows")

6. Keywords(关键字)

  • 定义:可重用的测试逻辑单元
  • 分类
类型来源示例
内置关键字Katalon 预置WebUI.click(), WS.sendRequest()
自定义关键字用户创建loginToSystem(), generateTestData()
  • 创建示例
@Keyword
def login(String user, String pass) {
    WebUI.setText(findTestObject('input_User'), user)
    WebUI.setEncryptedText(findTestObject('input_Password'), pass)
    WebUI.click(findTestObject('btn_Login'))
}

7. Test Listeners(测试监听器)

  • 作用:监控测试生命周期事件
  • 关键事件
@BeforeTestSuite
void beforeTestSuite(TestSuiteContext context) {
    // 测试套件开始前执行
}

@AfterTestCase
void afterTestCase(TestCaseContext context) {
    if(context.status == TestCaseStatus.FAILED) {
        // 失败时截图
        WebUI.takeScreenshot("screenshots/fail_${context.testCaseId}.png")
    }
}

@BeforeTestExecution
void beforeTestExecution(TestCaseContext context) {
    // 每个测试用例执行前
}

8. Reports(报告系统)

  • 报告类型
    • 默认 HTML 报告
      • 执行统计
      • 步骤级日志
      • 失败截图
    • 增强报告
      • Allure 报告(需插件)
      • JUnit 报告(CI 集成)
      • 自定义报告(通过监听器生成)
  • 配置示例
// 在监听器中发送自定义报告
@AfterTestSuite
void sendEmailReport(TestSuiteContext context) {
    def reportFile = new File("Reports/${context.testSuiteId}.html")
    EmailUtil.send(reportFile, "team@example.com")
}

9. Include(包含机制)

  • 作用:实现测试逻辑复用
  • 两种方式
    1. 调用测试用例
WebUI.callTestCase(
    findTestCase('Common/Login'), 
    [('username') : 'admin', ('password') : '123456'], 
    FailureHandling.STOP_ON_FAILURE
)
2. **包含脚本文件**:
// 在Scripts目录创建Utils.groovy
class Utils {
    static String generateEmail() {
        return "user${System.currentTimeMillis()}@test.com"
    }
}

10. Plugins(插件系统)

  • 功能:扩展 Katalon 核心能力
  • 插件类型
插件类别示例插件功能
报告增强Allure Report生成交互式报告
集成扩展Jira Integration自动提交缺陷
工具增强Mobile Utilities高级移动测试功能
自定义Katalon SDK开发私有插件
  • 管理
    • 通过 Plugins > Marketplace 安装
    • 自定义插件存放路径:plugins 目录

架构关系图

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

最佳实践组合示例

// 测试用例示例:结合多个组件
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI
import internal.GlobalVariable as GlobalVar

// 从数据文件获取凭证
def creds = findTestData("Credentials").getObjectValue("Admin", 1)

// 调用包含的登录关键字
CustomKeywords.'com.utils.Auth.login'(creds.username, creds.password)

// 验证主界面加载
WebUI.verifyElementPresent(findTestObject('Dashboard/welcome_header'), 10)

// API检查点(混合测试示例)
def apiResponse = CustomKeywords.'com.utils.API.getUserProfile'()
KeywordUtil.verifyEqual(apiResponse.status, "ACTIVE")

// 失败时通过监听器自动截图(已配置)

学习路径建议

  1. 基础:Test Case → Object Repository → Checkpoints
  2. 进阶:Keywords → Data Files → Test Suite
  3. 高级:Test Listeners → Plugins → 自定义报告
  4. 架构:CI/CD 集成 → 分布式执行 → 自定义插件开发

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐