您的位置:首页 > 其它

生成“伪视频”丰富自动测试日志系统 2

2008-07-24 08:57 232 查看
三、 改进方案描述
在改进前的日志方案里,自动测试软件是按照既定逻辑运行测试用例,无论是通过录制还是编写脚本的方式;遇到错误后,它会截取当前屏幕的状态,同时将错误信息以文本方式记录在日志文件中。(如图1所示)

该方案向测试人员提供了一副描述错误现场的截图,以及文本形式的执行日志。为了找出导致错误发生的确切原因,测试人员需要追踪并分析执行日志,截图反映了发生错误当时的情形,但对于之前过程的反映,却相当有限。

借助错误现场的截图和文本日志,测试人员判断测试失败的症结所在会非常吃力,尤其是一些不太明显的错误。即便是富有经验的测试人员,自动测试的错误分析也是比较棘手的工作,新人则更是无从下手。

图一: 传统日志方案



  在改进后的日志方案里,我们设计了一种更为简单和直观的方式,来反映错误发生前后的那段时间内,自动测试的真实运行过程。(如图二 所示)

 

  图二: 改进后的日志方案



改进措施如下:

按固定时间间隔截屏;并建立缓冲区,存储最近一段时间内的截图;

该缓冲区是一个先入先出队列,只存储最近一段时间内的截图,随着自动测试的运行,框架会按照固定时间间隔不断地截屏,存入缓冲区。缓冲区可以有两种实现方式:指定逻辑长度,用来储存某个测试用例执行时的所有截图;或者是指定物理长度,只存储一定数目的截图;

一旦在自动测试运行过程中发生错误,所有被缓冲的截图都被收集起来,并转化为动态图片(GIF格式,PNG格式,SVG格式等等);

动态图片按时间顺序展示了运行过程中若干副截图,效果类似于视频片断,真实地再现了当时的测试过程。鉴于测试过程中并非每时每刻都是关键操作,以及测试软件对测试对象的定位也会占用一定的时间,所以并没有必要以过高的频率截屏,通常来说,每秒1帧或2帧已经可以满足再现过程的需求,我们将它称为“伪视频”片断。

新方案在已有功能的基础上,进行重构和转化,模拟生成视频片断来再现测试过程。(对测试运行过程的屏幕截图进行缓冲。必要时,将所有缓冲的图片转化成动态图片,以再现实际过程。)

新方案的优点

日志系统在采纳新方案后,可以:

使得自动测试中的错误定位更加快速,有利于测试人员修改测试脚本或汇报被测软件的缺陷;

让日志系统更加直观,直观丰富的日志信息让自动测试系统的门槛降低,提高了它的可用性;

无需追加投资;新方案是以一个新思路改进原有的截屏功能,使其呈现出更丰富更灵活的信息,并未添加软硬件来进行视频捕捉。新方案的实现几乎没有成本,任何具有截屏能力的自动测试系统都可以在简单改造后拥有该特性。

截屏以及生成伪视频的操作会对脚本回放速度有一定影响,但并不突出,因为自动测试有着充足的硬件资源和时间资源(夜间运行)。这一弱点和新特性带来的好处相比,几乎可以忽略不计。

四、 改进方案的实现

假设该自动测试框架的原日志方案已经具有生成文本日志和截图的功能,我们将在它的基础上进行改进和优化,使之具有生成伪视频日志的新特性。

图三阐述了改进方案的基本工作步骤:

测试人员启动某自动测试脚本script1的运行;

自动测试脚本script1进行初始化工作,并创建缓冲区screenshotsPool来储存测试过程中捕获的截图;

自动测试脚本script1按既定逻辑顺序执行;

与此同时,缓冲区screenshotsPool正独立运行,以固定频率不断地截取屏幕图像;

如果缓冲区到达最大容量,较早的截图会在存入新图前被删去;

一旦自动测试发生错误,script1会通知screenshotsPool有错误产生;而后screenshotsPool搜集所有缓冲截图,立即生成动态图片(伪视频);

Script1的自动测试结束;

图三: 改进方案的时序图



本例中给出的代码主体ScreenshotsPool将以线程的形式运行,独立于自动测试脚本的回放,因此实现了Runnable接口中的run()方法。(见图四)

此外,还包括了其它必要的属性,方法来完成截图、储存、生成伪视频等操作,以及相关设置。后面会做详细介绍。

在每个RFT脚本的初始化方法中,可以同时创建一个ScreenshotsPool对象,用以对脚本自动回放过程进行监控。

图四: 改进方案的类图

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: