Linux平台下CLI模块的代码自动化测试方法

文档序号:6634516阅读:374来源:国知局
Linux平台下CLI模块的代码自动化测试方法
【专利摘要】一种Linux平台下CLI模块的代码自动化测试方法,根据CLI代码的特点,编写待测试的CLI命令的案例设计文件,并编写待测试的CLI命令的所有测试案例,在案例设计文件中设置每个测试案例的运行参数,编写自动化运行模块,利用自动化运行模块解析待测试CLI命令所对应的案例设计文件中的每一行数据,生成测试代码自动运行该CLI命令的每一个测试案例并输出校验结果。本发明减少了测试编码量,节省了人力,大大提高了测试的效率,优化了测试效果。
【专利说明】L i nux平台下CL I模块的代码自动化测试方法

【技术领域】
[0001]本发明涉及一种通信系统中Linux平台下CLI (命令行界面Command LineInterface for batch scripting)模块的代码UT (单元测试,Unit Test)自动化测试方法。

【背景技术】
[0002]通信系统中的CLI模块是用户接口 Π (用户界面user interface)的常见模块,具有代码量大,代码重复类似,需要持续维护开发的特点。一般软件UT框架比如CMock都会需要编写测试案例,编写测试所依赖的打桩文件(mock文件),编写测试案例执行模块(runner)ο现有UT技术有个重大问题就是对每一个代码函数(funct1n),都需要编写测试案例,需要编写测试runner,这样代码UT的工作量不亚于代码编写的工作量,甚至可能更多,这就降低了 UT的效率,而要想在当前的通信行业中保持优势,如何高效的保证软件质量就变得越来越重要。


【发明内容】

[0003]本发明提供一种Linux平台下CLI模块的代码自动化测试方法,根据CLI代码的特点,生成案例设计文件,并编写自动化运行模块来自动化运行测试案例,减少了测试编码量,节省了人力,大大提高了测试的效率,优化了测试效果。
[0004]为了达到上述目的,本发明提供一种Linux平台下CLI模块的代码自动化测试方法,该方法包含以下步骤:
步骤S1、编写待测试的CLI命令的案例设计文件,并编写待测试的CLI命令的所有测试案例,在案例设计文件中设置每个测试案例的运行参数;
步骤S2、编写自动化运行模块;
步骤S3、利用自动化运行模块解析待测试CLI命令所对应的案例设计文件中的每一行数据,生成测试代码自动运行该CLI命令的每一个测试案例并输出校验结果。
[0005]所述的案例设计文件中的第一行为导航栏,对应测试案例的运行参数,该导航栏中的字段包含:
1、CLI命令的输入参数值,这些输入参数也是命令入口函数的参数;
2、CLI命令执行依赖的共享内存域值和/或FPGA域值;
3、CLI命令执行结束之后期待的返回值;
4、CLI命令执行结束之后期待的共享内存域值和/或FPGA域值。
[0006]每条CLI命令对应一个案例设计文件。
[0007]所述的案例设计文件的文件名以CLI命令名称来命名。
[0008]所有的案例设计文件统一存放在某一用户目录下。
[0009]所述的案例设计文件中,除了第一行导航栏之外,其余每一行内的参数值都分别是一个测试案例运行时所需要的参数值。
[0010]自动化运行模块的编写不限定编写语言。
[0011]采用通用的编写语言来编写测试案例。
[0012]所述的步骤S3包含以下步骤:
步骤S3.1、自动化运行模块根据案例设计文件中的每一行数据来解析设置测试案例中的共享内存域值和FPGA域值;
步骤S3.2、自动化运行模块根据案例设计文件中的CLI命令的输入参数来生成测试代码运行对应的CLI命令测试案例,并记录下CLI命令测试案例运行的返回值,以及共享内存访问接口获得的共享内存域值,和/或FPGA接口获得的FPGA域值;
步骤S3.3、自动化运行模块对测试结果进行校验;
校验包含命令返回值的校验以及共享内存域值的校验和FPGA域值的校验。
[0013]所述的步骤S3.3中,
如果运行CLI命令测试案例后获得的返回值与期待的返回值不一致,则自动化运行模块输出出错提示;
如果运行CLI命令测试案例后获得的共享内存域值与期待的共享内存域值不一致,则自动化运行模块输出出错提示;
如果运行CLI命令测试案例后获得的FPGA域值与期待的FPGA域值不一致,则自动化运行模块输出出错提示。
[0014]本发明具有以下优点:
1、采用配置案例设计文件的方式代替编写代码的方式,十分简单直观;
2、一次编写完成自动化运行模块后,后续可以自动化运行测试案例,不再需要每次都编写运行代码;
3、减少了测试编码量,节省了人力,大大提高了测试的效率;
4、减少因为编写测试案例而引入的错误,优化了测试效果。

