Groot

Apache-2.0 license
Java
yun · June 03, 2025 · 154 次阅读 · 0 条评论

Groot 是一款基于 Java 生态构建的轻量级开源自动化测试工具,为测试人员和技术团队提供高效的自动化能力支撑。通过多种形式的用例支持与简洁的设计理念,帮助快速落地自动化测试、数据工厂构建、接口健康巡检等核心质量保障场景。

设计目标

Groot 从两个视角来设计工具,一个是编写测试的用户视角,一个是扩展开发的开发视角。

  • 用户视角:简单可维护

    用例简洁易懂:没有冗余的代码,贴近自然表达和工作流的写法,可读性强。执行逻辑简单易懂,概念统一。

    专注业务逻辑:将通用能力沉淀到底层组件中,用例开发时只需关注业务层面的逻辑。

    方便交接维护:统一的 DSL 或配置写法,即便新增扩展,用例写法依旧可以保持不变。支持分层设计,通过对象定义、逻辑复用和用例编排分层,提高可维护性。

    快速排查错误:代码风格用例通过函数式写法来支持用例调试,降低用例排错成本。日志输出中包含完整步骤编号,快速理清层次关系。

  • 开发视角:通用易扩展

    源码阅读:关键的地方都有相应的注释,方便快速理解源码。

    功能扩展:插件化设计。提供多个扩展接口,自由定制功能扩展。每个扩展项目可以包含一个或多个扩展,可独立打包发布,并在测试项目中直接引用。

    平台集成:可作为自动化测试平台或数据工厂的执行引擎,通过定制扩展实现企业定制化需求。如果设计得当,自动化测试平台也可以支持 Java/Groovy 形式用例,可视化用例(JSON 用例)也可以在 IDE 中进行调试,充分利用平台和 IDE 的各自优势。

用例演示

目前支持三种形式的用例编写:Java 脚本、Groovy 脚本和 Yaml/JSON 脚本。

Yaml 风格用例。配置风格用例适合简单的测试场景,以及平台化开发。

name: 第一个低代码用例
steps:
  - name: 访问 TesterHome 首页
    http:
      url: /topics?page=2
      method: GET
  - name: 第二次访问 TesterHome 首页
    http:
      url: /topics
      method: GET
      params:
        page: 2

Groovy 风格用例。Java/Groovy 用例可以充分利用编程语言和 IDE 的优势,如自动提示、代码封装、三方库调用等等。

import com.liyunx.groot.testng.GrootTestNGTestCase
import com.liyunx.groot.testng.annotation.GrootSupport
import org.testng.annotations.Test

import static com.liyunx.groot.protocol.http.HttpVirtualRunner.http

class GroovyGetTest extends GrootTestNGTestCase{

    @Test
    @GrootSupport
    public void testGet() {
        http("访问 TesterHome 首页") {
            get("/topics?page=2")
        }

        http("第二次访问 TesterHome 首页") {
            get("/topics")
            queryParam("page", "2")
        }
    }

}

更多用法见帮助文档(点击上方的项目文档按钮)。

定制开发

Groot 旨在提供自动化测试基础能力,如环境管理、协议请求、数据传递、步骤控制、切面逻辑、提取、断言等。具体的场景解决方案,如 Diff 测试、可视化管理、命令行执行、AI 生成用例等特性,属于周边功能。本项目当前开发维护的重点仍是基础能力,而非周边能力开发。

Groot 提供了多个扩展点,可以覆盖绝大部分扩展场景。扩展组件可以独立发布(发布为独立的 Jar)。

如果你有需求无法通过扩展点实现,请在 GitHub Issues 中详细描述你的需求。

参与贡献

  • 通过 PULL 请求的方式提交缺陷修复、代码优化(重构)或新功能代码。
  • 帮助完善文档。
  • 提交落地案例。
  • Issues 中提交详细的需求、建议或问题描述,或帮助回答别人的 Issues。
评论列表
No Comment at the moment.