Skip to content

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

当前版本代码行覆盖率 60+%,基本趋于稳定,可用于企业实战。

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

开发背景

企业中经常会有各种自动化测试任务的需求,比如:

  • 通过接口、UI 或 SQL 准备一些功能测试或性能测试需要的数据
  • 编写自动化测试用例用于冒烟测试、回归测试
  • 对版本升级前后的接口数据进行 Diff 测试
  • 使用自动化脚本完成复杂测试需求,比如风控业务的因子清洗

完成这些自动化测试任务面临各种挑战:

  • 使用代码开发自动化任务时(如 RestAssured)
    • 用例需要在不同的环境中执行,需要一个简单的环境管理功能
    • 用例需要同时调用不同的对象,比如 HTTP 接口、UI 对象
    • 对测试步骤进行参数化时需要自己包装
    • 没有一个统一的用例规范,用例可读性差
  • 使用可视化工具开发自动化任务时(比如 MeterSphere)
    • 复杂场景实现起来不方便,比如文件读写、引用三方库
    • 用例步骤中的代码编辑和调试困难,问题排查成本高
    • 复用能力差,不能随意组装函数或复用自定义断言
    • 核心的用例执行引擎不开源,无法了解技术实现细节
    • 能力无法沉淀,如果想开发其他自动化任务,需要重新开始

在自动化测试任务开发领域,虽然不同应用场景存在技术要求和功能需求的分化,但其底层存在明显的共性需求,比如环境管理、请求调用、逻辑控制、数据传递、数据截留、数据校验等等。如何既能提供这些基础能力又能自由扩展,既能支撑多场景适配又能使用例变得简洁可维护,是本工具想要尝试解决的问题。

设计目标

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

  • 用户视角:简单可维护

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

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

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

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

  • 开发视角:通用易扩展

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

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

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

使用场景

  • 不同技术水平的测试人员

    对编程了解但不熟悉的测试人员,可以使用低代码形式的用例,比如 Yaml 或 JSON 用例。

    对编程比较熟练的测试人员,推荐使用 Java/Groovy 形式的用例。

  • 代码 VS 平台

    代码项目(Maven/Gradle)具有更大的灵活性,可以做出更好的结构设计和复用设计,完成复杂的的自动化测试任务。

    自研测试平台可以完成可视化编辑、数据留档、数据统计、用例调度(测试计划)、用例服务化等代码项目不易做到的事情。

    如果没有特殊要求,可以先使用代码项目完成自动化任务,上手快可快速落地。有足够需求、资源和意愿,再去考虑是否要自研测试平台。

核心特性

  • 多环境管理。
  • 两种风格用例:
    • 代码风格用例:适用于熟悉编程的测试人员,或复杂用例编写。
    • 配置风格用例:适用于不熟悉编程或要进行平台开发的测开人员。
  • 特有的上下文继承机制,方便变量管理和配置继承。
  • 切面编程:比如加解密、授权认证、Allure 扩展等。
  • 多个扩展点:
    • 支持扩展新的协议或控制器。
    • 支持扩展前后置处理器、提取器、断言。
    • 支持扩展新的函数。
    • 支持扩展新的模板引擎(默认为 FreeMarker 引擎)。
    • 支持扩展新的数据加载器(默认从文件加载)。
  • 第三方集成,Groot 未和具体的框架耦合,用户可自由选择 TestNG、Spock 或 Junit 框架编排用例,集成 Allure 或其他测试报告。