一种轨道交通安全计算机嵌入式自动化测试方法与流程

文档序号:15557687发布日期:2018-09-29 01:30阅读:129来源:国知局

本发明涉及软件测试技术领域,具体涉及一种轨道交通安全计算机嵌入式自动化测试方法。



背景技术:

如今的自动化测试领域正朝着信息化、智能化、网络化不断发展,可以开发一套易用、易维护、易扩展和低耦合的测试软件平台越来越越重要。传统的测试方案都是采用编写测试脚本的方式进行测试,且应用程序功能简单,模块间耦合性强,使用脚本编写用例的方案易于出现格式不规范或者错误,进而造成编译错误,甚至无法执行测试的情况,因此用脚本设计测试用例,对设计人员有一定的程序设计要求,易用性较弱。轨道相关的工业领域包括地铁、高铁、城轨、磁悬浮等关系着重大公共安全的行业,一般有着严格的安全性要求,所以在投入使用前,有一套高质量的测试系统至关重要。



技术实现要素:

本发明的目的在于提供一种轨道交通安全计算机嵌入式自动化测试方法,通过界面控件来设计测试用例,避免使用脚本编写用例的方案易于出现格式不规范或者错误而造成的编译错误,甚至无法执行测试的情况出现。

为实现上述目的,本发明采用了以下技术方案:

一种轨道交通安全计算机嵌入式自动化测试方法,包括以下步骤:

(1)测试用例自动生成步骤,包括:

(11)设置平台用例设计界面的控件值;

(12)自动读取平台设计界面数据,该数据类型为变体;

(13)将界面数据类型的变体转换为字符串;

(14)将字符串存储到文本文件或数据库中;

(2)测试用例读取步骤,包括:

(21)从文本文件或数据库中,读取用例的字符串形式的数据;

(22)将数据类型的字符串转换为变体;

(23)将变体值整体复制给该平台的用例设计界面显示并设置端口,并通过通讯端口发送给被测对象;

(3)测试用例执行步骤,包括:

(31)在程序启动的时候,将测场景名称和试用例名称导入树形控件;

(32)创建一个单独的事件触发线程,运行定时器的时间用例触发信号和通讯来的距离用例触发信号来触发用例事件;

(33)若树形控件中拥有触发用例事件,且所在的场景被选中,则在树形控件中进行标记并计数;若触发用例事件不存在或者所在场景未被选中,则忽略该触发请求,准备接收下一个触发请求;

(34)根据场景名和标记的用例名到用例存储的文本文件或数据库中获取该用例值字符串,并将字符串转换为指定的变体值;

(35)将(34)中的变体值发送给被测设备;

(36)实时采集被侧设备的数据信息并对该信息进行解包,通过界面显示;

进一步的,所述步骤(36)中,所述变体值通过dio板卡,或串口和以太网发送给被测设备。

进一步的,所述测试用例功能包括:加载功能、加载用例、注册场景、注册用例、注销场景、注销用例、设置用例、开始测试、停止测试及查看用例功能。

进一步的,所述的测试用例的存储方式,是将整个用例界面作为对象,进行整体数据格式转换,转换后的数据为字符串格式,存到文本文件或数据库中。

由上述技术方案可知,本发明所述的轨道交通安全计算机嵌入式自动化测试方法,通过界面控件来设计测试用例的方式,替代传统的采用脚本的方式设计测试用例,使得测试软件的易用性、易扩展性和易维护性将得到极大的提升,不仅大幅降低测试人员的劳动量和知识水平,同时也极大地帮助了产品的测试和升级。本发明在解决该问题的基础上,还提供了简单的测试用例设计文件的存储方式,使用文本文件或数据库,对用户通过界面设计的测试用例进行存储、查询与删除。该方案后台程序采用应用程序引用和控件引用的编程方式,使程序功能模块化,方便后续的维护与升级。

附图说明

图1是本发明的测试用例自动生成流程图;

