HI,欢迎来到学术之家,发表咨询:400-888-7501  订阅咨询:400-888-7502  股权代码  102064
0
首页 精品范文 集成测试

集成测试

时间:2022-02-16 19:34:36

集成测试

集成测试范文1

中国集成电路测试产业投资咨询报告

报告属性

【报告名称】中国集成电路测试产业投资咨询报告

【报告性质】专项调研:需方可根据需求对报告目录修改,经双方确认后签订正式协议。

【关键词】集成电路测试产业投资咨询

【制作机关】中国市场调查研究中心

【交付方式】电子邮件特快专递

【报告价格】协商定价(纸介版、电子版)

【定购电话】010-68452508010-88430838

报告目录

一、集成电路测试概述

(一)集成电路测试产业定义、基本概念

(二)集成电路测试基本特点

(三)集成电路测试产品分类

二、集成电路测试产业分析

(一)国际集成电路测试产业发展总体概况

1、本产业国际现状分析

2、本产业主要国家和地区情况

3、本产业国际发展趋势分析

4、2007国际集成电路测试发展概况

(二)我国集成电路测试产业的发展状况

1、我国集成电路测试产业发展基本情况

2、集成电路测试产业的总体现状

3、集成电路测试行业发展中存在的问题

4、2007我国集成电路测试行业发展回顾

三、2007年中国集成电路测试市场分析

(一)我国集成电路测试整体市场规模

1、总量规模

2、增长速度

3、各季度市场情况

(二)我国集成电路测试市场发展现状分析

(三)原材料市场分析

(四)集成电路测试区域市场分析

(五)集成电路测试市场结构分析

1、产品市场结构

2、品牌市场结构

3、区域市场结构

4、渠道市场结构

四、2007年中国集成电路测试市场供需监测分析

(一)需求分析

1、产品需求

2、价格需求

3、渠道需求

4、购买需求

(二)供给分析

1、产品供给

2、价格供给

3、渠道供给

4、促销供给

(三)市场特征分析

1、产品特征

2、价格特征

3、渠道特征

4、购买特征

五、2007年中国集成电路测试市场竞争格局与厂商市场竞争力评价

(一)竞争格局分析

(二)主力厂商市场竞争力评价

1、产品竞争力

2、价格竞争力

3、渠道竞争力

4、销售竞争力

5、服务竞争力

6、品牌竞争力

六、影响2007-2010年中国集成电路测试市场发展因素

(一)有利因素

(二)不利因素

(三)政策因素

七、2007-2010年中国集成电路测试市场趋势预测

(一)产品发展趋势

(二)价格变化趋势

(三)渠道发展趋势

(四)用户需求趋势

(五)服务发展趋势

八、2008年集成电路测试市场发展前景预测

(一)国际集成电路测试市场发展前景预测

1、国际集成电路测试产业发展前景

2、2010年国际集成电路测试市场的发展预测

3、世界范围集成电路测试市场的发展展望

(二)中国集成电路测试市场的发展前景

1、市场规模预测分析

2、市场结构预测分析

(三)我国集成电路测试资源配置的前景

(四)集成电路测试中长期预测

1、2007-2010年经济增长与集成电路测试需求预测

2、2007-2010年集成电路测试行业总产量预测

3、我国中长期集成电路测试市场发展策略预测

九、中国主要集成电路测试生产企业(列举)

十、国内集成电路测试主要生产企业盈利能力比较分析

(一)2003-2007年集成电路测试行业利润总额分析

1、2003-2007年行业利润总额分析

2、不同规模企业利润总额比较分析

3、不同所有制企业利润总额比较分析

(二)2003-2007年集成电路测试行业销售毛利率分析

(三)2003-2007年集成电路测试行业销售利润率分析

(四)2003-2007年集成电路测试行业总资产利润率分析

(五)2003-2007年集成电路测试行业净资产利润率分析

(六)2003-2007年集成电路测试行业产值利税率分析

十一.2008中国集成电路测试产业投资分析

(一)投资环境

1、资源环境分析

2、市场竞争分析

3、税收政策分析

(二)投资机会

(三)集成电路测试产业政策优势

(四)投资风险及对策分析

(五)投资发展前景

1、集成电路测试市场供需发展趋势

2、集成电路测试未来发展展望

十二、集成电路测试产业投资策略

(一)产品定位策略

1、市场细分策略

2、目标市场的选择

(二)产品开发策略

1、追求产品质量

2、促进产品多元化发展

(三)渠道销售策略

1、销售模式分类

2、市场投资建议

(四)品牌经营策略

1、不同品牌经营模式

2、如何切入开拓品牌

(五)服务策略

十三、投资建议

(一)集成电路测试产业市场投资总体评价

(二)集成电路测试产业投资指导建议

十四、报告附件

(一)规模以上集成电路测试行业经营企业通讯信息库(excel格式)

主要内容为:法人单位代码、法人单位名称、法定代表人(负责人)、行政区划代码、通信地址、区号、电话号码、传真号码、邮政编码、电子邮箱、网址、工商登记注册号、编制登记注册号、登记注册类型、机构类型……

(二)规模以上集成电路测试经营数据库(excel格式)

主要内容为:主要业务活动(或主要产品)、行业代码、年末从业人员合计、全年营业收入合计、资产总计、工业总产值、工业销售产值、工业增加值、流动资产合计、固定资产合计、主营业务收入、主营业务成本、主营业务税金及附加、其他业务收入、其他业务利润、财务费用、营业利润、投资收益、营业外收入、利润总额、亏损总额、利税总额、应交所得税、广告费、研究开发费、经营活动产生的现金流入、经营活动产生的现金流出、投资活动产生的现金流入、投资活动产生的现金流出、筹资活动产生的现金流入、筹资活动产生的现金流出……

十五、报告说明

(一)报告目的

(二)研究范围

(三)研究区域

(四)数据来源

(五)研究方法

(六)一般定义

(七)市场定义

(八)市场竞争力指标体系

(九)市场预测模型

集成测试范文2

【关键词】集成电路;测试管理系统;开发;利用

伴随着科学技术的不断发展,半导体集成电路也出现了日新月异的变化,结构复杂、大规模、速度快、功能多的电路逐渐得到有效开发,半导体制造工艺技术逐渐完善,其中尤为特别的是数字电路变化。基于此种形势下,对集成电路测试提出了更高的要求。在以往测试软件编制中,程序主要以测试流程为导向,坚持自上至下原则进行排列,将程控指令、测试参数、测试结果等都纳入文本测试软件中,这种编程面向过程,语法规则特定。但工程师必须要具有一定的编程技能,由于编程过程复杂,自动化测试不具高效性、快速性和同步性。目前,伴随着半导体技术的不断进步,图形化编程语言编程为工程师提供一个有效的可编程平台。笔者主要综合自身多年来在半导体企业从事集成电路测试工作实践和管理经验,深入探究集成电路测试系统管理及其开发应用,旨在实现集成电路测试精细化管理的要求和行业可持续发展。

1.集成电路测试设备及配件概述

1.1 集成电路测试设备功能分析

针对集成电路测试设备及功能而言,主要体现在四个方面:

(1)测试机。测试机主要参考因素包括硬件架构端子数、操作系统环境、时钟速度、程序开发工具、应用程序等,早期测试机多以C、Pascal等程序语言为开发工具,目前VB应用广泛,各种辅助应用程序为测试工程师提供了发展时机;

(2)晶圆针测机。目前,四寸至十二寸晶圆均经针测机在晶舟与测试机间进行存取,此种设备对机械自动化、结构精密度、运转稳定度要求较高;

(3)器件分类机。分类机主要执行测试机与集成电路成品间的电性接触,按照测试程序中定义结果进行分类;

(4)预烧炉。早期预烧炉主要提供预烧条件中所需电流、偏压、波形电路机制,目前主要以封装类型为依据来进行设计,对被测器件具有承载作用。

1.2 集成电路测试机原理

测试机多由高性能量测仪器构成,而测试系统属于测试仪器与计算机控制的综合体。计算机控制主要是经由测试程序执行指令集对测试硬件进行控制,最终由测试系统提供测试结果。为保证测试结果的一致性,必须要对测试系统进行定期校正处理,一般应用校正芯片对测量仪器精准性进行验证。目前,多数测试系统可测试具有特定类别特征的集成电路,通用器件种类包括数字、内存、混合信号、模拟。一般而言,测试系统包括来源内存、捕捉内存、测试样本或扫描向量内存、端子电路,而测试方法主要采用施加与测量模式,通过设置测量范围、测量极限、设备性能参数而完成测试作业。

2.集成电路测试数据分析

为了开发集成电路测试管理系统,必须要详细分析现有的产品管理过程与测试流程,从而优化系统功能与框架设计。首先,要对现有产品测试数据进行统计分析。一般而言,集成电路测试生产线上具有4个左右的测试平台,每个测试平台对不同产品、测试参数所提供的测试数据、时间不尽相同。通常状况下,测试结果属于生产过程总体情况的直接反映指标,优化测试参数,能获取产品良率信息。在现阶段,由于测试参数较多,且各个参数间能产生不同程度的交互效应,最终影响统计性质。目前,就测试统计工具分析方法而言,主要包括两种:一是比较分析,二是相关性分析。譬如在不同条件下,可对每片晶片测试参数进行比较分析,观察测试参数之间的差异性。同时,可将测试参数与WS数据、测试数据、iEMS数据进行相关性分析,寻找相关性诱因。以上两种分析方法均在明确现有历史数据对产品设备、生产状况的影响下进行。应用现有数据预测产品特征,考虑到测试问题具有复杂性,工程师往往无法对测试结果的准确性进行优化判断。

在实际分析过程中,可综合多种统计手段来进行分类效果预测。具体而言,必须要注意四个问题:

(1)明确好坏组。基于掌握历史测试数据的基础上确定好坏组分组规则;

(2)对测试参数进行删选。择取与另一平台测试数据具有相关性的测试参数,并进行集合,在此基础上择取好坏组间差异显著的测试参数;

(3)对主成分进行综合分析。针对具有差异性的测试参数而言,必须要作正交化处理,将测试参数间的交互作用及时消除;

(4)判别分析。对待预测晶圆至好坏两组距离进行计算,应用具有统计学意义的Mahalanobis距离将常用远近距离进行替代,并将其归纳到距离近的那组,实现分类目标。此流程可优化最终结果,同时在研究过程中还可运用判别分析、分析流程等筛选方法。

3.集成电路测试管理系统设计

3.1 集成电路测试系统数据库概念与逻辑设计

针对集成电路测试系统数据库概念设计而言,主要包括四类方法:一是自顶向下,二是自底向上,三是逐步扩张,四是混合策略。就测试管理开发而言,主要应用自底向上方法,即首先勾画局部概念结构,并将各个局部进行集合,最终获取全局概念结构。于构建概念模型前,必须要深入分析需求分析中形成的数据,把握数据实体属性,构建实体间关系。在数据库开发时期,开发环境择取Web应用框架(Django),按照系统情况,于数据流图中择取适当数据流图,每部分均与一个局部应用相对应,联系各个局部数据流程图,检查概念模型图设计的精准性。

概念结构属于数据模型的基础,为了达到测试管理系统要求,要将概念结构转化为数据模型。在数据库管理系统中,通常只支持网状、关系、层次三种模型中的某一具体数据模型,导致各个数据库管理系统硬件具有局限性。因此,在逻辑结构设计中,首先要对概念结构进行转化,促使其常用网状、层次模型,并基于特定数据库系统辅助下,促使转化为数据模型。同时,数据库择取MySQL,降低总体拥有成本。

3.2 集成电路测试系统数据库物理设计

就集成电路测试系统数据库物理设计而言,首先要明确数据库物理结构,再对其进行综合评价,其内容主要包括三个方面:

(1)数据储存结构。在对数据存储结构进行评价时,要将维护代价、存取时间、空间利用率作为考虑因素。一般而言,将冗余数据消除,能有效节约存储空间,但易增大查询代价,故要权衡利益,择取折中方案。MySQL属于关系型数据库,聚簇功能强大,为了保证查询速度,可将属性上存在相同值的元组进行集中,存入物理块中;

