Gate教程

Gate教程

图形化的逻辑表述,可视化建模比代码逻辑表述更加容易理解,不少有优秀的软件实践已经充分证实了这一点。 Gate 是可视化建模在测试领域的一次实践,咱们指望经过结合实际经验总结的出的自动化测试分层方式和友好的逻辑表达方式,达到度下降自动化测试用例开发难度,提搞自动化测试效率和可维护性的目标。html

主要功能

  • 可视化测试逻辑流建模
  • 封装可复用测试流程
  • 近似JMeter的用户自定义变量及内置函数
  • 近似TestNG的测试用例组织能力。
  • 用例级别的多线程执行能力以及所须要的用例执行依赖
  • CSV数据格式的数据驱动
  • 可拖拽的Selenium和HTTP/HTTPS组件
  • CMD执行完成后自动释放资源更好的支持CI/CD。

使用Gate

Gate是全图形化的功能测试环境,包含功能测试须要的所有必要功能。目前Gate的主要用于支持UI自动化测试。Gate把Selenium API从新划分红不一样的组件,提供对应的支持组件达到DnD方式画图建模能力。 java

启动Gate

Gate是开箱即用软件,从XXX处获取安装包到本机,解压运行${GATE_HOME}/bin/gate.bat后便可启动。 Gate支持图形和命令行两种执行模式。图形模式主要用于开发,命令行模式主要用于测试执行以及对CI/CD的支持。 参数说明:apache

名称 说明
-h 打印帮助信息
-n 命令行模式执行
-G 向Gate传递Gate变量值。例如 -GvarName=value -GsomePort=8081
-t 指定Gate文件 *.gmx 的位置
-S 经过前缀过滤Test suites,使用逗号分隔,仅在命令行模式生效
-C Filter test case by name prefix. Separate with comma. Command line only

新建测试用例

添加Test Case

Test Case是一种存放模型容器,容器种的模型即为用例的测试用例执行逻辑。右键点击Test树根节点,鼠标移动到Add选项,在子选项中选择TestSuite点击。 右键点击上一步建立的TestSuite,鼠标移动到Add选项,在子选项中选择TestCase点击。 create a test suite then add test case to it. Change the name of elements by edit the name panel then press enter. Double click on the test case to open the model editor. 多线程

TODO add screen shot 点击上一步建立的TestCase,修改下方属性面板中的name,修改后敲击回车。可使用相同的方法修改TestSuite和Fixture的名称并发

添加执行单元和选择条件

双击上一步建立的TestCase打开模型编辑器。鼠标移动至右侧模型编辑器,在模型编辑器上鼠标点击右键,按照add->controller->start顺序选择子菜单,点击start添加start执行单元至TestCase。Start单元是模型的起始顶点,Gate中定义的模型所有从Start单元开始执行。 模型编辑器上点击右键打开菜单,按照add->controller->debug顺序选择子菜单,点击debug添加debug执行单元至TestCase 模型编辑器上点击右键打开菜单,按照add->link->success顺序选择子菜单,点击success添加选择条件Success至TestCase 框架

链接执行单元和选择条件

在上一步打开的模型编辑器中,鼠标左键选中success条件带箭头的一侧,拖动箭头至debug执行单元,debug执行单元出现绿色边框时,释放鼠标左键。 鼠标左键选中success条件不带箭头的一侧,拖动箭头至start执行单元,start执行单元出现绿色边框时,释放鼠标左键。 这个模型表达了首先执行start,start执行成功后执行debug。 dom

快捷键:编辑器

Test和Action树没有快捷键可是模型编辑器实现常见的键盘编辑快捷键 “ctrl +a”, “ctrl +c”, “ctrl +v”, “ctrl+x” for edit and “ctr+x”, “ctrl + y”
拖拽 模型编辑器和Test树实现了拖拽以支持用例执行依赖。Action树当前不支持拖拽ide

执行和中止测试

执行测试

鼠标点击以前建立的测试用例。点击工具栏上的绿色箭头执行测试。点击模型编辑器下方的面板的“result”页签查看测试结果。 点击“result”页签上结果树上的节点,查看执行单元执行相关的信息 快捷键: “ctrl + r”函数

中止测试

点击工具栏的红色方框中止测试。红色方框在测试执行时会被激活,咱们给以前建立的测试用例添加一个“sleep”使红色方框处于激活状态。

  • 双击点击以前建立的测试用例打开模型编辑器。
  • 模型编辑器上点击鼠标右键打开菜单,按照add->timer->constant timer顺序选择子菜单,点击constant timer添加定时器至模型。点击constant timer,在下方属性面板中修改等待时间。
  • 模型编辑器上点击鼠标右键打开菜单,添加选择条件Success。拖动success有箭头一侧连接至constant timer,拖动success另外一侧连接至debug。点击绿色箭头执行测试用例,测试用例执行时,红色方形图标被激活。点击红色放行图标中止测试用例执行。 快捷键: "ctrl + comma"

执行多个测试用例

