HI,欢迎来到学术之家股权代码  102064
0
首页 精品范文 集成测试

集成测试

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

开篇:写作不仅是一种记录,更是一种创造,它让我们能够捕捉那些稍纵即逝的灵感,将它们永久地定格在纸上。下面是小编精心整理的12篇集成测试,希望这些内容能成为您创作过程中的良师益友,陪伴您不断探索和进步。

集成测试

第1篇

【关键词】持续集成;集成测试

首先,持续集成和集成测试还是有很大区别,持续集成强调的是自动化的编译构建,部署,自动化的冒烟测试,保证开发过程的产出随时都可以构建一个冒烟测试通过的可用版本。而集成测试则涉及到严格的测试策略,测试方案,集成测试顺序,各个集成功能点的覆盖,详细的功能性测试等。集成测试不仅仅是接口测试,更重要的是以接口质量为前提的跨组件功能性测试。

1.为什么要集成测试

集成测试,也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求组装成为子系统或系统,进行集成测试。实践表明,一些模块虽然能够单独地工作,但并不能保证连接起来也能正常的工作。程序在某些局部反映不出来的问题,在全局上很可能暴露出来,影响功能的实现。

理论上凡是两个单元(如函数单元)的组合测试都可以叫做集成测试。实际操作中,通常集成测试的对象为模块级的集成和子系统间的集成,其中子系统集成测试称为组件测试。

在单元测试和系统测试间起到承上启下的作用,既能发现大量单元测试阶段不易发现的接口类错误,又可以保证在进入系统测试前及早发现错误,减少损失。

对系统而言,接口错误是最常见的错误,单元测试通常是单人执行,而集成测试通常是多人执行或第三方执行。集成测试通过模块间的交互作用和不同人的理解和交流,更容易发现实现上、理解上的不一致和差错。

2.集成测试什么时候开始

在开始体系结构设计的时候开始;

在进入详细设计之前完成集成测试方案;

在进入系统测试之前结束集成测试。

3.集成测试原则

集成测试是产品研发中的重要工作,需要为其分配足够的资源和时间。

集成测试需要经过严密的计划,并严格按计划执行。

应采取增量式的分步集成方式,逐步进行软件部件的集成和测试。

应重视测试自动化技术的引入与应用,不断提高集成测试效率。

应该注意测试用例的积累和管理,方便进行回归并进行测试用例补充。

4.集成测试需要关注以下问题:

4.1 集成测试的可迭代性

在整个软件开发都可迭代的模式下,要意识到集成测试过程本身也是可以迭代的。大型产品集成不应该等待到真正各个子系统或业务模块都开发好才开始集成测试。功能开发的迭代直接驱动集成测试过程也是迭代,同时在每个集成测试周期中最好又分为几个关键点,首先是服务模拟器,其次是替换掉模拟器联调通组件接口,再次测试接口服务中详细实现。

4.2 集成测试的顺序问题

我一直认为这是集成测试中非常关键的一个内容,集成顺序的确定涉及到前期大量的组件间依赖关系分析,业务功能点和接口对应关系分析等。特别是发展到现在,我们发现很多时候组件间不再是以前单纯的单向依赖关系,由于接口服务注册在总线上,导致多个组件间可以相互依赖,所以前面简单的组件依赖分析已经不适用,替代的方法是基于跨组件的流程协同分析,以核心流程驱动组件间的组装顺序。

同时,对于传统的自顶向下集成和自底向上集成方法往往都不能完全覆盖。很多时候采用的都会是混合集成的策略。一个是为了及早的看到集成的效果我们期望从顶向下,但是却需要大量的模拟器和stub桩模块。另外一个是为了减少模拟器,我们从最底层向上集成,但是往往却将风险延迟到最后发现。

4.3 测试全流程的问题

在每个组件或模块的单元测试阶段更加容易实现每日构建和持续集成,持续集成完后应该对每个独立模块进行详细测试,但是测试需要依赖一定的模拟器。在集成测试环境则进入到集成流水线,集成流水线的准入应该是每个组件在单元测试环境都完全测试通过,集成流水线根据组件的集成需求来规划具体的测试计划和测试方案。集成测试过程仍然应该首先是冒烟测试进行准入验证,然后是接口测试,然后是详细功能测试,最终交付到验收。

5.集成测试方法

5.1 非递增式集成测试

所有软件模块完后单元测试后一次集成。

优点:测试过程中基本不需要设计开发测试工具。

不足:对于复杂系统,当出现问题时故障定位困难,和系统测试接近,难以体现和发挥集成测试的优势。

5.2 递增式集成测试

逐渐集成,由小到大,边集成边测试,测完一部分,再连接一部分。

在复杂系统中,划分的软件单元较多,通常是不会一次集成的。

软件集成的精细度取决于集成策略。通常的做法是先模块间的集成,再部件间的集成。

优点:测试层次清晰,出现问题能够快速定位。

缺点:需要开发测试驱动和桩。

5.3 集成测试实现

集成测试在实现方式上和单元测试是一样的,需要根据测试需求设计实现相应的测试驱动和测试桩,同时也可以借助一些工具进行辅助测试。

对我们的系统而言,相对于单元测试,适用的商用集成测试选择面更窄。

实际工作中,各项目开发的模拟工具即属于集成测试工具,但在系统化、灵活性、通用性上尚欠缺,缺乏系统全面的设计。

现有的模拟工具在测试自动化上也需改进,如实现测试数据的自动生成、测试用例的自动运行、测试结果的自动保存和比较等。

所有的软件项目都不能摆脱系统集成这个阶段。不管采用什么开发模式,具体的开发工作总得从一个一个的软件单元做起,软件单元只有经过集成才能形成一个有机的整体。具体的集成过程可能是显性的也可能是隐性的。只要有集成,总是会出现一些常见问题,工程实践中集成测试,几乎不存在软件单元组装过程中不出任何问题的情况。

参考文献

[1]李天日,林宁,高林.基于国产基础软件应用系统的性能测试与优化研究[J].微型机与应用,2010(11).

[2]谢谦,高林,杨建军.国产基础软件标准化与研发、测试、应用[J].信息技术与标准化,2008(06).

[3][美]Paul C Jorgensen.软件测试[M].韩柯,杜旭涛,译.机械工业出版社(2版),2002.

第2篇

作为NVIDIA支持Intel平台的新一代整合芯片组,Geforce9系列芯片组的名字最近一段时间经常被玩家们挂在嘴边。这是因为,采用这款最新芯片组的主板,不但拥有稳定可靠的数据处理能力,而且其在板载显示核心的性能方面,也具备了超越此前整合主板自带板载显示核心的最高水平。伴随着10月中下旬,头一批采用Geforce9系列芯片组主板的面市,Geforce9系列主板终于向期盼已久的玩家们走来了。

为了考察这种主板的性能,尤其是其整合的显示性能到底怎样。我们特意对一款极具代表性的Geforce9系列主板进行了测试。

这款名为P5N7A-VM的主板,出自主板大厂华硕之手。不但做工细腻,而且性能稳定。作为头一批采用Geforce9系列芯片组主板的领军产品,目前它已经成为了很多玩家心中喜爱的宠物。

需要在此指出的是:Geforce9系列芯片组拥有两个不同的版本,它们分别采用GeForce9300和GeForce9400的显示核心。其中,GeForce9400的显示核心拥有更高的Croe和shader频率。不过,在目前面市的这几款产品中,均采用了相对较弱的GeForce9300显示核心。但同时,令玩家们感到欣慰的是:无论是GeForce9300显示核心还是GeForce9400显示核心,它们与目前OEM的同型号独立显卡的产品规格是基本一致的。除了具备比前一代GeForce8200/8300显示核心多出一倍的16个流处理器外,GeForce9300/9400还完全支持AVC和VC-1的硬件解码技术。简单的说,除了显存规格与独立显卡不同外,MCP7A芯片组所采用的显示核心与相应规格独立显卡中的显示核心是基本相同的。

图注:GeForce9400核心与GeForce9300核心的参数对照。从中我们不难看出:两者的差别,主要在Core/ShaderClock一个项目上。GeForce9400核心的标称参数要略高于GeForce9300核心。

与多数评测中使用经济型平台不同,这一次为了全面的考量这块主板的显示效能和数据处理能力,我们使用了IntelCore2QuadQ6600的高端CPU。这样做不但可以将主板的性能充分的发挥出来,同时对于考察主板与Intel高端CPU中,新功能的兼容性也很有帮助。在测试系统中,我们分别还使用了主流的Kingston2GBDDR2-800的内存和希捷的320G硬盘。此外,在本次测试的过程中,我们使用了主流的WindowsVista32位版本的操作系统。测试分为权威3D软件测试、主流游戏测试和针对主板性能的基本测试三个部分,用以分别考察这款主板的板载显示性能和主板自身数据传输的处理能力。为了确保成绩准确,我们在搭建测试平台时,只安装了主板自带光盘中的驱动程序。同时,测试系统除安装有测试用的软件工具及游戏外,没有安装任何其他的优化软件和功能性应用软件。仅从安装操作系统上看,这款Geforce9系列的主板就表现出了良好的兼容性能。安装过程非常顺利,而且主板自带的安装光盘中,还设计有华硕独有的节能控制软件。这个软件的操作非常的简单,但可以根据系统的工作情况,对主板的能耗进行全面的控制。

接下来,就让我们看一下这块主板中的显示核心在权威测试软件中的具体表现吧。