(2)数据存储位置。在开展数据库物理设计时,可将MySQL数据库中的用户表空间与系统文件相对应的数据存入磁盘驱动器中,以达索引与数据库软件、表分类存放目的。针对MySQL数据库而言,可将不同用户建立的表进行分类存放,可最大限度地优化数据库;

(3)数据存取路径。在关系数据库中,要明确存取路径,寻找索引构建方法。索引作为一种数据库结构,主要包括三种形式:一是簇索引,二是表索引,三是位映射索引。在MySQL数据库中,利用索引可提高聚集中数据与表检索速度。科学应用索引,能降低磁盘I/O操作次数。

4.集成电路测试管理系统的实现与开发利用

4.1 集成电路测试数据输入

在测试生产线上,由于每天都会出现大量的晶圆测试作业,故针对产品测试管理系统来讲,必须要将晶圆信息输入到相应数据库中,便于后续功能操作的实现。在现有测试生产线上,一部分产品信息可实现自动输入,譬如每片晶圆均存在自身产品批次与编号,于晶圆制造中可将此类信息标记在晶圆表面上,经由晶圆针测机自动识别装置进行读取。待读取完毕后输入到相关的测试结果中。而就其它无法自动输入信息而言,譬如测试接口、针测卡、测试设备等信息,必须要进行手动输入。

基于把控生产线实际状况的基础上,每名录入员均需进行班组个人生产日报的录入,工作量相对较大,同时考虑到系统实际需要,于每2小时需要进行一次数据录入,故必须要重视录入速度。当数据被录入子菜单时,其每页面设计必须要采用Django的第三方控件,利用其强大功能以达无鼠标操作目标。从本质上来讲,输入员将该子页面打开后,仅有键盘可进行输入操作,方便较为快捷,与用户实际需求吻合。

4.2 集成电路测试结构文件上传

针对集成电路测试管理系统而言,必须要将测试设备工作站所定义的测试结果文件输入数据库,最终才能构成数据分析报表。待晶圆测试完毕后,测试设备将构成晶圆测试结果的文件转变成一个传送信号,上传到数据库服务器,而服务器会依据文件发送信头,最终接纳测试结果文件。

针对测试管理系统为而言,为了确保其传送速度,本文研究中实现了三个方面的优化处理:

(1)针对测试结果文件传送而言,主要应用实时传送原则,即传送时机择取为测试结果文件组成后,对以往分批次传送方式进行了优化补充。从整体上来讲,有助于预防文件过大而促使传送速度滞后,对服务器正常运行具有一定的辅助作用;

(2)文件上传后并未直接植入数据库中,而是暂时存入原始数据暂存器中,有助于防止某些无效格式测试结果文件被上传。譬如在测试中存在了人为中断现象,而诱导某些测试数据最终转变为冗余数据。经由原始数据暂存器剔除此类无效格式文件,能最大限度地确保数据库文件的精准性。此外,经由原始数据暂存器对测试结果文件权限进行整合配置。譬如在存储过程中可允许访问统计结果,不允许访问某些重要数据。从某种角度上来讲,极大地提高了数据库的安全性;

(3)针对测试管理系统开发而言,主要采用存储过程进行统计,包括生产盘存月报、生产日报、周报、月报、季报、年报、设备异常报警率、生产良率表等。基于应用程序界面上,分开统计功能与查询功能,应用统计功能对存储过程进行调用,基于服务器端作用下对信息开展各类汇总作业,并录入历史存表中。而利用查询功能自历史表中对已计算数据进行调用,完善了系统性能,增强了查询效率。

4.3 集成电路测试在线预警、测试数据查询与分析

就集成电路测试在线预警功能模块而言,主要因测试生产线工程师少,在测试过程中,无法及时发现出现的误测或不良测试,为测试工程师及早发现问题提供了有力的帮助。而针对集成电路测试数据查询而言,该模块主要考虑到用户对生产线实时数据具有查询需求,涵盖产品负责人、芯片产品、测试日期、测试站点等信息。同时,数据查询模块还可查询各类良率分析报表,其中查询功能与统计功能单独使用,有助于用户自主选择,其查询内容涵盖测试平台比较报表、良率分析年报、季报、月报、日报等。

5.结束语

综上所述,本文主要以集成、高效、全方位、先进企业管理要求为出发点,进行集成电路测试管理系统开发设计,旨在提升集成电路企业管理水平,增强市场核心竞争力,对半导体测试行业中的企业生产管理系统具有至关重要的作用。在实际开发过程中,由于对现有测试生产线上出现的测试数据无法全面管理,故无法深入分析影响集成电路测试生产效率提高的因素,因此在前期做了大量设备与测试方法研究。在测试管理系统数据库设计完成时,以前台开发工具(Django)、后台数据库(MySQL)为导向,开发了与用户操作需求的吻合的集成电路测试管理系统。在整体开发过程中,立足于数据库并发控制、查询优化等技术难题角度,确保了高效查询速度与数据操作的完整性,最终集成电路测试管理系统实现了五个功能,包括测试数据录入、测试结果文件上传、产品测试在线预警、数据查询与分析和测试运行相关报表生成,与企业信息化、自动化、精益化管理需求相一致,具有较大的应用前景。

参考文献

[1]杨荣.面向模拟IC测试的高精度数字化仪的设计与实现[D].电子科技大学,2013.

[2]朱龙飞.混合集成电路测试系统上位机软件设计[D].电子科技大学,2013.

[3]汪天伟.混合集成电路测试硬件电路测试板的设计[D].电子科技大学,2013.

[4]杨建军.基于嵌入式技术的集成电路测试系统软件设计[D].电子科技大学,2013.

[5]刘军.漏电保护专用集成电路测试系统的设计与实现[D].电子科技大学,2013.

[6]窦艳杰.数字集成电路测试矢量输入方法研究和软件实现[D].电子科技大学,2012.

[7]周厚平.集成电路测试系统微小微电子参量校准技术研究[D].中国舰船研究院,2012.

[8]尹超平.基于VIIS-EM平台的虚拟数字集成电路测试仪的研制[D].吉林大学,2013.

[9]盛谐辉.国家科技重大专项年度总结在京召开 于燮康获得了“个人突出贡献奖”长电科技、通富微电获得了“应用工程优秀团队奖”[J].半导体.光伏行业,2011(01):56-57.

[10]蔡瑞青.基于Ultra-FLEX测试系统的集成电路测试开发[J].电子与封装,2013(08):20-21.

集成测试范文3

一、集成门电路的测试

集成门电路静态测试,一般采用模拟开关输入模拟高、低电平,用发光二极管显示方式或万用表、逻辑测试笔测试输出的高、低电平,看其是否满足门电路的真值表。动态测试时,各输入端接入规定的脉冲信号,用双踪示波器直接观察输入、输出波形,并画出这些脉冲信号时序关系图,看输入输出是否符合规定的逻辑关系。

1.CMOS门电路的测试

以CC4012为例进行分析。CC4012是双四输入与非门,两个四输入端的与非门制造在同一器件内。14脚接电源VDD,7脚接地。2、3、4、5为一个与非门的输入端,1为输出端;9、10、11、12为另一与非门输入端,13为输出端。测试时,测试电路应正确连接,以免损坏器件或引起逻辑关系混乱,测试结果不正确。CMOS与门和与非门的多余的输入端不允许悬空,应接+VDD,电源电压不能接反,输出端不允许直接连接+VDD或地,除三态门外不允许两个输出端并联使用。测试时应先加电源电压+VDD,后加输入信号。关机时应先切断输入信号,后断开电源+VDD。若用测试仪器测试,所有测试仪器外壳必须良好接地,若需焊接时,应切断电源电压+VDD,电烙铁外壳必须良好接地,必要时拔下烙铁,利用余热进行焊接。

测试时,将四个模拟开关接四输入端,按不同的组合模拟输入“0”、“1”电平。输出端接发光二极管,它的阳极通过电阻接+VDD,阴极接输出端。输出为“1”时,发光二极管不亮,输出为“0”时,发光二极管亮。若测试结果与其逻辑功能相符,说明被测器件正常。

CMOS或门、或非门使用时,除多余输入端应接地(低电平)外,其余同与非门相同。

2.TTL门电路测试

测试方法与CMOS门电路基本相同,在实际应用中,TTL器件的高速切换,将产生电流跳变,其幅度为4~5mA,该电流在公共地线上的压降会引起噪声干扰,所以要尽量缩短地线。可在电源输入端与地间并接1个100μF电解电容作低频去耦,并接一个0.01-0.1μF电容作高频去耦。

3.集电极开路门电路(OC门)与三态门(TSL门)测试

(1)OC门测试

OC门测试前,应先接好上拉电阻RC,测试方法与非门测试方法相同。

(2)三态门TSL的逻辑功能测试

三态门除正常数据输入端外,还有一个控制端EN,也称使能端。对于控制端高电平有效三态门,当控制端为高电平时,TSL与普遍与非门无异,当控制端为低电平时,即“禁态”时,输出端对电源正、负极均呈高阻抗。还有一种控制端低电平有效电路,即控制端为低电平时,TSL逻辑功能与普遍与非门相同;为高电平时,输出端呈高阻抗。

测试方法和与非门基本相同,在输入端与使能端分别接模拟开关,输出端接发光二极管。当使能端为有效电平时测出输入输出逻辑关系;当使能端为“禁态”时,测输出端是否呈高阻抗。

二、组合逻辑电路的测试

组合逻辑电路的功能,由真值表可完全表示出来,测试工作就是验证电路的功能是否符合真值表。

1.组合逻辑电路静态测试

(1)将电路的输入端分别接到逻辑电平开关,注意按真值表中输入信号高低位顺序排列。

(2)将电路的输入端和输出端分别连至“0-1”电平显示器,分别显示电路的输入状态和输出状态。注意输入信号的显示也按真值表中高、低位的排列顺序,不要颠倒。

(3)根据真值表,用逻辑电平开关给出所有状态组合,观察输出端电平显示是否满足所规定的逻辑功能。

对于数码显示译码器可在上述测试电路基础上加接数字显示器加以测试。在数码显示译码器输入端输入规定信号,显示器上应按真值表显示规定数码。

2.组合逻辑电路的动态测试

动态测试是根据要求,在组合逻辑电路输入端分别输入合适信号,用脉冲示波器测试电路的输出响应。输入信号可由脉冲信号发生器或脉冲序列发生器产生。测试时,用脉冲示波器观察输出信号是否跟得上输入信号变化,输出波形是否稳定并且是否符合输入输出逻辑关系。

3.译码显示电路测试

译码显示电路首先测试数码管各笔段工作是否正常。如共阴极LED显示器,可将阴极接地,再将各笔段通过1kΩ电阻接电源正极+VDD,各笔段应发光。再在译码器的数据输入端依次输入0000~1001的数码,则显示器对应显示出0~9数字。

译码显示电路常见故障分析判断如下:

(1)数码显示器上某段总是“亮”而不灭,可能是译码器的输出信号幅度不正常或译码器工作不正常。

(2)数码显示器上某段总是不“亮”,可能是数码管或译码器连接不正确或接触不良。

(3)数码显示器字符模糊,且不随输入信号变化而变化,可能是译码器的电源电压偏低或电路连线不正确或接触不良。

三、时序逻辑电路测试

时序逻辑电路的特点是任意时刻的输出不仅取决于该时刻输入逻辑变量的状态,而且还和电路原来状态有关,具有记忆功能。其构成有两类:一类是由触发器或由触发器和门电路组成;另一类由中规模集成电路构成,如各类计数器、移位寄存器等。

1.集成触发器的测试

集成触发器是组成时序电路的主要器件。静态测试主要测试触发器的复位、置位、翻转功能。动态测试是触发器在时钟脉冲作用下测试触发器的计数功能,用示波器观测电路各处波形的变化情况,并根据波形测定输出、输入信号之间的分频关系、输出脉冲上升和下降时间、触发灵敏度和抗干扰能力以及接入不同性质负载时对输出波形的影响。测试时,输入触发脉冲的宽度一般要大于数微秒,且脉冲的上升沿和下降沿要陡。

