Skip to main content

RodSki - XML-driven keyword automation testing framework for AI agents

Project description

RodSki

RodSki 是面向 AI Agent 的跨平台确定性测试执行引擎,基于 XML 活文档协议,支持 Web(Playwright)、Android(Appium)、iOS(Appium)和桌面应用(PyWinAuto)的自动化测试执行。

Agent 负责思考,RodSki 负责稳定执行。

测试数据层支持 XML + SQLite 共存:data.xml / data_verify.xml 仍保留为固定 XML 入口,data/data.sqlite 作为可选且推荐的主存储;混合模式受支持,但不推荐作为常态。

特性

  • 结构化 XML 协议 — model / case / data 活文档,Agent 可读可写
  • SQLite 测试数据主路径 — 支持 data/data.sqlite 与 XML 共存,混合模式兼容但不推荐
  • 多平台确定性执行 — Web / Android / iOS / Desktop 统一关键字
  • 视觉定位能力 — OmniParser + LLM 语义定位(可选 AI 能力层)
  • Agent 友好 CLI — run / data / init / explain / dry-run
  • 活文档模式 — Agent 写 XML → RodSki 执行 → 结果反馈 → Agent 分析
  • 智能等待 — 自动处理元素加载延迟,零配置开箱即用
  • 智能诊断 — AI 辅助失败分析与恢复建议(可选)

快速开始

前置条件

  • Python >= 3.9
  • pip >= 21.0

安装

# 推荐:创建虚拟环境
python3 -m venv .venv && source .venv/bin/activate

# ---- rodski 执行引擎 ----

# 基础安装(仅核心 + XML / SQLite 数据解析)
pip install -e .

# Web 测试(Playwright)
pip install -e ".[web]"
playwright install chromium          # 安装浏览器

# 移动端测试(Appium)
pip install -e ".[mobile]"

# 全部能力(Web + Mobile + Vision + LLM + GUI)
pip install -e ".[all]"

# ---- rodski-agent(AI Agent 层)----

# 基础安装
pip install -e rodski-agent/

# 开发环境(含 pytest)
pip install -e "rodski-agent/[dev]"

# MCP Server 支持(需 Python >= 3.10)
pip install -e "rodski-agent/[mcp]"

rodski 执行引擎

# 执行测试
rodski run case/ --output-format json

# 解释用例(自然语言)
rodski explain case/login.xml

# 查看模块中的逻辑表(XML + SQLite 统一视图)
rodski data list rodski-demo/DEMO/demo_full/

# 查看逻辑表字段
rodski data schema rodski-demo/DEMO/demo_full/ RegisterAPI

# 查看指定数据行
rodski data show rodski-demo/DEMO/demo_full/ RegisterAPI L001

# 校验数据层(strict 会额外检查 XML 列漂移)
rodski data validate rodski-demo/DEMO/demo_full/ --strict

# 初始化标准测试模块骨架
rodski init /path/to/MyTestModule --with-verify --with-sqlite

# 干跑模式(仅验证不执行)
rodski run case/ --dry-run

SQLite 测试数据使用规则

  • data/data.sqlitedata/ 目录下唯一固定的 SQLite 测试数据文件
  • 同一 data/ 目录下的 DB 数据统一保存在 data.sqlite
  • 逻辑表名必须与模型名强一致
  • Case 中 data 只写 DataID(如 L001 / D001 / V001),不写 表名.DataID
  • type / send / DB 默认按模型名查找同名逻辑表
  • verify 默认按 {model}_verify 查找验证表
  • XML 与 SQLite 可以共存,但同名逻辑表跨源时必须报错

rodski-agent (AI Agent 层)

# 从需求自动生成测试用例
rodski-agent design --requirement "测试登录功能" --output output/login/

# 执行测试用例(含智能重试)
rodski-agent run --case output/login/ --format json

# 设计 + 执行一步到位
rodski-agent pipeline --requirement "测试登录" --output output/login/ --format json

# 诊断失败用例
rodski-agent diagnose --result output/login/result/

架构概览