第3篇

关键词:半实物仿真;虚拟仪器;Labview;高速磁浮;仿真测试

中图分类号:TP391.9 文献标识码:A文章编号:1009-3044(2010)22-6290-02

Study on Test Platform Integrated Simulation System for High-Speed Maglev

XIONG Zhi-jie

(Department of Software Engineering, Tongji University, Shanghai 201804, China)

Abstract: Based on the performance study and combined with the HIL simulation and virtual instruments technology, it is proposed a method for hybrid test of integrated simulation system for High-Speed Maglev. The test device is designed, which could reproduce the various running status of the Maglev system in the laboratory and carry out an integration testing on the system based on the manual testing data and the automatic testing case. The test device has been applied on Tongji University, with excellent results.

Key words: HIL simulation; virtual instrument; Labview; high-speed maglev; simulation testing

1 概述

半实物仿真又称硬件在回路仿真(Hardware-In-the-Loop Simulation,HILS),是指在条件允许的情况下尽可能在仿真回路中接入实物。以实体取代相应部分的数学模型,这样更接近实际情况,从而得到更确切的信息。这种仿真实验将对象实体的动态特性通过建立数学模型、编程,在计算机上运行。由于在回路中接入实物,因此对仿真过程有“实时实地”的要求。即半实物仿真不仅需要实时运行,还要在相应的模拟环境下运行。

随着经济的发展和人口规模的不断扩大,城市交通问题日趋严峻,已经成为世界范围内重点研究解决的问题。而高速磁浮交通因为其客运量大、周转量大、速度极快、安全性能高、受干扰小等优点,已经成为城市交通问题的首选方案。

中国磁浮列车在上海从2000年开始建设到投入运营,发展至今已经有10年的历史了,如果一直依靠国外厂家进行建设,不但在经济上将难以承受,也对国内磁浮产业的发展不利。而且德国的测试技术是基于人工的手动测试,其操作难度大,同步性要求高,效率低下,已经无法满足目前技术发展的需求。因此,吸收和消化国外先进技术,自主研制一套能对磁浮系统进行综合测试和评价的装置成为当务之急,也是为进一步建设磁浮打基础。

2 系统简介

高速磁浮半实物仿真集成实验系统是一套以28km实际工程线路为应用背景,由核心控制系统、关键设备和仿真环境构成的半实物高速磁浮交通系统技术集成实验系统,并对系统功能、性能、接口等相关集成技术进行实验研究的系统。该集成实验系统针对28km实际线路及一列车、二个分区和双端供电等工况,实现对整个高速磁浮交通运行控制及牵引控制系统进行RAMS(可靠性、可用性、可维护性和安全性)设计、系统及部件功能规范、系统及部件接口和系统及部件性能的试验,并对其进行环境故障注入条件下的系统功能和性能的测试和验证。系统总体架构图如图1。

3 仿真测试原理

本测试系统是半实物仿真技术在高速磁浮交通和测试领域的应用,是一个半实物仿真测试系统。根据高速磁浮系统的工作原理及其各子系统结构,本仿真测试平台作为整个半实物仿真系统上层的一个测试管理平台,通过对系统所有仿真设备的状态监控和故障注入、测试案例的操作实施,与半实物仿真系统中的仿真设备一起实现对系统主体设备运行控制系统和牵引控制系统的功能、性能、接口等的测试验证。

从技术角度来说,就是以计算机为控制核心,包括高速数据采集卡、信号调理电路以及一整套的软件系统,通过数据流监控、检测、控制、管理整个被测系统,通过LabVIEW图形界面监控被测系统所有需要监控的信号,通过收发数据包实现故障注入、案例测试,通过读取测试结果数据判定被测系统的性能优略、部件是否正常。半实物仿真技术既考虑了高速磁浮系统的复杂性,又结合了软件在测试方面的强大功能,实现了软件和硬件的有机结合。

4 系统硬件实现

本系统是针对磁浮系统的动态特性(要求同步误差小于0.2毫秒),并对其关键部件提供控制、监视、数据采集、显示等功能的仿真测试平台。从系统设计角度讲,半实物仿真系统应当具有面向不同工业系统,不同控制规律的仿真能力;从软件开发角度来讲,它应当具有多变量、多参数的处理能力;同时作为半实物仿真的扩展,它能够与其他硬件部件之间进行实时或非实时的通信。其核心硬件设备为两台IBM X系列服务器,一台作为应用系统服务器,另一台作为数据库系统服务器,但每台服务器都安装应用系统和数据库系统,构成服务器集群,两台服务器互为冗余,当一台服务器出现故障,立即启用另一台服务器的备份功能,这样系统就可以持续运行。仿真测试系统硬件框架图如图2。

5 软件设计

软件系统的开发平台是windows2000 server操作系统和Labview虚拟仪器软件开发环境,数据库为Oracle。系统的软件设计采用由上至下的设计方法和模块化的设计思路,即首先根据测试系统的总体方案需求,确定软件系统的总体框架;然后根据所需的不同功能划分各种功能模块,并分别设计实现各个功能模块;最后再将各个功能模块进行集成和调试,完成整个软件系统的设计与实现。

首先,本系统采用J2EE架构,引入JSF 和 Hibernate框架,形成表示层、控制层、业务层、持久层和数据层五层的实施构架。

其次,根据案例测试方法的特点及要求,开发一个B/S构架的案例测试控制系统,案例测试人员通过浏览器登录系统,然后在登录后的界面上进行编制案例、保存案例、执行案例等操作。客户端通过向服务器端发送请求,服务器根据相应请求,将该界面返回给测试人员,同时后台与数据库服务器相连,提供数据支持。测试系统主操作界面如图3。

最后,根据手动测试方法的特点及要求,开发一个基于Labview的手动测试及数据监控子系统,在软件编写中,完成各子系统功能的程序,将其做成子模块。当然每个模块也可以由更小的模块组成。车辆系统Labview程序框架图如图4所示。

6 动态测试

本系统运行时,通过主程序操作界面及Labview监控操作界面,向仿真测试系统发送控制指令,使高速磁浮半实物仿真集成系统再现列车正常运行时的牵引、供电、控制等工况,并及时采集并储存各种实时数据,实现对系统中实物设备的检测,通过被测系统向测试系统发送的工况信号与即成案例测试数据进行比对,判断高速磁浮半实物仿真集成系统各模块、各接口、各设备能够正常工作。

7 结束语

高速磁浮半实物仿真集成系统测试时所运行的仿真环境与28km实际工程线路条件下的列车实际运行环境等效,测试结果与在线状态时基本相符(局部实验数据与预先计算数据有偏差,有待进一步研究实验),这为高速磁浮的建设和运行提供了非常有用的资料。本测试系统已成功在同济大学磁浮研究中心投入实验。

通过对系统的仿真测试,可以方便地得到实物系统在不同环境下的仿真模型的运行状态,测试结果可以为进一步的磁浮研究提供重要的数据来源,而且可以为沪杭磁浮建设提供重要的实验数据。为今后中国高速磁浮的发展提供非常多的实验数据。

参考文献:

[1] 吴详明.磁浮列车[M].上海:上海科学技术出版社,2003.

[2] Cem Kaner,Jack Falk,Hungary Quoc Nguyen.计算机软件测试[M].北京:机械工业出版社,2004:40-100.

[3] Robert Edition.LabVIEW8 Student Edition[M].北京:电子工业出版社,2008:1-100.

[4] Mansoor S P,Jones D I,Bradley D A.HARDWARE-IN-THE-LOOP SIMULATION OF A PUMPED STORAGE HYDRO STATION[J].International Journal of Power and Energy Systems,2003,23(2).

[5] 程隆华,方海清.上海地铁一号线车辆牵引(制动)数学仿真计算[J].上海铁道学院学报,1999(15).

第4篇

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

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

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.

第5篇

关键词:数字;集成电路;构成;系统;测试技术

高新技术的快速发展,带来的是产品质量的提升和成本的降低。对于现阶段的工作而言,测试的具体流程、测试的具体方法,都对产品的质量和成本产生了较大的影响。数字集成电路系统作为现阶段的主流系统,其基本的构成涉及功能的实现,其测试技术的进步涉及产品的质量和生产效率。为此,在分析数字集成电路系统的过程中,需要在不同的模块,投入相应的时间和精力,完成系统的阶段性进步。在此,本文主要对数字集成电路系统的基本构成与测试技术展开讨论。

1数字集成电路系统基本构成

数字集成电路系统在目前的应用是比较广泛的,其在很多方面都具有较大的积极作用。随着时间的推移,现有的数字集成电路系统,集合了过去的很多优点,在多方面均表现出了较大的积极作用。从构成来看,数字集成电路系统主要是将元器件以及连线,有效地集成于同一个半导体的芯片之上,从而完成的数字逻辑电路或者系统。在划分数字集成电路系统的过程中,可根据数字集成电路中,包含的具体门电路、具体的器件数量,划分为小规模的集成电路、中规模的集成电路、大规模的集成电路等。

数字集成电路系统在组成方面主要包括2个内容,分别为组合逻辑和寄存器(触发器)。组合逻辑经过分析后,发现其是由基本门组成的一系列函数,在输出的工作中,仅仅与当前的输入具有密切的关联。倘若表现为组合逻辑,那么在运行的过程中,就只能完成逻辑的运算。在时序电路方面,除了包含基本门之外,还包含存储元件用例,保存过去的信息。因此,时序电路的稳态输出,不仅仅与当前的输入具有密切的关系,同时还与过去的输入所形成的状态具有比较密切的关系。在时序电路方面,其在有效完成逻辑运算的同时,还可以将具体的处理结果进行暂时的存储,以此对下一次的运算提供便利。