2.时序逻辑电路的静态测试

时序逻辑电路的静态测试主要测试电路的复位、置位功能。它的静态测试应称为“半动态测试”,因对时序逻辑电路逻辑功能测试时,必须有动态的时钟脉冲加入。输入信号既有电平信号,又有脉冲信号,所以称为“半动态测试”。测试步骤如下:

(1)把输入端分别接到逻辑电平开关上,输入信号由逻辑电平开关提供;把时钟脉冲输入端CP接到手动单次脉冲输出端,时钟脉冲由能消除抖动的手动单次脉冲发生器提供。

(2)把输入端、时钟脉冲CP端与输出端分别连接到逻辑电平显示器,连接时注意输出信号高、低位的排列顺序。

(3)测试时,依次按动逻辑电平开关和手动单次脉冲按钮,从显示器上观察输入、输出状态的变化和转换情况。若全部转换情况都符合状态转换表的规定,则该电路的逻辑功能符合要求。

3.时序逻辑电路的动态测试

时序逻辑电路动态测试是指在时钟脉冲的作用下,测试各输出端的状态是否满足功能表的要求,用示波器观察各输入、输出端的波形,并记录分析这些波形与时钟脉冲之间的关系。动态测试通常用示波器进行观测。若所有输入端都接入适当的脉冲信号,则称为“全动态测试”。而一般情况下,多数属于半动态测试,全动态与半动态测试的区别在于时钟脉冲改由连续时钟脉冲信号源提供,输出由示波器进行观测。工程实际中,一般均用全动态测试。

四、数字电路测试方法

数字电路多采用集成器件,在检查焊接电路无误后进行测试。通常测试步骤和方法是:

1.首先调好振荡电路部分,以便为整机提供标准的时钟信号。

2.调整控制电路部分,保证分频器、节拍发生器等控制信号电路能正常工作。

3.调整信号处理电路,如各种寄存器、计数器、累加器、编码、译码器等,首先应使各单元电路工作正常,再相互连接,使整体电路的逻辑功能符合设计要求。

4.调整输出电路、驱动电路以及各种执行机构,保证输出信号能推动执行机构正常工作。数字电路调试中,因为集成电路管脚密集,连线又多,要求各单元之间时序关系又严格,所以出现故障不易找出原因。应注意以下问题:

(1)注意检查容易产生故障的环节,掌握排除故障的方法。出现故障时,可以从简单部分逐级查找,逐步缩小故障点的范围,也可以对某些预知点的特性进行静态或动态测试,判断故障部位。

(2)应当十分注意各部分电路的时序关系。对各单元电路的输入和输出波形的时间关系要十分熟悉;也要注意掌握各单元之间的相互时间关系,应对照时序图,检查各点波形,并要弄清哪些是上升沿触发,哪些是下降沿触发,以及它和时钟信号的关系。

集成测试范文4

关键词:UML类图,测试序列,面向对象软件测试

中图分类号:TP311 文献标识码:A DoI: 10.3969/j.issn.1003-6970.2012.03.023

A New Method to Generating OO Integration Testing Scenarios

SU Hui

(School of Information, Xi’an University of Finance and Economics, Xi’an 710100)

【Abstract】Integrated testing is an important part of OO software testing. UML is useful not only in software design but also in software testing. In this paper, an testing scenarios approach based on UML class diagram is presented, which is in terms of OO software’s integrated testing features. Firstly, class’s massages are taken out from UML class diagram. Secondly, the class cohesion and degree of coupling between classes are computed according to definitions in paper and saved in database. Thirdly, select the class info from database standing on the degree of coupling between classes from big to small. Finally, the OO integrate testing scenarios are created and put out .The experiments show that the method is effective.

【Key words】UML class diagram; testing scenarios; OO integrate testing

0 引 言

面向对象软件的封装性、继承性、多态性和动态绑定等特性提高了软件的可重用性,使软件开发质量更高,而且软件易于维护,通过组装可复用子系统而产生更大的系统。但是面向对象软件的这些特性对软件测试产生了深刻的影响。集成测试的一个主要目标是确保某个类或组件对象的消息以正确的顺序发送和接收并确保接收消息的外部对象的状态获得预期影响。即便单独测试通过的类,其对象在参与协作时依然可能产生若干错误,如接口错误、功能冲突、功能遗漏等。只有对协作类的直接与间接交互进行测试才能尽可能地避免类集成给软件带来的错误[1-2]。

基于UML开发的模型图包含大量的软件分析设计信息,这些信息不仅是软件实现的依据,也是软件测试的重要依据。本文在UML类图信息的基础上,添加新的有助于测试的重要信息,然后将类图信息和添加信息存储到数据库中,最后对类的关键信息进行遍历,生成集成测试的测试序列。

UML的可视模型总共有九种图。例如,用例图从用户角度描述系统功能并指出各功能的操作者,包括活动者、用例和关系,类图属于静态视图部分,包括了类、接口及其之间的联系和关系[3-4]。其余的图有对象图,协作图,顺序图,状态图等。类图是面向对象设计中最重要的描述,其中包含的丰富的信息,为软件集成级测试提供了强有力的依据。为了解决测试场景中的问题,提出如下假定:

(1)类图描述的信息与UML中其余几种图中的相关信息描述的规约是一致的。

(2)系统中的所有模型中的信息内容均可以从UML文件中利用其接口获取。

(3)假定UML类图已经通过了一致性检查并且关于类图的一切均是正确的。

1 UML类图度量

一个好的类结构应该符合软件工程的定义,也就是要求类间的耦合度尽量小,类的内聚度尽可能大。这样才有助于系统的开发、测试、维护工作。

1.1 类内聚度计算

类的内聚度反映了一个类的内部各成分联系的紧密程度[5]。在UML类图中,类由类名、属性和方法三部分组成。属性又可以分为公有属性、私有属性和受保护属性。同样的,方法也可以分为公有方法、私有方法和受保护方法。

定义1:UML 中的一个类可以用一个三元组表示,类=,其中:C_ID表示类的编号,C_NA

3 结论和展望

本文根据面向对象软件分析中的UML模型图,充分利用了UML的类图信息,提出的测试序列的生成算法简单有效,不仅为集成测试的渐增集成次序提供依据,而且类的内聚度也是类级测试中定义优先级的一个重要指标。为更进一步完善文中提出的方法,下一步的工作的重点是对类内聚度和类间耦合度的计算更为科学化,测试序列的生成算法的进一步优化。

参考文献

[1] Perry,D and Kaiser.Adequate testing and objectoriented programming journal of Object-Oriented Programming,1990,2[5],13-19

[2] 李强,曾一.一种基于UML的集成测试线索的生成方法[J].计算机工程与科学,2009,03

[3] 李自强.基于ARM的移动图书导航系统[J].软件,2011,33(9):26-30.

集成测试范文5

关键词:路径集;分支关系图;软件测试

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)25-5898-04

An Method of Automatic Generation for Paths Set in Software Coverage Testing

ZHAN Ze-mei

(Computer Science College, Yangtze University, Jingzhou 434023,China)

Abstract: Coverage testing is a important method for software testing. Automatic generation for paths set can enhance testing efficiency. A graph of branch relation is proposed for depicting branches in the program. The paper gives an algorithm for finding out paths set, which can work efficiently. The correctness of the algorithm is verified on a example.

Key words: paths set;the graph of branch relation; software testing

软件测试是软件工程理论中非常重要的一个方面,是提高软件产品质量和可靠性的关键。软件测试可以分为功能测试和结构测试两大类。其中结构测试又称为白盒测试,是基于程序结构特征,以实现某种测试覆盖为目的一种测试方法。路径覆盖就是一种针对结构测试的常用充分性准则[1],该方法可以有效地检测程序中的错误。基于路径覆盖的测试[2]是设计足够的测试数据,覆盖程序中所有可能的路径。目前设计测试用例基本上是预先确定路径,针对路径设计对应的测试用例,所以路径集的确定对于路径覆盖测试非常重要。如果完全靠人工确定路径集会花费很大精力,因此应该借助于自动化的方法。

路径集就是指程序中所有可能的路径的集合。路径集中没有两条完全相同的路径。由于程序中存在分支语句、循环语句,程序中的路径的数目会非常大,因此,在有限的测试资源下进行路径覆盖测试,我们只考虑循环的两种可能:循环体未执行和循环体至少执行一次。

目前已有的路径集生成方法有:采用遗传算法进行路径生成的方法[3]和A. Bertolino 利用简化的控制流图来确定程序路径。这些方法为生成程序的路径提供了帮助,但不能保证生成的完整的路径集。该文提出一种基于分支关系图的路径集生成方法,生成完整的路径集。

1 程序路径的表示

本质上,程序的执行表现为一系列判定条件取值的组合。例如程序1判断三角形形状的代码如下。

1 main( )

2 {int a,b,c;

3 scanf(“%d%d%d”,&a,&b,&c);

4 if ((a+b>c)&&(b+c>a)&&(a+c>b))

5 {if((a!=b)&&(b!=c)&&(c!=a))

6 printf("这是一个普通三角形");

7 else

8 if(((a==b)&&(b!=c))||((b==c)&&(c!=a))||((c==a)&&(a!=b)))

9 printf("这是一个等腰三角形");

10 else

11 printf("这是一个等边三角形"); } }

12 else

13 printf("这不是一个三角形");}

该程序总共有四条可执行路径,路径1:1 2 3 4 12 13,路经2:1 2 3 4 5 6,路经3:1 2 3 4 5 7 8 9,路经4:1 2 3 4 5 7 8 10 11。程序中的判定条件有3个,判定条件1:(a+b>c)&&(b+c>a)&&(a+c>b),判定条件2:(a!=b)&&(b!=c)&&(c!=a),判定条件3:((a==b)&&(b!=c))||((b==c)&&(c!=a))||((c==a)&&(a!=b)) 。四条执行路经可用判定条件组合值来表示。由于判定条件可能被执行到,也可能未被执行到,例如路径1中判定条件1执行到了,而判定条件2和3就未执行到。假设未被执行到的判定条件其值用[φ]表示,执行到的判定条件就用它的具体值表示,被执行到的判定条件取值可为1或0或者其他整型值(switch语句中的条件值)。例1中程序的四条路径可用判定条件组合值表示,路径1:0[φ][φ],路径2:1 1[φ],路经3:1 0 1,路经4:1 0 0。

本文中采用字符串表示路径,可将路径的组合值转换为字符串形式,在分支序号前加字母c,在取值前加字母v,对未被执行到的分支可省略,例如路径1可表示为c1v0,路径4表示为c1v1c2v0c3v0。

2 分支关系图

2.1 分支结点

分支关系图表示程序中分支情况,由于对于循环语句只考虑其循环体被执行和未被执行两种情况,所以分支关系图也描述了循环语句产生的分支。分支关系图中一个结点代表一个条件分支,结点中记录了该分支的判定条件序号和取值等信息,结点类型struct node定义如下:

struct node{

int number;

int value;

struct node * left;

struct node * right;

struct node * parallel;

}

number属性表示判定条件序号,value属性表示判定条件取值,left属性指向内层语句中的分支结点。内层语句包括if子句、else子句、case后语句、循环体语句。right指向同一判定条件的其他分支,同属于一个判定条件的分支取值互不相同。parallel指向同层次的其他判定条件的分支结点。

2.2 分支关系图的创建

在遍历抽象语法树的过程中建立程序分支关系图。在遍历的过程中,遇到不同的节点进行不同的处理,直到扫描结束。

当被扫描结点为赋值语句或表达式语句或输入输出语句时,直接跳过,不进行任何操作。

当被扫描结点为if语句,则为该if语句的判定条件建立值为1的分支节点,和值为0的分支结点,再扫描if子句和扫描else子句。

当被扫描结点为循环语句时,则为该循环条件建立值为1和值为0的分支结点,再扫描循环体。若被扫描结点为switch语句则为每个case和default建立一个分支结点,再扫描每个case分支语句。

