一种基于VxWorks系统多任务机制的高实时并发测试方法技术方案

技术编号:10152848 阅读:196 留言:0更新日期:2014-06-30 19:21
本发明专利技术涉及一种基于VxWorks系统多任务机制的高实时并发测试方法,实现步骤为:根据测试用例规划测试任务,为各个测试任务配置任务属性,所述任务属性包括任务名称、任务周期、任务优先级、开始时间、结束时间;创建任务和任务对应的信号量;注册定时器用于多任务调度,建立任务信息表。本发明专利技术能够在确定的时间内完成运算和逻辑处理以及与被测系统的交互,而且能够在同一时间段内完成多项并发的测试任务,满足了嵌入式软件的高实时性并发测试要求。

【技术实现步骤摘要】
【专利摘要】本专利技术涉及,实现步骤为:根据测试用例规划测试任务,为各个测试任务配置任务属性,所述任务属性包括任务名称、任务周期、任务优先级、开始时间、结束时间;创建任务和任务对应的信号量;注册定时器用于多任务调度,建立任务信息表。本专利技术能够在确定的时间内完成运算和逻辑处理以及与被测系统的交互,而且能够在同一时间段内完成多项并发的测试任务,满足了嵌入式软件的高实时性并发测试要求。【专利说明】 —种基于VxWorks系统多任务机制的高实时并发测试方法
本专利技术涉及,属于嵌入式软件测试领域。
技术介绍
嵌入式软件因为其可裁剪、可靠性高、保密性好等特性被越来越广泛地应用于国防、工控、医疗等领域。随着应用的加深,嵌入式软件越来越呈现出高实时性、高并发性的特点,并且通常嵌入式软件对可靠性的要求比较高、须经过充分测试。嵌入式软件的测试一般分为以下几种类型:功能测试、性能测试、安全性测试、接口测试等等。其中,最为核心的是功能和性能测试。功能测试要求验证被测软件是否正确实现了需求中的功能,需要测试过程能够覆盖被测系统的所有功能分支;性能测试要求验证被测软件是否能够在要求的时间内完成功能,能够在确定的时间内给出正确的反馈。嵌入式软件通常需要执行高实时性要求的任务,很可能必须在毫秒级甚至微妙级的时间内完成功能,并且往往在一个时间段内需要完成多项功能,也就是说,需要完成多项并发任务,这就要求测试过程必须能够完成多个功能点的并发测试;另外,随着被测系统和被测软件的复杂化,测试环境在一次测试过程中往往需要仿真多个设备的功能,这就对嵌入式软件的测试提出了更加严格的实时性和并发性要求。目前软件测试领域的现有技术,通常采用1adrunner或类似工具,通过虚拟用户生成器VuGen,在同一时间段内创建成千上万的虚拟用户来对被测系统进行操作来完成并发测试,但现有测试方法和工具绝大多数基于windows平台,本身定时能力或者说实时性就不够强,基本只能支持毫秒级的测试,并且并不能严格保证对被测件的多个操作能够按照预先设计好的时序特征执行,尤其是windows将大量的资源用于维持本身的界面活动和相应鼠标键盘等硬件的中断上,进一步影响对被测系统执行高实时并发测试。因此,目前需要本领域技术人员解决的一个迫切的问题就是,提出一种可行的方法,这种方法一方面能够在确定的时间内完成运算和逻辑处理以及与被测系统的交互,另一方面,必须能够在同一时间段内完成多项并发的测试任务,以满足嵌入式软件的高实时性并发测试要求。目前国内外文献尚未有相关的报道。
技术实现思路
本专利技术技术解决问题:克服现有技术的不足,提供,该方法能够在确定的时间内完成运算和逻辑处理以及与被测系统的交互,而且能够在同一时间段内完成多项并发的测试任务,满足了嵌入式软件的高实时性并发测试要求。本专利技术技术解决方案:,一方面能够在确定的时间内完成运算和逻辑处理以及与被测系统的交互,另一方面,必须能够在同一时间段内完成多项并发的测试任务,以满足嵌入式软件的高实时性并发测试要求。本专利技术实现的具体步骤如下:(I)根据测试用例规划测试任务所述测试用例指对测试流程的描述和约束,是执行一次测试的必要的前提和准备;所述测试任务是一种测试操作的集合;将测试用例分解为各种基本操作;所述基本操作是指将测试用例分解成的最小单元,例如在某一时间点从某个硬件通道向被测件发送数据,或者每隔25毫秒从某个硬件通道向被测件发送数据;再将各种基本操作按照重要性以及操作的时间特性分配到多个测试任务中;(11)将测试用例分解为各种基本操作(比如在某个时间点从某个硬件端口发送一帧特定数据),分解的方法是将测试用例分解为最小的单元,也就是说,无法再次分解为止,例如,某一测试用例为给被测件上电,3秒后从422总线上接收数据以便判断被测件是否自检成功,则将该测试用例分解为两个基本操作:一个是测试开始后给被测件上电,第二个是测试过程开始3秒后从422总线上接收数据;(12)将(11)中得到的各基本操作按照重要性以及操作的时间特性分配到多个测试任务中,所述重要性指一个基本操作是否比其他基本操作重要,如果遇到同一个时间点多个基本操作同时需要执行的情况,某一个基本操作必须强制的先于其他基本操作运行,则认为该基本操作比其他基本操作重要;所述操作的时间特性是指基本操作是否存在执行开始以及结束的时间点要求,是否存在需要按照一定周期反复执行的情况;将各基本操作分配到测试任务中的原则如下:时间特性相同的操作,合并到一个测试任务中,如果存在不同的时间特性,则将基本操作放到另一个测试任务中,如果某基本操作的重要性与测试任务中的其他基本操作不同,则将该基本操作放到另一个测试任务中;(2)为各个测试任务配置任务属性,所述任务属性包括任务名称、任务周期、任务优先级、开始时间、结束时间;(21)为测试任务命名,测试人员可以对测试任务进行手动命名,否则为测试任务分配一个不会重复的名字;(22)为测试任务设置优先级,按照步骤(12)获得的各基本操作的重要性关系为这些基本操作组成的测试任务设置优先级,如果需要,测试人员可以手动修改测试任务的优先级;针对周期执行的测试任务,为周期小的任务分配比较高的优先级;(23)对于不需要按照周期执行的测试任务,也就是说只要在特定时间点执行一次的任务,将其周期和结束时间设置为与开始时间相同。对于不需要配置开始时间和结束时间和结束时间的测试任务(也就是说这些测试任务从测试开始一直执行至测试结束),将其开始时间和结束时间设置为零。(3)创建任务和任务对应的信号量(31)调用VxWorks系统函数注册任务,为每个测试任务对应创建一个任务,每个任务的优先级即为测试任务的优先级;(32)为每个任务创建一个对应的信号量用于控制任务的状态;(33)将测试任务的实现写入对应任务的入口函数,在实现测试任务的代码块之前加入获取信号量语句,并且使用死循环语句使整个代码块循环执行,以便保证只要能够获取信号量,测试任务的实现代码不停地循环执行;由于无法获取信号量,所有任务创建之后处于挂起态;(4)注册定时器用于多任务调度,定时器的周期按照各任务的最大公约数设置;如果存在任务配置了开始时间和结束时间,则将开始时间和结束时间看作周期加入计算最大公约数的集合中,以便VxWorks系统能够计算出最精确的定时器周期;将VxWorks系统的每秒tick数设置为Is/定时器周期以避免浪费多余的CPU资源;所述tick为VxWorks系统内核调度的最小时间片;(5)建立任务信息表,将所有任务的任务名称,任务优先级,任务周期,开始时间,结束时间以及对应的信号量信息记录到表中;其中,任务周期、开始时间和结束时间不直接记录时间,而是记录tick数;然后把任务信息表中的所有任务进行排序,将所有任务按照任务周期从小到大进行排序;最后再将所有任务周期相同的任务按照优先级从高到低排序;(6)测试开始运行后,定时器自动按照各任务执行任务周期的最大公约数运转,在定时器的回调函数中,维护一个全局的tick计数器,每次进入回调函数将计数器加一;遍历任务信息表,判断所有任务是否到了应该执行的时刻:如果全局的tick计数大于等于任务的开始tick数并且小于等于任务的结束tick数同时全局的tick计本文档来自技高网
...

