断点续执行

在测试用例中,经常会出现重新启动后接着进行测试的情况,FWScript为此专门设计了"断点续执行"的功能。
"断点续执行”的含义是当FWScript脚本程序从某个地方退出后,BizRunner会保留相关的环境,在重新启动机器后再次调用BizRunner的时候,BizRunner将从上次退出的地方恢复环境然后继续往下执行。

注:“断点续执行”是企顺公司提出的创新思路,目标是让开发人员不用关心关机后(亦即程序退出后)变量内容消失的问题,关机重启只是作为程序执行过程中的一个执行步骤而已,程序再次调用后接着往下执行。
	

断点的定义

执行流"断点"定义:"( "与 ")d" :表示此处有执行流的断点,亦即在此处系统会重新启动 (注意:早期设计为"(n",n表示为第几个断点处,发现这样做弊大于利,测试用例中的断点可随意出现,因为它只不过代表一个重启机器的动作)
在括号之间的动作均为脱机动作(成为"脱机代码"),d表示重新启动的类型,如果没有d,则缺省为重启动reboot。
"("表示开始准备进入的脱机代码。
(早期设计时后面跟随需要保存的系统保留的变量,$0 到 $9,系统会自动备份与恢复在此处声明的变量, 后来改成无需指定, 系统会自动保存所有的执行环境)。
")d"表示脱机代码的结束,d表示为重启的方式。
在"("与")d"之间的代码均为重启后要执行的代码,称为“脱机代码”(Offline code),如需要显示的信息与需要检查的内容等等,详细描述参见后面。

(注意:不像第一版使用Json文件定死了一个测试用例执行时的Flows,程序执行的衔接必须由BizAT根据TCJSON的描述去完成,而在新的版本中(使用BizRunner的版本),Flow的概念是动态的概念,只要是从启动开始到机器关机或重启动,都算作一次Flow,Flow的收集是根据执行的情况自动收集的,由BizRunner系统自动去衔接程序的执行。)

BizRunner 在执行 ")d" 的时候,将调用特殊的工具toreboot,该工具等待SUTAgent结束后,在30秒后执行关机或重启动作。
关于toreboot的介绍,详见: ToReboot工具

注意:断点语句(断点的定义)不能出现在函数体内,也就是说,断点必须出现在外部(主函数)

各种退出方式

为了配合各种测试用例的需求,FWScript提供多种退出的方式,有的是在保存环境退出后调用toreboot的重启或关机,有的是直接退出,如下表所示:

代码描述
( offline / gotooffline脱机代码开始
) down / getout脱机代码结束,系统重启(reboot)
)( toreboot保存当前执行的环境和数据,用于关机或重启代码之前
)? 后面跟一个问号,表示有可能会执行到这里,如果执行到这里,则说明在)(之后的代码没有关机。后面使用IsDown()进行判断
)0 后面跟一串特殊的参数,直接作为toreboot的参数
)1 reboot重启系统,保留断点
)2 shutdown关机,保留断点
)3 logoff注销,保留断点
)4 winre / enterwinre进入到 winRE,保留断点
|)1 ireboot重启系统,不保留断点。ireboot 意思是 I reboot 我自己重启动,跟BizAT没关系
|)2 ishutdown关机,不保留断点
|)3 ilogoff注销,不保留断点
|)4 iwinre进入到winRE,不保留断点
注:早期设计使用“))1”作为ireboot,这将限制这个语句不能出现在“)(”与“)”之间,因为BizRunner在执行“)(”的时候,需要去找对应的“)”记录重启后的Entry。使用“|”也使用了这个符号的“退出”的含义,从而开头的“)”就具有“断点”的含义。  

实例

offline
    show  this is offline action
    notify  this is offline check or validation
toreboot
    Click start
    Click power
    Click shutdown
down

保留环境继续执行后面的重启代码

使用")("表示后面的代码会关机或重启,再启动后执行后面的)之后的代码。
有的时候,测试用例本身就要求去操作重启机器的动作,这时就不能调用toreboot来控制系统重启,而是让测试用例的代码自己去重启机器。 在这种情况下,在执行")("的时候就会通知BizAT环境先保存好数据,以及BizRunner自己先保存好执行环境。

注意,内部重复模块的所有代码必须位于一个步骤的内部。

实例

关机过程本身就是测试的内容
(
@  this is offline action
@@  this is offline check or validation
)(
Click start
Click power
Click shutdown
)
... ...  
测试有可能会引起关机的代码
(

)(
loop 100
	// the code of heavy loading and plug in/out battery
endloop
)?
if (IsDown())
reportfail the system is down
endif
... ...  

定义关机后在服务器端的动作

在"("与")d"之间的“与BizAT相关”的代码均为重启后要执行的代码,称为"脱机代码"(Offline code),如需要显示的信息与需要检查的内容等等。 在BizAT执行环境中,如果在“网络模式”下运行,会自动将"脱机代码"传递到服务器,实现在脱机时引导测试者执行一些动作。

注:BizAT相关的代码指的是BizRunner使用BizATDLL执行的代码,包括Show,Notify,Check和Ask。

实例


(
Show 检查是否所有的指示灯已熄灭,熄灭后开始后面的动作
Show 按电源按钮,按住F1不放,然后选择进入BIOS
Check  检查下是否可以设置启动选择
... ...
)2
注:“脱机代码”的思路来自于早期的项目中有很多测试动作是在机器关闭后进行的,为了达到引导测试者的目的,这些测试动作就让脚本传递到服务器中,在服务器中显示。这适合于早期实现的DASHBOARD样式的服务器,目前的服务器改版成了WebServer样式,这个功能将难以实现。不过,仍旧保留了再次启动后检查脱机代码的功能,这些信息将会出现在重新启动后,执行前一步一步“追问”测试者脱机测试的测试结果,从而保证测试结果的完整性。
BizAT运行模式描述
独立模式(Standalone)意味着没有BizAT的运行模式,此时系统在退出之前,一次性提示测试人员要做的动作,也就是说将( 与 )之间的信息都提示给测试者,告诉测试者在机器关闭后要做的动作。
网络模式(Network)在机器关闭后,在服务器端逐条引导测试者做动作。
单机模式(SinglePC)意味着在BizAT环境下运行,但没有服务器,此时在系统在退出之前,一次性提示测试人员要做的动作,在机器启动之后,要求测试者输入所有的检查的结果,以便完善所有的测试结果记录。
<< 调用重复执行调用BizAT >>