程序1对应的分支关系图如图1。

图1 程序1的分支关系图

3 路径集生成算法

3.1 算法

建立分支关系图后,通过遍历该图生成路径集。在遍历过程中记录结点的分支序号和取值,在分支序号前加字母c,在取值前加字母v,将记录的分支组合值字符串与该结点三个指针所指分支的组合值字符串进行某种形式的连接。结点与其left所指分支属于外层和内层关系,应进行组合值字符串的直接连接;结点与其right所指分支结点为同一判定条件的不同取值结点,分属于不同的路径,是并列关系,应用逗号连接组合值字符串;结点与parallel所指分支属于同一层次,两组合值字符串应进行路经个体的矢量相乘。详细算法如下。

算法1:Point( )//描述结点与其left所指分支之间的组合值字符串直接连接

参数:str1字符串1首地址,str2字符串2首地址

返回值:结果字符串地址

{ char t[60],*p2=0,*q;

if (*str2=='c')// c1v0・c2v1形式

{q为str1字符串和str2字符串直接相连}

if(*str2=='{') // c1v0・{c2v1,c2v0}形式

{ 计算str2中条件组合值的个数i

计算结果字符串的大致长度n

q= (char *)malloc(n);

q[0]='\0';

p2=str2+1;

将str2中条件组合值逐个与str1中值直接连接,并加入q中 }

return q;

}

算法2:VectorMulti( )//描述结点与其parallel所指分支之间的组合值字符串矢量乘

参数:str1字符串1首地址,str2字符串2首地址

返回值:结果字符串地址

{char *s;

计算str1中条件组合值的个数i1和str2中条件组合值的个数i2;

计算结果字符串的大致长度n;

s=(char *)malloc(n);

s[0]=’{ ‘; s[1]=’\0’;

while(str1中每一个条件组合值t1)

While(str2中每一个条件组合值t2)

{ 将t1与t2直接相连,并复制到s末尾

向s中加入逗号分隔符“,”; }

strcat(s,” }”);

return s;

}

算法3:Comma( )//描述结点与其right所指分支之间的组合值字符串逗号连接

参数:str1字符串1首地址,str2字符串2首地址

返回值:结果字符串地址

{char * p;

p=(char)malloc(strlen(str1)+strlen(str2));

将”{”复制到p中;

将str1中的分支条件值字符串复制到p末尾;

将逗号加入p字符串末尾;

将str2中的分支条件值字符串加入p字符串末尾;

将”}”复制到p末尾;

return p;

}

算法4:TravelGraph()//遍历分支关系图,求路径集字符串。

参数:分支关系图根指针root

返回值:字符串地址

{计算该节点字符串p=“c”+number+”v”+value;

if((root->left==0)&&(root->right==0)&&(root->parallel==0))

{ return p;}

else if ((root->left==0)&&(root->parallel==0))

{ q=Comma(p, TravelGraph (root->right )); return q;}

else if((root->right==0)&&(root->parallel==0))

{q=Point(p, TravelGraph (root->left)); return q;}

else if (root->left==0)

{q=Comma(p, TravelGraph (root->right )); w=VectorMulti(q,TravelGraph(root->parallel)); return w;}

else if (root->parallel==0)

{q=Point(p, TravelGraph (root->left)); w=Comma(q, TravelGraph (root->right )); return w;}

else if

((root->left!=0)&&(root->right!=0)&&(root->parallel!=0))

{q=Point(p,TravelGraph(root->left));w=Comma(q, TravelGraph (root->right)); s=VectorMulti(w,TravelGraph(root->parallel)); return s;}

else {printf(“错误,结点异常”);}

}

3.2 实例分析

利用本算法对程序1进行扫描分析,最终求得的路径集结果为:c1v1c2v1, c1v1c2v0c3v1, c1v1c2v0c3v0,c1v0。该结果字符串清楚地表示了程序1的所有路径及每条路径的判定条件组合值,实验证明了本算法能有效地自动生成路径集。

4 结束语

面向路径覆盖的测试用例自动生成必须首先确定路径集,该文提出了一种路径集的自动生成方法,首先在扫描抽象语法树的过程中建立分支关系图,然后遍历分支关系图求出程序的路径集。实验证明该方法能有效的求出程序的路径集。但是,本方法仍然存在缺陷,在某些情况下求得的路径集中会存在不可达的路径,如何排除路径集中全部不可达路径是下一步要研究的问题。

参考文献:

[1] Bertolino A,Marré M.How Many Paths Are Needed for Branch Testing?[J].The Journal of Systems and Software,1996,35(2):95-106.

集成测试范文6

与其他类别PC产品在商用与消费领域存在的主要差异类似,外观设计、配置灵活性、使用便利性以及可管理性是二者的主要差别。当然,它们的价格体系以及购买渠道也存在根本不同。

价格水分

商用产品的价格水分有目共睹,其中以投影机为代表的外设产品价格水分最大,甚至成交价格与报价的差异可达3~5倍。

而对商用PC来说,价格水分与购买折扣也相当可观。如果不考虑产品定位和形态差异,仅以本次测试的用于主流桌面办公的一体电脑来说,大型企业及政府机构采购价格折扣率可达5折。折扣率的高低,与采购规模及公开程度有关。即便是像戴尔这样的直销模式,批量采购达到一定规模之后,都会有15%左右的议价空间;采用渠道销售、厂商后台支持模式的惠普,价格折扣率约为20%~30%。反观国内品牌,用于大型企业、行业采购、政府标单投标的机型,价格折扣都在50%上下。

因此,考虑到价格折扣因素,本次测试的6款产品,除联想扬天S760外,实际价格均处于4500~7000元之间,竞争非常激烈。之所以把联想扬天S760作为特例,主要是因为其硬件规格明显高于其他竞争对手,售价也高于主流用户可接受的范围,其形象价值高于购买价值。

一脉相承

ThinkCentre M7101z是联想面向大型企事业用户所推出的主流规格一体电脑产品,其定位比之前推出的M9000系列略低,外观差异主要体现在缩小至20英寸的屏幕,分辨率也降低至1600×900。

虽然屏幕尺寸有所减小,但M7101z硬件架构整体升级,采用了基于H61芯片组所搭建起的Sandy Bridge平台,而处理器是专为一体电脑所定制的低功耗版本Core i5-2400S。同时,该机配备的Radeon HD 6450A独立显示芯片,也是为一体电脑定制的低功耗版本。M7101z的4GB内存由两个独立的SO-DIMM组成,这样的配置虽提高了其内存升级的难度,但对发挥整机性能更有价值。

一脉相承自Think产品的外观设计元素和内在品质元素在M7101z上得到了全面体现。它提供了便捷的扩展能力,存储单元与主机分置于180W电源的两侧,升级操作互不相扰。位于右侧的主机结构EMI屏蔽非常出色,主要部件整体被封于金属笼架内,内存插槽位置设计了金属材料的工作舱盖,方便直接升级内存,而CPU的热量通过双热管被传导至笼架外侧、电源上方的散热片上。整机的散热气流在涡轮风扇和热气流上升的共同作用下,从底部直接流经电源、CPU散热器,实现了高效、低噪音的散热。

在外观方面,M7101z采用了悬浮式U型金属支架,与背后支撑脚同样为可拆卸结构。放在桌面上使用时可以起到抬升屏幕位置的作用,而在改用100mm×100mm VESA支架时,又便于保持主机小巧。与整体黑色的外观相搭配的是M7101z右下角用镀铬边缘镶嵌的圆形内凹电源按钮及背部兼做出风口防尘罩的红色提手,这些细节充分表现出该机的家族传承性设计。联想出色的TVT软件系统,在M7101z上也得以保留,无论是数据管理和维护,还是硬件工作状态监控,该软件均能让这些工作变得简单易操作。

触摸的出路

联想扬天S760在本次测试中实属异类,它有着令人咋舌的顶级配置,无论是TDP功耗65W的Core i7-2600S处理器、配备1GB显存为一体电脑优化的Radeon HD 6650A图形芯片、由80GB mSATA模块SSD和1TB HDD组成的存储系统,还是21.6英寸全高清的触摸屏,都远高于主流市场需求。

无论具体硬件配置如何,S760的SMB特性显露无遗,与硬件的高配置形成鲜明反差的Windows 7家庭高级版操作系统符合其产品定位,而其余面向大型企业的产品则均配备了Windows 7专业版。由于在一体电脑内率先配备SSD,同时整机硬件配置较高,因此S760的性能成绩非常出色,SYSmark 2007 Preview成绩高达278分。

S760外观设计简约,稳重的黑色和带有“无边墨晶”触摸保护屏的镜面屏幕形成鲜明反差;两个独立的前支脚不可拆卸,而后支脚则可以拆卸并安装VESA底座,从而实现更灵活的摆放。

虽然整体表现如此出色,但是S760的全高清触摸屏丝毫没有体现出应有的应用价值。以该机目前的定位来看,触摸屏只是个添头,实际的使用价值,有待特定应用领域的专门开发,以及Windows 8将带来的操作界面改变。

改头换面

在配置上与S760有着相同情况的还有戴尔Vostro 360,它也配备了全高清触摸屏,而且尺寸更大,达到23.6英寸。相比于联想扬天S760的高配置和高价格,Vostro 360的价格平易近人了很多。这款面向SMB用户的产品,整体表现十分均衡。它使用了Core i5-2400S处理器,显示芯片为英伟达的GeForce GT 525M,同时支持CPU核芯显示卡GMAHD 2000与独立显示卡的动态切换技术——Synergy(即桌面版的Optimus),可有效平衡功耗和性能。但正是这一技术的引入,给Vostro 360带来了不小的麻烦:由于多数桌面3D应用尚未支持该技术,因此在大量的应用及测试中,双显示卡切换处于无序状态,高性能独立显示芯片的特性无法充分发挥。

仔细观察Vostro 360,会有似曾相识的感觉。没错,该机与戴尔旗下的消费一体电脑Inspiron One2320同宗同源。有着类似情况的还有惠普Compaq 8200 Elite-AIO,该机实际上是Omni 305的商用版。正是因为Vostro 360有着与消费品牌相同的基因,因此也就不难理解为何该机配备了无线键盘鼠标了。

虽然在外观设计上照搬了消费级产品,但是Compaq 8200 Elite-AIO的硬件采用了地道的顶级商用平台,它采用了Q67芯片组。而且它是本次测试中唯一提供远程管理功能的产品。作为惠普顶级的商用产品Elite系列的一员,Compaq 8200 Elite-AIO的软件特性也非常突出。其软件系统结合了管理、维护、恢复、升级等功能,值得一提的改变是它允许用户选择并下载软件的功能组件,用户的自由度更大,而之前的设计是无论用户是否需要,所有的软件都会全部安装,占用了大量的系统资源。

出乎意料的设计

被宏碁收购后的方正,正在逐渐显现出它的活力,宏碁带来的产品优势,很好地与方正的渠道优势相结合,为用户带来更有价值的产品。

君逸系列是方正面向大型商业应用的产品,A410是其首款一体电脑产品。它的模块化设计非常突出,可充分满足用户对系统灵活性的需要。该机是6款产品中唯一使用Core i3-2120处理器的机型,虽然没有其他产品处理器代表低功耗的“S”后缀,但该处理器的TDP同样为65W,完全可以满足一体电脑散热的要求。同样没有打上一体电脑烙印的还有其Radeon HD 6450“显示卡”,同样没有字母“A”标识其低功耗。与直接将显示芯片集成在主板上的方式不同,A410配备的是可以插拔和升级的显示卡。该机主板结构非常特别,将PCB上方空间留给PCI-E x16扩展槽,用户既可以直接使用CPU的核心显示卡,也可以安装半高显示卡,并留有更换升级空间,这样的设计仅有宏碁旗下的一体电脑产品才可以实现。

