您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 市场营销 > 并行测试系统数据库的设计与应用
夏锐:博士基金项目:总装“十一五”重点预研项目(51317030103);电子测试技术国防科技重点实验室基金项目(51487020305JB3201)。并行测试系统数据库的设计与应用DatabaseDesignandApplicationinParallelTestSystem(空军工程大学工程学院二系自动测试系统实验室)夏锐,肖明清,王承孝Xia,RuiXiao,Mingqing,Wang,Chengxiao摘要:并行测试技术是未来自动测试系统的发展方向之一,将数据库引入并行测试系统是提高其性能的一项重要技术。介绍了测试数据库的结构,在详细分析并行测试系统体系结构的基础上,设计了基于ADO技术的多线程存取数据库的方法和实现。试验证明了该方法的可行性、安全性及可靠性,有效地提高了并行测试系统的开发效率。关键词:并行测试系统;数据库;多线程中图分类号:TP311文献标识码:B文章编号:Abstract:ParallelTestisanewhotdirectionforthefutureAutoTestSystem.It’sanimportanttechnologytoimportthedatabaseintotheparalleltestsystemtoimproveitsperformce.First,thetestdatabaseisintroduced.Thenthemultithread’stestdatabaseaccessingmethodusingADOisdesignedandimplementedbasedondetailedanalysisoftheparalleltestsystemarchitecture.Theapplicationsshowthatthemethodisfeasible,safetyandreliable.Keywords:paralleltestsystem;database;multi-thread1引言并行测试技术(ParallelTest)是自动测试系统(ATS)在进一步减少测试时间、降低测试成本的发展趋势下兴起的一项新技术,是美军下一代ATS“NxTest”的关键技术之一。它正以不可比拟的优势成为未来ATS发展的热点,将是下一代ATS的主要特征之一。目前,基于数据库技术的ATS开发正成为主流。采用测试数据库是提高系统通用性、维护性和复用性的有效途径。并行测试系统在设计时显然也要采用数据库技术。但并行测试系统比传统ATS对数据库的操作要复杂,因为系统内需要有多个测试工作线程并发地读取测试数据库的动作属性,执行多项测试任务,使测试流程得以进行。多个线程对数据库的并发操作,对数据库的数据完整性提出了一定的挑战。因此,本文在介绍了ATS测试数据库结构的基础上,设计了多线程并发操作数据库的方案,并采用ADO技术进行了具体实现,为并行测试系统的快速开发打下良好的基础,同时提高了系统的可靠性,并便于系统的测试、维护与升级。2测试数据库的结构测试数据库是统一管理ATS相关数据的集合。设计良好的数据库能为各种用户共享,具有最小冗余度,数据间联系密切而又有较高对程序的独立性等特点。图1为某机载导弹通用ATS的数据库(Access格式)结构图,其可分为系统测试诊断规则库、系统硬件资源库、系统测试流程库和系统测试结果库:(1)系统测试诊断规则库系统测试诊断规则数据库用来存放设备正常时的数据,当测试结果不符合该数据库中规定的数据时,就判定被测设备故障,存放的文件为:Principle.mdb。(2)系统硬件资源数据库系统硬件资源数据库用来配置测试过程中所用到的电源、仪器和适配器,包含三个文件:激励源数据库文件ProgrammablePower.mdb、测试仪器数据库文件TestATE.mdb和接口适配器数据库文件TUA.mdb。(3)系统测试流程数据库系统测试流程数据库用来控制程序对导弹进行测试和系统自检,存放该数据库的文件为TestFlow.mdb。该数据表格中由字段:序号ID、操作名称、操作类型(即测试代码)、操作目标、激励通道、测量通道以及描述其他测试信息的字段组成。序号ID为表格的主键,所有测试项目以此进行添加、排序和删除;操作项目标识每个测试任务名称;操作类型字段在表中非常重要,它为字符型,一类操作类型代表一种操作函数以供调度程序调用来完成当前操作。(4)系统测试结果数据库系统测试结果数据库用来存放测试的结果,包括几种表格文件:系统自检结果Self_Result.mdb、Ⅰ型导弹的测试结果M1_Result.mdb、Ⅱ型导弹测试结果M2_Result.mdb等。每种表格以导弹的测试时间为表名进行存储,因此表的个数不限。图1测试数据库结构图3并行测试数据库的设计基于多线程结构的并行测试系统是目前并行测试实现的主要形式,图2为其体系结构图。图2多线程并行测试系统体系结构系统结构可分为三层。最高层为并行测试应用程序,调度器按一定的调度策略来分配多个测试工作线程在单个或多个处理器上的运行时间,从而在宏观上表现出多个测试任务同时运行的效果。测试任务的工作流程、测试结果的保存、被测对象的故障诊断均通过调用测试数据库来完成。该层底层是仪器及激励的驱动层。第二层I/O接口层是系统软件与硬件间执行通信的底层函数库,最底层是硬件资源层。从图2可以看出,测试数据库的存取是并行测试任务顺利进行的关键。由于并行测试系统在并行测试需求分析及系统具体设计阶段已经对并行任务进行了调度,确保了任务间不会产生资源并发冲突等问题,因此并行测试应用程序的数据库可以不像实时数据库、并行数据库或分布式数据库等那样复杂,对并发机制有着非常高的要求。但如果设计使用不当也容易造成诸如重复连接、指针冲突等一些问题。本文设计了多线程下数据库存取的示意图,如图3所示。测试数据库系统测试诊断规则库系统硬件资源库系统测试流程库系统测试结果库设备自校检设备自检导弹测试激励源测试仪器接口资源Ⅰ型导弹Ⅱ型导弹Ⅲ型导弹某型导弹导弹自检测试项目1测试项目2测试项目N……测试数据库并行测试应用程序工作线程1工作线程n主线程测试调度器仪器驱动I/O接口库(VISA或其他)并行测试适配器UUT1UUT2...UUTn...第一层第二层第三层VXIPXIGPIBRS232...NetworkLXI图3并行测试系统多线程存取数据库示意图4并行测试数据库的使用ADO(ActiveXDataObject,Active数据对象)是Microsoft提供的一种面向对象,与语言无关的数据访问应用编程接口。它具有技术编程接口丰富、易于使用、可以访问多种数据源、访问速度快、效率高等优点。本文介绍了基于ADO技术的多线程并行测试系统对数据库的访问方法。4.1主线程连接测试数据库在使用测试数据库之前,在主线程中先建立与测试数据库的连接。一般先用CreateInstance方法创建ADO连接对象,然后用Open方法连接到数据库。下面为部分代码://声明数据库连接智能指针_ConnectionPtrpConnection;//定义连接到Access格式数据库LPCSTRstrConnect=Provider=Microsoft.Jet.OLEDB.4.0;DataSource=Test.mdb;//创建Connection对象HRESULThr=pConnection.CreateInstance(_uuidof(Connection));if(SUCCEEDED(hr)){//连接数据库pConnection-Open(strConnect,,,adConnectUnspecified))}4.2各工作线程存取记录主线程连接到测试数据库后,由并行测试系统调度器生成各个工作线程。每个线程内部生成数据库记录集智能指针_RecordsetPtr打开库内数据表,并对表内的记录、字段等进行各种操作,控制测试流程逐步进行或保存测试结果。以工作线程1为例,代码如下://建立测试流程记录集指针及对象_RecordsetPtrpThread1FlowRecordset;pThread1FlowRecordset.CreateInstance(_uuidof(Recordset));//建立测试结果记录集指针及对象_RecordsetPtrpThread1ResultRecordset;pThread1ResultRecordset.CreateInstance(_uuidof(Recordset));//打开库内表名为TestFlow的系统测试流程数据表pThread1FlowRecordset-Open(//查询TestFlow表中所有字段SELECT*FROMTestFlowTable,//获取连接库的IDispatch指针theApp.pConnection.GetInterfacePtr(),测试数据库并行测试应用程序测试调度器TestFlow.mdb工作线程1M1_Result.mdb打开记录集读写记录……打开记录集工作线程2打开记录集读写记录……打开记录集主线程创建连接到测试数据库…//打开记录集的方式为动态集、乐观锁adOpenDynamic,adLockOptimistic,//指示strSQL为命令文本,即普通SQL语句adCmdText);//打开库内表名为M1_Result的系统测试结果数据表pThread1ResultRecordset-Open(//查询TestResult表中所有字段SELECT*FROMTestResultTable,//获取库接库的IDispatch指针theApp.pConnection.GetInterfacePtr(),//打开记录集的方式为动态集、乐观锁adOpenDynamic,adLockOptimistic,//指示strSQL为命令文本,即普通SQL语句adCmdText);多个线程内的多个ADO智能指针分别连接到测试数据库相应的记录集后,通过如下方法读取记录集中指定字段的值:pRecordset-get_Collect(COLUMN_NAME);通过访问记录集的字段值,我们可以得到很多有用的信息,控制测试流程的进行。相关记录集的指针移动、数据格式转换、存取数据、表的保存等方法,与一般ADO数据库操作方法相似,限于篇幅,本文不再赘述。5结论本文介绍了并行测试系统基于ADO技术对测试数据库的并发使用方法。实际系统使用证明了采用该数据库使用方法有效地确保了系统的易用性、安全性及可扩展性,并提高了并行测试系统的开发效率。本文创新点:设计了基于ADO技术的多线程存取数据库的方法。实验证明了该方法的可行性、安全性及可靠性,有效提高了并行测试系统的开发效率和系统性能。参考文献:[1]程嗣怡,肖明清,郑鑫.未来军用测试系统的发展前景[J].微计算机信息,2006,4-1:170-173.[2]夏锐,肖明清,赖根.并行测试系统设计与开发[J].计算机测量与控制,2006.7.[3]张丽华,李莉.达梦数据库并发控制机制[J].程序员,2007.2:114-115.[4]吴志强,肖明清,黄朝民.基于数据库的机载导弹自动测试系统软件开发设计[J].弹箭与制导学报,2006.2:1104-1107[5]刘惊雷编著.VisualC++实用教程[M].北京,电子工业出版社作者简介:夏锐(1982-),男,汉族,安徽含山人,博士,主研方向:武器系统检测自动化与智能化,E-mail:xiaruiww@163.com;肖明清(1963-),男,汉族,湖南常德人,博士生导师,教授,主要研究方向:自动测试系统的设计和开发,E-mail:xmqing@sohu.com。Biography:XiaRui(1982-),Male,Hannationality,doctor,mainlyfortheweaponsystemtestautomaticallyandintelligently.XiaoMingqing(1963-),Male,Hannationalit
本文标题:并行测试系统数据库的设计与应用
链接地址:https://www.777doc.com/doc-2493223 .html