【专利附图】

【附图说明】
[0015]图1是本发明的流程图。
[0016]图2是自动化运行模块进行自动化测试的流程图。
[0017]图3是案例设计文件的实例。

【具体实施方式】
[0018]以下根据图1?图3,具体说明本发明的较佳实施例。
[0019]本发明的通信系统运行在Linux平台下,CLI模块作为用户的命令行接口,具有如下特点:
1、每条CLI命令对应一个入口代码函数(funct1n),命令的参数作为入口代码函数(funct1n)的参数;
2、CLI模块会访问Linux平台下的共享内存(sharememory);
通信系统提供专门的共享内存访问接口;
例如 shm_set (shm_>ingressEntry, 200), shm_set 为接口名称,shm->ingressEntry为访问的共享内存域(地址),200为设置该域的值;而shm_get (shm->ingressEntry)是共享内存访问接口将获取shm->ingressEntry的值;
3、CLI模块会访问当前通信设备的某些硬件器件,体现为访问FPGA (现场可编程门阵列,Field Programmable Gata Array);
通信系统提供专门的FPGA接口用于访问;
例如 fpga_set (FPGA_ALARM_THRESHOLD, 2),fpga_set 为接口名称,FPGA_ALARM_THRESHOLD为某个FPGA域(对应某个地址),2为设置该域的值;而fpga_get (FPGA_ALARM_THRESHOLD)是 FPGA 接口将获取 FPGA_ALARM_THRESHOLD 的值。
[0020]4、除了共享内存访问接口和FPGA访问接口之外,CLI模块不会再访问其他的外部接口 ;
5、CLI模块作为用户的命令行输入接口,理论上来说其代码可以被不同的用户输入100%覆盖;
代码的开发平台与最终的运行平台是一致的,都是在Linux平台上。如果开发人员在测试每个命令的时候都通过手动编写代码来设置或者校验共享内存或FPGA,通常因为CLI模块的代码量比较大,这样的编写会非常的耗时。而基于CLI模块的以上5个特点,CLI模块的UT测试可以通过直接运行命令的方式来达到代码的100%覆盖测试。
[0021]如图1所示,为了让开发人员能尽快以简单的方式编写测试案例,并能够自动化执行,本发明提供一种Linux平台下CLI模块的代码自动化测试方法,该方法包含以下步骤:
步骤S1、编写待测试的CLI命令的案例设计文件(.csv文件),并编写待测试的CLI命令的所有测试案例,在案例设计文件中设置每个测试案例的运行参数;
每条CLI命令对应一个案例设计文件;
所有的案例设计文件统一存放在某一用户目录下;
所述的案例设计文件的文件名以CLI命令名称来命名;
所述的案例设计文件中的第一行为导航栏,对应测试案例的运行参数,该导航栏中的字段包含:
1、CLI命令的输入参数值,这些输入参数也是命令入口函数的参数;
2、CLI命令执行依赖的共享内存域值和/或FPGA域值;
3、CLI命令执行结束之后期待的返回值;
4、CLI命令执行结束之后期待的共享内存域值和/或FPGA域值;
所述的案例设计文件中,除了第一行导航栏之外,其余每一行内的参数值都分别是一个测试案例运行时所需要的参数值;
步骤S2、编写自动化运行模块;
自动化运行模块的编写不限定编写语言,采用通用的编写语言来编写测试案例;
步骤S3、利用自动化运行模块解析待测试CLI命令所对应的案例设计文件中的每一行数据,生成测试代码自动运行该CLI命令的每一个测试案例并输出校验结果;
如图2所示,所述的步骤S3包含以下步骤:
步骤S3.1、自动化运行模块根据案例设计文件中的每一行数据来解析设置测试案例中的共享内存域值和FPGA域值;
步骤S3.2、自动化运行模块根据案例设计文件中的CLI命令的输入参数来生成测试代码运行对应的CLI命令测试案例,并记录下CLI命令测试案例运行的返回值,以及共享内存访问接口获得的共享内存域值,和/或FPGA接口获得的FPGA域值;
步骤S3.3、自动化运行模块对测试结果进行校验;
校验包含命令返回值的校验以及共享内存域值的校验和FPGA域值的校验;
如果运行CLI命令测试案例后获得的返回值与期待的返回值不一致,则自动化运行模块输出出错提示;
如果运行CLI命令测试案例后获得的共享内存域值与期待的共享内存域值不一致,则自动化运行模块输出出错提示;
如果运行CLI命令测试案例后获得的FPGA域值与期待的FPGA域值不一致,则自动化运行模块输出出错提示。
[0022]
实施例
[0023]一种Linux平台下CLI模块的代码自动化测试方法,该方法包含以下步骤:
步骤1、采用Microsoft Excel编辑器或者WPS (文字处理系统,Word ProcessingSystem)编辑器来编辑案例设计文件(.csv文件),并编写待测试的CLI命令的所有测试案例;
该案例设计文件对应的CLI命令为sys_set_power_threshold命令(设置电源阈值命令),该案例设计文件的文件名为sys_set_power_threshold.csv,将该案例设计文件保存在管理员文件夹目录下;
如图3所示,该案例设计文件中的第一行为导航栏,该导航栏中的字段包含:
UCLI命令的输入参数(如图3中的A列的第一输入参数“1-para-Ι”和B列的第二输入“ i_para_2,,);
2、CLI命令执行依赖的共享内存域(如图3中C列“1-shm->ingressEntry”)以及FPGA域(如图 3 中 D 列 “1-fpga->FPGA_ALARM_THRESHOLD”);
3、CLI命令执行结束之后要期待的返回值(如图3中E列“ret_value”);
4、CLI命令执行结束之后要期待的共享内存域(如图3中F列“o-shm->egressEntry”)和 FPGA 域(如图 3 中 G 列 “o-fpga->FPGA_POWER_THRESHOLD”);
所述的案例设计文件中,除了第一行导航栏之外,其余每一行内的参数值都分别是一个测试案例运行时所需要的参数值;
步骤S2、编写自动化运行模块;
本实施例中使用ruby语言编写自动化运行模块;
步骤S3、利用自动化运行模块解析待测试CLI命令所对应的案例设计文件中的每一行数据,生成测试代码(测试代码是C语言的),自动运行该CLI命令的每一个测试案例并输出校验结果;
如图2所示,所述的步骤S3包含以下步骤:
步骤S3.1、自动化运行模块根据案例设计文件中的第二行数据来解析设置测试案例中的共享内存域值和FPGA域值;
例如,对于图3中案例设计文件的第二行,将运行如下代码: shm_set (shm_>ingressEntry, 10);共享内存域值为 10 ; fpga_set (FPGA_ALARM_THRESHOLD, 2) ;FPGA 域值为 2 ;
对于图3中案例设计文件的第三行,将运行如下代码: shm_set (shm->ingressEntry, 11);共享内存域值为 11 ; fpga_set (FPGA_ALARM_THRESHOLD, 3) ;FPGA 域值为 3 ;
步骤S3.2、自动化运行模块根据案例设计文件中的CLI命令的输入参数来生成测试代码运行对应的CLI命令测试案例,并记录下CLI命令测试案例运行的返回值,以及共享内存访问接口获得的共享内存域值,和/或FPGA接口获得的FPGA域值;
例如,对于图3中案例设计文件的第二行,根据A栏和B栏的输入参数,将运行如下命令:
sys_set_power_threshold I 2 ;
对于图3中案例设计文件的第三行,根据A栏和B栏的输入参数,将运行如下命令: sys_set_power_threshold 2 3 ;
步骤S3.3、自动化运行模块对测试结果进行校验;
校验包含命令返回值的校验以及共享内存域值的校验和FPGA域值的校验;
例如,对于图3中案例设计文件的第二行,步骤S3.2中返回的E栏中期待的命令返回值为1,假如步骤S3.2中的返回值不是1,例如,对于图3中案例设计文件的第三行,E栏中期待的命令返回值为0,则自动化运行模块输出出错提示,表示是执行失败的命令,这种情况下不需要继续判断F栏和G栏的输出是否正确;
F栏中期待的共享内存域shm->egressEntry值为5,G栏中期待的FPGA域fpga_>FPGA_POWER_THRESHOLD值为2 ;假设用共享内存访问接口和FPGA访问接口获取的共享内存域和FPGA域的值与期待的值不一样,则自动化运行模块输出出错提示。
[0024]本发明的自动化运行模块,一次开发完成后,可以重复使用。在案例设计文件生成之后,且自动化运行模块编写完成之后,后续的自动化测试过程中,只要在每条CLI命令对应的案例设计文件中填写数据即可,节省了测试案例的开发时间。
[0025]在实际使用中,40K的CLI代码如果用CMOCK框架来做100%覆盖率的单元测试,大概需要20个人头月(I个人头月指一个人工作一个月),但是采用本发明提供的自动化测试方法,则只需要11.5个人月,人力成本节省了 42%。
[0026]与现有技术相比,本发明具有以下优点:
1、采用配置案例设计文件的方式代替编写代码的方式,十分简单直观;
2、一次编写完成自动化运行模块后,后续可以自动化运行测试案例,不再需要每次都编写运行代码;
3、减少了测试编码量,节省了人力,大大提高了测试的效率;
4、减少因为编写测试案例而引入的错误,优化了测试效果。
[0027]尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。在本领域技术人员阅读了上述内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。
【权利要求】
1.一种Linux平台下CLI模块的代码自动化测试方法,其特征在于,该方法包含以下步骤: 步骤S1、编写待测试的CLI命令的案例设计文件,并编写待测试的CLI命令的所有测试案例,在案例设计文件中设置每个测试案例的运行参数; 步骤S2、编写自动化运行模块; 步骤S3、利用自动化运行模块解析待测试CLI命令所对应的案例设计文件中的每一行数据,生成测试代码自动运行该CLI命令的每一个测试案例并输出校验结果。
2.如权利要求1所述的Linux平台下CLI模块的代码自动化测试方法,其特征在于,所述的案例设计文件中的第一行为导航栏,对应测试案例的运行参数,该导航栏中的字段包含: 1、CLI命令的输入参数值,这些输入参数也是命令入口函数的参数; 2、CLI命令执行依赖的共享内存域值和/或FPGA域值; 3、CLI命令执行结束之后期待的返回值; 4、CLI命令执行结束之后期待的共享内存域值和/或FPGA域值。
3.如权利要求2所述的Linux平台下CLI模块的代码自动化测试方法,其特征在于,每条CLI命令对应一个案例设计文件。
4.如权利要求3所述的Linux平台下CLI模块的代码自动化测试方法,其特征在于,所述的案例设计文件的文件名以CLI命令名称来命名。
5.如权利要求4所述的Linux平台下CLI模块的代码自动化测试方法,其特征在于,所有的案例设计文件统一存放在某一用户目录下。
6.如权利要求5所述的Linux平台下CLI模块的代码自动化测试方法,其特征在于,所述的案例设计文件中,除了第一行导航栏之外,其余每一行内的参数值都分别是一个测试案例运行时所需要的参数值。
7.如权利要求1所述的Linux平台下CLI模块的代码自动化测试方法,其特征在于,自动化运行模块的编写不限定编写语言。
8.如权利要求1所述的Linux平台下CLI模块的代码自动化测试方法,其特征在于,采用通用的编写语言来编写测试案例。
9.如权利要求1-8中任意一个所述的Linux平台下CLI模块的代码自动化测试方法,其特征在于,所述的步骤S3包含以下步骤: 步骤S3.1、自动化运行模块根据案例设计文件中的每一行数据来解析设置测试案例中的共享内存域值和FPGA域值; 步骤S3.2、自动化运行模块根据案例设计文件中的CLI命令的输入参数来生成测试代码运行对应的CLI命令测试案例,并记录下CLI命令测试案例运行的返回值,以及共享内存访问接口获得的共享内存域值,和/或FPGA接口获得的FPGA域值; 步骤S3.3、自动化运行模块对测试结果进行校验; 校验包含命令返回值的校验以及共享内存域值的校验和FPGA域值的校验。
10.如权利要求9所述的Linux平台下CLI模块的代码自动化测试方法,其特征在于,所述的步骤S3.3中, 如果运行CLI命令测试案例后获得的返回值与期待的返回值不一致,则自动化运行模块输出出错提示; 如果运行CLI命令测试案例后获得的共享内存域值与期待的共享内存域值不一致,则自动化运行模块输出出错提示; 如果运行CLI命令测试案例后获得的FPGA域值与期待的FPGA域值不一致,则自动化运行模块输出出错提示。
【文档编号】G06F11/36GK104317724SQ201410653967
【公开日】2015年1月28日 申请日期:2014年11月17日 优先权日:2014年11月17日
【发明者】接凤华 申请人:上海斐讯数据通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1