Squish GUI自动化测试概述

Squish是一款跨平台的GUI自动化测试工具,支持Web、桌面、移动端等多种应用的测试。其核心功能包括对象识别、脚本录制、测试执行和结果分析,支持Python、JavaScript、Perl等多种脚本语言。


安装与配置

下载Squish IDE后,根据目标平台(如Windows、Linux、macOS)完成安装。配置被测应用的路径及运行时环境,确保Squish可访问应用的可执行文件或Web URL。

# 示例:启动Squish服务器(Linux/macOS)
squishserver --verbose


录制测试脚本

  1. 启动录制:在Squish IDE中创建新测试用例,选择录制模式(如“Scripted”或“Keyword-Driven”)。
  2. 交互录制:操作被测应用,Squish会自动捕获GUI事件(如点击、输入)并生成脚本代码。
  3. 脚本保存:录制完成后保存为Python或其他支持的脚本语言。
# 示例:录制的Python脚本(点击按钮)
clickButton(waitForObject(":LoginButton"))
type(waitForObject(":UsernameField"), "testuser")


对象识别与验证

Squish使用对象映射(Object Map)管理GUI元素。可通过属性(如nametype)或视觉识别定位对象。

# 验证文本标签内容
label = findObject(":StatusLabel")
test.compare(label.text, "Login Successful")


脚本增强

  1. 条件等待:使用waitForObject避免因元素加载延迟导致的失败。
  2. 数据驱动:通过外部文件(如CSV)参数化测试数据。
  3. 错误处理:添加try-catch块处理异常。
# 数据驱动示例
with open("testdata.csv") as f:
    for row in csv.reader(f):
        type(waitForObject(":PasswordField"), row[1])


执行与报告

  1. 本地执行:直接在IDE中运行测试用例。
  2. 命令行执行:集成到CI/CD流程。
  3. 报告生成:Squish自动生成HTML或JUnit格式报告,包含截图和日志。
# 命令行执行测试
squishrunner --testcase /path/to/testcase


跨平台支持

对于多平台测试,需配置不同的环境变量和对象映射。Squish的脚本通常可跨平台复用,但需验证元素属性的一致性。

# 平台条件判断
if "Windows" in OS.getPlatform():
    clickButton(waitForObject(":Win_OKButton"))
else:
    clickButton(waitForObject(":Mac_OKButton"))


最佳实践

  • 模块化设计:将重复操作封装为函数。
  • 定期维护对象映射:适应UI变更。
  • 结合视觉验证:使用Squish的OCR功能辅助测试。
Logo

一站式 AI 云服务平台

更多推荐