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 中详细描述你的需求。