接口测试(精选5篇)
2013-5-1 徐
医
附
属
医
院
医保接口测试文档
编辑:沈国强
日期:2003-12-24
住院系统
1、运行住院系统,并登录住院系统
用于测试医保初始化是否通过,主要包括以下几项: 1)、检测系统参数设置是否已经设置; 2)、检测本机是否使用医保功能 3)、检测本机是否需记录医保错误日志 4)、连接医保数据库
5)、自动更新医保在院病人基本信息
2、退出住院系统
用于测试医保退出时,是否正常释放使用资源。
3、医保入院登记处理,具体包括以下功能
1)、医保性质选择,此时正常情况下应该自动打开医保读卡窗体(如图3-1),等待用户进行读卡操作;
杭州创业软件集团
2013-5-1
图3-1 2)、性质选择完成后,输入相关住院信息后,进行“保存”操作,此时将检测如果为医保病人,则将自动打开“费用控制”窗体(如图3-2),当有预交款时,在“预交款总额”一栏中,将自动输入且不能修改,“虚拟帐户总额”一般根据医院自行设定,可输入0,“锁定判别”用于将当前病人锁定或未锁定,锁定时,将不能记费,只能退费。当按“取消”时,将不对病人进行费用控制处理。
图3-2 3)、说明:在读卡过程中,不要将医保卡提早抽出,请在处理完成后再抽出。
4、对病人进行交预交款处理
在对医保病人进行交款处理数据保存时,将自动处理欠费功能,如果病人交款后,仍处于欠费状态,则系统将自动将病人锁定。
5、对病人进行退款处理
在对医保病人进行退款处理时,将自动处理欠费功能,如果病人退款后,处于欠费状态,则系统将自动将病人锁定。
6、对病人进行费用记帐
在费用记帐时,系统将对医保病人进行欠费检测,如果已经欠费,则不允许将费用记入;如果未欠费,但此项费用已经大于可用额度即自负金额加上本项目费用金额已经超过预交款与虚拟帐户的合计时,此项费用也不允许记入;只有当可用额度大于费用额时,方可记费;同时,对于医保病人进行费用与药品使用限制控制,即当费用或药品存在于“护理费、治疗费、器械费、另加器械费、消毒费、材料费、备皮材料费、静脉输液 杭州创业软件集团
2013-5-1
7、进行出院结算处理
在出院结算选择后,系统将自动打开医保读卡窗体,要求读卡操作,并进行病人基本信息的更新;在“结算”时,系统将自动打开医保结算窗体,同时进行医保分段计算处理,显示计算结果(如图7-1),按“确定”后进行正式结算并打印住院发票,医保病人发票可选择打印,即在系统参数中进行选择,即使用新发票或是旧发票打印,此功能只针对医保病人。旧发票打印程序需修改,由于没有实际项目,无法设定数据,需修改。
新发票打印程序使用DataWindow套打,位置基本正确,其中有两项数据未知,需确定,并修改程序。
图7-1
8、发票作废处理
在发票作废病人选择后,需进行读卡操作,并自动更新病人信息,“作废”时,将HIS端医保结算相关表置作废日期;并处理医保功能,使当前病人卡处于在院状态。
9、病人入院注销
在病人未发生费用与交款时,可作入院注销处理,“注销”操作时需进行读卡操作。
10、病人性质转换
计算机和工业控制领域必然要用到各种各样的电缆, 有些用来连接电源, 有些用来连接电信号, 有些用来延长接口位置以方便连接设备, 所有这些电缆在使用过程中必然存在自然老化或者认为损坏等问题, 要发现电缆的问题必须要有一定的测试手段[1]。现有的普通电缆测试仪大多都是针对单一的电缆, 适用面不够广泛, 当用户测试多种电缆时必须携带多个设备, 这为检测带来了许多不便, 需要设计一种可以测试多种电缆的仪器。
在日常生活中常用的电缆有USB线、网线、串口线、VGA视频线、HDMI多媒体线, 本文设计的多种接口电缆测试仪可以实现对以上5种电缆线的检测功能。
1、电缆测试仪测试原理
本文设计的电缆测试仪具有对多种常用接口电缆的检测功能, 如USB接口、VGA接口、HDMI接口等。它可以实现对线路周期可变的逐根校对, 能检测出线路的短路、断路、交叉接错故障。测试原理图如下图所示。
发送端和接收端由个数相同的发光二极管并联构成, 电源给发送端的二极管供电, 接收端直接与单片机相连。用户可以通过旋转开关选择要测试的接口电缆类型, 并且能根据需要选择指示灯的点亮时间 (1s或0.5s) , 最终由发送端和接收端的发光二极管的点亮状态判断被测电缆的故障状态。当检测电缆发生短路时, 不应亮的指示灯亮;当检测电缆发送断路时, 相应的线路指示灯不亮;当检测电缆接错时, 应该亮的指示灯不亮, 接错线的灯亮;当检测电缆无故障时, 发送端与接收端的指示灯会以流水方式点亮。
2、电缆测试仪的硬件设计
由于引入单片机软件编程控制, 硬件电路得到简化, 本系统主要由STC89C52单片机、稳压电源、发光二极管单元组成, 硬件电路简单可靠。
MCU:8位单片机STC89C52支持在线编程, 内部集成了:8K字节Flash、512字节RAM、4个并行I/O口、3个16位定时/计数器、1个通用异步串行口[2]。它有6个中断向量和2个优先级的中断系统, 具有抗干扰能力强、速度快、功耗低、价格便宜等特点[3], 完全符合电缆测试仪的设计要求。
电源给发送端指示灯的正极相连, 接收端指示灯的负极与单片机的I/O口相连, 5档旋转开关和按钮分别连接P3口的低6位, 单片机通过读取P3口的值来决定测试电缆的类型以及指示灯的点亮频率。因为P0内部没有上拉电阻, 不能正常地输出高/低电平, 因此需要外接10K的上拉电阻。USB、RJ45 (网线接口) 、DB9、HDMI分别采用4芯、8芯、9芯、15芯、19芯电缆, 所以本设计的发送端与接收端各需要19个发光二极管, 相应的每组二极管对应了一根芯线。单片机与指示灯连接电路图如图2所示。
稳压电源:可充电的锂电池经三端稳压器LM7805给系统提供稳定的5V电压, LM7805内含过流、过热和过载保护电路[4], 它的应用电路简单可靠, 不仅输入电压范围广 (7~35V) , 而且可以使用外接元件调节输出的电压。为了增强系统的稳压和抗电磁干扰能力, 输入与输出端都需要并联两个电容, 输入的作用是消除高频噪声, 防止电路产生自激振荡;输出电容的作用是降低输出端的高低频噪声干扰, 以达到更好的稳压效果[5]。二极管D0是输出保护二极管, 可以保护稳压器的输出级。系统的稳压电路图如图3所示。
3、软件设计
由于C语言简单易懂, 可移植性好, 系统采用C语言编程。为了使指示灯点亮时间更准确, 在软件设计中使用了定时器。主程序对系统进行初始化, 系统初始化主要是对定时器0初始化, 因为定时时间有限, 定时时间设为50ms, 然后只需要等待定时中断即可, 大部分的工作都在定时中断函数中完成, 它的流程如图4所示。
因为当I/O口输出低电平时, 对应的指示灯才会亮, 在主程序中定义一个long类型的变量LData和一个计数变量Num, 它们的初始值分别为fffffffeH和0, 每进一次中断, Num自增一次, Num=20时LData左移1位, 测试电缆的芯数决定了LData的最小值, 当LData小于最小值时, 令LData=fffffffeH。然后把LData的低24位分别赋给P0、P1、P2口。最后根据P3.5的状态设定定时器的定时时间, 这样就实现了指示灯点亮1s或0.5s的功能。程序如此反复运行, 只要被测试的电缆是完好的, 就会最终实现多个发光二极管循环点亮的功能。
4、实验结果验证
本文设计的电缆测试仪已经做出了实物, 为了检验其实用性, 分别对USB线、网线、DB9串口线、VGA接口线、HDMI接口线做了测试。以VGA线为例, 测试仪开始工作后, 通过旋转开关和按钮选择电缆类型和指示灯频率, 测试过程中有以下几种情况:
(1) 若电缆没有故障, 指示灯从1到15逐个闪亮, 闪亮频率根据按钮的状态改变。
(2) 若电缆两端的线序不正确时, 接收端的指示灯仍然从1到15逐个闪亮, 但是发送端会按照与接收端连通的线序逐个闪亮。
(3) 导线断路时, 发送端和接收端对应的指示灯都不亮, 其它的指示灯按正常顺序逐个闪亮。
(4) 导线短路时, 接收端仍然从1到15逐个闪亮, 但发送端的指示灯短路线所对应的指示灯被同时点亮, 其它的指示灯仍按正常的顺序逐个闪亮。
实验结果验证本文设计的电缆测试仪可以实现对多种接口电缆的测试功能, 用户可以直观的检测出电缆的状态, 它完全符合设计要求。
5、结语
采用STC89C52单片机设计的多路电缆测试仪, 实现了对多种常用接口电缆的检测功能。本设计由于引入软件编程, 硬件电路简单可靠, 所以测试仪体积小、携带方便、经济实用, 可以满足用户对计算机等工业现场常用电缆的日常维修、测试需求, 能准确及时地检测出电缆故障, 大大节省了维修时间。
摘要:为了实现对日常生活中的常用电缆线故障状态的测试功能, 设计了一种针对于多种接口的电缆测试仪。本文分析了该测试仪的工作原理, 完成了以STC89C52单片机为核心的硬件电路设计和基于C语言的软件编程。该测试仪能够检测多种电缆线的短路、断路、接错故障, 实验结果表明本设计简单可靠, 成本低廉。
关键词:多种接口,电缆测试仪,STC89C52,单片机
参考文献
[1]李振华, 多功能电缆测试仪[P].中国专利:200410031701.8, 2005-9-28.
[2]张培仁, 孙占辉, 张欣, 等.基于C语言编程MCS-51单片机原理与应用[M].北京:清华大学出版社, 2002, 8-11
[3]颜增显, 闫秀燕.基于单片机STC89C52智能小车设计[J].火力与指挥控制.2011, 36 (12) :198-201.
[4]田智文.一种带有保护电路的直流稳压电源的设计[D].西安:西安电子科技大学.2011.4-5.
按消防行业设计规范,火灾报警控制系统的各种控制输出均要求为24VDC的弱电信号或容量为24VDC的无源触点信号。消防联动控制设备包含消火栓水泵、喷淋水泵、水喷雾泵、排烟风机、正压送风机、电梯、卷帘门、防火门、排烟阀、正压送风阀、切断非消防电等。若实现这些设备的消防联动控制,就需要其具备以下要求的接口条件,特别是对强电联动设备,需其具备消防继电隔离控制转换接口,现在提出以上联动设备的消防接口条件,请甲方在采购订货时注意。
1、消火栓泵、喷淋泵、水喷雾泵电控设备接口条件 控制:要求每组水泵控制柜内提供2组24VDC控制继电器(一个接直拉线另一个接模块)。当消防输出24VDC控制信号时,启泵继电器动作,水泵组启动; 当24VDC控制信号断开时,水泵组停止运行。(即不自锁,给电起,不给电停)
返回:要求水泵控制柜输出每台水泵运行状态和线路故障状态的无源常开触点信号,每台泵提供两个运行状态反馈信号(一个接直拉线另一个接模块)。每台泵提供1个故障状态接点。
布线:要求每台水泵控制柜预留接线端子排,用于连接中央联动启动/停止控制(无源常开触点控制信号)、运行状态和故障状态指示(无源常开触点控制信号)。水泵至中控室硬拉线用线为阻燃铜芯控制电缆ZR-KVV-7X1.5(含一芯备用线);水泵至模块用线为阻燃铜芯双绞线3×(ZR-RVS2×1.0)。
2、正压风机、补风机、排烟风机设备接口条件
控制:要求风机电控柜内提供2组24VDC控制继电器(一个接直拉线另一个接模块)。当消防输出24VDC控制信号时,继电器动作,风机启动; 当24VDC控制信号断开时,风机停止运行。(即不自锁,给电起,不给电停)
返回:要求风机控制柜输出每台风机的运行状态和线路故障状态的无源常开触点信号,每台提供两个运行状态反馈信号(一个接直拉线另一个接模块)。每台风机提供1个
故障状态接点。
防火阀停风机:要求风机控制柜具有防火阀连锁停风机的功能。
布线:要求每台风机控制柜预留接线端子排,用于连接中央联动启动/停止控制(无源常开触点控制信号)、运行状态指示和故障状态指示(无源常开触点控制信号)。用线:控制中心至每台风机控制柜用线为阻燃铜芯控制电缆ZR-KVV-7X1.5(含一芯备用线);模块至每台风机控制柜用线为阻燃铜芯双绞线3×(ZR-RVS2×1.5)。
3、电梯归首控制接口条件(当消防中心无电梯控制显示装置时)
控制:消防报警系统输出24VDC有源控制信号或容量为24VDC的无源触点信号,用于控制电梯回归首层。当火警确认后,报警系统自动输出24VDC控制信号或容量为24VDC的无源触点信号,电梯自动回归首层。要求每台电梯均设有以上控制功能。返回:要求电梯控制箱提供用于电梯归首状态的无源常开触点信号。
用线:要求每台电梯控制柜预留接线端子排,用于连接模块联动归首控制、归首到位状态反馈。控制中心至控制模块用线为阻燃铜芯双绞线2×(ZR-RVS-2X1.5);模块至电梯控制箱用线为阻燃铜芯双绞线2×(ZR-RVS-2X1.0)。
4、防火卷帘门接口条件 二步动作卷帘门的控制
控制:报警系统对疏散通道上的每道门提供两个24VDC控制信号,用于控制卷帘门的两步降落。
返回:卷帘门控制电路提供两个无源常开接点用于中停和落底位置指示。
布线:要求卷帘门控制箱预留接线端子排,用于连接模块联动控制、降落到位状态反馈。消防中心至卷帘门模块用线为阻燃铜芯双绞线2×(ZR-RVS-2X1.5),模块至卷帘门控制箱用线为阻燃铜芯电线3×(ZR-RVS-2X1.0)。一步动作卷帘门的控制
控制:报警系统对疏散通道上的每道门提供一个24VDC控制信号,用于控制卷帘门的一步降落。
返回:卷帘门控制电路提供一个无源常开接点用于降落位置指示。
布线:要求卷帘门控制箱预留接线端子排,用于连接模块联动控制、降落到位状态反馈。消防中心至卷帘门模块用线为阻燃铜芯双绞线2×(ZR-RVS-2X1.5),模块至卷帘门控制箱用线为阻燃铜芯双绞线2×(ZR-RVS-2X1.0)。
5、切除照明电源、空调电源、非消防动力电源及投入应急照明电源的接口条件 控制:消防报警系统提供24VDC有源控制信号。控制配电箱内24V隔离继电器,通过隔离继电器常开接点控制220V分离脱扣器动作,实现切非消防电源。返回:要求配电箱提供用于指示动作的无源接点。
布线:要求配电箱预留接线端子排,用于连接模块联动控制、动作状态反馈。用线:消防中心至模块用线为阻燃铜芯双绞线2×(ZR-RVS-2X1.5),模块至控制箱用线为阻燃铜芯双绞线2×(ZR-RVS-2X1.0)。
6、各类排烟阀、正压送风阀控制接口条件
控制:消防报警系统提供一组24VDC控制信号,控制阀门动作。各类排烟阀门具有微动开关的连锁控制机构,可实现由一个消防信号控制多个阀门的联锁控制方式。采购排烟阀门时应选用带双微动开关联锁机构的阀门。返回:阀门应输出动作的无源触点信号。
对各种阀门现场“机械排烟装置”的人工开启控制及其连锁控制开启相关风机功能应由阀门设备系统直接控制实现。
布线:消防中心至排烟阀模块用线为阻燃铜芯双绞线2×(ZR-RVS-2X1.5),模块至阀门用线为阻燃铜芯双绞线2×(ZR-RVS-2X1.0)。7、70度防火阀、280度阀接口条件
控制:70度防火阀熔断动作后,阀门应输出设备熔断动作的无源常开触点信号。280度防火阀熔断动作后,阀门应提供2个独立的用于表示设备熔断动作的无源常开触点信号。1个给弱电报警系统,1个给相关强电控制箱用于连锁停止排烟风机。布线:消防中心至防火阀模块用线为阻燃铜芯双绞线2×(ZR-RVS-2X1.5),模块至防火阀用线为阻燃铜芯电线双绞线2×(ZR-RVS-2X1.0)。
8、与消防报警系统联动的IC卡门禁系统接口条件
控制:消防报警系统输出24VDC有源控制信号或容量为24VDC的无源触点信号,用于控制IC卡门禁系统将门打开。当火警确认后,报警系统自动输出24VDC控制信号或容量为24VDC的无源触点信号,IC卡门禁系统自动将门打开。要求每樘门均设有以上控制功能。
返回:要求IC卡门禁系统提供用于门禁状态的无源常开触点信号。
用线:要求每樘IC卡门禁系统预留接线端子排,用于连接模块联动门禁控制及状态反馈。控制中心至控制模块用线为阻燃铜芯双绞线2×(ZR-RVS-2X1.5);模块至IC卡门禁系统用线为阻燃铜芯双绞线2×(ZR-RVS-2X1.0)。
什么是接口
接口指的是MD产品具有哪些输入输出的.接口。首先作为MD产品,耳机的输出接口自然是必须有的。除了基本的耳机输出接口之外,录放型产品还应该具有线路输入的接口,这样才能够把MD和其它播放设备相连接,把播放的音频输入MD并且将其录制到MD片上。而目前的NetMD产品还应具有USB接口,这样才能够和电脑相连接,从而能够进行文件的传输。有的产品还具有麦克风的接口,可以把外部的声音通过MD录制下来。虽然,接口种类丰富能够扩大产品的功能,但是在实际的应用中还应按需进行选购。
对构件使用者来说,构件具有一个最显著的特征[1],即构件的源代码的不可得性,只有通过调用才能使用构件的功能。由于源代码的不可得使构件验收和部署时的测试工作变得困难,因此构件的测试必须从更高的层次入手,即从构件提供的接口进行测试。通过接口调用和参数传递观察构件的外在行为,用以验证构件是否符合规格说明。因此如何设计出有效而充分的测试用例成为基于构件接口测试的关键任务。本文正是根据这种思路把遗传算法应用到构件的接口变异中去,通过变异测试生成有效而充分的测试用例,最后运用这些用例测试构件的功能。
1 构件与变异测试
1.1 构件与构件测试的现状
根据《计算机百科全书》中的定义[2],构件是软件系统中具有相对独立功能、可以明确辨识、接口由契约指定、和语境有明显依赖关系、可独立部署、可组装的软件实体。而构件的质量关系着构件化软件开发的成败,因此在进行构件化软件开发前要对构件进行充分的测试。
目前构件测试方法有内置测试法、元数据法、构件交互图,基于合约的接口变异测试方法等。根据构件测试人员的不同可以分为构件开发者的测试和构件使用者的测试。这里主要研究接口变异的测试方法,即站在构件使用者的角度一种测试方法。该方法允许构件测试者根据构件的规格描述信息生成初步的测试用例,通过遗传算法对构件的接口进行变异,把构件测试用例应用到变异后的构件接口上,经过一系列迭代的测试过程逐步完善测试用例,直至测试用例的有效度达到要求为止,最后运行测试用例观察构件的交互是否满足规格需求。
1.2 变异测试的过程
基于变异的软件测试是一种有效的软件测试方法。它需要执行一个程序的多个不同版本用来评价所使用的测试用例。这里要对为测试的程序构造出变异来,一个变异体就是引入了一个简单的语法错误到程序中。整个变异测试过程(图1)可以描述如下:
被测试的程序P,它的变异体为Pi(i=1,2,3,…N)。在测试集T上执行变异子Pi,与执行P的结果比较。
如果Pi(T)<>P(T)那么Pi被杀死。
如果Pi(T)==P(T)这里有两种情况,一是Pi是P的等价变异体;另一种情况是用例不够完善尚且不能揭示出Pi里面存在的错误。
这里介绍下变异充分度参数MS定义:
其中D是被杀死的变异体个数。
N是所有变异体个数。
E是等价变异体的个数。
理想的情况下MS为100%,即测试用例T能杀死所有的非等价变异体。实际上往往难以达到100%的充分度,因为等价变异体的判定在有些情况下是非常困难的。一般来说在达到可以接受的充分度后就结束测试。
通过上述的变异过程可见,变异测试的目的是生成有效的测试用例,目前应用较广的是运用遗传算法生成变异测试用例。
2 遗传算法
2.1 遗传算法的概念
遗传算法(Genetic Algorithms)[3]是从代表问题可能潜在的解集的一个种群开始的,而一个种群则由经过基因编码的一定数目的个体组成。每个个体实际上是染色体带有特征的实体。染色体作为遗传物质的主要载体,即多个基因的集合,其内部表现(即基因型)是某种基因组合,它决定了个体的形状的外部表现。因此,在一开始需要实现从表现型到基因型的映射即编码工作。由于仿照基因编码的工作很复杂,我们往往进行简化,如二进制编码。初始代种群产生之后,按照适者生存和优胜劣汰的原理,逐代演化产生出越来越好的近似解,在每一代,根据问题域中个体的适应度大小选择个体,并借助于自然遗传学的遗传算子进行组合、交叉和变异,产生出代表新的解集的种群。
在软件测试过程中,一个基本的观点是要确定满足测试目标的输入变量域。这个问题就是最大化一个函数f(x1,x2,…xm)。在遗传算法中,每个染色体代表一组测试用例。遗传算法着眼于原程序输入域,其中合适的测试用例可以杀死原程序的变异体。遗传算法的个体是二进制或字母的串,需要为每个个体定义一个适应度函数f(x),适应度函数的值就是指测试用例发现程序错误的能力和效率。
2.2 遗传算法的操作符
遗传算法使用以下操作符[4]:选择(复制)、交叉和变异。
1)选择(复制)
选择就是从一代中选择两个个体进行交叉、变异等重组的过程。有不同的选择个体的方法,比如随机法或者根据它们的适应度函数的值。
2)交叉
交叉操作符作用在个体水平上,在交叉操作前要把个体转化为一个二进制表达形式,即编码的过程。交叉过程中双亲在个体的随机位置交换子串的信息生成新的串,即子代。这个过程的目的就是通过组合双亲的信息创造出更好的个体来。
3)变异
变异操作符修改个体的一个或多个基因值。假如个体是一个二进制串的话,变异就意味着把其中的0变为1。
2.3 遗传算法的应用过程
有了以上三个操作符与适应度函数,那么遗传算法的应用过程可以描述为:
1)创建初始种群。2)为每个种群的个体求它的评估适应度函数f(x)的值。3)使用复制、交叉和变异操作符创建新种群。4)用新种群取代旧种群作为新一代。5)测试问题规范。6)返回第2步。
使用遗传算法我们可以计算出更好的测试用例,可以改善使用大量测试用例运行变异体的困难。因此遗传算法改进了有效测试用例的生成过程,从而减少对变异程序执行测试用例的时间。
3 运用遗传算法生成接口变异
3.1 接口变异概述
接口测试是从构件使用者的角度出发,其目的是评价构件是否能够准确有效地进行交互。它不像传统的变异把变异操作符应用到整个程序中,而是变异构件接口的参数。参数包括函数参数,返回值或全局变量。下面给出了常用的面向对象的变异操作符,如表1。
3.2 遗传算法应用到接口变异过程
在Java RMI中,使用Java来定义接口,而在CORBA和DCOM中使用IDL(接口定义语言)。本文以更具通用性的语言即IDL来描述接口变异。在IDL中[5],一个参数如果是输出参数,可以被声明为out;如果是输入参数,可以定义为in;如果它包含了输入及输出值,则可被声明为inout。根据遗传算法对接口进行变异的一些策略:
1)参数替换操作符,即in,out,inout中一个被其它某个替换。例如:
原始IDL:Test(in vType v,in xType x)
变异IDL:Test(out v Type v,inout x Type x)
2)方法调用中的变量交换操作,相同类型的变量可以在方法调用中交换。例如:
原始IDL:Test(in vType v1,in v Type v2)
变异IDL:Test(in vType v2,in v Type v1)
3)参数递增或递减运算符作用在接口传递的变量上,并替换变量x为x+或x-,变量x只是被作为一个参数传递。例如:
原始IDL:Test(in vType var)
变异IDL:Test(in vType var+)
4)把一个固定值赋给参数,例如:
原始IDL:Test(in vType var)
变异IDL:Test(in vType const)
5)使一个对象引用为空。例如:
原始IDL:Test(in vType var)
变异IDL:Test(Null)
6)插入绝对值符号。例如:
原始IDL:Test(vType var)
变异IDL:Test(vType|var|)
3.3 接口变异测试的充分度评价
在IDL中,接口描述不包含任何代码和不被实现的信息,所以变异操作符必须应用到变异实现上去。构件接口描述信息包含了构件内部的方法,签名以及可能会产生的异常。通过分析这些信息,测试人员可以获取一些覆盖域。以下是两个评价接口变异测试充分度准则[6]:
充分性准则AC1:如果方法覆盖率达到100%,说明在测试过程中被测构件的所有方法都被执行了。
充分性准则AC2:如果异常覆盖率达到100%,说明在测试过程中所有定义的异常都被抛出了。
但是方法和异常覆盖准则是繁琐而且不充分的。因为构件内部代码执行将会访问和修改传递到方法和异常的参数。代码根据参数值和类型的不同会有多个执行路径,执行一次就覆盖了一个方法或异常并不能说明所有的路径都会被覆盖。构件里的对象有它们的状态,有必要追踪对象的状态。还要通过不同参数的值来执行方法,这可以通过变异测试来完成。
这些覆盖域是在构件接口水平上说的,是在比传统代码覆盖域更高的层次上,覆盖域的大小也因此缩小,这也提高了充分度的度量能力。
3.4 给出的测试流程图
根据以上对接口变异测试过程的描述,可以给出的测试流程图如图2所示。
4 实例研究
下面用一个EJB构件的接口变异测试过程来验证以上所述的测试策略。实例是一个计算器EJB构件Calculator。其中名为Calculator的接口作为Bean的Remote接口,Remote接口必须继承javax.ejb.EJBObject。在Remote接口中声明其中的四个用于计算的业务方法add、sub、mul、div,即加、减、乘、除方法。类CalculatorBean实现一个无状态的会话Bean.,该类必须实现javax.ejb.SessionBean,并实现接口中声明的加、减、乘、除四个运算方法,并有相应的异常处理方法。
下面是对该构件进行变异测试的过程:
1)获取构件需求规格信息,即构件接口提供的方法参数情况,这是进行构件测试的基础信息。
2)根据构件规格信息创建初始测试用例T,即两个为一组的实数对,这里要考虑到常用的数据,临界数据,非法数据等等。
3)对构件接口进行变异,生成的变异体示例如下:
如此类推,进行接口变异。
4)部署构件测试环境。这里可以使用远程调用的方式,创建一个客户端构件实例调用构件接口提供的各个方法,运行测试用例T在这些变异的接口方法上,把运行结果与期望值进行比较,相同则变异被杀死,不同则另外设计更充分的测试用例,直到测试方法覆盖度和异常覆盖度达到可以接受的限度。
5 结束语
构件测试的难点在于如何在源代码不可得的情况下进行测试。文章以构件的接口描述信息为依据生成原始测试用例,然后运用遗传算法生成接口变异,通过变异测试过程获取充分的测试用例。余下的工作就是在测试环境下运用这些生成的测试用例测试构件了。这篇文章的不足是尚没有找出一种有效的自动化方法运用遗传算法变异接口,以后的研究将向这个方面努力。
摘要:对于构件使用者来说,源代码的不可得性决定了测试构件需要从构件的接口层面上进行。文章首先介绍了变异测试和遗传算法的概念;接着将遗传算法运用到构件接口变异上,通过变异测试过程获取有效而充分的测试用例,进而对构件进行测试;最后通过一个实例验证这种测试策略。
关键词:构件测试,接口变异,遗传算法
参考文献
[1]XiaBin,PanBin.Component Configuration Test Based On Mutation[C].IEEE,2008:66.
[2]杨芙清,梅宏,构件化软件设计与实现[M].北京:清华大学出版社,2008:10.
[3]王小平,曹立明,遗传算法-理论、应用及软件实现[M].西安:西安交通大学出版社,2002:7.
[4]Md Masud M,Nayak A.A Strategy for Mutation Testing Using Genetic Algorithms[J].IEEE,2005.
[5]Liu M L.分布式计算原理与应用[M].顾铁成,王亚丽,叶保留,译.北京:清华大学出版社,2004:251.
【接口测试】推荐阅读:
RS232接口转USB接口的通信方法11-09
微机接口技术实验报告06-12
理解三层接口11-23
微机接口技术课程实验考核11-16
微型计算机原理与接口技术"的教学改革探讨09-26
测试四沟通能力测试11-25
3b期中测试06-12
门萨测试07-11
智力测试07-12