Agent (探索/决策) → XML / SQLite 测试数据 → RodSki (执行) → JSON (结果) → Agent (分析)

RodSki 作为 Agent 工具链中的执行层,提供确定性、可重复的测试执行能力。Agent 通过 XML 协议描述测试意图,RodSki 负责跨平台执行并以 JSON 格式返回结构化结果,供 Agent 进一步分析和决策。

在数据层,RodSki 保持现有 DSL 语义不变:Case 的 data 仍只写 DataID;逻辑表名仍与模型名一致;verify 仍自动查找 {model}_verify。SQLite 只是 Data 层的新承载方式,不改变关键字写法。

项目结构

RodSki/
├── rodski/              # Layer 1: 执行引擎
│   ├── core/            # 执行引擎(关键字、解析器、诊断)
│   ├── drivers/         # 平台驱动(Playwright/Appium/PyWinAuto)
│   ├── llm/             # LLM 能力层(可选)
│   ├── vision/          # 视觉定位(可选)
│   ├── rodski_cli/      # CLI 子命令(run/explain/data/init ...)
│   ├── config/          # 配置文件
│   └── docs/            # 框架文档
├── rodski-agent/        # Layer 2: AI Agent 层
│   ├── src/rodski_agent/
│   │   ├── design/      # Design Agent(需求→用例)
│   │   ├── execution/   # Execution Agent(执行→诊断→修复)
│   │   ├── pipeline/    # Pipeline 编排
│   │   ├── common/      # 共享工具(LLM、XML、配置)
│   │   ├── cli.py       # CLI 入口
│   │   └── mcp_server.py # MCP Server
│   └── tests/           # 453 个单元测试
├── rodski-demo/         # 官方示例
└── .pb/                 # 项目管理文档

文档

文档 说明
Agent 集成指南 Agent 接入主入口
用例编写指南 XML + SQLite 数据组织与用例编写规范
核心设计约束 框架不可违反的设计约束
数据文件组织 data.xml / data_verify.xml / data.sqlite 组织规则
关键字参考 全部关键字语法说明
架构说明 框架内部架构
视觉定位 OmniParser 视觉定位能力

智能等待

RodSki 内置智能等待机制,自动处理 UI 元素的加载延迟,无需手动添加等待步骤。

  • 零配置 — 默认启用,开箱即用
  • 性能优化 — 元素就绪时立即执行,不浪费时间
  • 自动重试 — 元素未加载时自动重试(默认 30 次 x 300ms = 9 秒)
  • 可配置 — 支持自定义重试次数和间隔

配置项位于 rodski/config/config.json

{
  "smart_wait_enabled": true,
  "smart_wait_max_retries": 30,
  "smart_wait_retry_interval": 0.3,
  "smart_wait_log_retry": true
}

License

MIT License - 详见 LICENSE

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rodski-6.1.5.tar.gz (211.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rodski-6.1.5-py3-none-any.whl (265.1 kB view details)

Uploaded Python 3

File details

Details for the file rodski-6.1.5.tar.gz.

File metadata

  • Download URL: rodski-6.1.5.tar.gz
  • Upload date:
  • Size: 211.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for rodski-6.1.5.tar.gz
Algorithm Hash digest
SHA256 237eeee93655f9a88872bada1fe12f2d7ef479fed59b5ea26213cb9e86df45ad
MD5 635c5d5e3d2c5149e36a1912ffafc382
BLAKE2b-256 4bb95570ac1933801d1899674731b8176897065182c88ea8824979c08cce7a75

See more details on using hashes here.

File details

Details for the file rodski-6.1.5-py3-none-any.whl.

File metadata

  • Download URL: rodski-6.1.5-py3-none-any.whl
  • Upload date:
  • Size: 265.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for rodski-6.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 482039c2bbe2ef1ee9660e8c14ad0af216229a0118b070be765e25ec744d73bf
MD5 e086661e61cf944e4464b4c08100758d
BLAKE2b-256 1f40583ff054444f1a065457948df8d5ce183ac65993a816dc4907558e9b5ca4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page