FPGA软件测试过程及管理

2014-12-02 03:49赵海涛
指挥控制与仿真 2014年6期
关键词:测试用例软件测试阶段

赵海涛,王 丽

(1.海军驻南京地区航天机电系统军事代表室,江苏 南京 210006;2.江苏自动化研究所,江苏 连云港 222061)

FPGA(现场可编程逻辑器件)作为一种可编程使用的半定制芯片,采用硬件软件化的设计方法,通过硬件描述语言的方式配置器件内部的逻辑功能和输入/输出端口,可以将原来电路板级的设计放在芯片中进行,与传统的电路板级设计相比,具有成本低、可靠性高、功耗小、速度高、集成度高以及支持线编程、远程在线重构等技术特征。因此,FPGA能明显地减少产品的重量、体积、功耗,提高产品的集成性,降低研制费用等,在船舶行业的信号采集与处理、控制系统、接口、水声系统、通信系统、雷达、声纳与导航、时统设备和信号模拟器等专业领域得到广泛应用。

目前,船舶领域的FPGA产品软件测试评估工作严重滞后于应用的增长速度,缺乏相关的测评标准和专项的测试技术支撑,部分产品甚至未将其纳入软件测试范畴,在软件项目研制过程中,由FPGA软件故障导致的修改调试已成为系统进度的瓶颈。

现阶段,船舶领域由于缺乏相关规范,并未全面开展FPGA软件的第三方测试工作,相关测评机构在FPGA软件测试技术、测试模型和过程管理研究方面还处于起步阶段,缺乏相关的研究成果。

本文针对FPGA测试的现状,结合软件测试技术对FPGA软件测试的过程进行研究,并给出FPGA软件测试过程模型。

1 FPGA软件测试过程

FPGA软件测试的基本步骤与常规软件测试相同,都需要进行测试策划、测试设计、测试执行以及测试总结4个阶段[1],但是由于FPGA软件的特殊性,其测试过程中涉及到时序仿真、逻辑综合、逻辑等效性验证、跨时钟域检查等区别于传统软件测试的内容。因此,本节重点针对FPGA软件特点研究FPGA软件测试过程,对其测试流程的各个阶段具体内容进行重新规划与设计,FPGA软件测试过程如图1所示。

图1 FPGA软件测试过程

1.1 测试策划阶段

测试策划阶段根据测试任务书,对FPGA软件进行测试需求分析,包括显性的和隐性的需求,确定需要测试的内容或质量特性、测试的充分性要求,提出测试的基本方法,确定测试的资源和技术需求,对测试工作量进行估计,并且规划整个测试阶段的人员和时间的分配。对测试风险进行分析和评估,进行计划制定、评审、跟踪和变更控制等活动,最终形成FPGA软件测评大纲。

在测试策划阶段结束前,测评大纲应经过评审,审查测试的范围和内容、资源、进度、各方责任等是否明确、测试方法是否合理、有效和可行、测试文档是否符合规范,测试活动是否独立,并应受到变更控制和版本控制。

1.2 测试设计阶段

测试设计阶段的目标是确定如何满足测评大纲所列出的测试需求。需要分析被测FPGA软件的特征,设计测试用例,获取并测试数据。根据测试约束条件,确定测试用例执行顺序,并建立并校准测试环境。在测试设计阶段结束前,还需进行测试就绪审查,主要审查测试说明的合理性和测试用例的正确性、有效性和覆盖充分性,审查测试组织、环境和设备工具是否齐备并符合要求。测试设计阶段结束时生成测试说明文档,该文档应包含测评项目名称、项目标识、测试用例名称、标识和所采用的测试方法、测试用例的初始化要求、前提和约束、测试用例的输入(包括功能、时序仿真测试的激励文件和仿真环境)、测试用例的期望测试结果和测试用例的测试结果评估准则。

1.3 测试执行阶段