在以前建立的Test Suite中多添加多个测试用例。鼠标右键点击以前建立的测试用例,在菜单中选择“copy”复制这个用例,鼠标右键点击Test Suite,在菜单中选择“paste”添加以前复制的用例至Test Suite。 按下键盘ctrl同时点击测试用例选择多个测试用。点击红色箭头执行,这些选中的测试用例将会被执行。点击Test Suite,点击红色箭头,Test Suite中所有用例会被执行。按下键盘“ctrl”键时,能够选择多个Test Suite。点击Test Suites,点击红色箭头,执行全部的测试用例。

启用禁用Test Suite/Case

Test Suite、Case能够被启用/禁用,新建Test Suite、用例时默认状态是启用,选择鼠标右键菜单的“disable”禁用这个单元。单元被禁用后能够经过鼠标右键菜单“enable”从新启用这个单元。 Test Suite,Case被禁用后这个单元在测试启动时会被忽略,当存在其余测试单元依赖这个测试单元,系统会提示并中止启动。

测试用例依赖

选中多个用例执行测试时,每一个用例会分派给不一样的线程并发执行,测试用例依赖功能能够确保多线程并发执行时某个用例能够在某个或某几个用例以后执行。

测试用例只能依赖相同Test Suite内且处于上方的测试用例,测试用例能够依赖多个用例。 设置${GATE_HOME}/bin/gate.properties文件中的“gate.engine.test.runner.number”能够调整最大并发数限制。当最大并发数的值设置为1系统为单线程执行,这时会按照Test树上用例组织顺序执行。

使用数据驱动

添加“csv data provider”至测试用例后,测试用例会根据csv data provider配置的csv文件迭代执行测试用例,每一个迭代读csv中的一行,csv文件没有下一行数据时中止迭代这个测试用例并执行下一个测试用例。

  • 在一个包含“Debug”执行单元的测试用例上点击鼠标右键打开菜单,按照add->data provider->csv data provider顺序选择子菜单,点击csv data provider添加csv data provider到测试用例。
  • 点击上一步添加的csv data provider,在下方属性面板中的“name”选项输入新的名称后回车更更名称。
  • 在“file name”选项中输入csv文件的绝对路径。例如,文件名称为example.csv,文件内容以下。
11,12,13
21,22,23
  • 在“variables name”属性栏填写变量名,若是有多个能够用“,”分割(ASCII符号),分隔符能够被修改。上一步建立的csv文件中,每一列对应一个变量,例如“v1,v2,v3”,为三个变量名。
  • 点击测试用例,而后点击绿色箭头运行这个测试用例。运行完成后在结果树上点击Debug单元检查结果,能够看到变量“v1,v2,v3”每一个迭代的值。
Configuration Result

使用Fixture

Fixture类型单元是一种存放模型的容器,容器中的模型会根据Fixture类型在测试用例以前、以后执行,与大多数测试框架同样,Gate包含两种类型的Fixture及setup、teardown。Setup在所用测试用例以前执行,teardown在全部测试用例以后执行。当存在多个setup、teardown时,相同类型的Fixture会按照测试树上的前后顺序依次执行。Test Fixture能够被添加至test suites或者test suite节点。

  • 在Test suites、suite单元上点击鼠标右键,按照add->fixture->setup、teardown选择fixutre点击,添加setup、teardown。
  • 双击fixutre打开模型编辑器,添加 “start”和“debug”和“next”条件,链接start和debug。
  • 点击test suites、suite,点击工具栏上的绿色箭头执行测试,能够看到setup在全部test case以前运行,teardown在全部测试用例以后执行。

使用Action

Action类型元素是一种存放测试模型的容器,能够被Fixture、TestCase容器中的模型引用。使用Action能够实现重用测试逻辑,例如,咱们能够把登陆,某个表单添加若干条数据等操做。Action能够在TestCase、Fixture或其余Action模型中被引用。 Action被引用后在执行时会使用和引用它的模型相同的上下文

  • 点击左上角树菜单上方的“Lib”标签页,右键点击Lib树的根节点,按照add->action选择子菜单,点击action添加action单元。

Add Action

  • 双击上一步建立的action打开模型编辑器,添加“start”和“debug”执行单元并添加一个“next”条件链接它们。

Edit Action Model

  • 点击左上角树菜单上方的“Test”标签页,双击要引用action的test case打开模型编辑器。

Open Test Case

  • 保持上一步打开的模型编辑器,点击“Lib”页签切换到Action树面板,右键点击上面建立的Action,在菜单中选择“add to editor"添加Action至当前打开的模型编辑器。

Add Action to Test Case

  • 在模型编辑器添加“success”条件,并使用“success”链接“Debug”和“Action”

Link the Debug and the Action

  • 执行测试并查看结果,Action会做为一个可展开的子节点出如今结果树上。

Run the test and check the result

函数和变量

函数和变量功能的使用方式彻底等同于JMeter,能够翻阅JMeter文档了更懂多关于函数和变量使用的细节 https://jmeter.apache.org/usermanual/functions.html

变量