图2是本发明的测试用例读取步骤;

图3是本发明的测试用例执行步骤。

具体实施方式

下面结合附图对本发明做进一步说明:

如图1-3所示的一种轨道交通安全计算机嵌入式自动化测试方法,包括以下步骤:

s1:测试用例自动生成步骤,包括:

s11:设置平台用例设计界面的控件值;

s12:自动读取平台设计界面数据,该数据类型为变体;

s13:将界面数据类型的变体转换为字符串;

s14:将字符串存储到文本文件或数据库中;该存储方式是将整个界面作为对象,进行整体数据格式转换,转换后的数据为字符串格式,存到文本文件或数据库中。查看用例配置的时候,将文本文件或数据库中的字符串内容在进行逆转换,整体地设置界面控件。

s2:测试用例读取步骤,包括:

s21:从文本文件或数据库中,读取用例的字符串形式的数据;

s22:将数据类型的字符串转换为变体;

s23:将变体值整体复制给该平台的用例设计界面显示并设置端口,并通过通讯端口发送给被测对象;

s3:测试用例执行步骤,包括:

s31:在程序启动的时候,将测场景名称和试用例名称导入树形控件;

s32:创建一个单独的事件触发线程,运行定时器的时间用例触发信号和通讯来的距离用例触发信号来触发用例事件;

s33:构建树形控件,将测试用例导入树形控件,若树形控件中拥有触发用例事件,且所在的场景被选中,则在树形控件中进行标记并计数;若触发用例事件不存在或者所在场景未被选中,则忽略该触发请求,准备接收下一个触发请求;

s34:根据场景名和标记的用例名到用例存储的文本文件或数据库中获取该用例值字符串,并将字符串转换为指定的变体值;

s35:将s35中的变体值通过dio板卡,或串口和以太网发送给被测设备;s35:实时采集被测设备上的dio板卡的输入量,或来自串口和以太网的数据,并对该信息进行解包,然后在主调程序界面上显示。

本实施例的测试用例是以用例为中心展开的,包括用例的设计、存储、查看、删除和执行等功能,具体功能如下:

加载功能:程序初始化的时候,获取该程序在某相对路径下的所有程序模块名称,并加载到主调程序的菜单中,为后续的功能操作做准备。

加载用例:程序初始化的时候,获取该程序在某相对路径下的用例设计文件中的场景名和用例名,加载到树形控件中,为加载所有功能提供数据源;

注册场景:定义测试的某一种测试工况,如列车启动,列车制动,列车入库等;

注册场景具体操作步骤如下:弹出对话框,输入需要注册的新场景名称;该模块程序将打开在某相对目录下ini文件;在ini文件中搜索该新场景名是否已经被注册过;新场景名若未被注册,则把新场景名写入ini文件,并更新tee内容;新场景名若已被注册过,则提示该用例已经被注册过,请重新输入,程序结束。

注册用例:定义某个测试场景中的一系列测试过程,如不同时刻给某个继电器进行控制,通过网络或串口通讯,向被测系统发送指令等,用例名称格式包括“t+数字”和“d+数字”,分别表示列车运行了一定时间(t+数字)或者一定距离(d+数字)执行该用例;

注册用例具体步骤:弹出对话框,输入需要注册的新用例名称;该模块程序将打开在某相对目录下ini文件;搜索该新用例名是否已被注册过;若未被注册,则把新用例名写入ini文件,并更新tee内容;若已被注册,则提示该用例已经被注册过,请重新输入;程序结束。

注销场景:删除某个场景及其所有用例,表明以后不再进行该场景的测试;具体步骤为:弹出对话框,输入需要删除的场景;该模块程序将打开在某相对目录下ini文件;删除指定的场景及其下面所有的用例;程序结束。

注销用例:删除某个场景中某个用例,表明以后不再进行该用例的测试;具体步骤为:弹出对话框,输入需要删除的指定场景名下的用例名;该模块程序将打开在某相对目录下ini文件;删除指定场景名下用例名;程序结束。