同样出人意料的还有同方超越A2000,它的主机设计中规中矩,性能表现主流,但是它的结构设计高人一等。考虑到成本因素,虽然多款一体电脑产品预留VESA安装支架位置,但仅将其列为选装。而A2000直接配备了可升降、水平及垂直旋转的多功能支架,这一改变充分发挥出一体电脑的灵活性,更好地平衡了舒适摆放与桌面空间占用的关系。这样的设计对类似CHIP编辑这样的文字工作者颇有吸引力,水平摆放时如传统电脑一样工作,而当屏幕“竖”起来时,20英寸900×1600的屏幕正好能放下整张A4纸,无论是写稿还是排版都非常舒适。

多元化探索

集成测试范文7

关键词:多层软件测试;单元测试;集成测试;性能测试

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2010)17-4674-02

基于Java EE架构的多层软件中,WEB服务器充当表示层,由STRUS2.0模式的STRUTS架构来实现,应用服务器主要用来架构业务层,实现事务处理和数据处理,数据库服务器主要实现存储过程。其架构如图1所示。

基于以上模型架构的分工,可分成一下几个步骤:

1)基于WEB服务的测试、应用服务的测试、数据服务的测试,相当与传统软件测试的单元测试。

2)WEB服务与应用服务、数据服务的交互测试,相当于传统软件测试中的集成测试。

3)三层服务器协同工作时的性能测试,更多的是进行稳定性测试。

1 在各层上的单元测试

根据在图1的分层,系统的单元测试分成三个单元:WEB服务单元、应用服务单元和数据库服务单元,其中web服务单元集成了客户端。

集成了客户端的WEB服务单元测试主要从一下几个方面来进行:

1)页面设计测试

一个WEB系统的页面应该从实用性和界面的简洁性两方面进行测试。实用性主要从功能方面出发,每一个页面都应该负责完成相应的任务,功能的承载量不能太多也不能没有;简洁性主要从界面的设计安排来进行测试,页面的版式应该符合WEB系统的性质,色彩搭配突出该系统的主题,数据项应该满足数据收集的需要,同时应该让各类用户很容易的使用该系统。

2)连接测试与功能测试

由于各个页面的连接与页面的功能是相关联的,相互连接的两个页面之间一定有功能的联系和交互。根据页面之间的这种关系,在测试的过程中可采用广度优先遍历和深度优先遍历两种方式,深度优先遍历保证功能的连续性,广度优先遍历保证功能的完整性。由于Struts 2应用中起作用的业务控制器而是系统生成的Action,所以功能测试的主要方法根据拦截器的原理进行测试,也容易实现。

3)语言设置测试

由于在Java EE开发过程中,中文乱码问题比较麻烦,在不同的系统中可能更为突出,所以在测试的时候从各个页面的编码方式入手。Struts2.0采用国际化配置,在不同的系统中采用相同的国际化配置。开发国际化的应用程序时,有一个功能是必不可少的――让用户快捷地选择或切换语言。在测试的时候站在不同语言用户的角度进行测试。

应用服务的单元测试主要是对模型层和spring所负责的事务以及hibernate所负责的ORM进行测试,也就是对class类、接口和ORM的操作测试。对于类的测试除了测试基类以外,继承和多态是测试的重点,其中的关系比较复杂。可以借助JUint工具进行测试。。

数据库服务器的单元测试主要是调用存储过程,测试这些存储是否能够满足功能需求,测试的重点是存储异常的排除,包括字符乱码问题。

2 集成测试

集成测试是将各个服务器的各个模块组装成一个完整的系统或子系统进行测试,测试的重点是服务器之间的接口和服务器内部各模块之间的接口部分。

在各个服务器通过单元测试的基础上,需要将三大服务器按照设计要求组装成系统,在此集成过程中最可能发生的错误有:

1)各个模块、服务器之间的数据传输会产生丢失;

2)各个模块、服务器之间的功能可能产生互相影响;

3)从页面传送到数据库的数据可能产生乱码;

4)单个模块的错误经过积累以后可能会被放大。

基于以上错误的考虑,服务器(三大没有承载功能的服务器)采用一次性集成,因为这事后续所有功能集成的基础,通过一个或几个简单的贯穿所有路线的实例的运行来最大可能的排除服务器的集成错误。对于功能的集成采用增量式集成,从页面的某一个功能为出发点,经过WEB服务器、应用服务器和数据库服务器验证是否得到正确的结果,然后逐一功能的进行测试,直至所有的功能。

特此说明的是,在服务器的一次集成过程中是有先后顺序的,应该是应用服务器和数据服务器集成,然后在和WEB服务器集成的由里到外的顺序,这样一方面保证了应用服务器操作数据库的底层要求,同时也向WEB服务器隐藏了底层的有关数据的操作,突出了应用服务器的“看管”功能。

各个服务器上的集成测试和整个系统的集成测试随功能的要求渐增进行,也就是所谓的增量模型。应用服务器上的集成涉及到Spring的事务管理和hibernate的ORM实现,模型层可通过HttpUnit和JUnit结合测试,逻辑层Spring采用MockObjet t测试框架来完成测试,SSH框架可spring一mock测试框架进行集成测试。

3 性能测试

性能测试是验证软件系统是否能够达到用户提出的性能指标,同时发现软件系统中存在的性能瓶颈,优化软件,最后起到优化系统的目的。

软件的性能性能主要有时间性能和空间性能两种。时间性能主要指软件的一个具体事务的响应时间,空间性能主要指软件运行是所消耗的系统资源。在软件的性能测试中可分为一般性能测试、稳定性测试、负载测试和压力测试。

一般性能测试是指单个用户登录以后,系统主要食物的响应时间和服务器的资源消耗情况。

稳定性测试是指连续运行被测系统,检查系统运行是的稳定程度。稳定性测试方法比较简单,采用7*24(7天*24小时)的方式让系统不间断的运行。

负载测试是让系统在压力忍受极限范围之内连续运行来测试系统的稳定性。它主要测试系统在临界状态下运行是否稳定的一种方法。

压力测试是指持续不断的给系统增加压力直到系统崩溃为止,用来测试系统能够承受的最大压力。主要方法是不断的增加用户数量,20、30、40、……,直到系统崩溃。

根据以上的测试分类原理,可采用LoadRunner性能测试软件来进行测试,这种软件可以预测系统行为和性能,通过模拟成千上万用户实施并发负载及实时性能检测的方式来确认和查找问题,可最大限度地缩短测试时间,优化性能和加速应用系统的周期。

4 结束语

总上所述,基于Java EE架构的多层软件的测试采用传统的原理和面向对象的方法和工具进行测试。在测试的过程中手工测试和工具测试应该结合使用,而且工具测试只能是测试的一个补充,不能过多的依赖于测试工具。

参考文献:

[1] 梅勃.基于J2EE架构的Web应用系统测试方法研究与应用[D].合肥:合肥工业大学,2007.

[2] 陈华.基于J2EE架构软件测试的研究与应用[D].上海:东华大学,2008.

集成测试范文8

IEEE 1149.1标准规定的边界扫描技术是针对复杂数字电路而制定的。标准中的自治测试技术现已成为数字系统可测性设计的主流。在利用边界扫描技术对芯片印刷电路板进行测试时,单芯片与多芯片电路板虽有相同点,但也有不同点。因为多芯片的电路板可以将几个芯片分别作为测试向量进行发送和接收,而单芯片电路板则只需要一个集发送、接收于一体的芯片。本文在以PC机作为边界扫描测试向量生成和故障诊断的基础上,对单芯片EPM9320LC84的印刷电路板故障诊断进行了讨论。

1 EPM9320LC84的结构和性能

1.1 主要性能

EPM9320LC84是Altera公司生产的EPLD器件,它的主要性能如下:

内含JTAG边界扫描测试电路。

在5V电源条件下,JTAG接口可编程。

所有的I/O均可在3.3V或5V电源下工作,并且在引脚处都有输入/输出寄存器。

Altera MAX+PLUSⅡ 开发系统可提供软件设计支持,该开发系统可工作在486PC机、奔腾PC机、Sun SPARC工作站、HP9000系列700工作站、IBM RISC系统/6000或DEC Alpha AXP工作站上。

利用EDIF、Verilog HDL、VHDL和其它软件可通过CAE工具(如OrCAD)提供仿真支持。

1.2 管脚说明

图1是EPM9320LC84的引脚图,其功能如下:

VCC、VPP:芯片电源端。

GND:芯片地端。

I/O:输入/输出引脚。

IN1~IN4:专用输入引脚。

TCK,TMS:分别为时钟测试和测试模式选择端。

:测试模式选择端。

TDI,TDO分别为测试数据输入、输出端。

其中,TCK、TMS、TDI、TDO为JTAG边界扫描接口,它们和芯片内部的边界扫描寄存器504个数据捕获寄存器,168个数据更新寄存器,一个指令捕获寄存器,一个指令更新寄存器链形成的边界扫描结构一起可用于芯片内部和外部测试。

2 测试系统配置

把ByteBlaster 下载电缆连到PC机的打印并口可实现PC机并口与JTAG接口的互连。PC机可用软件来控制边界扫描接口以完成边界扫描测试任务。

利用VC++语言可编写MFC应用程序(内容主要包括:TAP控制类、测试向量生成、发送、采集类、故障诊断类等)以达到人机交互、故障诊断、数据管理三个方面的要求。

3 数据发送与数据采集

3.1 数据发送

通过extest模式发送数据时。可在移位阶段将捕获寄存器的数据移出,同时将测试图形移入。而在更新阶段,测试图形从捕获寄存器传送到更新寄存器,再由更新寄存器驱动测试信号并将其输出至I/O引脚。对于单芯片电路板来说,无论是输入引脚,还是在引脚发送测试图形时,其控制三态均应为输出状态,即令OEJ更新寄存器为1。

3.2 数据采集

数据采集的目的是得到引脚对测试图形的响应。如果引脚正确,输出的测试图形就等于采集到的测试图形,如果引脚出现故障,两者必有差异。由于采集到的测试数据就是故障诊断的依据,所以能否正确、合理地采集到数据是数据采集的关键。单芯片电路板不像多芯片那样利用sample模式采集数据,而是仍旧利用extest模式来采集数据。

图2是利用sample模式采集数据的原理图。在捕获阶段,由OEJ和OUTJ来控制三态门状态,以使电路板上三态输入引脚为高阻状态,三态输出引脚为输出状态。由于采集的数据是引脚的实际状态,而不是引脚对输出测试图形的响应,故用sample模式不能正确地采集测试图形以用于故障诊断。

图3是利用extest模式在捕获阶段进行数据采集的示意图,图中的三态门受OEJ、OUTJ更新寄存器控制,而这两个寄存器的数值是发送测试图形时的值,三态有效。所以它所采集的数据即为引脚对测试图形的响应,可以满足采集要求。

4 测试算法

电路板常见故障模型有呆滞型故障、固定开路故障和短路故障。为了消除误判和混淆故障及提高诊断速度,可在算法上结合电路结构对自适应算法和CX-TB导通测试算法以及二进制计数测试序列进行改进,以对引脚全部的短路故障、呆滞故障进行完备诊断。具体步骤如下:

(1)引脚分类

电路图中的引脚可分为输入、输出、输入/输出、空闲、专用输入、地/电源、NC几类。由于专用输入引脚边界扫描结构没有更新寄存器,所以测试图形无法输出到引脚因此不能用此方法测试。而地/电源引脚、NC引脚不带有边界扫描结构所以也不能测试。故此,真正能进行测试的引脚只有前四类。可令n等于前四类引脚数目的总和。

(2)生成测试向量

按照引脚号对前四类引脚进行从小到大排序,序号为:0到n-1,然后计算log2(n+2)的值,再根据有余进一的原则算出并行测试向量个数m。为避免出现误判,可从000……1开始进行二进制计数,以形成测试向量,其行数为n,列数为m。

(3)发送测试向量

(4)采集测试结果

(5) 添加测试图形

比较测试序列与采集到的结果,确定异常行(总数W)。为避免混淆和误判故障,可进一步添加C个为全0或全1码的测试图形。

(6)故障诊断

该算法具有故障定位准确,测试周期短,测试效率高等特点。