变相能够在全部类型的模型中使用,也能够在测试树上的单元(test suites、suite、case和Fixutre)中使用。 变量能够经过“User define variables”,“Data Provider"或在JSR223Sampler中嵌入“vars.put("name","value")”定义。能够在任何字符串中使用${变量名}引用变量的值或在JSR223Sampler中嵌入“vars.get("name")”获取。 同名的变量会被按照声明的位置根据suites -> suite -> case -> model的顺序重载。

  • 在测试单元上添加用户定义变量“user defined variable”。 右键点击test suite、case节点,按照add -> config -> “user defined variable”顺序选择子菜单,点击“user defined variable”。

Add user define variables

点击上一步添加的“user defined variable”,在下方属性面板上的argument区域点击“add”添加一个变量,输入变量名称和值,输入后敲击回车键。 运行测试用例,在结果树上点击debug查看运行时变量。

Add variables

  • 在模型中添加变量,双击模型容器单元(Test case、fixture或action)打开模型编辑器,在模型编辑器区域点击右键打开菜单,按照add-> config -> “user defined variables”顺序选取子菜单,点击“user defined variables”添加用户自定义单元至模型。 点击上一步添加的“user defined variable”,在下方属性面板上的argument区域点击“add”添加一个变量,输入变量名称和值,输入后敲击回车键。 运行测试用例,在结果树上点击debug查看运行时变量。

函数

函数能够在全部类型的模型中或用户定义的变量中被使用,函数能够经过这种方式调用“${__functionName(var1,var2,var3)}”。函数的使用方式和JMeter彻底相同,几乎全部的函名称、参数、功能也和JMeter彻底相同,使用变量名时请注意空格符也会做为变量名 下面选取__javaScript函数举例说明怎么使用函数:

  • 双击测试用例打开模型编辑器,点击“user defined variable”执行单元,添加一个用户自定义变量n1=1
  • 模型编辑器上点击鼠标右键打开菜单,顺序选择click -> add -> controller -> Decide添加一个“Decide”执行单元。在Decide的condtion栏中输入${__javaScript(var a=${n1};a >1? true : false;)}
  • 添加一个“Debug”执行单元,添加一个“success”条件,链接Decide和Debug,有箭头一侧链接在Debug上。添加一个“Assert”,设置变量名为“n1”,设置“Pattern to Test”为0。
  • 运行测试用例并查看结果。 这个用例的在达到${n1} <=1 && ${n1}!=0条件时会失败。

下列函数彻底和JMeter提供的同名函数相同,请参考文档 https://jmeter.apache.org/usermanual/functions.html

__time;__Random;__log;__logn;__UUID;__groovy;__javaScript;__property;__setProperty;__split;__eval;__evalVar;__V;__char;__escapeHtml;__unescape;__unescapeHtml;__urlencode;__urldecode;__dateTimeConvert __digest;__isVarDefined;__isPropDefined;__changeCase;__FileToString;__StringToFile;__XPath

下列函数彻底和JMeter Plugin提供的同名函数相同,请参考文档 https://jmeter-plugins.org/wiki/Functions

__base64Encode;__base64Decode;__env;__if;__strLen;__substring;__strReplace

下面几个函数是Gate新增的

name parameters usage
__JSONPath JSON文件名, JSONPath string 使用方法同 __XPATH
__TestSuitesName 返回调用函数模型所在的Test Suite名称
__ThreadName 返回调用函数模型所在的执行线程名称。 格式为 <Suite name>_<model name>

分析和注释

分析功能目前选项为“connect”,检查是否模型中全部的执行单元和执行条件都是链接的。

点击菜单栏上的Option,顺序点击Option -> Analyze -> “Is Connected”, 若有存在没有链接条件的执行单元或者没有链接执行单元的条件,会提示失败。 经过提供“note”类型的条件和“Commnet”类型的单元支持注释功能。note条件没有指向(及箭头),note链接的执行单元不会被执行。“comment”类型的单元不会被执行,点击comment能够下方属性栏中书写注释。

联通性检查和注释

分析功能目前选项为“connect”,检查是否模型中全部的执行单元和执行条件都是链接的。

点击菜单栏上的Option,顺序点击Option -> Analyze -> “Is Connected”, 若有存在没有链接条件的执行单元或者没有链接执行单元的条件,会提示失败。 经过提供“note”类型的条件和“Commnet”类型的单元支持注释功能。note条件没有指向(及箭头),note链接的执行单元不会被执行。“comment”类型的单元不会被执行,点击comment能够下方属性栏中书写注释。

目录结构和配置文件

Gate跟目录包含两个子目录bin和lib, bin目录为Gate的执行包含执行文件和配置文件,lib目录包含运行须要的jar包。 bin目录中包含两个配置文件,gate.properties and system.properties,这两个配置文件都会在Gate启动时加载。 system.properties 文件中的配置项做用域为java虚拟机,实际功能操做相似于“java -Dname=value ...”或者程序中执行“System.setProperty(name, value)”。 gate.properties 加载Gate配置项,配置项明细和说明见文件注释

相关文章
相关标签/搜索