APP下载

核工程领域数值计算软件测试策略分析

2018-07-28芦韡冯晋涛汤琪芬张娜

科技视界 2018年12期
关键词:数值计算软件测试策略

芦韡 冯晋涛 汤琪芬 张娜

【摘 要】在核反应堆的工程设计活动中,用于堆芯中子学性能分析、燃料元件性能分析、热工水力与安全分析等目的的一系列设计分析软件均发挥着至关重要的作用。为确保核安全相关计算机软件的正确性与可靠性,在其投入工程应用之前,必须开展严格的软件V&V;工作。测试是软件V&V;活动的重要内容之一,针对反应堆设计分析软件包含大量数值计算、流程复杂等特点,结合典型软件工程理论进行测试需求分析并选用合理的测试策略,从而有效提升软件质量。

【关键词】数值计算;软件测试;策略

中图分类号:TP311.5 文献标识码: A 文章编号: 2095-2457(2018)12-0020-003

DOI:10.19694/j.cnki.issn2095-2457.2018.12.008

Analysis of Testing Strategy within Nuclear Engineering Numerical Codes

LU Wei FENG Jin-tao TANG Qi-feng ZHANG Na

(Science and Technology on Reactor System Design Technology Laboratory, Nuclear Power Institute of China, Chengdu, 610213, China)

【Abstract】Nuclear Engineers use abundant calculating codes to perform own work during nuclear engineering design activities. To ensure correctness and reliability of nuclear engineering numerical codes, strict software V&V; work has to be carried out before its actual applications. Considering plentiful numerical calculations and complicated processes within nuclear codes,reasonable testing strategy should be chosen to improve the quality of nuclear codes.

【Key words】Numerical calculation; Software testing; Strategy

0 概述

在核反应堆的工程设计活动中,用于堆芯中子学性能分析、燃料元件性能分析、热工水力与安全分析等目的的一系列设计分析软件均发挥着至关重要的作用。为确保核安全相关计算机软件的正确性与可靠性,在其投入工程应用之前,必须开展严格的“验证与确认”(verification and validation,V&V;)工作。

测试是软件V&V;工作的一部分,其目的在于尽可能发现软件的缺陷。反应堆设计分析软件往往包含大量数值计算(或称科学计算)以及复杂迭代流程,测试工作的主要目标之一是证明其采用的模型方法及数值实现过程的正确性,包括找出问题判断错误、算法错误、设计错误、逻辑错误以及输入输出错误等。

针对反应堆设计分析软件的上述特点,结合典型软件工程理论进行测试需求分析并选用合理的测试策略,在此基础上精心设计测试用例,才能以较为合理的时间与人力,系统地找出软件中潜在的各种错误和缺陷,取得良好的测试效果,有效提升核工程领域数值计算软件的质量。

1 测试流程

图1 测试流程

随着软件开发过程模型和开发技术的不断发展,软件测试理论和技术也得到相应发展,在软件质量体系中,为了更好的指导软件测试的全部过程、活动和任务,提出了软件测试模型,常用的软件测试模型有瀑布模型、V模型和W模型[1]。

针对数值计算类软件理论模型复杂、迭代次数多、计算精度要求高的特点,需要通过不同的测试阶段逐级完成对代码、程序设计直至软件需求的验证,从而达到全面有效地测试。因此,选用软件工程中最具代表性的V模型,在编码完成后通过单元测试、集成测试和系统测试三个测试阶段来实施软件的测试工作,测试流程如图1所示。

具体测试内容包括:

(1)单元测试,针对的是软件开发中的单元模块,数值计算软件的单元模块包括数据存取、流程与逻辑控制以及数值计算等多种类型,通过静态测试和动态测试来验证单元是否符合软件设计说明所规定的控制流程、输出要求等,其中数值计算过程的正确性是单元测试的关键目标之一。

(2)集成测试,在单元测试的基础上,将所有模块按照设计要求组装成子系统或系统,验证软件模块集成后的计算正确性、软件之间接口、各模块之间接口及内部单元之间的调用关系的正确性,验证软件子系统或系统是否达到软件总体设计要求。由于数值计算软件是通过不同功能模块的组合实现完整的计算功能,在集成测试阶段需重点关注软件采用的模型方法及数值实现过程的正确性。

(3)系统测试,通过在实际实用环境下运行软件,并与软件的需求定義做比较。核工程领域中部分数值计算软件具有丰富的图形化界面,并支持较为复杂的用户交互过程,系统测试对于验证软件系统是否满足各项需求非常重要。

2 测试策略分析

核工程领域设计分析软件涉及核工程,数学,计算机等领域,其中,核工程又包括堆芯中子学、热工水力、燃料元件等多个专业,各专业软件通过计算堆内材料的核特性、堆芯内的中子通量和功率分布,堆芯功率分布影响燃料温度分布以及冷却剂(慢化剂)的温度、密度分布等物理数据,尽量真实地模拟堆芯的运行过程,反映反应堆在运行和事故工况下的实际情况,提高对复杂事故工况的认识,更加精确地估计安全裕量,为核反应堆系统安全分析提供技术手段。