进入测试执行阶段,测评人员的主要工作是执行测试用例、获取、分析并判定测试结果。与传统软件测试执行过程不同,由于FPGA软件的特殊性,其测试执行阶段需要进行静态规则检查、跨时钟域检查、功能仿真、逻辑综合验证、逻辑等效性验证、时序分析等专项测试工作,分别采用 Lade、Questa CDC 、Questa Prime、Precision RTL Plus、formality和 Primetime工具,在整个测试过程中采用奥肯思公司开发的测评技术平台FPGA PlatExp进行测试过程管理和测试结果分析。针对上述测试工作的执行结果分析生成FPGA软件测试记录和FPGA软件测试问题单。测试记录与问题报告单需要如实填写测试执行过程中的所有仿真验证结果及其分析,确保记录的客观性、真实性、内容完整和风格统一,并且依据期望测试结果、实际测试结果和评估准则,对测试用例的执行结果进行判定。

1.4 测试总结阶段

测试总结阶段进行整个FPGA软件测试过程所涉及的所有工作和被测软件项的评估总结。分析测评大纲和测试说明的差异,并进行测试充分性分析和未能解决的测试事件说明等。描述被测FPGA软件项的状态、发现FPGA软件缺陷及修改情况等,最后形成测试工作的总结和评价,主要内容包括:在测试异常终止时,说明未能被测试活动充分覆盖的范围及其理由;说明测试工作遗留问题可能造成的影响和风险;功能仿真末覆盖的语句和分支采取的有效替代方法;被测FPGA软件与需求的符合性;评价被测FPGA软件的设计和实现,可提出改进建议;分析测试环境和约束条件等对性能测试结果的影响。

2 FPGA软件测试模型

2.1 软件测试模型

针对软件测试过程,Paul Rook在20世纪80年代后期提出了V模型,旨在改进软件开发的效率和效果。在V模型中,测试过程被加在开发过程的后半部分[2],如图2所示。该模型反映了测试活动与分析设计活动的关系。从左到右描述了基本的开发过程和测试行为,明确地标注了测试过程中存在的不同类型的测试,并且清楚地描述了这些测试阶段和开发过程期间各阶段对应关系[3]。

图2 V模型示意图

在V模型中的测试执行阶段先进行单元测试,然后进行集成测试、系统测试,最后进行验收测试,这些测试形成了软件测试的不同级别,并与开发过程的相应阶段对应。但V模型存在较大的局限性,它仅仅把测试作为在编码之后的一个阶段,针对程序寻找错误,忽视了测试活动对需求分析、系统设计的验证和确认[4]。针对FPGA设计的特殊性,V模型主要有以下缺点:

1)由于FPGA的复杂性,一次设计修改可能引发多轮修改,而V模型的测试执行是在编码实现后才进行,容易导致从需求、设计等阶段隐藏的缺陷一直到验收测试才被发现,并且FPGA的软件与硬件紧密结合,如果在编码实现后才进行测试,将会导致发现和消除这些缺陷的代价非常高[5]。

2)将开发和测试过程划分为固定边界的阶段,使得FPGA开发人员难以在设计阶段进行必要的验证,同时测试人员很难跨过这些边界来采集测试所需的信息。

3)在测试过程中将软件与硬件割离,实际上FPGA设计中的软件和硬件联系十分紧密,甚至出现了“软硬件”这一概念,因此FPGA软件测试的对象并不是单纯的程序,而是一种结合硬件的贯穿于FPGA设计全周期的测试过程。

由此可见,V模型把测试活动放在开发过程的最后阶段,并且把整个的开发过程划分成具有固定边界的各个阶段,这就使得测试人员难以逾越这些边界,对测试所需的信息采集也会有影响;在实际的测试中,有些测试需要在早期阶段执行,有些则是要在后期执行,这就会阻碍各个阶段之间的信息融合。

2.2 适用于FPGA软件测试的模型

由于V模型的测试执行是在编码实现后才进行,容易导致从需求、设计等阶段隐藏的缺陷一直到验收测试才被发现。其缺陷的发现和解决的成本具有放大性,如在需求阶段遗留的缺陷在下载到芯片后才发现和解决,其代价是在需求阶段发现和解决代价的数十倍甚至上百倍。因此,FGPA的测试工作越早进行,其发现和解决错误的代价越小,风险也越小。