2数字集成电路系统测试技术

对于数字集成电路系统而言,其在目前的发展中,除了基本构成不断丰富外,测试技术也在很大程度上取得了提升。目前,数字集成电路系统的测试技术广泛应用于各个领域,不仅获得了较多的数据和资料,同时在多方面实现了数字系统本身的进步。

2.1功能测试

在数字集成电路系统的测试技术当中,功能测试是比较重要的组成部分,其在很多方面都具有较大的积极作用。从客观的角度来分析,功能测试的实施,其目的在于验证电路的设计和使用是否完成了预期的效果。功能测试在开展时,其基本过程如下:(1)从输入端施加若干的激励信号,也就是常说的测试图形。(2)在操作当中,需要按照电路规定的具体频率,有效地施加到被测试的器件当中,这一操作需要仔细进行,避免出现任何形式上的纰漏。(3)要根据两者的相同情况、差异情况等,对具体的数据和信息进行分析,以此来更好地判定电路功能是否达到了正常的状态。

测试图形在应用过程中是检验器件功能的重要途径,获得了业内的高度认可。从理论上来分析,一个比较好的测试图形,本身所具有的特点是非常突出的:(1)测试图形必须具有较高的故障覆盖率,这样才能更好地测试不同类型的故障。(2)测试图形必须具有较短的测试时间。以往的测试花费大量的精力和时间,得到的结果却不精确。因此,针对测试图形的测试时间,要求是比较严格的。(3)测试图形必须针对被测器件的故障、工艺缺陷进行检测,提高被测器件的功能测试准确度。

由此可见,在功能测试过程中,测试电路的具体质量,会与测试矢量的精度具有比较密切的关系。例如,组合电路测试生成算法,其主要包括穷举法、代数法等等。可根据实际的需求,选择合理的方法来完成。

2.2直流参数的测试

数字集成电路系统的测试技术还能够针对较多的重要指标,完成相应的测试工作。直流参数的测试是目前比较关注的问题。从测试技术的角度来分析,直流测试是用来确定器件点参数的稳态,确保器件可以更加稳定的运行。从方法上来分析,直流参数的测试方法比较多样化,目前常用的包括接触测试、漏电电流测试、转换电平测试等。

接触测试在应用过程中,虽然操作比较简单,但需要在细节上有所把握。例如,该测试在具体的应用当中,需要充分的保证测试的接口与器件可以正常的连接。同时,在测量输入和输出方面,应根据管脚保护二极管的具体压降情况,观察连接性是否达到了标准的要求。如果要求未满足,则要重新连接。

漏电测试是一种比较特殊的测试方法,其在应用过程中表现出了很大的优异性。在实际的工作当中,漏电流的出现,主要是由于器件内部和输入管脚之间出现了问题,多数情况下,二者的绝缘氧化膜在生产过程中,表现为特别薄的状态,进而引起了类似短路的情况。最终,导致电流通过,形成漏电流。漏电测试的方法会针对该项参数的具体测试,以此来更好地对器件输入、输出的负载特性进行较好的分析,实现从源头测试。

转换电平测试在目前的应用中,隶属于针对性较强的一类测试方法。转换电平测试在应用当中,会通过反复的运行功能测试的方法,针对导致功能测试失效的临界电压值进行测试和分析,确定转换电平。从技术上来分析,转换电平测试的应用,在很多方面都充分反映了器件抗噪声的能力水平,是一项非常重要的测试技术。

2.3交流参数的测试

数字集成电路系统在现阶段的研究中,获得了很多的积极成果,将成果广泛应用,实现了测试技术的较大提升。交流参数的测试,是数字集成电路系统测试技术的重点表现,其在很多方面都是非常重要的一项指标。

从具体的测试层面来分析,交流参数的测试工作主要是测量器件晶体管转换状态时所表现出的时序关系。执行该项测试的目的在于,确保器件能够在规定的时间内发生正常的状态转换。操作过程中,比较常用的交流测试方法、包括传输延时测试的方法、建立和保持时间测试的方法等。

3测试技术的应用

数字集成电路系统在基本构成获得不断的深化后,测试技术也获得了较大的提升。二者互相辅助造成了良性循环,并且创造出了较大的价值。相对而言,测试技术在获得了深化后,应在具体的应用上作出足够的努力,仅仅在理论上进行研究,并不能创造太多的价值。我国目前对技术的研究是非常重视的,很多工作都达到了较为重要的阶段。数字集成电路系统测试技术作为影响多领域发展的重点技术,必须得到广泛的应用。

例如,现在使用的泰瑞达(Teradyne)公司生产的J750,HILEVEL生产的ETS770。这些都是非常先进的半导体自动测试系统。其中泰瑞达可为半导体电路提供测试解决方案,它拥有模拟、混合信号、存储器及VLSI器件测试所有领域的测试设备。并且该机器是低成本高性能并行测试机,采用windows操作系统,人机界面友好、简单;基于板卡的硬件架构,维护性好;配上MSO,基本能满足SoC的测试需求,有着较高的测试性价比。而HILEVEL生产的ETS770的优点是器件可以通过测试小板很方便地与测试系统相连,并且可以实现对芯片进行快速的逻辑功能验证,测试编程界面全为窗口式,快速简捷,易于掌握。总之,每个测试系统都有各自的硬件配置和程序开发环境,需要测试工程师根据每个测试器件的逻辑结构和电特性制定合理的测试流程,最大限度地发挥每个测试系统的资源优势。

由此可见,数字集成电路系统测试技术在应用层面,表现出了较大的积极作用,总体上创造出的价值是非常值得肯定的。今后,应该在多方面针对数字集成电路系统的基本构成,针对测试技术,开展深入的研究。一方面要不断地健全数字集成电路系统的基本组成,丰富内容;另7y面需健全测试技术体系,从多个方面来提高技术的功能性和可操作性。

第6篇

关键词:ISO 26262;汽车电子;测试

DOI:10.3969/j.issn.1005-5517.2013.4.005

ISO26262标准概述

功能安全标准(ISO26262)是从电子、电气及可编程器件功能安全基本标准IEC61508派生出来的,主要定位在汽车行业定的电气器件、电子设备、可编程电子器件等专门用于汽车领域的部件,旨在提高汽车电子、电气产品功能安全的国际标准。

ISO26262从2005年11月起正式开始制定,经历了大约6年左右的时间,已于2011年11月正式颁布,成为国际标准。中国也正在积极进行相应国标的制定。

ISO26262主要内容包括:

·提供了汽车生命周期(管理,研发,生产,运行,服务,拆解)和生命周期中必要的改装活动。

·提供了决定风险等级的具体风险评估方法(汽车安全综合等级,ASILs)。

·使用ASILs方法来确定获得可接受的残余风险的必要安全要求。

·提供了确保获得足够的和可接受的安全等级的有效性和确定性措施。

功能安全受研发过程(包括具体要求,设计,执行,整合,验证,有效性和配置),生产过程和服务流程以及管理流程的影响。

安全事件总是和通常的功能和质量相关的研发活动及产品伴随在一起。ISO26262强调了研发活动和产品的安全相关方面。

符合性要求

1)如果要宣称符合ISO26262,那必须是符合其每个要求,除非有如下情况之一:

·根据ISO26262-2中,对不适用的要求进行安全行为的裁剪:

·针对不符合项,提出其说明理由,并对理由根据ISO26262-2进行评估:

2)所有安全行为的输出物都在ISO26262中有明确的规定。

3)下文中出现的列举各测试方法的表中,有不同的序号表示方法:

·连续的序号,比如1.2.3:所有的方法应被用于对应的ASIL等级,如果出现所列表中之外的方法背用于测试,则需要进行说明。

·可选的序号,比如1a,1b,1c:可以选择某个或多个方法进行测试,并优先考虑更高推荐指数的方法。如果多个方法被组合选择用于测试,则需要进行说明。

4)针对ASIL的各级,表中的每个方法都有对应推荐指数:

·“++”:最高的推荐指数

·“+”:建议使用

·“0”:不建议使用或不需使用

测试概述

ISO 26262-8中的第9节描述了“Verification”的目标、要求和建议、工作输出等。Verification是用于确保实现与需求的一致性,在安全生命周期的几个阶段中都会用到。包括概念阶段、产品开发阶段、生成和运营阶段。本文主要描述在产品开发阶段中的测试环节中,需要用到的各种测试要求和建议。

测试计划

1)在测试执行前,都需要建立测试计划,其主要包括几部分:

·测试范围:用于测试的产品内容:

·测试方法:用于测试的各种方法:

·测试标准:测试通过或失败的标准:

·测试环境:如果需要用到各种测试环境,比如仿真环境等,需要进行说明:

·测试工具:用到的各种测试工具:

·出现异常后的对策:

·回归策略:在测试对象发生变更时,指定其如何进行回归测试,比如全部回归、部分回归、和其他测试案例一起回归等。

2)测试计划的制定还需考虑到以下几个方面:

·测试方法的完整性:

·测试对象的复杂度:

·测试经验:

·测试技术的成熟性和风险。

测试规格

1)测试规格需要选择和指定用于测试的方法,并包括测试案例、测试数据和测试对象。

