微波EDA网,见证研发工程师的成长!
首页 > 测试测量 > 测试测量技术文库 > Linux下SANE Driver自动化测试工具的设计与实现

Linux下SANE Driver自动化测试工具的设计与实现

时间:03-27 来源:互联网 点击:

  • 2.4 脚本扫描
     脚本扫描与手动扫描是相互独立的。用户可以只选择手动扫描,也可以只选择脚本扫描。不过,它们之间有着紧密的联系,其扫描流程都是一样的。手动扫描与脚本扫描的结构体系如图1所示。脚本扫描可以看作是多次的手动扫描,所不同的是,手动扫描是从界面获得选项值,而脚本扫描是从文本获得选项值。
    脚本扫描的流程是:首先检查脚本的语法正确性,然后分析脚本,遍历各个选项值的组合,每得到一个组合,便扫描一次,当扫描完成时,再取下一组合扫描直至遍历完所有的组合。

     实现时,每扫描一次,均创建一个新线程,下一次扫描要等上一线程结束后才开始。
    2.5 产生脚本
     产生的脚本主要列出设备所支持的选项名字及其取值范围,然后以特定的格式写入脚本中[4]。由于结构体SANE_Option_Descriptor中包括选项的各种信息,因此结构体中的元素title可作为该选项的名字,而选项取值范围可从结构体中的联合体constraint得到。实现时,应允许用户选择保存路径。
    2.6 遍历算法研究
     在对SANE Driver测试时,一般会选中一些选项进行全组合或部分组合进行测试。以两个选项为例:mode值为 Color和Gray,resolution值为75和100,测试时就用Color 75、Color 100, Gray 75、 Gray 100四种组合扫描4次。xsane中的批次扫描采用了类似的方法,它将所要扫描的每种组合记录在文本中,然后通过读文本进行扫描。当扫描次数较多时,文本就非常冗长而且很难维护。
     测试工具中采用的脚本使用了键值对的形式:
     mode=Color,Gray,Binary
     resolution=75,100,150,200,300,400,500,600,1 200,2 400,4 800,9 600,19 200
     对于上面的脚本,通常会采用直接循环法:用下面一个结构体:
    struct option {
    char names[15];
    char values[10][20];
    } options[MAXOPTIONSNUMBER];
    来存储每一种组合,用一个数组size保存各个选项值的个数。比如上例中,第一个选项mode有3个值,故size[0]=3;然后用一个数组index来存储选项的当前值,如mode第一个值为Color,则可表示为index[0]=Color。假如只有mode和resolution两个选项,那么只需2个for循环即可遍历选项的取值。其代码如下:
    for(index[0]=0;index[0]size[0];index[0]++)
    for(index[1]=0;index[1]size[1];index[1]++)
    {
    for(int i=0;i2;i++)
    pass_option_setting_to_dev
    (options[i].names,options[i].values[indexs[i]] );
    // pass_option_setting_to_dev为传递参数给设备的函数
    ...
    }
     本文介绍的算法思路简单,容易理解。针对上例中的两个选项,采用上述的方法可以很好地解决问题。但是上述的算法中有多少个选项就有多少个for循环,而且该方法只适用于选项个数一定的情况下。因为当选项个数有变动时,都要增加或删除相应的for循环数。而现实中的脚本其选项的个数是不定的,因此上述的算法可扩展性较差,不适合用于脚本扫描。但只要对上述算法稍作修改即可成为一种简单高效的遍历算法[5]。该算法的脚本仍采用键值对这种简洁的脚本格式,并且可以很好地适应选项个数或者选项值个数的变化。假设变量OPT_NUM代表选项的个数,其代码如下:
    while(1){
    for( int i=0;iOPT_NUM;i++){
      pass_option_setting_to_dev
    (options[i].names,options[i].values[indexs[i]] );
    ...
    }
    int k= OPT_NUM-1;
    while(1){
    if(index[k]size[k]-1) {
    index[k]++;break;
    }
    else{
    index[k]=0; k--;
    }
    }
    if(k0)
    break;
    }
    3 测试工具对比
     XSANE与自动化测试工具对比如表1所示。
     本文以SANE标准为基础,针对xsane存在的不足,结合测试需求,实现了SANE Driver自动化测试工具。实际应用结果表明,与原有的测试工具相比,大大提高了测试效率,极大地减少了测试人员的工作量。
    参考文献
    [1] SANE home page[DB/OL].http://www.sane-project.org, 2001.
    [2] 张安清.基于SANE标准的光栅扫描设备应用程序的开发[J].小型微型计算机系统,2001,22(10):1216-1218.
    [3] 凌永发,张云生,郭秀萍.软件自动化测试中的脚本技术[J].云南民族学院学报(自然科学版),2002,11(1):544-548.
    [4] 蒋云,赵佳宝.自动化测试脚本自动生成技术的研究[J].计算机技术与发展,2007,17(7):4-7.
    [5] 《编程之美》小组.编程之美:微软技术面试心得[M].北京:电子工业出版社,2008.

  • Copyright © 2017-2020 微波EDA网 版权所有

    网站地图

    Top