FPGA设计流程经过大量工程实践,已有一个非常成熟的方案。大致分为设计创建、功能仿真、逻辑综合、布局布线、时序仿真5个阶段。依据FPGA设计流程和FGPA系统特点,参考Systeme Evolutif公司的W模型[3,6]设计一个适用于FPGA软件测试的模型,如图3所示。

图3 FPGA软测试的W模型

W模型是由两个“V”重叠而成。其中一个表示FPGA设计过程,另外一个表示FPGA软件测试过程。FPGA软件测试中的各项活动与其设计开发过程各个阶段的活动相对应。设计开发过程中各阶段性可交付产品都要进行测试,以尽可能将各阶段产生的缺陷在该阶段发现和消除。

按照W模型进行的FPGA软件测试实际上是对FPGA设计开发过程中各个阶段的可交付产品的验证和测试活动。在开发过程中的各个阶段,需要进行需求评审、概要设计评审、详细设计评审,并完成前方真测试、后仿真测试、元件集成测试和系统测试等工作。

W模型树立了一种新的测试观点,即FPGA软件测试不应仅仅局限于代码测试的狭小范围内,而应贯穿于整个FPGA设计开发周期。因此,需求阶段、设计阶段和程序实现等各个阶段所得到的文档,如需求规格说明书、系统架构设计书、概要设计书、详细设计书、源代码、门级网表和时延文件等都应成为测试的对象。即测试与开发是同步进行的。W模型有利于尽早地、全面地发现问题。例如,需求分析完成后,测试人员就应该参与到对需求的验证和确认活动中,以尽早找出需求方面的缺陷。同时,对需求的测试也有利于及时了解项目难度和测试风险,及早制定应对措施,这将显著减少总体测试时间,加快项目进度。

3 FPGA软件测试过程管理

基于W模型,在FPGA设计开发周期中的每个阶段都有相关的测试阶段相对应,测试可以在需求分析阶段就尽早开始,创建测试的准则。每个阶段都存在质量控制点,对每个阶段的任务、输入和输出都有明确的规定,以便对整个测试过程进行质量控制和配置管理。

FPGA软件测试过程的质量决定了FPGA软件测试的质量和有效性。FPGA软件测试过程的管理是保证测试过程质量、控制测试风险的重要活动。

3.1 测试项目跟踪与管理

测试项目的跟踪与管理的基础是计划与实施。FPGA软件测试项目的跟踪与管理的主要方法是将测试过程划分为需求分析、测试设计、测试执行和测试总结4个测试阶段。在各个阶段结束时,比较实际测试工作的工作量、投入、成本、进度、测试风险等与测试计划的差距。如计划未完成,则采取相应的纠正措施,重新计划剩余部分工作的实施[8]。

在具体的FPGA软件测试项目的跟踪与管理过程中,可以采用周报、例会以及里程碑评审会等方式来了解测试项目的进展情况,建立、收集和分析项目的实际状态数据,对项目进行跟踪与管理,达到项目管理的目的。

3.2 配置管理

配置管理的目的是建立和维护在软件生命周期中软件产品的完整性和一致性。FPGA软件测试的配置管理也应当参照软件测试的配置管理进行,FPGA软件测试的配置管理属于整个项目配置管理的一部分,独立的测试组织应建立专门的配置管理系统。一般来说,FPGA软件测试配置管理包括以下4个最基本的活动。

·配置标识,标识测试对象、测试标准、测试工具、测试文档、测试报告等配置项的名称和类型。按照相关规定统一编号,并且有固定的模板,在文档中的规定位置标识各配置项的责任人及存放位置等信息,表明基准化配置项的时间。

·变更控制,通过变更控制可以控制和限制变更的发生,对变更进行有效管理,确保变更有序进行。

·配置状态报告,根据配置项操作数据库中的记录,向管理者报告FPGA软件测试工作的进展情况。

·配置审计,作为变更控制的补充手段,来确保某一变更需求已被切实地执行和实现。

