概括起来讲,死锁问题解决思路就是九个字“要么都给,要么都不给”,这就是所谓的资源申请原子性。每个测试任务一次性向软件平台申请所需的所有资源,软件平台要么释放全部所需资源,要么什么都不返回。
通过上述方式,软件平台有效地管理了系统中测试资源的使用情况,将测试任务对仪器的无序同时访问转变为有序访问,从而支持了系统级的并行测试实现。
(2)多线程测试任务管理问题解决思路
我们采用了基于事件的异步模式实现多线程测试任务管理思路。所谓事件就是启动测试、暂停测试、继续测试、中止测试以及跨线程传递测试数据等消息。而所谓异步模式就是指主界面启动测试线程后继续运行自身工作,而不必一直阻塞自身线程,还可以取消某个或所有正在执行的测试线程。另外,客户端还可以通过订阅和处理相关事件实现运行完毕后的数据和报表处理等工作。因此,这种模式特别适合并行测试任务的管理。
(3)并行测试任务调度规划自动生成问题解决思路
并行测试任务调度规划不但要自动生成,而且要保证可靠性和效率最高,这就是一个所谓的“寻优”问题。在解决寻优问题方面有很多全局随机最优化算法,比如:遗传模拟退火算法和蚁群算法,其实都可以用来解决任务调度规划自动生成和优化问题。目前,我们实现了遗传模拟退火算法来自动生成并行测试任务调度规划,经过验证具有良好的寻优效果。
(4)系统建模问题解决思路
我们采用了一种“层次化+网络化”的方式进行系统建模。第一层描述系统有哪些UUT,第二层描述测试任务的信息和任务之间的网状关系。由于测试任务之间的时序相关性只会出现在同一UUT下,即每个UUT的测试任务是独立于其他UUT。如果每个UUT的测试任务是相同的,在建模时只需要单独描述一个UUT的测试任务时序关系即可,这样就极大地减少了建模工作量。
(5)信号链路动态建立问题解决思路
我们采用了一种可配置化的信号链路信息管理方法,改变了现有的资源动态管理器框架,在资源配置文件中加入了一个信号链路信息集,该集合由信号链路信息条目组成,每个条目又包含了仪器名称、仪器端口号、UUT名称、UUT端口号、经过的开关名称、开关通道等信息。资源配置文件的内容可以通过资源配置编辑器修改和编辑,当用户改变了系统的硬件连线后,只需要通过测试资源配置编辑器修改信号链路信息的内容即可,根据仪器端口和UUT端口,测试任务程序可以在运行时得到信号链路信息,从而动态打通所需的信号链路。
某型四组件并行测试系统照片
我们以某型T/R组件(一块)和放大器模块(三块)为测试验证对象进行了并行测试验证,经过反复运行,性能稳定,测试效率提高了1倍多。当然,并行测试效率提升不是一个固定的数值,它与测试任务分布、UUT数量和仪器配备等因素密切相关。