5 故障诊断

由于EPM9320LC84芯片采用CMOS工艺制作,因此,它的引脚与地、电源短路分别归为呆滞于0和呆滞于1;器件引脚悬空也归为呆滞于0。其引脚互连测试图形是“与”逻辑。

具体诊断时,可比较输出测试图形与采集测试图形的差异,相同即为正常行,不同则为异常行。诊断过程如下:

若异常行和正常行的测试向量相同,则添加测试图形令异常行并行测试向量为全0,其余行测试向量为全1,而对于发送、采集添加的测试向量,若正常行采集结果为全0,则正常行与异常行对应引脚互连。否则必有其它脚与异常行对应脚互连。

如果异常行向量是全1,判断异常行对应引脚呆滞于1。

如果异常行向量为全0,则可添加测试图形令所有测试向量为全1,同时发送、采集添加的测试向量,此时若异常行测试结果为全0,则异常行对应引脚呆滞于0。否则必有其它脚与该异常行对应引脚互连。

如果两个异常行测试向量相同且为全0,则可添加测试图形以令所有测试向量为全1,同时发送、采集添加的测试向量,如果异常行为全0,则异常行对应引脚呆滞于0;如果测试结果是两行都为全1,则添加测试图形令两个异常行测试向量分别为全1和全0,其余向量为全1,再一次发送、采集添加的测试向量,如果采样结果是两个异常行为全0,则两异常行对应引脚互连;否则两异常行对应引脚无关,必有其它引脚与异常行对应引脚互连。

如果两个异常行测试向量相同,且既非全0又非全1,则两异常行对应引脚互连。

6 结束语

集成测试范文9

关键词 计量自动化系统;性能测试;优化

中图分类号 TP311 文献标识码 A 文章编号 1673-9671-(2012)072-0112-01

随着科学技术的不断进步,电力自动化程度越来越高,特别现场电能量数据终端、大客户负荷控制终端、配变计量监测终端和集抄终端抄表系统的运行,更是让远程控制变成了现实,但是,这些远程系统是不是存在漏洞,各模块能不能协同作用,是不是存在冲突,能不能传输完整的数据、能不能对数据进行系统的分析等问题也向系统提出了要求,在这种情况下,认真进行电力行业各种自动化系统软件性能测试解析与优化,确保四分线损、供电质量、停电统计、预购电管理、错峰管理、负荷控制、拉合闸管理等功能模块之间能够协调有序进行,对于维护电力系统的正常运行,提高电力行业的综合竞争能力具有非常重要的现实意义。

1 计量自动化系统性能测试的目的

通过对计量自动化系统性能的测试不但可以发现软件存在的漏洞和缺陷,而且还可以验证系统软件在各种情况下的运行能力。电力用户的不断增加也给系统软件运行提出了要求,系统所能够承受的最大用户量也是电力行业必须充分了解的问题,通过计量自动化系统性能测试就可以解决这个问题。同时,通过针对性的系统软件测试还可以实现系统软件的性能优化,使系统软件能够在不同的条件下都能够稳定运行。

2 计量自动化系统性能测试的内容

在计量自动化系统运行过程中,软件的运行环境、软件的响应时间、软件长期运行的稳定性、软件所能支持的最大并发数以及系统在一定时间内所能够处理的信息量等内容都会给系统运行造成一定的影响,因此在进行计量自动化系统性能测试的过程中,就必须针对上面容易给系统造成影响的内容进行精确的性能测试,以避免软件的不启动、误操作或者非正常运行等状况发生。在测试过程中,我们主要是通过现场模拟,使用自动化测试工具对电力系统负载正常、负载异常以及峰值等阶段进行测试,从而判断计量自动化系统的各项性能指标是不是能够达到标准。

3 计量自动化系统性能测试解析与优化

作为一款系统软件行为与性能的测试产品,Load Runner主要包括VuGen(虚拟用户发生器)、Pressure regulation(压力调度)、Controller(监控中心)、Load Generator(压力生成器)、Analysis(结果分析工具)等。通过Load Runner就能够完成对计量自动化系统性能进行测试。其常规测试步骤如下:

1)对计量自动化系统性能进行测试,针对软件的运行环境、软件的响应时间、软件长期运行的稳定性、软件所能支持的最大并发数以及系统在一定时间内所能够处理的信息量等内容对系统运行造成的影响进行测试。

2)在操作计量自动化系统的前提条件下,通过VuGen记录生成相关虚拟用户脚本。

3)对脚本进行修改,确保脚本能够实现我完整回放。

4)在Controller内根据测试内容进行测试场景配制。其内容主要包括,电力虚拟用户数目、运行参数、电力用户的增长方式、软件测试的循环方式、安全退出、软件监视指标等。

5)执行测试。Controller通过Load Generator对被测试的系统软件产生一定的压力,施加一定的行为,然后对系统在测试过程中的数据进行收集,然后将数据传递到Controller,并让Controller进行数据汇总。

6)通过Analysis对汇总的数据进行分析,并在数据分析的基础上进行优化方案设计。

7)进行优化测试。尽管计量自动化系统模块众多,并且各模块执行的动作不同,但是进行软件测试和优化的程序大致相同,现在以采集模块的优化和测试进行说明。

4 制定采集模块作性能测试方案

4.1 确定采集模块作测试场景

采集模块作测试场景主要是模拟系统软件的实际运行场景,其主要内容包括运行参数、软件测试的循环方式、安全退出、软件监视指标等。在测试场景确定的过程中,要尽可能选择和采集模块作在实际运行过程中比较相似的接受四个数据终端数据的任务并发测试场景,从而充分了解采集模块作极限运行状态下的运行状况。

4.2 确定监视指标

在测试过程中,必须认真监视和服务器相对应的软件性能计数器,其监视的结果就是监视指标,通过监视指标不但能够进行结果分析,而且还可以寻找导致发生性能问题的根源。

5 执行采集模块性能测试方案

5.1 搭建采集模块性能测试环境

首先,要按照测试方案搭建一个独立、无病毒、相似性强的采集模块运行环境,然后安装调试采集模块,安装Load Runner;其次,准备测试数据。为了保证测试数据的合理性,测试数据通常从电力部门获取,如果是自己准备的数据,要分析数据的合理性,避免出现大量的垃圾信息,其数据必须确保软件能够按照流程正常运行。再次,在测试数据准备完成后,要及时进行数据库的备份。

5.2 编写或者录制测试脚本

测试脚本的生成既能够通过编写完成,又能够通过测试工具进行录制。不管是上述两种方式中的哪一种,所生成的测试脚本必须有效,这也就是说测试脚本能够充分反映系统软件的实际运行状况。

5.3 测试场景的布置

按照测定方案进行测试场景的布置。

5.4 执行测试

要想准确判断软件的实际运行能力,必须通过一定强度的测试,准确测定EAC(即电能量数据遥测终端)、集抄终端、负控终端和配变终端的使用效率,运行速度、稳定性。

在测试过程中,要认真测试不同压力下采集程序的定时采集数据的能力,以及负控、配变、集抄终端的主动连接和采集数据的能力;来自于每一个终端上报信息的时间、数据量以及数据的质量;任务调度程序和采集传输服务程序任务调度分发能力和负载均衡能力。

认真比对不同压力下信息采集的工作效率,进而对整个模块做出准确的判断,然后在测定系统各个模块的基础上实现对系统的测试。在测试过程中,不管是哪一个环节,都必须采用统一的标准,纠正任何一点偏差,否则就会导致测试失败。同时,还要注意外部环境对测试结果在成的影响。

6 生成并分析测试报告

测试报告是整个测试的结论性文件。系统开发人员要对测试报告中的相关数据进行分析,认真查找模块中存在的问题以及缺陷。在这个过程中,首先必须认真筛选出测试数据中的典型数据,然后认真分析数据,查找隐含在数据中的模块问题;其次,要认真分析问题发生的原因,在找出原因的基础上提出合理的解决或者优化方案。

7 小结

总之,通过软件性能测试,可以发现存在于计量自动化系统中的缺陷和漏洞,并进行纠正,这样就可以确保电力系统的远程控制的正常进行,真正实现电力计量自动化。

参考文献

[1]李军锋,任世鹤.软件可靠性及其测试分析[J].软件导刊,2010,09(08).

集成测试范文10

关键词:面向对象; 软件测试;类测试

1面向对象软件的类测试

面向对象软件从宏观上来看是各个类之间的相互作用。在面向对象系统中,系统的基本构造模块是封装了的数据和方法的类和对象,而不再是一个个能完成特定功能的功能模块。每个对象有自己的生存周期,有自己的状态。消息是对象之间相互请求或协作的途径,是外界使用对象方法及获取对象状态的唯一方式。对象的功能是在消息的触发下,由对象所属类中定义的方法与相关对象的合作共同完成,且在不同状态下对消息的响应可能完全不同。对象中的数据和方法是一个有机的整体,测试过程中不能仅仅检查输入数据产生的输出结果是否与预期的吻合,还要考虑对象的状态。模块测试的概念已不适用于对象的测试“类测试将是整个测试过程的一个重要步骤,它与传统测试方法的区别可用图1来表示。

面向对象软件的类测试与传统软件的单元测试相对应,但类包含一组不同的操作,并且某特殊操作可能作为一组不同类的一部分存在。同时,一个对象有它自己的状态和依赖于状态的行为,对象操作既与对象的状态有关,但也可能改变对象的状态。因此,类测试时不能孤立地测试单个操作,要将操作作为类的一部分;同时要把对象与其状态结合起来,进行对象状态行为的测试“类的测试内容分为:(1)基于服务的测试(测试类中的每一个服务);(2)基于状态的测试(考察类的实例在其生命周期各个状态下的情况);(3)基于响应状态的测试(从类和对象的责任出发,以外界向对象发送特定的消息序列的方法来测试对象的各个响应状态)。如图2所示。

2类测试技术

2.1基于服务的类测试技术

基于服务的类测试主要考察封装在类中的一个方法对数据进行的操作,它可以采用传统的白盒测试方法。为克服软件测试的盲目性和局限性,保证测试的质量,提高软件的可靠性,下面我们介绍一种类的服务的测试模型及相应的测试策略。

bbd通常有两种获取途径。一是采用逆向工程的方法根据源程序画出流程图,然后构造出bbd。但这毕竟是在缺少软件开发前期的分析、设计文档或文档不齐全的情况下退而求其次的办法。当源程序不正确时构造出来的bbd就是错误的。另一种途径就是追根溯源,在软件的分析、设计阶段就根据测试的需要构造出相应的bbd。这样就能从根本上解决问题,正确地指导类的服务的测试。

2.2基于层次增量的类测试

层次增量测试的基本思想是:首先分别测试父类的各个成员函数,再测试成员函数间的相互作用,把测试用例和执行信息保存在/测试历史中,在测试子类时,根据父类的测试历史修改部分的定义以及实现语言的继承映射来决定子类中的哪些特征应当重测试以及父类的哪些测试用例可以复用。

这种根据类间继承关系的层次特性对类进行增量测试的技术是由m. harrold等人提出的,其特点是复用父类的测试信息来指导子类的测试。每一个子类看作由两部分组成:从父类继承的部分和修改部分,如图3所示,其中符号“|”为并置运算符。

类中的特征被分为6种类型:新特征:子类中新定义的特征;递归特征:在父类中定义、未被子类重定义的继承特征;重定义特征:在父类中定义、又在子类中重定义的特征,重定义特征在子类中屏蔽了同名(同参数表)的父类特征;虚新特征虚特征是指其实现尚不完整、留待子类重定义的特征,虚新特征是指子类中新定义的虚特征;虚递归特征:在父类中定义的虚特征,被子类继承后未重定义的特征;虚重定义特征:在父类中定义的虚特征,在子类中被重定义的特征,重定义特征在子类中屏蔽了同名(同参数表)的父类特征。

父类中各个成员函数的测试采用传统的单元测试技术,可以把传统的基于规约和基于程序的测试技术相结合选择测试集。类中每一个成员函数的测试历史是一个三元组{mi(tsi,test),(tpi,test)},其中mi为成员函数;tsi为基于规约的测试集;tpi为基于程序的测试集;test标识该测试集是否要(重)运行。