3.3 风险管理

FPGA软件测试的风险是指测试过程出现的或潜在的问题,造成的原因主要是测试计划的不充分、测试方法有误或测试过程的偏离等。测试的不成功导致软件交付潜藏着问题,一旦在运行时爆发,会带来很大的风险[9]。

FPGA软件测试过程中,风险与应急措施是一项重要的工作。根据FPGA软件测试风险可以给出风险检查表,见表1。

表1 FGPA测试风险检查表

针对风险类别,制定应对风险的措施,从而规避或降低测试风险是风险管理的重点工作。首先,消除执行风险,通过评审、测试人员之间的互审及时发现问题,确保测试执行的质量和充分性。其次,针对进度风险进行测试资源、时间等估算,在制定测试计划时要留有余地,增加10%左右的余量以降低测试资源不足带来的风险。此外,针对人员风险,加强对测试人员的培训和后备人员的培养,提高人员的技术水平和职业道德。

总之,如果提前重视风险,并且有所防范,就可以最大限度减少风险的发生。通过全过程的测试风险管理可以有效降低产品的质量风险,还可以提前对产品缺陷进行规避,缩短FPGA测评项目的时间,进而缩短整个FGPA项目的开发周期。

4 结束语

FPGA软件测试的发展趋势是逐步走向工程化管理,测试过程应符合国际标准和行业标准。FPGA软件测试工程化管理就是通过采用规范化、有序化、系统化、面向工程的、面向任务的文档及配套管理手段进行正确引导、组织和实施测试活动,持续改进测试过程中各个阶段工作质量和效用,及早及时地发现和关闭设计开发过程中的存在的缺陷,提高设计和测试的沟通效率,最终保证FPGA产品的质量,提升客户的满意度。本文通过测试过程分析、建模和测试过程管理研究提高了FPGA测试质量和系统可靠性。随着FPGA系统在船舶行业各关键领域的进一步普及,FPGA软件测试模型和过程管理技术将具有更广阔的应用前景。

[1] 军用软件测试指南[S].北京:GJBZ141-2004.

[2] Ron Patton.软件测试[M].周予滨,姚静,译.北京:机械工业出版社,2002.

[3] 黎连业,王华,李淑春.软件测试与测试技术[M].北京:清华大学出版社,2009.

[4] 朱少民.软件测试方法和技术[M].北京:清华大学出版社,2005:34-41.

[5] Clive“Max”Maxfield.FPGA权威指南[M].杜生海译.北京:人民邮电出版社,2012.

[6] x.Sun,A.A1 imohammad,and P.Trouborst.Model ing of FPGA Local Interconnect Resources and Derivation of Minimal Test Configurations[J].2002,Proc.17thIEEE Int.Symp.Defect and Fault Tolerance in VLSI System:284-292.

[7] 高慧英.软件测试管理及其工程应用[J].计算机与数字工程.2007,35(1):56-57.

[8] 李亚伟,严宏君.软件测试过程管理工具的设计与实现[J].计算机技术与发展,2013,23(3):55-56.

[9] 樊庆林,吴建国.提高软件测试效率的方法研究[J].计算机技术与发展,2006,16(10):52-54.

[10] T.M.S.Ummu Salima,A.Askarunisha,N.Ramaraj,Enhancing the Efficiency of Regression Testing through Intelligent Agents[C]∥Proceedings of the International Conference on Computational Intelligence and Multimedia Applications,2007:103-108.

猜你喜欢
测试用例软件测试阶段
软件测试方向人才培养“1+X”融合研究
关于基础教育阶段实验教学的几点看法
测试用例自动生成技术综述
回归测试中测试用例优化技术研究与探索
基于SmartUnit的安全通信系统单元测试用例自动生成
基于OBE的软件测试课程教学改革探索
航天软件测试模型构建与应用
在学前教育阶段,提前抢跑,只能跑得快一时,却跑不快一生。
EXCEL和VBA实现软件测试记录管理
大热的O2O三个阶段,你在哪?