自动化编译测试方法及实现该方法的自动化编译测试平台的制作方法

文档序号:7769810阅读:610来源:国知局
自动化编译测试方法及实现该方法的自动化编译测试平台的制作方法
【专利摘要】本发明公开了一种自动化编译测试方法及实现该方法的自动化编译测试平台,该方法包括步骤一、入库代码自动编译;步骤二、将编译好的版本自动上传到设备中;步骤三、根据库文件里更新的模块执行相关的测试例或者全部的测试例;步骤四、生成测试结果,包括执行测试例过程中设备CPU和内存的占用率监测图,如果设备发生重启或者死机,继续运行下一个测试例,并记录测试的详细结果;步骤五、测试异常中断或者测试完毕,将测试结果发送给编写代码的工程师或相关管理人员;步骤六、编写代码的工程师根据测试结果来决定是否需要修改代码。本发明可以充分利用设备等资源,且测试不受工作时间及测试人力资源所限制,缩短开发周期,降低开发成本。
【专利说明】自动化编译测试方法及实现该方法的自动化编译测试平台
【技术领域】
[0001]本发明有关一种自动化编译测试方法及自动化编译测试平台,特别是指一种从编译代码到获取代码被执行的结果的全自动过程的自动化编译测试方法及实现该方法的自动化编译测试平台。
【背景技术】
[0002]随着通信行业的快速发展,通信设备越来越复杂,开发周期也越来越长,开发成本越来越高。通常在一款软件产品研发之后,会有专门工作人员进行软件测试,根据测试结果再对该软件产品进行修改。这个过程往往因为受上班时间,人力等的限制,还有客户与主管的原因会耗费较长的时间,造成产品成本提高。

【发明内容】

