E2E测试
iLogtail提供了一个完整的E2E测试引擎,方便您快速开展集成测试,从而进一步保证代码质量。在大部分情况下,您只需要编写一个配置文件来定义测试行为,即可轻松完成测试。
工作原理
E2E测试采用行为驱动开发(Behavior-Driven Development)的设计思路,通过定义一系列测试行为,并通过配置文件的方式来描述测试场景,从而实现对插件的集成测试。测试引擎会根据配置文件中的内容,正则匹配对应的函数,并解析配置文件中的参数,传递给对应的函数。从而完成自动创建测试环境、启动iLogtail、触发日志生成、验证日志内容等一系列操作,最终输出测试报告。
相关参考:
测试流程
环境准备
在准备开始进行集成测试前,您首先需要准备以下内容:
- 测试环境:主机(可通过SSH访问)、K8s集群(可通过kubeconfig访问)、Docker-Compose环境(需在本地安装docker-compose)
- 部署 iLogtail
配置文件
对于每一个新的功能,您都需要在./test/e2e/test_cases目录下创建一个新的feature配置文件。每个配置文件中可以包含多个测试场景,每个测试场景由一个或多个步骤组成。
配置文件的基本框架如下所示:
Feature
定义了一个测试功能,下面为这个功能的描述信息。在Feature
下可以定义多个测试场景。Scenario
定义了一个测试场景。在Scenario
下可以定义多个行为。- 行为定义分为三类:
Given
:定义了一些准备测试条件的行为。When
:定义了一些触发测试条件的行为。Then
:定义了一些验证测试条件的行为。
- 行为中使用
{}
作为标识符,该部分内容将作为参数,传递给对应的Go函数。 @
表示一个tag,在运行测试时,会根据tag的不同,分别运行。除了自定义的tag外,测试框架定义了一些默认的tag:@e2e
:表示该测试场景为E2E测试。@regression
:表示该测试场景为回归测试。@host
:表示该测试场景在host环境下运行。@k8s
:表示该测试场景在k8s环境下运行。@docker-compose
:表示该测试场景在本地启动docker-compose运行
运行测试
在所有测试内容准备完毕后,您可以直接在test目录下以go test的方式运行E2E测试。根据您的需求,可以选择运行所有测试或者指定测试。
拓展
如果目前engine中已有的测试行为无法满足您的需求,您可以参考以下添加指南,自行拓展测试行为。