利用 STAF 可以在目标虚拟机上执行命令行操作和运行脚本的特点,我们可以在目标虚拟机上运行安装被测产品的脚本或者直接通过执行命令行操作安装被测产品。如果待测产品的安装命令在不同的操作系统上有所不同,则需要先判断操作系统之后,再根据不同的操作系统,执行不同的命令行操作。当然,如果是通过运行脚本程序来达到安装被测产品的目的,那么在脚本中实现操作系统的判断是更为合理而且通用的。
示例代码 3. 执行 RFT 脚本
<!-- Run the RFT test on the target--> <sequence> <process name="'runRFTTest'"> <location>target</location> <command>'java'</command> <parms>'-classpath "%s" %s -datastore %s -playback %s' %(classpath, rftClass, rftProject, rftScript) </parms> </process> <if expr="callRC != 0"> <throw exception="'eTerminateFunction'">'Failed to Run RFT Scripts'</throw> </if> <sequence> |
RFT 不但提供了通过界面执行 RFT 脚本的方式,还提供了命令行的执行方式。因此,我们可以通过 STAF,从命令行调用 RFT 并执行 RFT 自动化测试脚本。
3. 无需人工干预的自动化回归测试
最大程度的自动化回归测试自然是无需人工干预的自动化测试,也就是不但可以把手工测试的每一步都自动化,而且还可以在拿到新版本的软件之后自动触发回归测试,自动记录执行结果 , 并且发送通知。
3.1 自动触发回归测试
STAF 内部的信号量服务(Semaphore Service)提供了两种信号量的操作,mutex 和 event 。我们可以利用它来开始自动化回归测试。
示例代码 4. 利用信号量服务触发事件
STAF serverIPAddress SEM POST EVENT event_name STAF serverIPAddress SEM RESET EVENT event_name |
如果你想定时触发自动化回归测试,Windows 和 Linux 操作系统本身都提供了定时调度任务的功能。在 Windows 上,可以利用 Windows 任务调度程序(Windows Task Scheduler);在 Linux 上,可以利用 Crontab 。继而可以通过定时调用 shell 脚本或者 batch 文件,触发自动回归测试。
但是,定时触发并执行回归测试往往是不够的,更加智能和有效的方式是在每拿到一个新版本的软件的同时,开始一轮新的回归测试。为了实现这种触发方式,我们可以将定时触发并执行自动回归测试,改为定时检测服务器端的软件版本,比如每隔五分钟检测一次。一旦检测到服务器端已经上载完全的新版本的软件,就可以调用 STAF 的信号量服务来触发自动回归测试。
3.2 自动发送测试结果
在执行完回归测试的自动脚本并且将结果记入数据库之后,在将结果传回 STAF 服务器的同时,还可以发送邮件将测试结果通知给相关人员。
示例代码 5. 回传执行结果并发送邮件通知
<! — Send notification --> <stafcmd name="'EmailNotification'"> <location>'local'</location> <service>'EMAIL'</service> <request>'SEND %s FROM %s@%s SUBJECT "%s" MESSAGE "%s"' % (emailString, hostname, dnsString, subject, message) </request> </stafcmd> |