同一类中成员函数的相互作用的测试实际上是一种集成测试,如何进行这一测试是根据类图来确定的。在类图中,节点表示类中的一个成员函数或数据成员,有向边表示发送消息。测试数据集的选择也可应用基于规约和基于程序的测试方法。测试历史的形式也是一个三元组{mi(tisi,test),tipitest},其中mi是类图中某一子图的根节点;tisi是基于规约的集成测试集;tipi是基于程序的集成测试集; 取表示该测试集要全部(重)运行,取表示部分(重)运行,取表示无需(重)运行。一个类的测试历史是各成员函数测试历史的集合和集成测试历史集合的并集。

2.3基于流图的类测试技术

把传统的基于流图的测试技术应用于类测试提出了一种构造类流图的框架。在类流图中,节点表示操作,操作a和操作b之间的有向边表示允许某引用类(client)在调用操作a之后调用操作b,确定节点间是否可以联边的依据是该类的规约。

传统程序流图的测试充分性准则可以在类流图中找到对应,如类流图的节点覆盖要求测试时的操作序列应使每个操作至少执行一次,分支覆盖要求测试时的操作序列应覆盖类流图中的每条边至少一次。还可以在类流图上给出类似于数据流的定义性出现!引用性出现、定义-引用对等概念。在类流图中,所有对象的定义性出现和引用性出现根据操作(节点)中是否定义或引用该对象来确定,然后在谓词性引用和控制操作。计算性引用和非控制操作之间建立对应关系,从而可以类似地给出数据流准则中的定义覆盖准则、引用覆盖准则和定义-引用路径覆盖准则等。图4给出堆栈类(类名为stack,t为栈元类型)的类流图,表1给出每个操作的定义性和引用性使用情况。

基于流图的类测试技术把传统的基于规约的测试应用于类测试,完全依赖于类的实现,系统地而不是随机地产生测试用例,且可全部自动化。

参考文献

集成测试范文11

关键词:多通道;同步采集;LabVIEW

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2014)16-3911-03

随着我国航空技术的快速发展,飞机系统的研究对飞机模拟试验测试系统提出了更高的要求。传统的飞机模拟试验测试系统成本高,通道数少,且数据处理和分析功能简单,给目前新型飞机系统研究工作带来许多困难。随着现代虚拟仪器测试技术和数字信号处理技术的飞速发展,构建一种精度高、灵活性好、低成本的飞机测试系统成为可能。

本文介绍了系统的组成结构及工作原理,详细叙述了基于LabVIEW软件平台开发的测试系统,该系统实现了飞机系统模拟试验高性能的计算机数据采集,人机界面友好,精度高,速度快,且只需要更换传感器或少量的硬件即可组建不同的测试系统,具有良好的可移植性,在实际工程应用上取得了良好的效果。

1 系统结构及硬件

在系统设计时,从功能要求、技术指标以及系统稳定性等多方面考虑,系统的组成结构框图如图1所示。

系统采用总线制的程控仪器测试体系结构,以PXI测试总线为主,以GPIB、RS-232C测试总线为辅,建立满足试验控制与采集分析的自动化、网络化的综合测试系统。整个系统包括工控机、PXI总线组合、MXI-3通讯控制接口、基于PCI总线的NI数据采集卡、信号调理模块、测试电缆等。其中信号调理实现包括输入/输出保护、信号及电源隔离、共模抑制、串模抑制、信号放大、滤波、信号激励、冷端补偿、线形补偿等。数据采集卡实现数据的实时采集。

2 系统原理

飞机测试系统的工作原理是采用PXI总线测试体系,多路信号传感器直接连接到一级调理机箱应变调理系统,通过测试电缆对应变式传感器的信号进行四分之一、半桥、全桥的自动配置和桥路平衡,并提供激励电压和输入保护。桥路式传感器的信号经过配桥、桥路平衡和激励后,输入SCXI-1102C(二级调理)进行调理。经过SCXI-1102C调理后的桥路信号进入PCI-6034E进行采集。PCI-6034E是PCI总线的多功能数据采集卡,它提供16位分辩率、16单端或8路差分输入、200KS/s扫描采样数率、8数字I/O、2路定时计数器、1~100倍的放大,它由计算机进行控制对SCXI-1102C输出的信号进行采集、分析处理等工作,可完成多种类型传感器信号的测量,实现了多项测试内容一体化。

3 系统软件设计

在整个系统中,一级、二级信号调理电路将来自各传感器的信号经过调理后,由NI PCI-6034E的AI进行同步采集。为了保证各测试点(测量通道)数据一致性,设计中选用了高动态精度和高同步的NI PCI-6034E DAQ板卡,并利用PXI总线测试系统的优越性,来保证各测量通道的时间准确性。

在飞机测试系统软件设计中,多通道数据采集是整个系统中软件设计的关键。该系统软件采用自上而下的模块化编程设计思想,主要包括硬件检测、参数配置、状态检测、系统标定、数据采集、数据处理等部分,测试系统功能模块如图2所示,

1) 硬件检测模块主要检测信号传输的波特率及NI数据采集卡使用的端口状态,这样有利于保证整个系统硬件的畅通及稳定性。

2)参数配置模块主要设定通道号、测试类型、配桥方式、单位、标定系数、桥压、量程等参数,可配置64路、96路、128路等参数配置文件,保存后可随时修改并导入配置文件,依据试验情况,可自行生成其它配置文件。该模块配置灵活,简洁,对测试对象不断发生变化有绝对的优势。参数配置子程序如图3所示。

3)系统标定和状态检测模块主要针对信号调理模块、通道及NI数据采集卡进行采集。主要完成系统调零、标定设置、硬件状态检测、单通道数据采集等功能,下面是硬件检测子程序。如图4所示。

4)数据采集模块主要实现64路、96路、128路等多路通道定时采集、连续采集功能,并将采集的数据实时以图表的形式直观显示给用户,软件采用case结构,不同的采集类型,对应不同的case框,下面的程序是连续采集子程序,如图5所示。

5)数据处理模块主要对测试数据进行分析处理及事后曲线回放,通过数据分析处理,研究飞机系统在不同状态下的静态及动态性能指标,为后续改进设计提供理论支持。

4 试验结果

为了验证系统的功能,在试验室对设计的系统进行了测试。

在试验中,飞机模拟试验件采用1:1的比例模型,试验件上装有角度传感器、温度传感器、压力传感器、流量传感器、线位移传感器等。这些传感器分别装在被测点,并通过一级信号调理、二级信号调理进入PXI总线测试系统。试验证明,该系统测试精度高、速度快,满足飞机试验指标要求。

5 结论

LabVIEW是一种基于图形化编程的软件开发工具,是一个标准的数据采集和仪器控制软件,其编程方式的高性能与灵活性,以及专为测试测量设计的高端性能与配置功能,能为数据采集、仪器控制、测量分析与数据显示等各种应用提供必要的开发工具。鉴于这种特点,根据系统的设计需求,通过工控机与PXI总线测试组合搭建系统,并利用LabView完成飞机测试系统开发。系统可实现多个通道测量,操作方便,界面友好,能完成数据采集、分析与处理等功能,减少人工干预,测试精度高、稳定,该系统达到了预期的设计要求,可满足飞机系统地面模拟试验需要。

参考文献:

[1] 张仁亮,刘北英,李占锋.基于LabVIEW虚拟仪器自动测试系统的设计开发[J].机械制造与自动化,2006(3).

集成测试范文12

(南京理工大学,江苏南京210094)

摘要:为了提高软件故障的定位效率,提出一种基于关联规则的软件多故障定位技术。通过使用聚类方法把失败的测试用例分成针对特定错误的聚类,使用基于交叉表的软件故障定位方法发现软件中的故障,在定位过程中使用关联规则挖掘高可疑代码与软件故障的关系,提高故障定位的效率,最后对Siemens用例集和Tarantula方法进行对比。实验表明基于关联规则的软件多故障定位技术在软件多故障定位方面效率优于Tarantula方法。

关键词 :关联规则;多故障定位;提高定位效率;聚类方法

中图分类号:TN911-34 文献标识码:A 文章编号:1004-373X(2015)12-0039-05

收稿日期:2014-12-06

基金项目:国家自然科学基金(61103002)

0 引言

随着软件产品的发展,软件规模以及软件复杂度的不断增大使得软件调试过程越发困难。软件故障定位是调试过程中成本最高同时耗时最长的一项[1]。在软件自动化调试领域,出现了许多相应的方法,Jones和Har-rold 提出了Tarantula[2]方法,该方法通过对比程序实体在失败测试用例和成功测试用例之间的差别,计算程序实体的怀疑度实现故障定位。C.Liu提出了SOBER[3]方法,该方法使用谓词在测试用例中取值为真对程序故障出现的影响实现故障定位。其他还有一些定位方法[4-6]比如CBI、NNQ、SBI等。这些方法大多使用程序实体的覆盖信息来计算每一个程序实体的可疑度,然后通过可疑度排名列表去发现软件故障。这些方法虽然在单故障的情况下取得了很好的效果,但是在多故障的情况下,效果都不是很理想。他们大多都采用one-bug-at-a-time 的方式实现多故障的定位,但是这种方式弊端明显:时间效率低,同时需要重复测试。

Jones和Harrold提出了一种并行调试技术[7],通过对可能导致同一个故障的测试用例进行分类,然后结合成功执行的测试用例构造用以测试每个故障的测试用例子集,来同时定位不同的软件故障。但现有的基于覆盖率的错误定位(Coverage Based Fault Localization,CBFL)方法只是统计代码语句或代码基本块的覆盖率,并没有考虑程序执行的数据依赖和控制依赖,因此会出现定位不准确的情况。结合以上两点,本文将在并行的基础上使用关联规则挖掘软件故障。

1 相关工作

许多该领域的学者提出了不同的软件故障定位技术。这些技术大多通过收集语句或者谓词等程序实体的覆盖信息,然后对收集到的信息利用相应的怀疑度公式计算每条语句的怀疑度,据此找出软件中的故障。本文也使用这种方式,同时,结合关联规则的思想来提高软件的多故障定位效率。

1.1 基于交叉表的故障定位技术

W.Eric提出了一种基于交叉表的技术进行软件故障定位的方法[4,8]。该方法的主要思路是:针对每个测试用例的每一条语句构造一个交叉表,通过该交叉表收集语句的覆盖信息和执行结果。然后,利用每条语句的统计信息计算该语句的怀疑度(Suspiciousness)。通过这种方式,所有的语句都可以根据计算出的怀疑度来降序排名。语句的怀疑度越高,该语句越会被优先检查,可以通过排名依次检查语句,直至发现软件的故障。

该技术通过引用一个名为Chi-square test的假设测试来检查测试用例执行结果和语句覆盖信息之间的依赖关系。Chi-square 的数据通过交叉表中的数据计算而来,同时与Chi-square 中的关键值进行对比,决定这个假设(即执行结果独立于与语句的覆盖信息)被接受还是被抛弃,然后,通过计算语句的怀疑度数值ζ 进行故障定位。ζ 的数值越大表示语句的怀疑度越高,怀疑度越高则会被优先检查。基于交叉表的软件故障定位技术通过计算语句的怀疑度来预测语句包含故障的可能性。其实验结果表明基于交叉表的软件故障定位技术相比于绝大多数的软件故障定位技术,如Tarantula、Liblit05、SOBER等方法,效果更好。

1.2 并行调试