2)每个测试案例需要包括:

·序号:唯一的ID

·测试对象的版本号

·测试对象的条件和配置:针对测试对象的不同配置,需要选择合理的测试案例进行测试

·测试环境

·输入值和顺序

·期望行为:报刊输出值、输出范围、功能表现等

3)测试案例需要根据测试方法来分类。针对每个测试方法,除了测试案例外,还需考虑以下几方面:

·测试环境:

·相关性:

·测试资源。

测试执行和测试报告

4)按照上述章节中制定的测试计划和测试规格,进行测试的执行。

5)针对测试结果,其测试报告需包括以下几个方面:

·测试对象的ID:

·测试计划和测试规格的引用:

·测试环境、测试工具、标定数据:

·测试结果和期望值的符合度:

·测试通过或失败的结论,如果失败,还需要指明失败原因和修改建议:

·针对没有执行的测试案例,说明原因。

ISO26262中的测试阶段

ISO26262中涉及到测试的阶段共包括“硬件集成和测试”、“软件集成和测试”、“产品集成和测试”这三部分。下面章节分别介绍这三部分的要求和建议。

硬件集成和测试

ISO26262中“Part 5:ProductDevelopment:HardwareLevel”针对产品开发的硬件部分提出了专门的集成和测试要求和建议。

1 硬件集成和测试需要按照安全计划和验证要求来按计划进行:

2 硬件集成和测试需要按照产品集成和测试计划来进行:

3 针对变更,需要按照标准规定中的变更管理来对测试策略进行影响分析:

4 测试的设备可以按照国际标准(比如ISO17025)或公司标准来进行标定:

5 硬件集成测试的测试案例需要按照表1的方法进行设计:

6 针对硬件安全需求,硬件集成和测试需要对其安全机制实现的完整性和正确性进行验证,其方法如表2所不。

7 硬件集成和测试需要按照表3的方法进行外部压力环境下的鲁棒性测试。

软件集成和测试

软件单元测试

软件单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。ISO26262中规定了其相对应的要求和建议:

1 软件单元测试需按照“ISO26262-8节9中”的验证要求来有计划的定义和执行。软件单元测试的对象是具体的软件实现单元,在基于模型的软件开发过程中,软件单元测试的对象是其单元模型。

2 软件单元测试需要按照表4中列的方法进行,以完成以下目标:

·检查是否符合软件单元设计的具体要求:

·检查是否符合软硬件接口要求:

·检查功能是否正确实现:

·检查是否有异常功能:

·检查软件实现的鲁棒性,比如错误处理效率等:

·检查功能所需资源的完整性。

3 软件单元测试中的测试案例需要按照下表5中的方法进行分析设计。

4 软件单元测试中,对于需求的覆盖度、代码的覆盖度都需要进行衡量,具体方法如表6所示。如果覆盖度不够,还需要增加其他测试案例。

·代码的覆盖度都可以借助一些软件工具来实现:

·如果是基于模型的开发,其软件单元测试需要利用类似的模型的结构化覆盖指标来衡量:

·如果通过代码的打桩来进行测试覆盖度的衡量,必须保证打桩的代码和正常的代码的执行功能是一致的:

·对于覆盖度衡量目标,都需要给出一个合理理由来表示其不同的级别,对于无法覆盖的代码,可以通过检查等其他方法来进行验证。

5 软件单元测试需要尽可能的在真实的目标环境上执行,如果利用其他环境,则需要评估其与真实环境的差异、源代码和目标代码的差异,分析设计测试案例,以便在接下来的测试阶段中得到执行。

·测试环境的不同,会导致源代码或目标代码的不一致,比如不同处理器的位数不一样,会导致编译后的目标代码不一致。

·如果能利用目标环境中的相同处理器来运行软件单元测试案例,那是最有效的,但如果不行,则可以用处理器模拟器来代替,否则软件单元测试只能在开发系统中进行测试。

·软件单元测试可以在不同的环境中执行,比如模型在环测试(MIL)、软件在环测试(SIL)、处理器在环测试(PIL)、硬件在环测试(HIL)等。

·在基于模型的开发系统中,软件单元测试可以在模型级别进行,但模型与代码的执行比较测试必须要做,以保证模型与自动生成的代码的结果一致性。

软件集成和测试

软件集成和测试主要对实现的各软件模块进行集成,并验证其嵌入式软件实现是否符合软件架构设计。该阶段的要求和建议如下:

1 软件集成计划应该描述层次化的集成单个软件单元进软件组件中,直到嵌入式软件完全集成,并且应该考虑如下:

·软件集成功能的相互关系:

·软件集成和软硬件集成的相互关系。

注意:对于基于模型的开发,可以先集成各模型,然后对集成好的模型进行自动代码生成以完成整体软件的集成。

2 软件集成测试根据ISO26262-8:2011,第9节计划,定义并且执行。软件集成测试的测试对象是软件组件。对于基于模型的开发,测试对象可以是和软件组件相关的模型。

3 软件集成测试需要按照表7的方法进行,以完成以下目标:

·检查集成的软件是否和软件架构设计一致:

·检查集成的软件是否满足软硬件接口规格:

·验证功能的正确性:

·检查其鲁棒性,比如错误检测、错误处理机制的有效性:

·检查是否有足够的资源来支持。

4 测试案例需要按照表8中的方法进行分析设计。

5 对于软件架构级别的需求测试覆盖度,可以用来衡量测试的完整性,以及用于证明没有设计之外的功能实现。如果有需要,可以增加新的测试案例,或者提供一个合理的理由说明。

6 为了评估测试案例的完整性,同时确保没有多余的功能,根据表9列出的指标需要衡量出其结构覆盖率。如果覆盖率不够高,要么需要添加额外的测试案例,或者提供一个合理的理由说明。例如,结构覆盖率的分析可以用于发现测试案例的不足、无用代码、无效代码或者多余功能等。

·结构覆盖率可以利用工具计算出来。

·如果是基于模型的开发,结构覆盖率可以通过模型级别的模型结构覆盖率来统一计算。

7 作为产品的一部分,嵌入式软件需要被验证其包含设计的所有功能。如果嵌入式软件包含了设计之外的功能(比如用于调试的代码),则这些功能需要被验证是不影响软件的安全需求的。如果这些设计之外的功能在真实产品中保证不会被激活执行,那也是符合这个要求的:否则删除这些功能,也需要按照需求变更流程来统一处理。

8 软件集成测试需要尽可能地在真实环境中运行,如果不行,则需要评估测试环境与真实环境的差异性,并针对这些差异,在后续的阶段的真实环境的测试中设计专门的案例来执行。

·测试环境的不同,会导致源代码或目标代码的不一致,比如不同处理器的位数不一样,会导致编译后的目标代码不一致。

·针对各种测试,需要建立合适的测试环境。比如目标处理器的测试环境、仿真处理器的测试环境、开发测试环境等。

·软件集成测试可以利用模型在环测试(MIL)、软件在环测试(SIL)、处理器在环测试(PIL)、硬件在环测试(HIL)等测试手段进行测试。

软件安全需求验证

本阶段的目标是验证嵌入式软件符合软件安全需求,其所规定的要求和建议如下:

1 软件安全需求的验证需要制定计划,定义再执行。

2 为了验证嵌入式软件实现了软件安全需求,表10列了所需的测试环境。注意:已有的测试案例,例如在软件集成测试阶段使用的可以重用。

3 对于软件安全需求实现的测试需要在目标硬件平台上完成。

4 软件安全需求验证的结果需要考虑下面这些因素来评估:

·和预期结果一致:

·软件安全需求的覆盖率:

第7篇

【关键词】 Android 持续集成 自动化测试

随着近年的移动互联网发展,Android智能终端操作系统,逐渐成长为唯一能与iOS系统抗衡的对手,而其在用户基数上还要超过iOS,因此也带来了Android平台的应用开发热潮,其相关技术也成为热门的发展方向。

作为Android平台的软件开发项目,有着传统PC软件开发项目的一些共性,又有身为移动端应用的自身特点。

一、应用软件开发过程与自动化持续集成的关系

移动互联网中的移动应用开发项目越来越多,而所有的项目都要经历从产品需求、软件开发到交付用户使用这一工作流程,如图1所示。从工作流程来看,软件测试在移动应用软件开发项目工作流程中的作用是不可或缺的,移动应用软件开发项目交付用户使用过程中必须经历软件系统测试。

我们实验项目中的持续集成由监控的SVN代码主干或分支的CI动作触发,主要解决软件开发到软件系统测试之间的效率问题,追求的是开发人员和测试人员间近乎零时间开销的交付,从而使软件项目中最重要的两个角色都能更专注自己的工作,从繁复的版本交付中出解放出来。

实现持续集成需要做的工作如下:1)统一代码配置管理。本文的持续集成实践,项目代码管理使用的是Subversion开源版本控制系统。2)将开发代码转变为可用于测试的APP安装包,主要包括开发Python脚本、编译打包、签名、构建安装包这几个重要环节。3)使用Android 提供的monkeyrunner 实现APP的自动化测试。4)使用Hudson 进行持续集成工作的管理。

二、持续集成的实现

2.1 Subversion的部署

SVN选择Apache HTTP 服务器。规划的SVN项目代码的目录结构如图2所示。

其中:trunk分支为项目持续集成分支;tags 分支为项目版本的代码里程碑分支;branches分支为各种验证性及临时代码分支。