同时,随着物理理论模型以及高性能计算等相关领域的发展,核工程领域设计分析软件的功能需求更复杂,计算准确性及效率要求更高,相应的,软件设计的数据结构,计算流程越来越复杂,计算精度要求更高。在该类软件测试中,需要更重视物理理论模型实现和计算的准确性问题。针对上述软件特点,结合已开展的软件研发测试经验,本文提出如下适用于核工程领域设计分析软件的测试策略:

2.1 单元测试策略

单元测试是针对软件最小单位—函数模块,进行正确性检验的测试工作。

单元测试一般是自动测试与人工走查相结合,测试者需要依据详细设计说明书和源程序代码,了解各个单元模块的I/O数据和逻辑结构,主要采用白盒测试的测试用例,辅之以黑盒测试的测试用例,同时用一些辅助模块(驱动模块driver、桩模块stub)去模拟与被测模块相联系的其它模块,使之对合理的输入和不合理的输入,都能鉴别和响应。另外,对有时间效率要的程序还要做性能测试。

结合核工程领域数值计算软件中公式较多与数据处理量大的特点,单元测试策略重点关注如下几点:

(1)单元模块与详细设计中理论模型或数值方法的一致性;

(2)单元模块中全局变量與局部数据结构测试,包括初始化、数组越界等问题;

(3)使用具有类似功能但实现方式不同的单元模块进行对照测试;

(4)单元模块内部误差传递的测试。

2.2 集成测试策略

集成测试通常,在单元测试的基础上,需要将所有模块按照设计要求组装成为系统。通常,把模块集成成为系统的方式有两种:一次性集成方式、增量集成方式。增量集成相比传统的阶段式集成有着更多优势,易于定位错误并降低风险。基于增量集成的测试策略主要包括以下内容:

(1)所有单元模块组合后能否达到预期要求的总体功能,其逻辑关系与详细设计中理论模型或数值方法的一致性;

(2)增量集成包括自底向上、自顶向下、三明治、风险导向、功能导向、T-型等多种方法,在不同类型的数值计算软件测试活动中根据需要进行组合使用;

(3)各个模块进行连接、组合的过程中,全局数据结构以及模块之间的数据的测试;

(4)多个模块之间误差传递的测试;

(5)开发专用的自动化集成测试工具,在每次版本升级或代码更新等情况时进行回归。

2.3 系统测试策略

系统测试,是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试。

系统测试主要包括功能测试、界面测试、可靠性测试、易用性测试、性能测试等,对于具有GUI界面的数值计算软件而言,大量测试工作体现在功能测试与界面测试方面,主要考虑以下几点:

(1)采用黑盒法,在GUI界面上输入集成测试用例,验证结果正确性;

(2)GUI输入输出界面的图形化交互功能以及输入合法性检查;

(3)GUI输入输出界面与数值计算部分的接口检查;

(4)针对系统有可能存在的异常操作、软硬件引起的故障等设计测试用例,验证系统的容错能力。

2.4 自动化测试策略

自动化测试贯穿于软件开发测试各个阶段中,可以使用较为成熟的工具或是结合核工程领域数值计算软件特点开发专用的测试工具,从而提高软件开发测试效率。

针对数值计算软件结果数据量大的情况,开发专用的自动化测试工具进行输出结果提取于自动比对,可显著提高测试效率。此外,利用开发工具也可进行部分测试工作,如VS2010开始直接提供的测试框架等。

3 核工程领域数值计算软件测试实践

在具有自主知识产权的核电软件包NESTOR[2]的研发过程中,对于反应堆物理、屏蔽与源项、热工水力与安全分析、燃料元件、系统与设备等各个专业方向的数值计算软件,一般可归类为中型或大型软件,其复杂性既来自它所反映的反应堆实际问题,也来自于软件本身计算公式多、求解过程繁杂、迭代循环多等复杂的逻辑结构。

将NESTOR软件包各专业领域软件的测试阶段划分为单元测试、集成测试与系统测试,然后通过软件特点分析,在不同测试阶段均需选取适用性强的测试策略,如代码人工走查、增量测试以及自动化测试等,检验软件代码是否符合规范,计算结果的期望值、路径覆盖率、越界处理方法、人机界面等关键环节是否与相关设计说明书相符合,发现设计与编码缺陷并及时处理,直至所有发现的缺陷得以修复并通过回归测试。

本文所提出的适用于数值计算软件的测试策略,在NESTOR软件包的测试工作中得到了广泛且深入的应用,效果良好,为确保软件质量及其计算结果的可信度提供支撑。

【参考文献】

[1]覃征,何坚,高洪江,等.软件工程与管理[M].北京:清华大学出版社,2005.

[2]刘东,李庆,卢宗健,等.“华龙一号”设计分析软件包NESTOR的研发与应用[J].中国核电,2017,10(04):532-536.

猜你喜欢

数值计算软件测试策略
基于OBE的软件测试课程教学改革探索
例谈未知角三角函数值的求解策略
我说你做讲策略
EXCEL和VBA实现软件测试记录管理
高中数学复习的具体策略
关于软件测试技术应用与发展趋势研究
软件测试工程化模型及应用研究
Passage Four