【技术保护点】
一种基于VxWorks系统多任务机制的高实时并发测试方法,其特征在于实现步骤如下:(1)根据测试用例规划测试任务所述测试用例指对测试流程的描述和约束,是执行一次测试的必要的前提和准备;所述测试任务是一种测试操作的集合;(11)将测试用例分解为各种基本操作,所述基本操作是指将测试用例分解成的最小单元;(12)将步骤(11)中得到的各基本操作按照重要性以及操作的时间特性分配到多个测试任务中,所述重要性指一个基本操作是否比其他基本操作重要,如果遇到同一个时间点多个基本操作同时需要执行的情况,某一个基本操作必须强制的先于其他基本操作运行,则认为该基本操作比其他基本操作重要;所述操作的时间特性是指基本操作是否存在执行开始以及结束的时间点要求,是否存在需要按照一定周期反复执行的情况;将各基本操作分配到测试任务中的原则如下:时间特性相同的操作,合并到一个测试任务中,如果存在不同的时间特性,则将基本操作放到另一个测试任务中,如果某基本操作的重要性与测试任务中的其他基本操作不同,则将该基本操作放到另一个测试任务中;(2)为各个测试任务配置任务属性,所述任务属性包括任务名称、任务周期、任务优先级、开始时间、结束时间;(21)为测试任务命名,测试人员可以对测试任务进行手动命名,否则为测试任务分配一个不会重复的名字;(22)为测试任务设置优先级,按照步骤(12)获得的各基本操作的重要性关系为这些基本操作组成的测试任务设置优先级,如果需要,测试人员可以手动修改测试任务的优先级;针对周期执行的测试任务,为周期小的任务分配比较高的优先级;(23)对于不需要按照周期执行的测试任务,只要在特定时间点执行一次的任务,将其周期和结束时间设置为与开始时间相同,对于不需要配置开始时间和结束时间和结束时间的测试任务,将其开始时间和结束时间设置为零;(3)创建任务和任务对应的信号量(31)调用VxWorks系统函数注册任务,为每个测试任务对应创建一个任务,每个任务的优先级即为测试任务的优先级;(32)为每个任务创建一个对应的信号量用于控制任务的状态;(33)将测试任务的实现写入对应任务的入口函数,在实现测试任务的代码块之前加入获取信号量语句,并且使用死循环语句使整个代码块循环执行,以便保证只要能够获取信号量,测试任务的实现代码不停地循环执行;由于无法获取信号量,所有任务创建之后处于挂起态;(4)注册定时器用于多任务调度,定时器的周期按照各任务的最大公约数设置;如果存在任务配置了开始时间和结束时间,则将开始时间和结束时间看作周期加入计算最大公约数的集合中,以便VxWorks系统能够计算出最精确的定时器周期;将VxWorks系统的每秒tick数设置为1s/定时器周期以避免浪费多余的CPU资源;所述tick为VxWorks系统内核调度的最小时间片;(5)建立任务信息表,将所有任务的任务名称,任务优先级,任务周期,开始时间,结束时间以及对应的信号量信息记录到表中;其中,任务周期、开始时间和结束时间不直接记录时间,而是记录tick数;然后把任务信息表中的所有任务进行排序,将所有任务按照任务周期从小到大进行排序;最后再将所有任务周期相同的任务按照优先级从高到低排序;(6)测试开始运行后,定时器自动按照各任务执行任务周期的最大公约数运转,在定时器的回调函数中,维护一个全局的tick计数器,每次进入回调函数将计数器加一;遍历任务信息表,判断所有任务是否到了应该执行的时刻:如果全局的tick计数大于等于任务的开始tick数并且小于等于任务的结束tick数同时全局的tick计数对任务周期tick数取余为0,则释放该任务运行所需的信号量,任务开始执行。...

【技术特征摘要】

【专利技术属性】
技术研发人员:杨顺昆刘斌司维
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1