2.2 APP for Android 安装包的构建

首先配置Android开发环境,选取适当的SDK版本;再.用Python脚本实现:1)为项目源代码建立android工程目录;2)用Ant编译工程目录,根据需要产生Debug 或Release 安装包;3)为Release安装包签名;4)对最后的安装包进行验证,来执行自动化整合。

三、持续集成工具---Hudson的部署

先在Ubuntu安装Hudson,然后在Hudson中根据项目需求建立工程:1)实现对项目SVN版本库的监控,设置为开发人员代码提交触发,使每一次的功能提交,都会有对应的可状态安装包交付测试;2)在建立的工程项目中根据项目需求,调用自动化脚本组,实现不同的持续集成需求。

四、实践结果

上述持续集成方案应用前后同工作量时间开销对比如图3所示。应用前使用手动操作集成,含有开发人员与测试人员沟通耗时、手动输入命令耗时、编写邮件耗时、记录及存储测试包耗时等碎片时间;应用后无碎片时间。实践结果表明,该方法能够有效提升测试工作效率,大幅度缩减测试时间,减少测试工作的重复劳动,更重要的是把开发人员从项目编译到送交测试的活动中解放出来,使开发和测试人员更好的专注本职工作,提高了团队的研发效率。

参 考 文 献

[1] 宋春雨.Android平台自动化测试的研究与实践[D.北京:北京邮电大学,2012.

第8篇

测试测量仪器被广泛应用于电子设备行业,其用户也涵盖了包括消费电子、汽车、国防、教育、政府、半岛体制造、通信等诸多行业。目前全球测试测量市场可分为三个领域。即:通信测量市场、自动测试设备/半导体和通用测试设备市场。

通信测量是测试测量市场的重要组成部分,它又可细分为有线通信测试和无线通信测试。2005年该领域已有逾50亿美元的市场收入,约占整个测试测量市场的37%。其中有线通信测试市场收入约30亿美元,而无线通信则有26亿美元的收入。近年来,3G标准在世界范围内的推广,特别是中国3G标准的推出及商业测试在中国的试水,为通信测试市场的增长提供了强劲而持久的拉力。赛迪顾问预测,未来3年内,通信测试市场领域将以5%的复合增长率增长。其中有线通信测试市场年均复合增长达到3%,而无线通信测试市场随着3G标准的推广受到多媒体通讯、网络游戏、移动网络、蓝牙等多元化产品的带动,其复合增长率预计达到8%。

自动测试(ATE)/半导体市场是一周期性领域。它会随着半导体行业的变化而经历周期性的市场好转与恶化。ATE/半导体市场可细分为以下几种类型:模拟/线性器件测试一其中,模拟测试用来特性化测试集成电路的模拟功能。线性器件测试则是用于测试线性集成电路。数字/逻辑测试一共享资源测试,每个管脚有独立测试资源的测试系统。用来特性化测试集成电路的逻辑功能。存储器测试-DRAM测试,闪存测试。这些类型的自动化测试设备主要用于验证内存芯片。混合信号测试~这种类型的系统资源用来测试集成电路的模拟及数字功能。RF/微波测试一主要用于射频集成电路的测试。SoC测试―是一种昂贵的混合信号集成电路测试系统,用来测试超大规模集成电路(VLSI)芯片,而VLSI芯片的集成度明显高于传统的混合信号芯片。

在自动测试/半导体领域,主要有以下厂商:Advantest(爱德万)、Teradyne(泰瑞达)、Verigy、Credence(科利登)、LTX、Eagle、Youkogawa(横河)。其中爱德万是自动测试/半导体领域的领先者,主要做存储测试。而泰瑞达则在SoC领域遥遥领先。

通用测试是一个相对广泛的测试测量应用领域。其产品主要包括有示波器、频谱分析仪、信号发生器、逻辑分析仪、任意波形发生器、万用表、网络分析仪等。在通用测试领域也不乏世界级的测试测量厂商。赛迪顾问研究数据显示,2006年通用测试仪器市场TOP10厂商如表1所示。

从表1中可以看出,安捷伦占据了该领域的龙头地位,而其它10强厂商也分别在各细分市场领域牢牢把握领先优势。如泰克在示波器市场占据第一,而爱德万则在存储器试测市场具有传统的优势。从国别来看,通用测试市场主要被美国、日本、德国三国长期占据,而美国又在该领域占据了绝对的主导地位。

另外,如图1所示,TOP10厂商占据了通用测试领域81%的市场份额。可见,在通用测试领域,市场集中度相对较高。这主要是由于该领域对产品研发技术要求较高,需要大量的人力、财力资源的投入,同时也受到技术持续创新能力,知识累积的限制,形成较高的行业进入壁垒。

图2是通用测试市场按产品销售份额的分布情况,从图中可以看出,示波器、频谱分析仪和信号发生器是通用测试仪器领域的主力产品,共占据了三分之二的市场份额。而示波器更是该领域的拳头产品,仅此一类就占据了三分之一的份额。

赛迪顾问认为,受测试测量仪器数字化、智能化发展趋势的影响,及近年来数字电视、消费电子等市场迅猛发展所起到的带动作用,未来3年,通用测试市场将以4.6~5.3%的增长率稳步增长。

第9篇

艾科半导体的主要业务是集成电路测试服务及射频测试设备的研发、生产及销售业务。以2015年9月30日为评估基准日,艾科半导体100%股权评估值为10.80亿元,增值率为181.16%。大港股份表示,本次交易完成后,上市公司将迅速切入集成电路测试服务领域,该业务将成为上市公司主要的营业收入和利润来源之一。

不过,《证券市场周刊》记者发现,有两家公司不仅是艾科半导体的前五大客户,还多次出现在其前五大供应商名单中。而且,双方彼此披露的采销数据竟有数百万元出入,艾科半导体销售数据的真实性存疑。

2015年,A股同类上市公司业绩多数出现不同程度下滑,艾科半导体业绩承诺能否兑现有待时间检验。

一饰多角 采销数据“掐架”

根据草案,2013年、2014年、2015年1-9月,艾科半导体分别向上海行森电子科技有限公司(下称“行森电子”)采购商品1691万元、1569万元、928万元,占比分别为26.21%、7.28%、7.67%;另外,2013年行森电子还为艾科半导体贡献销售收入1085万元,占比为15.37%。

对此,艾科半导体解释称:2013年,艾科半导体向行森电子销售一批贸易类测试设备,当时艾科半导体希望竞标无锡实训基地的设备采购订单,但因不具备政府招投标的资质,因此与行森电子合作,由行森电子作为主体去投标,艾科半导体负责设备的采购;行森电子主要从事测试设备业务,是国际知名测试设备制造商泰瑞达和致茂在中国内地的商,具备参与政府采购招投标资质,为艾科半导体长期合作的设备供应商。

行森电子在工商信息系统中披露了2013年、2014年年报:2013年行森电子资产总额为2300万元,所有者权益合计为96万元,营业收入、净利润均为零;2014年资产总额为556万元,所有者权益合计为94万元,营业收入、净利润分别为30万元、-6万元。

由此可见,2013年、2014年行森电子披露的收入与艾科半导体对其的采购数据存在上千万元的差异。

无独有偶,北京信诺达泰斯特科技有限公司(下称“信诺达”)及其控股子公司也分别出现在艾科半导体的前五大客户、供应商名单中,但艾科半导体在草案中对两者关系只字未提。此外,即便考虑增值税因素,两者公布的采销数据也有数百万元出入。

收购草案显示,2013年艾科半导体向信诺达采购了1400万元商品。Wind数据显示,信达诺与艾科半导体业务相近,主要从事集成电路测试系统的研发设备研发、生产与销售,为新三板挂牌公司。信诺达2013年年报显示,2013年信诺达向艾科半导体销售收入仅为838万元,较艾科半导体披露的“1400万元”少562万元。

另外,2015年1-9月,艾科半导体第二大客户杭州芯测科技有限公司(下称“杭州芯测”)为信诺达持股95%的控股子公司。2015年1-9月,艾科半导体向杭州芯测的销售(产品)金额为2376万元,占比为15.07%。

业绩承诺能否完成有待考证

不到三个月的时间,大港股份的业绩发生骤变。

大港股份在1月15日2015年度业绩预告修正公告,预计2015年“归属于上市公司股东的净利润”将亏损1500万元-2000万元;而其在2015年10月28日披露的三季报中曾预计“2015年度归属于上市公司股东的净利润变动区间为1926万元-3082万元,较上年同期下降20%-50%”。

而此次交易对手方王刚、艾柯赛尔承诺,艾科半导体2015-2017年实现的经审计扣非后净利润分别为6500万元、8450万元和10450万元。按此承若,此次重组一旦完成,大港股份将轻松扭亏为盈。

大港股份表示,根据对国内集成电路行业市场发展的预测,在收购艾科半导体后,公司拟将集成电路测试业务作为主导产业进一步加大投资。因此,公司将使用6.9亿元本次募集的配套资金投资于艾科半导体的测试产能扩充项目。

据了解,艾科半导体“测试产能扩充项目”包括“镇江市集成电路产业园建设项目”和“上海集成电路测试研发中心项目”,艾科半导体预计“镇江市集成电路产业园建设项目”建成以后第二年将新增销售收入10754万元,实现净利润4605万元;“上海集成电路测试研发中心项目”建成后预计1年达产,正式建成以后第二年的集成电路测试相关业务将会新增12945万元销售收入,净利润将达到5543万元。

倘若按照艾科半导体的业绩承诺计算增长率,2015-2017年,艾科半导体扣非后净利润将分别同比增长43.81%、30%、23.67%。艾科半导体表示,集成电路行业预计还将继续保持持续增长的态势,其测试服务厂商也将面临良好的发展机遇,市场前景广阔。

事实果真如此吗?

《证券市场周刊》记者发现,晶方科技(603005.SH)、通富微电(002156.SZ)等同类上市公司2015年业绩却出现不同程度的大幅下滑。

其中,晶方科技主营业务为集成电路的封装测试业务,是中国内地首家、全球第二大能为影像传感芯片提供晶圆级芯片尺寸封装(WLCSP)量产服务的专业封测服务商。晶方科技在1月15日的2015年度业绩预减公告称,经公司财务部门初步测算,预计2015年度实现归属于上市公司股东的净利润为10700万-11700万元,与上年同期(法定披露数据)相比减少约40%-45%。晶方科技解释盈利预减的原因有:一是2015年全球PC、智能手机等市场增速放缓,行业整体需求疲软,去库存压力较大,行业竞争日趋激烈,导致公司的利润规模随之下降;二是随着公司新产品、新技术的投入,公司资产规模不断扩大,机器设备陆续转固,使得折旧等运营费用增加等等。

通富微电也是专业从事集成电路的封装和测试,拥有年封装15亿块集成电路、测试6亿块集成电路的生产能力,是中国国内目前规模最大、产品品种最多的集成电路封装测试企业之一;主要客户为世界半导体知名企业,摩托罗拉、西门子、东芝等世界排名前二十位的半导体企业有一半以上是公司客户。此外,公司是中国电子信息百强企业,中国十大集成电路封装测试企业,中国进出口额最大企业500强。

Wind数据显示,通富微电营业收入增速已经连续六个季度环比下滑,营业收入增速已经由2014年第一季度的21.47%降至2015年第三季度的3.02%。尤其是,2015年前三季度通富微电营业利润、归属于母公司股东的净利润(扣非后)分别同比下降了68.94%、63.50%。

在“经营风险”中,艾科半导体也提到,随着近年来集成电路行业的快速发展,国内集成电路的设计商、制造商纷纷扩产,集成电路测试需求也不断扩大,吸引了更多新的集成电路测试商进入该行业,市场竞争日趋激烈。

艾科半导体还表示,公司主要业务是向集成电路设计与制造企业提供测试服务,属于集成电路测试企业,位于集成电路生产与应用的中间环节,与集成电路生产及应用环节紧密相连……如果集成电路应用行业或集成电路设计与制造行业的发展出现较大波动,将对集成电路测试行业带来重大影响。因此,艾科半导体所处行业受半导体行业的景气状况影响较大。

中芯国际(0981.HK)是集成电路制造企业,是世界领先的集成电路晶圆代工企业之一,也是中国内地规模最大、技术最先进的集成电路晶圆代工企业。2012-2014年,中芯国际的营业收入分别为17.08亿元、20.73亿元、19.70亿元,分别同比增长了28.10%、21.39%、

-4.95%。

第10篇

软件测试即在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。

软件测试分为:

单元测试:是对软件组成单元进行测试,其目的是检验软件基本组成单位的正确性,测试的对象是软件设计的最小单位:模块。

集成测试:将程序模块采用适当的集成策略组装起来,对系统的接口及集成后的功能进行正确性检测的测试工作。其主要目的是检查软件单位之间的接口是否正确。

系统测试:主要包括功能测试、界面测试、可靠性测试、易用性测试、性能测试。 功能测试主要针对包括功能可用性、功能实现程度方面测试。

回归测试:指在软件维护阶段,为了检测代码修改而引入的错误所进行的测试活动。

(来源:文章屋网 )

第11篇

J2EE技术提供了一个基于组件的、多层分布式计算平台。在J2EE的应用系统的开发过程中,由于使用了中间件,开发人员可以把工作重点放在系统功能的建模、设计与实现上。此外,J2EE技术结合了软件设计中的最佳实践(best practices),如以架构为中心的软件体系结构、基于组件的架构等等。这一切都对现有的软件工程过程提出了新的挑战。所以,裁剪RUP并且使其在J2EE项目中起更大的作用是非常有意义的。

本文讲述了如何把RUP应用到小型项目团队开发J2EE应用系统的过程中,并且结合J2EE技术的特点从项目管理、架构设计、开发和测试等方面重点阐明了对RUP的裁剪。

图1 一个复杂的BUS的实现方法

项目管理

在RUP中,角色定义了个人或团队的行为和职责,包括分析设计人员、编程人员、测试人员、项目管理人员和辅助人员,一个人可以同时担当几个角色.一个角色也可以由几个人来共同承担。针对J2EE系统的开发和维护,J2EE规范中也定义不同的角色,包括J2EE产品供应商、应用组件供应商、人员、系统管理员等等。

在实际的项目运行中.要根据软件开发组织的实际情况来确定角色的定义和分配。项目经理是必不可少的一个角色,通常是一个人来担任。项目经理代表整个项目与软件客户进行沟通和协商,并且制定软件开发计划等等。架构师也是一个必须的角色,通常由一名经验丰富的软件开发人员来担任。

在项目运行的前期,架构师负责设计软件架构和原型系统。在项目运行后期,架构师可以参与到具体的软件开发中。SQA同样是必不可少的,通常是一名经验丰富的软件开发人员来担任。SQA在整个项目的运行过程中负责监督和改进软件质量,包括制定系统测试方案、用户接受测试方案等等。开发人员是组成团队的主要力量,负责系统的设计、开发和测试。如果可能的话,团队中必须设立业务分析员的角色,负责商业建模等,通常由有特定行业经验的人来担任。

迭代开发计划

RUP的精髓之一迭代式的开发,它是基于Spiral模型翻的。整个软件开发周期由很多个迭代组成,其中初始迭代最为重要。其它每个迭代都为了实现软件的部分功能。在完成所有迭代后,软件的所有功能都已实现并且通过测试。

图2 基于Tier层的J2EE应用系统架构

初始迭代又叫作0迭代,它开始于项目的启动。结束于RUP初始阶段(inception phase)的完成。初始迭代在整个软件项目中起着十分重要的作用,这是因为在这个迭代中,项目团队和客户必须对软件项目的范围、成本、进度和应用系统的边界以及功能等达成一致的理解。

在初始迭代中,最重要的活动有明确项目的范围、商业需求和提出至少一个可用的软件架构方案。在明确项目范围的过程中,项目经理就项目的边界、产品、限制条件等与软件客户进行协商,从而达成一致认识。同时,在理解客户需求的基础上,项目经理或者业务分析员以需求说明书和功能说明书的形式把客户的需求记录下来。并且和客户达成一致理解。在此基础上,架构师提供至少一个合适的软件架构方案,并且完成原型系统。原型系统的目的不但是为了验证技术上的可行性,而且是为了给客户一个感性的认识,更好地完善对需求的理解。

需求说明书从客户的角度简要地描述了系统要具备的功能,它包含了很多商业用例。通常情况下,需求说明书还不能够全面地描述整个应用系统,所以软件开发组织还要从不同角度来描述系统的功能和特征,这就是功能说明书。功能说明书中包含了很多系统用例。功能说明书和需求说明书必须征求客户的意见,直到客户满意为止。

图3 基于Layer的J2EE应用系统架构

迭代计划是项目计划的一部分,指如何把要实现的系统分解成更小的子系统和如何在不同迭代中(除初始迭代之外)划分子系统,从而使每个迭代的目标明确,不同迭代之间的依赖关系达到最低。通常情况下,从逻辑上看,应用系统可以划分成多个BUC,而每个BUC又可以进一步划分成SUC;因此,可以从BUC的角度出发,根据相互之间的依赖程度来进行划分,把依赖程度低的BUC划分到不同的迭代中,从而确定每一个迭代的范围。一个复杂的BUC可以把它分解成独立的几个小BUC在几个迭代中来实现。(如图1所示)

一个应用系统也是由很多组件组成的。一个或者几个组件组合起来可以实现一个SUC或者一个BUC的要求。在设计迭代计划的时候,要考虑到组件之间可能存在的约束关系。基于J2EE的应用系统是基于组件架构的,因此,最小化迭代之间的依赖是一个最重要的衡量标准。

采用这种迭代办法后,每个迭代的范围限制在一个或者几个相互独立的BUC中。这样做的好处在于降低需求变化带来的风险。

图4 BUS的组成结构

风险管理

采用迭代式开发的一个很重要的原因是,项目的风险能够在早期的几个迭代中暴露出来。风险有两个基本的属性,一个是它发生的概率,还有一个是风险发生后对项目的影响。风险管理的目的是为了尽量降低风险发生时对项目的影响。

在风险管理中,首先要识别项目中存在的风险。其次根据风险发生的概率和风险发生后对项目的影响来分析存在的风险。通常采用量化风险的办法。给概率和影响分别赋予一定的数值,经过分析,把概率的数值和影响的数值相乘后的结果风险量化后的值。接着,对于量化后值比较高的风险制定相应的风险规避计划。在项目运行过程中,要不断地监督风险的变化。

架构设计

RUP采用基于组件的软件架构和以架构为中心的开发方式。J2EE技术强调基于组件的软件架构,能够很好地体现RUP的架构思想。根据3D方法可以把一个J2EE应用系统的架构从三维进行分析,分别是Tier、Layer和Systematic Quality。在设计系统架构的时候,可以从这三个角度考虑。

Tier

从Tier层的角度进行考虑,一个J2EE应用系统的架构可以分为以下几个部分:客户端层、表示层、业务逻辑层、集成层、资源层,如图2所示。每层都是按系统中业务逻辑而划分的,它具有唯一的职责。每层与相邻层都是松散耦合的。

图5 应用实例

在实现的时候,需要结合项目的具体情况而定。基于MVC设计模式的J2EE Web应用系统中,客户一般访问JSP。然后由Control层进行处理:如果需要进行复杂的业务逻辑处理并且已经有后台实现,业务逻辑使用Facade模式进行封装,形成统一的接口,业务逻辑层实现复杂的事务处理;如果需要访问资源层,再经过DAO层访问资源。

Layer

从Layer的角度进行考虑,一个J2EE应用系统的架构可以分为几个部分:最下层为操作系统、Java虚拟机和网络,它们负责系统的底层操作和网络数据的传输;之上是J2EE服务层,一般由J2EE服务器(如WebSphere,WebLogic等)提供各种基础服务,如事务的管理(JTS)、命名目录服务(JNDI)、负载均衡(Load Balancing)、容错(failover)、安全(security)等;其次是通用业务层,它一般完成与具体业务无关的基本操作,由通用的组件来实现,如数据库处理组件、系统错误处理组件、字符处理和数值处理组件、日志(10g)处理、数据转化和编码维护等;最上层才是具体业务逻辑模块,它完成具体的业务逻辑。(如图3所示)

在实现的时候.底层一般是不需开发人员关心的操作系统和网络环境,并且不同J2EE服务器厂商都提供了相应J2EE服务层, 开发人员需要关心上面两层的实现。如果是J2EEWeb应用体系,应用服务层一般会使用Struts框架。log服务一般选择log4j等。最上层才是具体业务模块。

Systematic Quality

这是指在软件架构中通过一定的办法或者使用一定的工具来达到系统要求的QoS,一般指可扩展性、可移植性、可维护性、安全等等,而这些恰恰是J2EE架构本身所带来的好处。

实现和测试

实现是软件开发人员编写代码来完成每一个组件。测试是用来保证软件质量的重要手段。采用RUP的软件工程过程后,整个项目被划分成不同的迭代。每个迭代(除了初始迭代)的范围是一个或者多个独立的BUC, 目标是编写代码实现BUC并且保证软件的质量。

在实现和测试的时候,集成(integration)是很重要的。这是因为整个软件开发过程分成多个迭代来完成,每个迭代(除初始迭代外)都是为了实现应用系统的一个部分。对于相邻的两个迭代。后者是在前者的基础上进行开发的,是实现功能上的一个增量。因此,相邻迭代之间需要功能上的集成。此外,每一个迭代都是由BUC组成的。从逻辑上来看,一个BUC是由一个或者多个SUC组成的。从实现上来看,每个SUC是由一个或者多个组件(component)组成的。因此,每一个迭代中都需要组件之间的集成,如图4所示。

根据集成程度的不同,可以划分几个不同的开发集成和测试:

首先是SUC集成和单元测试。这个是粒度最小的集成,它把几个不同的组件集成起来,实现同一个SUC。例如,SUC1是通过集成C1和C2来实现的。同时,在集成完成后,进行相应的单元测试。

其次是BUC集成和集成测试。BUC集成是把几个相关的组件集成起来,来实现它的功能。图4中BUC的实现需要集成4个组件。同时,在集成完成后进行相应的集成测试。

再次是迭代内集成和系统测试。迭代内集成从功能上来看,就是把这个迭代包含的所有BUC集成起来;从代码上看,是把所有和BUC相关的组件集成起来。同时,在集成完成后进行系统测试。系统测试分两步,首先是从功能上来测试每个BUC,其次是测试不同BUC之间的依赖和约束。

最后是迭代间集成和回归测试。对于相邻的两个迭代,从功能上来看,后者是前者基础上的一个增量。迭代间集成把这个增量准确地集成到应用系统上。同时,在集成完成后进行衰减测试。回归测试不但要测试功能增量的正确性.而且要测试增量发生后系统原来功能的正确性。

实例研究

笔者在Trade Manager项目中运用了上述的方法。TradeManager是一个关于金融软件研究的项目,开发基于J2EE技术的金融订单管理系统。项目由12个人的团队来进行开发。团队成员分工明确,有项目经理、架构师、测试员和SQA等等。项目采用迭代式的开发方式。在初始迭代中,项目双方对项目范围、功能需求及架构达成一致,并签字同意。整个开发分为三个迭代阶段,根据功能点来划分,每个迭代分别实现交易前、交易中和交易后的功能。每个迭代的开发时间在六个星期。

这个软件采用J2EE 的架构,如图5所示。其中UI和Delegate层在客户端,采用Swing技术来实现。是一个典型的肥客户端。Facade、Business Logic和DAO在J2EE服务器端,采用EJB技术来实现,它与客户端的通讯是典型的RMI/IIOp协议,采用的服务器是WebSphere。后台采用Oracle数据库来存放各种系统数据。同时,采用SiteMinder来实现系统的认证和授权。用log4j来实现logging/auditing功能。由于采用WebSphere集群技术,系统的可扩展性和高可用性得到了保证。

第12篇

企业应用开发面临的问题

企业应用是指服务于商业目的,处理企业业务信息、数据的软件系统。虽然随着网络热潮逐渐冷却,企业开始谨慎考虑自己在应用系统开发方面的投入,但是毕竟企业的业务流程需要专门的信息系统处理,从而提高自动化程度、减少中间环节、加快信息处理速度。因此,目前国内的企业应用项目开发还是日益火爆,尤其在电子政务、CRM、SCM等领域更是如此。

但是,不论企业应用开发是采用自行开发或者委托系统集成商进行开发,都存在着下面一些情况:

大部分项目超时或者超出预算;

项目在部署以后BUG很多,而且修改的周期比较长;

对于系统集成商来说,下面的情况更是比较普遍:

没有统一的FRAMEWORK,每个项目都会重新设计ARCHITECTURE;

项目开发过程的自动化程度和重复步骤不是很多,人为引入的BUG很多。

开放源码项目现状

开放源码运动在90年代开始日益发展,目前已经成为软件业内不可低估的一股势力,比较著名的有Linux、Apache、Tomcat、MySQL等。目前,开放源码的潮流已经超出了操作系统、数据库管理系统和Web服务器等系统开发领域,开发在企业应用开发中寻找新的领地。尤其是对于企业应用开发的框架和CASE工具,开放源码项目都有很优秀的解决方案。

国外开放源码项目的集中地有 以及 ,其中,前者为大家奉献了著名的Apache、Tomcat、Struts、Axis;而后者是最著名的开源项目中心。

同时,国内自90年代末开始也有很多人投入到开源项目的开发,比较集中的网址是 共创软件联盟( .cn) 等等,他们除了提供各种CASE工具以外,还有一些项目是专注于特定领域的解决方案开发,如CRM等。

开发源码项目与工具的应用

对于目前企业应用开发竞争日益激烈,需求变更频繁,各个系统集成商都面临巨大的生存压力。其中有两个方面表现尤其突出:

没有统一的软件开发过程或者照搬重量级的软件开发过程,例如RUP等,但是往往由于时间等压力的影响,并不能切实执行;

大部分企业仍然没有摆脱手工作坊期间的做法,每个项目或者产品由于管理人员或者团队的不同,重新设计系统框架,浪费大量的时间在结构验证与调整上。

企业应用系统的开发中,需求的变更是项目中唯一不变的东西,而且,为了保持开发的一致性和利益最大化,系统集成商需要与客户保持长期的合作。因此,采取演进式敏捷软件开发,可以更好的保证项目质量。在所有的敏捷软件开发方法中,XP(极限编程)是目前应用最为广泛的一种。它是一种高度动态的过程,它通过非常短的迭代周期来应对需求的变化;沟通、简单、反馈和勇气是它的四大核心价值。同时,它集中了业界的很多最佳实践,目前已经有18条之多,XP强调通过严格执行全部的最佳实践来获得“极限”效果。

同时,出于复用和效率的考虑,尤其是对于系统集成商,企业应用系统应该具有自己的框架和结构。拥有具有良好性能、经过项目验证的系统框架,结合有效的软件开发过程,系统集成商可以快速、成功地开发企业应用系统。

为了更好的开发成功的系统,系统集成商们可以试着从以下两个方面着手解决问题:

结合开源工具的支持,在组织内部实施“敏捷软件开发方法”;

为核心业务领域建立灵活、有效的Framework;

由于目前很多企业应用是采用基于J2EE技术的网络应用程序开发,因此,下面主要介绍基于Java的开源项目、工具的应用。

开源工具与XP

XP的12条最佳实践,对于所有的企业应用开发商而言,由于组织和文化的不同,不可能全部应用,但是,下面几个实践是有条件逐步实施的:

代码规范:CODE STANDARD

测试驱动开发:TEST-DRIVEN DEVELOPMENT

日构建:DAILY BUILDING

持续集成:CONTINUOUS INTEGRATION

小步:SMALL RELEASE

每日晨会:DAILY MEETING

每周40小时工作:40-HOURS A WEEK

其中,CODE STANDARD和TDD是CONTINUOUS INTEGRATION、DAILY BUILDING和SMALL RELEASE的基础;而DAILY MEETING和40-HOURS A WORK是单独的实践过程,可以与其他的实践想结合,增强项目小组的沟通,激发士气。

需要说明的是以上最佳实践并非XP所独有,而是被最多的软件开发方法所应用,其中日构建就在微软的软件开发方法中正式出现过。

代码规范

虽然大部分的企业在一定程度上推行代码标准与规范,而且对于使用Java的应用程序开发,也有Sun的推荐编码规范,但是,实际的情况并不理想。

主要的原因在于:一方面,开发人员的习惯势力很大;另一方面,代码审查的力度不够。如果能够借助工具,从一定程度上帮助进行代码标准的执行情况检查,那么代码审查就可以着重检查程序的逻辑和性能等方面。

开源产品CheckStyle ( /projects/checkstyle) 可以帮助开发组织解决代码标准审查问题。

目前的最新版本为3.0,它提供了两种运行方式:一种是命令行;一种是与Ant结合(Ant自1.5以后提供的OPTIONAL TASKS中有对于CheckStyle的支持)。同时,SourceForge中有对于JBuilder等流行IDE的插件支持,可以定义 Global、Project级别上的属性文件, 但是,目前只是支持2.42版本。

在3.x版本之前,CheckStyle的配置信息写在Property File中;而在3.x之后,配置信息为XML文件,配置更加灵活。

3.0的版本中提供了针对Sun Code Conventions的特定Check File,可以参考使用。

建议执行情况:

手动执行:开发人员在IDE中手动触发CheckStyle检查或者代码审查时由审查者手动执行;

自动执行:将CheckStyle与源码控制系统(CVS)结合,在源码Checkin的时候进行规则判断,如果不符合,则不允许代码进入系统。

测试驱动开发

测试先行或者测试驱动是XP的基本实践之一,同时测试在软件开发中的重要作用正越来越得到人们的重视。审查和测试作为系统确认和验证的有效方式,是项目质量保证的重要措施。

下面按照一般的测试分类,介绍各个领域内的开源测试工具:

单元测试:JUnit ( )

JUnit是由 Erich Gamma 和 Kent Beck编写的一个回归测试框架(regression testing framework),用于Java开发人员编写单元测试之用。下面介绍的开源测试工具,很多都是对于JUnit的扩展。

它目前的版本为3.7,为编写单元测试提供了主要的接口。目前主流的IDE都提供了对于JUnit的支持。

XP强调测试先行,尤其重视单元测试。系统集成商需要通过软件开发过程的执行,来强化JUnit的使用。

目前很多商业测试软件都提供了与JUnit的联合使用,例如获得1999和2000年Jolt测试类工具亚军和生产率大奖的Jtest (ParaSoft公司产品,内置200余条编码规范,提供Java代码静态和动态检查,同时还可以自动生成简单的测试用例等等)就可以导入和导出 JUnit的测试用例。

集成与功能测试:HttpUnit ( ) & Cactus ( /cactus/)

HttpUnit是一套通过HTTP连接测试Web应用程序的Java类。在结合JUnit的情况下,HttpUnit可以作为一种创建测试程序的强大工具用来保证Web应用程序正常的端对端功能。

虽然JUnit自身就可以通过编写单一类的测试程序对服务器端Java代码进行测试,不过,有了HttpUnit的帮助,JUnit就可以扩展为模拟Web浏览器-Web服务器的工作方式对整个Web程序结构进行测试。

Cactus为我们提供了一种测试SERVLET等WEB组件的有效手段。它是JUnit的一个扩展,但是它又和JUnit有一些不同。Cactus的测试分为三种不同的测试类别,JspTestCase, ServletTestCase, FilterTestCase,而不是像JUnit就一种TestCase。Cactus的测试代码有服务器端和客户端两个部分,他们协同工作。

一般意义上,可以采用Cactus作集成测试;而使用HttpUnit做功能测试。

虽然在集成与功能测试方面,有很多优秀的开源工具,但是在实际应用过程中,还是采用商业测试软件的比较多,对于复杂应用更是如此。这是因为集成与功能测试大部分还是由专门的测试人员进行,而他们对于已有的商业软件,例如Rational Robot、E-Test Suite、WinRunner等都比较熟悉,同时商业软件也提供了更为强大的功能。

压力与性能测试: JMeter ( /jmeter/)

由于企业应用越来越复杂,用户数量也是越来越多,系统的性能参数以及众多的非功能性需求在开发中获得了越来越多的重视。因此,很多压力与性能测试工具也开始出现,这其中有一定影响的是Apache Software Foundation的JMeter。

JMeter是100%的Java桌面应用,用来测试系统的负载与性能。它最开始设计是用来测试WEB应用,后来加以扩展,可以测试Http,FTP,支持JDBC的关系型数据库的性能与压力。

同时,JMeter提供一定的定制功能,系统集成商可以自行开发针对EJB、CORBA或者SOAP的插件。

压力与性能测试方面,由于测试比较复杂,实际企业应用测试中,也是采用商业测试软件比较多,例如LoadRunner、JProbe Suite以及与JBuilder8 同步的OptimizerIT;

日构建

在软件开发的领域里有各种各样的“最佳实践”,它们经常被人们谈起,但是似乎很少有真正得到实现的。

这些实践最基本、最有价值的就是:都有一个完全自动化的创建、测试过程,让开发团队可以每天多次创建他们的软件。

“日创建”也是人们经常讨论的一个观点,McConnell在他的《快速软件开发》中将日创建作为一个最佳实践来推荐,同时日创建也是微软很出名的一项开发方法。但是,我们更支持XP社群的观点:日创建只是最低要求。一个完全自动化的过程让你可以每天完成多次创建,这是可以做到的,也是完全值得的。

Ant是Apache Jakarta的一个项目,是“不带 make 缺点的 make”。Ant 正在成为开放源代码世界中实际上的标准。原因很简单:Ant 是使用 Java 语言编写的,这种语言可以让创建过程在多种平台上使用。

Ant 目前的版本为1.5,它的执行是基于一个XML文件,配置文件由目标树构成。每个目标都包含了要执行的任务,其中任务就是可以执行的代码。在下面给出的例子中,mkdir 是目标 compile 的任务。mkdir 是建立在 Ant 中的一个任务,用于创建目录。 Ant 带有一套健全的内置任务,也可以通过扩展 Ant 任务类来添加自己的功能。

Ant内置了对于JUnit、CVS、ClearCase、Visual SourceSafe以及CheckStyle的支持,通过于系统定时功能,例如Windows的“任务计划”或者Linux/Unix的“cron”,可以很方便的利用Ant来自动完成每日构建的工作。

持续集成

持续集成是XP的重要实践之一,Martin Fowler在参考文献[中有详细的介绍,上述实践都是它的基础。

开源项目中有一个著名的工具是用来帮助实现持续集成的:CruiseControl,其次,目前还有一款商业软件AntHill也为持续集成提供了很好的支持。

CruiseControl ( /)

CruiseControl是著名的ThoughtWorks公司的产品,目前它的源码已经公开,它是一个持续集成的框架。它包含,但是并不局限于Email通知、Ant以及其他源码控制工具。同时,它还提供了WEB界面来查看当前和已往Build的详细信息。

AntHill ( /projects/anthill/)

AntHill 可以确保Build过程受控,同时,帮助组织内部的知识共享。它在每次Build之前从源码控制系统 (CVS、VisualSourceSafe、ClearCase等) 中获取最新的源码,同时在 Build完成之后为源码分配一个唯一的数字进行标定。同时,它还会在根据Build的情况,更新Intranet的信息。

小步

有了以上实践的支持,小步就有了实现的可能。XP强调在非常短的周期内以递增的方式新版本,从而可以很容易地估计每个迭代周期的进度,便于控制工作量和风险;同时,也可以及时处理用户的反馈。

为了成功的进行应用系统的版本,需要SCM,尤其是源码控制程序的配合。在开源项目中,CVS (Concurrent Version System) 是最著名的版本控制程序。

目前CVS的版本为1.5.11,它是一个将一组文件放在层次目录树中以保持同步的系统。人们可以从 CVS 服务器上更新他们的本地层次树副本,并将修改的结果或新文件发回;或者删除旧文件。CVS 基于客户端/服务器的行为使得其可容纳多用户,构成网络也很方便。

这一特性使得 CVS 成为位于不同地点的人同时处理数据文件(特别是程序的源代码)时的首选。所有重要的免费软件项目都使用 CVS 作为其程序员之间的中心点,以便能够综合各程序员的改进和更改。

基于多个操作系统的CVS的客户端软件也很多,其中以WinCVS最为著名。

开源项目与Framework:

目前,对于基于JavaEE的应用程序开发,有很多开源的Framework,例如Struts ( /struts/)、WebWork等,都提供了利用J2EE技术的优秀解决方案。其中,Struts是目前应用最为广泛和获得关注最多的框架之一。

Struts目前的版本为1.1,它是基于Model2的MVC实现框架。Struts的核心是基于Servlet、JavaBean、ResourceBundles和XML技术的控制层。

还有很多开源项目为Struts提供支持,例如:

配置文件GUI:Struts Console;

Code Generator:Easy Struts;

Unit-Test:StrutsTestCase;

获得2002年JavaIDE大奖的JBuilder 8更是内置了对于Struts的支持,这也从另外一个侧面体现了Struts的重要意义。