[0003]有鉴于此,本发明的主要目的在于提供一种能节省人力资源、缩短开发周期、降低开发成本的从代码编译到被上传至设备执行得到测试结果的全自动化过程的自动化编译测试方法及自动化编译测试平台。
[0004]为达到上述目的,本发明提供一种自动化编译测试方法,其包括:
步骤一、入库代码自动编译;
步骤二、将编译好的版本自动上传到设备中;
步骤三、根据库文件里更新的模块执行相关的测试例或者全部的测试例;
步骤四、生成测试结果,包括执行测试例过程中设备CPU和内存的占用率监测图,如果设备发生重启,等待设备起来之后继续运行下一个测试例,并记录导致设备发生重启配置及测试的详细结果;
步骤五、测试异常中断或者测试完毕,将测试结果发送给编写代码的工程师或相关管理人员;
步骤六、编写代码的工程师根据测试结果来决定是否需要修改代码。
[0005]在所述步骤一中,将更新的代码入库后,当建立的工程中有功能模块更新时,利用自动编译模块启动自动化编译功能;或者设置一个定时编译功能,当编译时间到达后,自动编译模块自动编译一个工程版本;如果编译失败,直接将失败的记录传给程序控制模块,程序控制模块发送电子邮件给相关的工程师;如果编译成功则将编译好的版本放在指定的文件夹里,编译的版本根据设备名称、线卡类型、版本类别自动生成不同的名字,同时将有更新的模块传给程序控制模块,告诉程序控制模块哪些模块作了更新,以及版本生成的时间。
[0006]在所述步骤二中,当自动编译模块完成所有的线卡、主控的版本后,利用版本自动升级模块通过FTP/TFTP协议将版本上传到设备上去;清空设备配置,重启设备,等设备运行后,查看设备的版本、编译时间是否是与步骤一编译的时间一致,否则重新上传,如果重传三次失败,记录结果,并将结果传递给程序控制模块;如果上传版本三次都失败了,保留现场,将结果通过电子邮件发送给相关的研发人员。[0007]在所述步骤三中,测试例包括测试的设备配置文件和仪表的测试脚本,启动测试例前,清空设备的配置,仪表的配置,然后根据更新的模块启动相应的设备配置和仪表的配置,启动测试,测试完成后记录测试结果。
[0008]所述步骤三与步骤四具体包括:
(1)在完成一个模块的测试例之后在不影响其它测试功能的情况下加载执行SNMP(简单网络管理协议)set的攻击测试;
(2)在执行测试例过程中影响其它测试功能的情况下加载执行SNMPset的攻击测试,此测试目的监测设备是否会发生异常;
(3)在执行测试例过程中,对所有节点的执行以下操作:对所有的节点执行SNMPwalk,SNMP getbulk,其中 SNMP getbulk 中的参数 Noe repeater 和 Max repetition 米用随机数据;
(4)执行完上述(I)、(2)、(3)后,清空设备的配置,仪表的配置,以免和下一个测试发生冲突,在测试过程中记录测试结果;进行下一个测试例的测试,当一个测试例完成后,或者对相同的测试例重复一定的次数,一个测试例测试完成后继续测试下一个测试例,记录每个测试例的每次测试的结果;该测试结果包括:加载设备配置和仪表流量的测试结果,只加载设备配置执行完上述(I)、(2)、(3)的测试结果,同时加载设备配置和仪表流量执行完上述(I)、(2)、(3)的测试结果。
[0009]在测试过程中可通过串口或者使用SNMP get系统运行时间来检测设备是否发生重启的故障;设备如果发生重启,恢复运行的时间记录为T0,自动化测试开始前等待一定的时间T1,T1>T0,再开始测试;不间断地get系统运行时间,当成功获取系统的运行时间记为T2,将Tl的值与T2进行比较,如果T2 < Tl,则认为系统重启;记录下执行的动作和节点,并等待一定的时间Tl,继续测试下一个节点或测试例;
如果测试过程中反复多次无法获取系统的运行时间,则认为设备死机,测试将停止运行,退出测试程序,并将测试所进行的操作记录于日志文件;
通过简单网络管理协议接口获取被测设备的CPU和内存的使用情况,也可以通过串口来获取;同时将CPU和内存的使用情况和测试用例、SNMP测试节点对应,并生成图表的形式保存成日志。
[0010]本发明还提供一种自动化编译测试平台,其包括:
自动编译模块:将更新的代码入库后,自动编译模块启动自动化编译功能;
版本自动升级模块:当自动编译模块完成编译后,自动升级模块通过FTP/TFTP协议将版本上传到设备上去;
自动化测试模块:根据更新的模块,启动测试例库里的相应的测试例,并将测试结果记录在日志记录模块;
自动邮件发送模块:将测试的结果发送给研发工程师,研发工程师根据测试结果来定位故障,以确定是否需要修改代码。
[0011]所述自动编译模块在编译时,如果编译失败,直接将失败的记录传给程序控制模块,程序控制模块发送电子邮件给相关的工程师;如果编译成功则将编译好的版本放在指定的文件夹里,编译的版本根据设备名称、线卡类型、版本类别生成不同的名字,同时将有更新的模块传给程序控制模块,告诉程序控制模块哪些模块作了更新,以及版本生成的时间;
所述版本自动升级模块清空设备配置,重启设备,等设备运行后,查看设备的版本、编译时间是否是跟自动编译模块编译的时间一致,否则重新上传,如果重传三次失败,记录结果,并将结果传递给程序控制模块。
[0012]所述测试例包括测试的设备配置文件和仪表的测试脚本;在不影响设备测试的情况下对设备同时进行简单网络管理协议SNMP的操作:具体为:
根据SNMP get命令获取设备相应节点的值Rl ;
然后进行非法字符集的设置,同时监测非法字符对设备的影响;
然后再将值Rl通过SNMP set命令设置下去,返回的值为R2 ;
再通过SNMP get命令获取该节点的值R3 ;
当Rl,R2和R3的值一样时则认为此节点的SNMP协议测试通过。
[0013]该平台还包括CPU与内存监测模块,通过简单网络管理协议接口并利用CPU与内存监测模块获取被测设备的CPU和内存的使用情况,同时将CPU和内存的使用情况和测试用例、SNMP测试节点对应,并生成图表的形式保存成日志。
[0014]本发明解决了从代码编译到被上传至设备执行得到测试结果的全自动过程。可以利用工作时间修改代码,当研发工程师下班之后自动化编译测试平台自动启动仪表和设备进行测试,并将设备存在的问题如导致系统重启记录下所作的操作,供研发人员方便定位问题。本发明可以充分利用设备等资源,缩短开发周期,降低开发成本。
【专利附图】