设置用例:设置测试用例中的值,在条件满足的情况下,执行该用例内容;设置用例的具体步骤为:首选通过在树形控件中选中获得设置的用例路径,即场景名和用例名;然后获取主调程序引用,通过该引用获得主调程序前面板的用例控件引用;通过用例控件引用获得所有用例控件的变体值;再将变体值转换成字符串;然后该模块程序将打开在某相对目录下ini文件;将该字符串写入到该ini文件中;关闭ini文件,则设置完成,程序结束。

查看用例:通过点击树形控件中的用例名称,则可以看到该用例的值,查看用例的设置是否符合要求;

首选通过在树形控件中选中获得设置的用例路径,即场景名和用例名;然后该模块程序将打开在某相对目录下ini文件;查找该场景下用例的字符串值;关闭ini文件;然后将该字符串值转化为变体值;获取主调程序引用;通过该引用获得主调程序前面板的用例控件引用;通过用例控件引用设置所有用例控件的变体值;程序结束。

开始测试:根据在树形控件中配置的测试内容,然后执行自动化测试,无人值守,测试完成自动停止,具体测试步骤为:

(1)获得主调程序引用;

(2)通过主调程序的引用,获得主调程序的控件用例的引用;

(3)从控件用例引用中,选出树形控件的引用;

(4)通过树形控件引用,清除控件标记和计数;

(5)统计需测场景的最小时间周期和用例总数;

(6)设置全局变量start=t,定时器开始执行;

(7)进入测试,判断测试条例是否测试完毕,或者全局变量start=f?,若是执行(8),否执行(15)

(8)定时器开始运行,达到最小周期,则触发事件;

(9)查找rree控件中是否存在该用例,且其所在的场景被选中,若是,执行(10),若否执行(7);

(10)打开在指定的相对路径下的ini文件;

(11)获取该用例的字符串值;

(12)关闭ini文件;

(13)将用例的字符串值转化为用例控件的变体值,设置dio板卡和通讯;

(14)用例计数+1,返回(7)

(15)测试结束。

停止测试:设置全局变量start=f即可,即终止自动化测试。

本发明的各功能模块后台程序都是通过应用程序引用和界面控件引用的方式进行编写,当调用的时候,功能模块后台程序自动调用主调程序的前面板控件和文本文件或数据库进行操作,实现程序无耦合的模块化设计,所有功能模块程序都按照该方式编写。主调程序在运行时,自动在某个相对路径下搜索功能模块程序,并将功能模块程序名称加载到主调程序的菜单中,主调程序通过菜单调用这些功能模块程序,当需求变更或功能扩展时,只需修改功能模块程序本身即可。以消除功能模块程序之间,主调程序与被调用功能模块程序之间的耦合。主调程序在初始化时会自动搜索用例文本文件或数据库,获得测试场景名称和测试用例名称,以树形结构在树形控件中显示。在树形控件中场景名前有单选框,方便在测试之前,对需要进行测试的项目进行配置。该用例文本文件或数据库保存在主调程序的某个相对路径下。

本发明所述的程序会自动搜索当前所有功能模块的名称,并自动加载到菜单中,便于后续程序的升级和维护。除了加载功能外,在初始化时,程序还自动加载既往定义好的测试场景和测试用例,将其加载到树形控件中,便于后续程序的操作。在测试之前,可以自由配置测试方案,任意搭配测试场景,然后按照选择的场景进行测试。本测试方案,使得测试软件的易用性、易扩展性和易维护性将得到极大的提升,不仅大幅降低测试人员的劳动量和知识水平,同时也极大地帮助了产品的测试和升级。

以上所述的实施例仅仅是对本发明的优选实施方式进行描述,并非对本发明的范围进行限定,在不脱离本发明设计精神的前提下,本领域普通技术人员对本发明的技术方案作出的各种变形和改进,均应落入本发明权利要求书确定的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1