测试自动化脚本
FWScripts作为自动化执行的脚本语言,最重要的应用场景为测试自动化,因此其支持测试用例相关的概念,如测试用例TC、测试步骤Step、执行流Flow及可重复模块Module。
针对测试自动化脚本,BizRunner在执行的时候,既可以按照一般的FWScript脚本执行,也可以与企顺测试自动化执行框架(BizAT)配合起来执行。
关于脚本的执行模式,参见BizRunner调用说明
在测试自动化执行框架(BizAT)下的执行
在BizAT框架下,BizRunner将透过BIZATDLL与执行框架BizAT保持通信,完成测试用例自动化执行所需要的功能。
测试用例脚本一般以测试步骤为单位,逐步执行,而在测试用例脚本的执行过程中,通过与BizAT框架的配合,可以达到最佳的用户体验,如可以针对每一步选择使用人工进行测试;可以控制不显示任何的通知信息,让测试脚本快速执行;可以在每一个步骤执行之前停下了等待测试者的选择等等。为了达到这一个功能,必须针对每个测试步骤进行详细说明,这个说明以Json的格式传递给BizRunner,这个说明文件简称为TCEXE文件,TCEXE的内容定义参见:
测试执行说明TCEXE
另外,有一个专门的JSON格式文件用来提供与自动化测试脚本相对应的说明,针对每一个测试步骤,都有详细的文字描述,包括这一个步骤的简单描述,这个步骤要执行的动作说明,这个步骤需要检查的内容,在这个步骤中,如果发现有错误,需要保存下来的文件,等等,这个文件称为 TC说明文件(简称TCJSON文件),该文件的内容定义参见:
测试脚本说明TCJSON
在自动化脚本中,可以使用如下语句指定相对应的TCJSON文件
`FilePath :如果FilePath以\开头,说明使用的是相对路径,此时需要依据当前的BizAT系统环境来获取这个TCJSON文件,如果不是以\开头,则直接采用该绝对路径目录获取。
测试用例脚本TC与功能模块脚本Feature
用于软件测试的脚本分为测试用例TC脚本和功能模块Feature脚本:
自动化脚本类型 | 描述 |
---|---|
测试用例TC | 严格按照步骤进行组织的自动化脚本,在执行过程中,BizRunner将透过BIZATDLL报告每一步的结果,如果有错误,报告相关的错误信息,如果需要服务器协助执行一些动作,则发指令给服务器,在执行过程中,如果需要与用户交互,则显示交互对话信息,这些交互对话信息可以传递到服务器,用户可以在服务器端提交对话结果,也可以直接在被测系统SUT端提交对话结果,在任何一边提交结果后,另一端都会自动关闭该对话框。 TC的执行可以在安排任务的时候指定执行哪些步骤或哪个模块,一共执行多少次。 |
功能模块Feature | 不按步骤组织的自动化脚本(通常要求是100%自动化的脚本,没有任何的与用户交互的对话,但不是前提条件),执行过程中若有结果报告,可以透过BIZATDLL传递给BizAT,也可以发指令给服务器,让服务器配合执行一些动作,如远程唤醒等等。 |
注意:TC与Feature使用统一的TCJSON格式描述,BIZAT依据totalstep的值来判断,如果==0,则为Feature,否则为TC。
Bizrunner在执行脚本的时候,针对TC与Feature的行为有较大的差异。
执行说明文件的调入
在BizAT框架下,测试自动化脚本的执行需要依照TCEXE的定义进行。 在BIZAT框架中启动BizRunner时,会使用-t这个执行选项,BizRunner根据这个选项,透过BIZATDLL向BizAT请求获得TCEXE,然后根据这个TCEXE来确定后面的执行方式。 在TCEXE中,不仅包含有执行方式的选择定义,更重要的时,指定了所要执行的脚本,以及是否为部分执行的说明,包含如下四种模式:
模式 | 参数 | 描述 |
---|---|---|
标准模式Normal | tcname | TC从第一步执行到最后一步 |
步骤重复 | tcname,begin, end, times | TC从第begin步执行到end步,一共执行times次 |
模块重复 | tcname, modulename, times | TC将模块modulename一共执行times次 |
Feature的重复执行 | featurename, times | 执行featurename一共times次 |
注意:前三种模式针对的是TC,第四种模式针对的是Feature
在脚本中定义执行选择
可以在代码中临时对执行的情况进行定义,该定义可以覆盖(Override)在TCEXE中的定义。
语句 | 代码 | 描述 |
---|---|---|
SetConfirm | @/1 | 每步Confirm,也就是说,执行到每一步的时候,都显示一个Confirm确认窗口,让测试者点击一下再接着往下执行 |
SetNoConfirm | @/2 | 每步不需要Confirm,缺省状况为不需要每步确认 |
SetInDetail | @/3 | 显示每个地方的详细说明,亦即每次显示(notify)每个文档语句,如:/1: /2: /3: |
SetNotInDetail | @/4 | 不显示每个地方的详细说明,不显示每个文档语句 |
SetNoUpdate | @/5 | 不显示本地的执行状况窗口(右下角的Panel),缺省为不显示 |
SetUpdate | @/6 | 显示本地的执行状况窗口 |
SetInSilent | @/7 | 不显示Notify对话框,脚本中的所有notify语句都不显示。相当于ExeOption中的Insilent |
SetNotInSilent | @/8 | 显示Notify对话框 |
从TestCase测试文本到测试脚本
FWScript支持的一种重要开发模式是从测试用例的测试文本开始,一步一步增加自动化脚本,从0%的自动化比例逐步提升到100%。针对这种开发模式,FWScript与BizAT提供了一系列的语句与配置功能:
企顺公司开发的BizTC工具通过直接读取测试用例的自然语言文本(txt格式或者Excel格式),自动生成了TCJSON文档和最初的脚本文件,如下所示:
上述脚本为一个可以运行的FWScript文件,其中的“/1: ” 称为文档语句,这些语句直接来自于测试用例文本,但在FWScript中,它可以作为一个notify语句进行显示,1-9个数字表示不同的含义:
文档语句数字 | 识别出的语句的特性 |
---|---|
1 Action | 表示为一个普通的动作 |
2 Validate | 表示为一个测试检查项 |
3 Reboot | 表示为一种关机退出模式,重启或关机或Logoff |
4 Repeat | 表示为一个重复语句,重复一些步骤或某个模块 |
5 Prepare | 表示为一个准备动作 |
6 Recover | 表示为一个恢复的动作 |
7 Require | 表示为一个需要的条件,在测试之前需要检查 |
8 Header | 表示为测试的一个题目信息 |
9 Info | 表示为一个一般的信息 |
在获得上述文件的时候,通过设置ExeOption.indetail = true, (也可以直接在脚本中写入语句 SetInDetail) 可以让BizRunner执行这个脚本文件的时候显示每一条内容,便于开发者熟悉要编写脚本的测试用例。
开发者在每个文档信息的下面写对应的脚本,当大部分的脚本编写完成后,可以设置ExeOption.indetail = false (或者直接在脚本中写入语句 SetNotInDetail),这样BizRunner执行的时候就只可以看到代码的运行。
为了让代码在执行的时候体现完整的功能,在没有对应代码的文档语句后面,写入一个代码 StubCode,当执行到这个代码的时候,它会自动显示(Show 或 Check)它上面的文本内容。
注意:StubCode也可使用 Stub,CodeStub,WithManual;对应的符号代码为 “@/@”。 也可以使用不带任何参数的 Show或Notify或Check (可以简单使用符号 @ 或 @: 或 @@)
已编写好大部分脚本的例子
<< FWScript 结构组织 | 步骤与模块 >> |