通常状况下,一个软件出现失效状况下,软件中会包含多个故障,同时软件调试的人员也会不止一个,因此可以通过并行的方式实现软件故障的定位工作,相比于one-bug-at-a-time的方式,并行故障定位会更加高效,通过构造并行工作流,不同的工作人员可以专注于不同的软件故障。要实现并行的软件故障定位,最重要的问题是如何对任务进行划分和分派,这就需要一种可以把错误的测试用例集从新分配成多个小的与特定故障相关的错误测试用例子集的技术。Jones 和Harrold 提出了一种并行调试的技术[7]用以实现解决这个问题。这种技术会自动把失败的测试用例集分割为针对不同软件故障的测试用例子集。通过使用测试用例动态运行获取执行结果的行为模型和信息,该技术可以生成一个针对不同错误的失败测试用例子集。通过把失败测试用例子集和成功的测试用例结合,就得到了一个专注于特定单错误的测试用例集。这些单错误测试用例集的个数就是对程序中故障个数的预测。

2 关联规则在软件故障定位中的应用

在基于覆盖的软件故障定位技术中,现有技术通过收集测试用例执行的覆盖信息计算语句可疑度,进而定位软件故障。在现有的技术中,往往没有考虑语句间的数据依赖和控制依赖关系,不同语句的覆盖统计是相互独立的,这导致定位的不准确,CBFL方法经常能定位到程序失效时的执行代码,而这些失效时的执行代码多数情况下并不是错误代码[9],文献[9]表明,基于覆盖的软件故障定位计算可疑度得出的高可疑度语句主要分一下几种情况:

(1)该语句基本块本身就是故障语句,并且该基本块出现在错误测试用例的概率高于出现在成功测试用例的概率。

(2)该语句基本块本身不是故障语句,但是该基本块的执行会导致故障语句的执行,进而发生故障。这表明高可疑语句块或者是故障或者会导致故障,因此考虑通过关联规则挖掘高可疑代码与软件故障的关系,提高故障定位的效率。

测试用例的执行路径能够反映出故障代码与高可疑代码之间的关联,即高可疑代码的执行导致故障语句的执行,进而出现故障。故障语句与高可疑语句表现出了在执行路径上覆盖信息的一致性,然而执行轨迹的路径表示十分复杂和耗时[10],因此采用相对轻量级的覆盖向量来近似表示路径的覆盖信息。

2.1 路径覆盖向量的表示

定义1:中间不存在控制跳转的连续代码语句构成一个代码基本块,简称为基本块。

定义2:覆盖向量值指代码基本快在每次执行中的覆盖信息构成的向量pathi = (b1,b2 ,-,b n ) 。其中:pathi表示覆盖向量;bi 表示程序中代码基本块,bi =0表示该代码基本块没有被覆盖,bi =1 表示该代码基本块被覆盖。

定义3:一个函数在测试用例集下的执行轨迹符号化表示为EXEM( fi) ={B,T,PATH} 。其中:B 表示函数fi的基本块集合;T 表示测试用例集的所有测试用例集合,PATH ={path0 ,path1,-,pathm} 表示针对每个测试用例的覆盖向量集合。根据程序执行的结果可以将执行轨迹分为成功执行和失败执行,即EXEMp 和EXEMf 。

2.2 求解频繁集

根据故障语句与高可疑代码之间表现出的覆盖一致性,可以求解故障语句的“频繁集”来表现这种关联[11-12],软件故障或者存在于高可疑代码中,或者存在于高可疑代码的频繁集中,因此通过频繁集来提高软件故障定位的效率。只需求出与高可疑代码保持覆盖一致的分量对应的基本块,即可通过频繁集提高故障定位的效率。

求解频繁集的算法如下:

输入:OBS,EXEMf

输出:FG(频繁集集合)

符号表示:

fg(bk):以bk为目标代码的频繁集,k表示bk在OBS中的索引

u ∧ v:向量与操作

I:单位向量,维度为基本块个数

初始化:FG NULL

1. for each bk∈ OBS

2. fg(bk) I

3. for each pathi∈ PATH

4. if pathi (bk) > 0 then

5. fg(bk) fg(bk)∧ pathi

6. end if

7. end for

8. FG FG - fg(bk)

9. end for

算法中:bk 代表目标代码;fg(bk ) 表示与bk 保持频繁一致性的分量集,即求解出的以bk 为目标的频繁集。算法过程为:遍历bk 不等于0的分量进行与操作,即得到所有的bk 的频繁集。通过计算每一条语句块的可疑度,按照可疑度降序检查发现错误,若语句块中不存在错误则检查语句块的频繁集(依据可疑度排序)查找错误,这种方式可提高定位效率。

3 基于交叉表的软件多故障定位技术

下面对基于交叉表的软件多故障定位技术进行具体介绍。

图1为程序实例展示,该程序用于求取输入的是三参数中间值。

图1的程序中包含两个错误,分别是语句行6和语句行9,使用在测试用例集中10 组参数组合分别为T1~T10。图中“√”代表了每条测试用例的语句覆盖信息;在最后一行给出了每个测试用例的执行结果:P 代表成功,F代表失败。

由图1可知,导致失败的测试用例往往具有相同或者相似的语句覆盖信息。因此可以通过聚类方法将测试用例进行分类,将错误测试用例中语句覆盖路径相同或者相似的路径分为一类,这些被分为不同类的失败测试用例子集就是专注于不同错误的测试用例集。在mid函数中,测试用例7~10失败了。而且,测试用例7,8有相同的覆盖信息,这意味着测试用例7,8可能会导致同样的软件故障。同时,测试用例9,10也具有相同的覆盖信息,同理,它们也可能导致同样的软件故障。通过上述分类原理和观察到的现象,下面把失败的测试用例分为两组针对不同错误的失败测试用例子集。然后通过使用Jones和Harrold的并行调试的方法,将失败的测试用例子集分别与成功测试用例结合,形成两组不同的测试用例子集。两组测试用例子集如图2和图3所示。

叉表,语句交叉表模板如图4所示。

图4 所示交叉表是一个表示测试用例执行情况和测试用例是否被覆盖的二维表。表中各个变量的含义分别是:w 代表程序中的一条语句;NCS (w) 代表覆盖w的成功的测试用例数;NUS (w) 代表没有覆盖w 的成功测试用例数;NS 代表成功的测试用例数;NCF (w) 代表覆盖了语句w 的失败测试用例数;NUF (w) 代表没有覆盖语句w 的失败测试用例数;NF 代表失败的测试用例数;NC(w) 代表覆盖了的测试w 用例总数;NU (w) 代表没有覆盖w 的测试用例数;N 代表总的测试用例数。

使用图4 提供的模板和文献[4]中提供的公式计算每条语句的怀疑度。针对图2和图3两个测试用例集分别计算怀疑度,给出怀疑度列表降序排名如表1所示。

表1 中,语句9 的怀疑度最高,会最先被检测。在表2中语句6的怀疑度最高,会最先被检测。这表明通过构造针对不同错误的测试用例子集并行的进行故障定位是可以实现的,这将有利于提高软件故障定位的效率。在此计算验证了通过并行的方式进行软件故障定位的有效性。进行并行的故障定位有一个前提就是构造针对不同错误的测试用例。通过使用二分法构造针对不同的测试用例,针对不同的待测函数,可以根据函数的输入集合和函数的功能创造出不同的二分法条件。在上面例子中,mid函数是用作求取输入的3个数的中间值的函数,因此中间的参数最有可能导致软件故障。所以中间的参数作为分类条件,在mid函数中使用“中间的参数是不是在第一个出现”作为分类的条件,如果一个失败测试用例满足这个条件则把它放在一个类别中,不满足则放在另一个类别,同样以图1的测试用例为例,发现T9和T10满足这个条件,所以把他们分为一类,T7和T8分为另一类,这样即可进行并行软件故障定位。

同时,给出一个终止条件,用于判断分类是否完成,即针对不同错误的测试用例是否已经被分配到了各自相应的类别下。聚类的相似性系数可以提供判断不同对象之间相似程度的度量,因此可以使用相似系数来判断每个类别中的对象是否足够相似,不同类别间的对象是否足够相异来判断分类是否完成。相关系数公式如下:

式中:Xi 为第i 条语句在失败测试用例X 中的覆盖情况,Xi 为1代表覆盖,0代表未覆盖;Xˉ 表示失败测试用例Xi 的覆盖比例;相应的Y 的含义和X 相同。利用图1 中的例子可以将失败的测试用例集分类。给定一个相关性系数的值,比如0.8,当两个失败测试用例的关联系数小于0.8时说明它们关联性不大,即它们针对不同的错误。计算r78 =1,这表明T7和T8关联性非常大,针对相同的错误,对T9 和T10 计算结果也是1,说明它们应该分为一组。通过循环计算每两个测试用例之间的相关系数,直到类别内任意两个测试用例的相关系数大于0.8时,就说明分类完成。本文给出的上述方法虽然能够对针对不同错误的测试用例进行分类,但需要对每两个错误测试用例进行计算,所以这个过程相当耗时,开销也是很大。

4 实验及结果分析

下面使用本文给出的基于关联规则的软件多故障定位技术和Tarantula方法进行对比来验证本文方法的定位效果。在此使用Siemens程序集来进行试验的对比工作。程序集中tacas程序包含的故障版本数最多,同时可执行的语句数最少,这意味着tacas程序有可能包含多故障,因此选用该程序验证本文的方法。对文献[4]中的EXAM 度量进行扩展,将针对每个故障的EXAM相加,形成EXAMtotal 作为度量的标准。

基于关联规则的软件多故障定位方法与Tarantula方法的对比如图5所示。

图5 分别给出了在不同的故障版本比例下两种方法的EXAMtotal 得分。其中“1”代表20%的故障,“2”代表40%的故障,“3”代表60%的故障,“4”代表80%的故障。可以看到在故障比例较低的环境下,本文的方法效率明显优于Tarantula方法。

5 结语

本文提出了基于关联规则的软件多故障定位方法,并且与Tarantula方法进行了对比,结果表明本文的方法效率较高。不过本文提出的方法也存在一些不足,并没有考虑把测试用例划分为针对不同故障的测试用例的效率,同时也没有考虑失败测试用例分类的效果进行验证。在Siemens测试集上通过实验验证了基于关联规则的软件多故障定位的效率,结果证明本文的方法能有效地发现软件的故障。

作者简介:张泽林(1990—),男,山东临沂人,硕士研究生。研究方向为软件测试技术。

赵洋(1978—),男。研究方向为计算机软件与理论、可信软件。

参考文献

[1] JONES J A. Semi-automatic fault localization [D]. USA:Geor-gia Institute of Technology,2008.

[2] JONES J A. HARROLD M J. Empirical evaluation of the Ta-rantula automatic fault-localization technique [C]// Proceedings of the 20th IEEE/ACM international Conference on Automated Software Engineering. Long Beach,CA,USA:IEEE,2005:273-282.

[3] LIU C,FEI L,YAN X,et al. Statistical debugging:A hypothe-sis testing-based approach [J]. IEEE Transactions on Software Engineering,2006,32(10):831-848.

[4] RENIERES M, REISS S P. Fault localization with nearest neighbor queries [C]// Proceedings of the 18th IEEE/ACM Inter-national Conference on Automated Software Engineering. Mon-treal,Canada:IEEE,2003:30-39.

[5] LIBLIT B,NAIK M,ZHENG A X. Scalable statistical bug iso-lation [C]// Proceedings of the 2005 ACM SIGPLAN Conference on Programming Language Design and Implementation. 2005:15-16.

[6] HAO D,ZHANG L,PAN Y,et al. On similarity - awareness in testing-based fault localization [J]. Automated Software Engineering,2008,15(2):207-249.

[7] JONES J A,BOWRING J F,HARROLD M J. Debugging in Parallel [D]. London, UK: Georgia Institute of Technology,2007.

[8] WONG E,WEI T,QI Y,et al. Crosstab-based statistical method for effective fault localization [C]// Proceedings of the 2008 International Conference on Software Testing,Verifica-tion,and Validation. Lillehammer,Norway,2008:42-51.

[9] ZHANG Z,CHAN W K,TSE T H. Capturing propagation of infected program states [C]// Proceedings of the 17th Interna-tional Conference on Foundation of Software Engineering. Am-sterdam,Netherl:[s.n.],2009:43-52.

[10] BALL T,LARUS J R. Efficient path profiling [C]// Proceedings of the International Symposium on Microarchitecture. Paris,France: [s.n.],1996:46-57.