【附图说明】
[0015]图1为本发明自动化编译测试平台的结构原理框图;
图2为本发明自动化编译测试平台的拓扑结构。
【具体实施方式】
[0016]为便于对本发明的方法及达到的效果有进一步的了解,现结合附图并举较佳实施例详细说明如下。
[0017]如图1所示,本发明的自动化编译测试平台包括有自动编译模块、版本自动升级模块、自动化测试模块、自动邮件发送模块及程序控制模块,其中:
1.1自动编译模块
当建立的工程中有功能模块更新时,自动编译模块启动自动化编译功能;或者设置一个定时编译功能,当编译时间到达后,自动编译模块自动编译一个工程版本。如果编译失败,直接将失败的记录传给程序控制模块,程序控制模块发送电子邮件给相关的工程师。如果编译成功则将编译好的版本放在指定的文件夹里,编译的版本根据设备名称、线卡类型、版本类别生成不同的名字,同时将有更新的模块传给程序控制模块,告诉程序控制模块哪些模块作了更新,以及版本生成的时间。
[0018]1.2版本自动升级模块
当自动编译模块完成所有的线卡、主控的版本后,自动升级模块通过FTP/TFTP协议将版本上传到设备上去。清空设备配置,重启设备,等设备运行后,查看设备的版本、编译时间是否是跟1.1编译的时间一致.否则重新上传,如果重传三次失败,记录结果,并将结果传递给程序控制模块。
[0019]设备清空重启后ip地址丢失,则通过串口自动设置相应的IP地址。以确保下一步骤有正常的运行环境。
[0020]1.3自动化测试模块
自动测试模块,是对测试用例库的执行。根据模块分别获取相应的设备的配置,仪表的配置,MIB的脚本。其中MIB脚本记录OID节点的取值范围、可读可写、寄存器大小、字符类型、节点名称,节点序号等信息;MMIB脚本也可以在编译成功之后自动生成相应的MIB脚本。以适应不同的版本需求。
[0021]1.3.1根据1.1中更新的模块,启动测试例库里的相应的测试例。
[0022]测试例,包括测试的设备配置文件和仪表的测试脚本。设备的配置可以是tcl脚本,vbs, python, ruby等语言所写的脚本程序。且使用仪表的API (Application ProgramInterface,应用程序接口)接口启动对仪表的操作。启动测试例前,应该清空设备的配置,仪表的配置。然后根据更新的模块启动相应的配置和仪表的配置,启动测试,测试完成后记录测试结果。
[0023]1.3.2在完成测试1.3.1例之后过程中在不影响其它测试功能的情况下执行SNMP (Simple Network Management Protocol,简单网络管理协议)的攻击测试:
通过管理信息库(MIB, Management information Base)来获取对象标识符(0ID,Objiect Identifier)节点的取值范围、可读可写、寄存器大小、字符类型、节点名称,节点
序号等信息;
通过SNMP自动化get命令,获取设备的配置信息,在加载业务测试过程中进行如下操
作:
如果是可读可写的节点,先SNMP get该节点的值R1,再将获取的初始值Rl再SNMPset下去,再执行SNMP get,如果此三次(两次get,一次set)返回结果相同则认为此节点测试通过,记录测试结果。
[0024]1.3.3在测试1.3.1过程中可能影响其它测试功能的情况下执行SNMP set的攻击测试:
如果是可读可写的节点,先通过SNMP get OID节点的值vlauel,然后进行攻击操作包括设置边界值,设置边界范围之外的值,设置超过寄存器大小的值,设置特殊字符集等,再将获取的初始值vlauel再执行SNMP set命令,再执行SNMP get命令,如果此三次(两次get,一次set)返回的值相同则认为此节点测试通过。记录测试结果。
[0025]1.3.4在测试1.3.1过程中测试,对所有节点的执行以下操作:
对所有的节点执行SNMP walk, SNMP getbulk,其中SNMP getbulk中的参数Noerepeater 和 Max repetition 采用随机数据。
[0026]1.3.5执行完1.3.1-1.3.4后,清空设备的配置,仪表的配置,以免和下一个测试发生冲突,在测试过程中记录测试结果。进行下一个测试例的测试,当一个测试例完成后,或者对相同的测试例重复一定的次数,一个测试例测试完成后继续测试下一个测试例,记录每个测试例的结果。
[0027]1.3.6在测试过程中可通过串口或者使用SNMP get系统运行时间来检测设备是否发生重启的故障。后者的方法是:设备如果发生重启,恢复运行的时间记录为T0,自动化测试开始前等待一定的时间Tl (Tl〉?)再开始测试。不间断地get系统运行时间,当成功获取系统的运行时间记为T2,将Tl的值与T2进行比较,如果T2 < Tl,则认为系统重启。记录下执行的动作和节点,并等待一定的时间Tl (有可能连续重启的故障发生),继续测试下一个节点或测试例。
[0028]1.3.7 如果测试过程中反复多次无法获取系统的运行时间,则认为设备死机,退出运行的程序,记录所执行的操作。
[0029]1.3.8通过简单网络管理协议接口并利用CPU与内存监测模块获取被测设备的CPU和内存的使用情况,也可以通过串口命令获取。同时将CPU和内存的使用情况和测试用例、SNMP测试节点对应,并生成图表的形式保存成日志。
[0030]自动测试动模块可以实现协议、性能、功能等的测试。
[0031]1.4自动邮件发送模块
当测试完成后将测试的结果发送给研发的工程师,不同的模块对应的不同的开发人员;也可以将测试结果发送给邮件列表的所有的人,研发工程师根据测试结果来定位故障,修改代码。
[0032]本发明的自动化编译测试平台在具体应用中如下所述:
1、白天当程序员将更新的代码入库后,自动化编译测试平台启动编译功能,如果编译失败,直接将编译结果发送给编程人员,编程人员修改代码直至编译全部通过。
[0033]2、当员工下班后,自动化编译测试平台将编译好的版本上传至被测试的设备,重启设备,通过查看版本信息确保设备上的代码是最新编译的版本。
[0034]3、启动使用tcl等自动化语言编写的测试用例。如测试SNMP,就直接运行SNMP相应的配置和脚本。如果是OSPF (Open Shortest Path First,开放最短路径优先),BGP(Border Gateway Protocol,边界网关协议),性能测试则除需要启动自动化编写的配置设备外还需要启动测试仪表的相应的自动化设置,如Test Center提供了 TCL API的接口函数。当测试过程中有导致设备重启的问题,待设备重启后通过程序控制模块继续运行下一个测试例,直至所有测试例执行完毕。如果需要多次运行测试例,则可以反复运行次数。将测试通过和不通过的项目通过日志记录模块记录下来。
[0035]4、在上述3中,通过设备提供串口,实施对设备重启,死机等问题的监控,以及对配置的保存和清空,执行自动重启命令和配置设备IP的地址。
[0036]5、在不影响其它功能的测试前提下,实现各种攻击测试。如同时进行SNMP的测试,如将设备满配置,同时执行SNMPgetbulk,其中Noe repeater和Max repetition采用随机数据,SNMP set的测试,将设备的参数通过SNMP get命令获取出来,然后进行SNMP set命令进行各种攻击字符的测试,最后将获取的初始值再通过SNMP set命令设置下去,这样就不会改变设备的配置的原有的参数。
[0037]6、通过简单网络管理协议接口获取被测设备的CPU和内存的使用情况。同时将CPU和内存的使用情况和测试用例、SNMP测试节点对应,并生成图表的形式通过日志记录模块保存成日志。通过此日查看哪些测试例或SNMP测试的节点会影响设备的正常运行。
[0038]7待测试完毕后将测试结果发送给编程人员,同时测试日志记录了导致失败的操作,可以重现导致设备运行异常的环境,便于开发人员定位问题。
[0039]本发明在测试之前可搭建一个比较完善的拓扑结构,或者多个拓扑环境,以适应尽量多的测试例能被执行。通过自动化编译测试平台的PC机的串口和被测设备的串口相连(如RS232),PC机配置必要的串口卡,也可以采用串口服务器,该被测设备还连接有测试仪表,同时工程师可以通过TCP等协议连接工具,在公司任何地方都可以访问该PC和所连接的设备,如图2所示。
[0040]通过自动化编译测试平台的PC机的串口和设备的串口相连,目的是配置设备、清空设备的配置、重启、设备死机监测等功能。
[0041]当开发人员更新代码库后,下班时间后(也可以设置成任意时间),启动自动编译模块,将编译好的代码上传至设备,根据代码更新的内容,启动相应的测试用例库(也可以运行进行全部的测试例),或者对相同的测试例进行多次反复运行,当遇到导致系统重启的地方,待设备重启后继续运行下一个测试案例。自动测试案例使用tcl编程语言编写的测试配置案例,及使用仪表提供的TCL语言的API接口函数实现自动化测试。并将测试结果成功和失败的案例分别记录。将所有的测试结果发送给研发人员。利用下班时间和节假日进行自动化全面测试,可以充分利用仪表并且节省了人力开销,缩短开发周期,降低了开发成本。
[0042]以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
【权利要求】
1.一种自动化编译测试方法,其特征在于,其包括: 步骤一、入库代码自动编译; 步骤二、将编译好的版本自动上传到设备中; 步骤三、根据库文件里更新的模块执行相关的测试例或者全部的测试例; 步骤四、生成测试结果,包括执行测试例过程中设备CPU和内存的占用率监测图,如果设备发生重启,等待设备起来之后继续运行下一个测试例,并记录导致设备发生重启配置及测试的详细结果; 步骤五、测试异常中断或者测试完毕,将测试结果发送给编写代码的工程师或相关管理人员; 步骤六、编写代码的工程师根据测试结果来决定是否需要修改代码。
2.如权利要求1所述的自动化编译测试方法,其特征在于,在所述步骤一中,将更新的代码入库后,当建立的工程中有功能模块更新时,利用自动编译模块启动自动化编译功能;或者设置一个定时编译功能,当编译时间到达后,自动编译模块自动编译一个工程版本;如果编译失败,直接将失败的记录传给程序控制模块,程序控制模块发送电子邮件给相关的工程师;如果编译成功则将编译好的版本放在指定的文件夹里,编译的版本根据设备名称、线卡类型、版本类别自动生成不同的名字,同时将有更新的模块传给程序控制模块,告诉程序控制模块哪些模块作了更新,以及版本生成的时间。
3.如权利要求2所述的自动化编译测试方法,其特征在于,在所述步骤二中,当自动编译模块完成所有的线卡、主控的版本后,利用版本自动升级模块通过FTP/TFTP协议将版本上传到设备上去;清空设备配置,重启设备,等设备运行后,查看设备的版本、编译时间是否是与步骤一编译的时间一致,否则重新上传,如果重传三次失败,记录结果,并将结果传递给程序控制模块;如果上传版本三次都失败了,保留现场,将结果通过电子邮件发送给相关的研发人员。`
4.如权利要求2所述的自动化编译测试方法,其特征在于,在所述步骤三中,测试例包括测试的设备配置文件和仪表的测试脚本,启动测试例前,清空设备的配置,仪表的配置,然后根据更新的模块启动相应的设备配置和仪表的配置,启动测试,测试完成后记录测试结果。
5.如权利要求4所述的自动化编译测试方法,其特征在于,所述步骤三与步骤四具体包括: (1)在完成一个模块的测试例之后在不影响其测试功能的情况下加载执行简单网络管理协议set的攻击测试; (2)在执行测试例过程中影响其它测试功能的情况下加载执行SNMPset的攻击测试,此测试目的监测设备是否会发生异常; (3)在执行测试例过程中,对所有节点的执行以下操作:对所有的节点执行SNMPwalk,SNMP getbulk,其中 SNMP getbulk 中的参数 Noe repeater 和 Max repetition 米用随机数据; (4)执行完上述(I)、(2)、(3)后,清空设备的配置,仪表的配置,以免和下一个测试发生冲突,在测试过程中记录测试结果;进行下一个测试例的测试,当一个测试例完成后,或者对相同的测试例重复一定的次数,一个测试例测试完成后继续测试下一个测试例,记录每个测试例的每次测试的结果;此测试结果包括:加载设备配置和仪表流量的测试结果,只加载设备配置执行完上述(I)、(2)、(3)的测试结果,同时加载设备配置和仪表流量执行完上述(I)、(2)、(3)的测试结果。
6.如权利要求4所述的自动化编译测试方法,其特征在于, 在测试过程中可通过串口或者使用SNMP get系统运行时间来检测设备是否发生重启的故障;设备如果发生重启,恢复运行的时间记录为T0,自动化测试开始前等待一定的时间Tl,T1>T0,再开始测试;不间断地get系统运行时间,当成功获取系统的运行时间记为T2,将Tl的值与T2进行比较,如果T2 < Tl,则认为系统重启;记录下执行的动作和节点,并等待一定的时间Tl,继续测试下一个节点或测试例; 如果测试过程中反复多次无法获取系统的运行时间,则认为设备死机,测试将停止运行,退出测试程序,并将测试所进行的操作记录于日志文件; 通过简单网络管理协议接口获取被测设备的CPU和内存的使用情况,也可以通过串口来获取;同时将CPU和内存的使用情况和测试用例、SNMP测试节点对应,并生成图表的形式保存成日志。
7.一种自动化编译测试平台,其特征在于,其包括: 自动编译模块:将更新的代码入库后,自动编译模块启动自动化编译功能; 版本自动升级模块:当自动编译模块完成编译后,自动升级模块通过FTP/TFTP协议将版本上传到设备上去; 自动化测试模块:根据更新的模块,启动测试例库里的相应的测试例,并将测试结果记录在日志记录模块; 自动邮件发送模块:将测试的结果发送给研发工程师,研发工程师根据测试结果来定位故障,以确定是否需要修改代码。
8.如权利要求7所述的自动化编译测试平台,其特征在于,所述自动编译模块在编译时,如果编译失败,直接将失败的记录传给程序控制模块,程序控制模块发送电子邮件给相关的工程师;如果编译成功则将编译好的版本放在指定的文件夹里,编译的版本根据设备名称、线卡类型、版本类别生成不同的名字,同时将有更新的模块传给程序控制模块,告诉程序控制模块哪些模块作了更新,以及版本生成的时间; 所述版本自动升级模块清空设备配置,重启设备,等设备运行后,查看设备的版本、编译时间是否是跟自动编译模块编译的时间一致,否则重新上传,如果重传三次失败,记录结果,并将结果传递给程序控制模块。
9.如权利要求7所述的自动化编译测试平台,其特征在于,所述测试例包括测试的设备配置文件和仪表的测试脚本;在不影响设备测试的情况下对设备同时进行简单网络管理协议SNMP的操作:具体为: 根据SNMP get命令获取设备相应节点的值Rl ; 然后进行非法字符集的设置,同时监测非法字符对设备的影响; 然后再将值Rl通过SNMP set命令设置下去,返回的值为R2 ; 再通过SNMP get命令获取该节点的值R3 ; 当Rl,R2和R3的值一样时则认为此节点的SNMP协议测试通过。
10.如权利要求7所述的自动化编译测试平台,其特征在于,该平台还包括CPU与内存监测模块,通过简单网络管理协议接口并利用CPU与内存监测模块获取被测设备的CPU和内存的使用情况,同时将CPU和内存的使用情况和测试用例、SNMP测试节点对应,并生成图表的形式保 存成日志 。
【文档编号】H04L29/06GK103530225SQ201310408904
【公开日】2014年1月22日 申请日期:2013年9月10日 优先权日:2013年9月10日
【发明者】孙国涛 申请人:武汉烽火网络有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1