一种基于蜕变测试的计算机辅助工程软件测试方法
未命名
08-22
阅读:106
评论:0

1.本发明属于软件测试领域,涉及一种用于测试计算机辅助工程软件相关故障的技术,具体为一种基于蜕变测试的计算机辅助工程软件测试方法。
背景技术:
2.计算力学、计算数学、工程管理学特别是信息技术的飞速发展极大地推动了相关产业和学科研究的进步。有限元、有限体积及差分等方法与计算机技术相结合,诞生了新兴的跨专业和跨行业的学科。计算机辅助工程软件cae作为一种新兴的数值模拟分析技术,越来越受到工程技术人员的重视。
3.cae可以在工程开始生产之前,通过相应cae软件对工程进行静态结构、动态分析;研究线性、非线性问题;分析结构(固体)、流体、电磁等参数。辅助设计人员求得工程的最佳方案,揭示现有方案存在的疏漏,进而为一次试验甚至无试验即可使工程满足规范要求提供了可能。cae本身可以看作一种基本试验。数值模拟在某种意义上比理论与试验对问题的认识更为深刻、更为细致,不仅可以了解问题的结果,而且可随时连续动态地、重复地显示事物的发展,了解其整体与局部的细微过程。cae降低了工程的成本,提高了效率,已成为工业设计领域不可或缺的一环。
4.这些计算机辅助工程软件的质量对其能否成功应用至关重要。如果这些程序在数学模型、数值算法、代码实现和输入数据方面存在缺陷,则根据模拟结果得出的任何输出都将变得不可靠,这会直接对工程的质量保证产生巨大威胁。
5.在当前cae软件测试中,存在可测试用例少、缺乏测试预言、输入输出复杂等问题,导致该领域缺乏可靠的测试方法。
技术实现要素:
6.为解决上述问题,本发明提供了一种基于蜕变测试的计算机辅助工程测试方法。本发明通过对已有的程序用例进行修改产生新用例,以发掘的蜕变关系作为测试预言,自动化地进行软件测试,扩充了测试用例,同时降低了人力成本,有效改进了计算机辅助工程软件测试流程。本发明可用于测试基于计算机辅助工程的工业软件,如开源项目openfoam、fds等;亦可根据特定工业软件的用例特征及领域知识,对本发明的相关步骤进行适配,从而对该特定工业软件进行自动化黑盒测试。
7.本发明的技术方案:
8.一种基于蜕变测试的计算机辅助工程软件测试方法,步骤如下:
9.步骤1:获取被测程序适用的基线用例。收集适用于被测程序的可用用例,验证这些用例输出能满足预期结果。
10.具体为:通过各种渠道获得数据,编写适用于被测程序的用例及用例的期望输出,收集的渠道应包括但不限于:相关实验数据、文献中的领域基准问题数据、被测程序附带的向导用例等。然后,将获得的用例输入被测程序,程序应能正常运行,并且程序输出能正确
满足要求;否则将错误记入测试文档。
11.步骤2:获取被测程序有关的知识,提取蜕变关系。
12.具体为:通过各种渠道获得与被测程序用例有关的知识,提炼出生成用例间的蜕变关系,收集的渠道应包括但不限于:相关实验中已得到验证的参数间的关系、文献中记录的领域专业知识、被测程序代码逻辑、数值计算原理、逻辑常识等。提取的蜕变关系定义为:一个已知可行的用例可由某种规则转换为从现有的测试数据中生成的新测试用例,而两者输出间存在能比较这对测试用例产生输出的某种关系,或生成的新测试用例与原用例两者输出都符合某种关系的要求,这种关系被称为蜕变关系。
13.步骤3:根据基线用例提取可随机修改的用例参数,确定每个基线用例适用的蜕变关系。
14.具体为:通过基线用例中参数关系与程序的代码逻辑,总结出在进行不同的蜕变测试时,哪些用例可以进行该蜕变测试、用例的哪些参数不可修改、哪些参数值可随机生成。得到用例合法输入的范围,并确定每个基线用例可进行的蜕变测试。
15.步骤4:根据基线用例及蜕变关系设计用例生成器。
16.具体为:设计用例生成器,生成器具有用例设置功能,能生成可运行用例所需的所有文件。每个基线用例的设置都存储在一个词典中,可以针对不同的模拟进行修改。将随机生成的参数生成器同样以词典的形式保存,执行生成器时将调用若干个(数量是随机生成的)参数的生成器生成随机参数,修改相应的基线用例配置,生成新的测试用例。
17.步骤5:调用用例生成器随机生成测试用例。
18.具体为:指定进行蜕变测试的种类,测试使用的基准用例及生成的用例数,初始化用例生成器的参数,由生成器随机生成用例。
19.步骤6:验证用例的合法性,将用例输入程序进行计算。
20.具体为:根据步骤3确定的用例参数的合法范围及用例特性,确定由步骤5产生的用例能合法地输入被测程序。确认用例正确后调用被测程序进行计算。
21.步骤7:检查程序输出的正确性,以用例的输出进行断言,通过错误输出捕捉程序的错误。
22.具体为:检查程序是否正常输出,如果程序未按预期正确地生成输出结构或由于其他未知原因抛出错误,则将错误信息(包括用例信息、错误描述、计算缓存等)存入测试文档。如果被测程序正常运行生成输出,则以步骤2中提取的蜕变关系为参照,对用例输出进行检查,包含两种情况:
23.情况a:蜕变测试的蜕变关系为从现有的测试数据中生成的新测试用例,而两者输出间存在能比较这对测试用例产生输出的关系。这种蜕变测试强调验证蜕变关系在用例输出间的关系。因此将同一组蜕变测试用例以某种规则两两比较,验证两用例的输出关系满足蜕变关系。
24.情况b:蜕变测试的蜕变关系为生成的新测试用例与原用例两者输出都符合某种关系的要求。这种蜕变测试强调验证随机生成的若干单个用例是否满足蜕变关系。因此将分别检查单个用例,验证各个用例输出符合蜕变关系的要求。
25.如果用例通过了蜕变测试,则在测试文档中记录用例的名称、测试时间等信息,如果用例没有通过蜕变测试,则在测试记录中记录用例的错误信息(包括打印时间、打印运行
时信息等)。
26.步骤8:将先前存入测试文档的信息汇总,产生测试报告,将测试报告提交给软件开发者
27.其中步骤6、7、8可以通过脚本进行自动化测试。
28.本发明的有益效果:本发明能够有效地对基于计算机辅助工程的工业软件进行自动化测试,帮助工业软件开发者在系统测试阶段更好地揭示产品故障,提高软件质量,降低软件开发成本。
附图说明
29.图1是基于蜕变测试的计算机辅助工程软件测试主体流程图。
30.图2是用例生成器运行流程图。
具体实施方式
31.以下结合附图、技术方案以及实例对本发明方法进行详细说明。
32.在本实施示例中,本发明方法部署在一台linux系统的计算机上,计算机具体配置如表1所示。根据实验需求安装开源软件openfoam,并安装相应的需求库。openfoam是一款基于有限体积法的计算机辅助工程软件,其全称为open field operation and munipilation,前身为foam,核心为一系列的高效c++模块数据包,基于此类数据包可以构建编写各类有效的求解器、前后处理工具(如网格划分、边界设定等等)和库文件(用于各种模型子模块定义)等,以此模拟特定的物理问题并进行前后数据处理。现阶段,该平台主要应用于流体力学中,已逐步在固体力学中得到应用,包括流固耦合、接触弹塑性、非线性结构分析等。此处的openfoam软件作为本实施中的被测软件,在实践中也可应用在不同计算机辅助工程软件上。
33.表1linux计算机配置信息表
[0034][0035]
如图1所示,本发明的一种基于蜕变测试的计算机辅助工程软件测试方法按如下流程进行。首先收集适用于被测程序的可用用例、提取蜕变关系,然后确定用例适用关系,根据基线用例及蜕变关系设计用例生成器。接下来设计用例生成器。继而,调用用例生成器随机生成测试用例并计算,以用例的输出进行断言,通过错误输出捕捉程序的错误。最后自动化生成测试报告,提交给软件开发者。
[0036]
本实施具体步骤如下,以openfoam软件为例:
[0037]
步骤1:获取被测程序适用的基线用例。收集适用于被测程序的可用用例,验证这些用例输出能满足预期结果。
[0038]
具体为:通过各种渠道获得数据编写适用于被测程序的用例及用例的期望输出,在nasa网站获得了2d naca 0012机翼验证案例的数据,并依照此模型根据openfoam的用例规范编写了名为naca_0012的用例,将该用例调用openfoam进行计算,输出能够正确满足要求。此处的naca机翼用例仅为本实施中的举例,在实践中可能获得其他不同的用例。
[0039]
步骤2:获取被测程序有关的知识,提取蜕变关系。
[0040]
具体为:通过各种渠道获得与被测程序用例有关的知识,提炼出生成用例间的蜕变关系,在了解代码逻辑与空气流体力学专业知识后,提出以下两个蜕变关系:
[0041]
1.若干个除了并行计算处理个数有差异,其余设置完全相同的用例,两者输出数据的结果应当完全相同。
[0042]
2.每个使用pimplefoam作为求解器的算例,其用例输出每个时间步长文件夹中ddtcorrddt0(u)与ddt0(u)中每个对应的向量数据的大小都应当相同。
[0043]
此处的两个蜕变关系仅为本实施中的举例,在实践中可能根据被测软件、用例结构、应用领域等因素获得其他不同的蜕变关系。
[0044]
步骤3:根据基线用例提取可随机修改的用例参数,确定每个基线用例适用的蜕变关系。
[0045]
具体为:通过基线用例中参数关系与程序的代码逻辑,得到naca_0012算例可以使用pimplefoam作为求解器,可以使用并行计算的结论。这说明以上两个蜕变关系可以在该算例的测试中使用。
[0046]
步骤4:根据基线用例及蜕变关系设计用例生成器。
[0047]
具体为:设计用例生成器,生成器具有用例设置功能,能根据被测程序生成可运行用例所需的所有文件。每个基线用例的设置都存储在一个词典中,可以针对不同的模拟进行修改。将随机生成参数的参数生成器同样以词典的形式保存,执行生成器时将调用若干个(数量是随机生成的)参数的生成器生成随机参数,修改相应的基线用例配置,生成新的测试用例。
[0048]
用例生成器运行如图2所示。
[0049]
通过求解器参数配置与流体力学知识,选择nu、re、ncorrectors、noutercorrectors、nnonorthogonalcorrectors、numberofsubdomains参数作为随机生成变量,构建随机生成这些参数的函数。在具体实践中,参数选择会根据实际情况进行更改。针对蜕变关系1,该蜕变关系的测试程序将一个随机生成的用例(随机生成的参数中不包括与并行计算有关的numberofsubdomains)作为源测试用例,修改其numberofsubdomains参数的值以生成新的测试用例,在本实施中一个源测试用例生成5个新测试用例,生成个数可随特定测试的需要修改。源测试用例与新测试用例组构成一个蜕变测试组。针对蜕变关系2,该蜕变关系没有用例间比较的要求,只对各用例输出的每个时间步长文件夹中ddtcorrddt0(u)与ddt0(u)文件中的对应数据进行检查即可。根据如上要求构建用例生成器。
[0050]
步骤5:调用用例生成器随机生成测试用例。
[0051]
具体为:打开用例生成器,指定测试使用的用例与蜕变关系,设置生成蜕变关系组的个数(对于蜕变关系2这种没有用例间比较的要求的关系而言,单个用例即为一个蜕变关系组),输入设置后,程序将自动生成用例。
[0052]
步骤6:验证用例的合法性,将用例输入程序进行计算。
[0053]
具体为:验证新产生的用例输入没有违反openfoam用例的规范,保证输入的合法性。举例:在本实施中,numberofsubdomains参数的值范围为1-20,如果参数值超过20或小于1即认为输入不合法,将排除此用例,以保证输入用例的有效性。确认输入用例有效后,运行用例中的allrun脚本,调用被测程序进行计算。
[0054]
步骤7:检查程序输出的正确性,以用例的输出进行断言,通过错误输出捕捉程序的错误。
[0055]
具体为:检查openfoam是否正常输出,如果程序未按预期正确地生成输出结构或由于其他未知错误抛出错误,则将错误信息(包括用例信息、错误描述、计算缓存等)存入错误报告。如果openfoam正常运行生成输出,则以步骤2中提取的蜕变关系为参照,对用例输出进行检查。以蜕变关系1生成的蜕变关系组中,将源用例的输出与其他用例的对应输出数据两两比较。以蜕变关系2生成的用例,将检查用例输出的步长文件中ddtcorrddt0(u)与ddt0(u)对应数据是否相同。数据相同则通过测试,存入测试文档,数据不同则认为发现程序错误,将用例信息、错误数据的位置等信息输入测试文档,记录错误信息。
[0056]
步骤8:将先前存入测试文档的信息汇总,产生测试报告,将测试报告提交给软件开发者。
技术特征:
1.一种基于蜕变测试的计算机辅助工程软件测试方法,其特征在于,包括如下步骤:步骤1:获取被测程序适用的基线用例;收集适用于被测程序的可用用例,验证这些用例输出能满足预期结果;具体为:通过各种渠道获得数据编写适用于被测程序的用例及用例的期望输出,收集的渠道包括相关实验数据、文献中的领域基准问题数据、被测程序附带的向导用例;然后,将获得的用例输入被测程序,程序应能正常运行,并且程序输出能正确满足要求;否则将错误记入测试文档;步骤2:获取被测程序有关的知识,提取蜕变关系;具体为:通过各种渠道获得与被测程序用例有关的知识,提炼出生成用例间的蜕变关系,收集的渠道包括相关实验中已得到验证的参数间的关系、文献中记录的领域专业知识、被测程序代码逻辑、数值计算原理、逻辑常识;提取的蜕变关系定义为:一个已知可行的用例由某种规则转换为从现有的测试数据中生成的新测试用例,而两者输出间存在能比较这对测试用例产生输出的某种关系,或生成的新测试用例与原用例两者输出都符合某种关系的要求,这种关系被称为蜕变关系;步骤3:根据基线用例提取可随机修改的用例参数,确定每个基线用例适用的蜕变关系;具体为:通过基线用例中参数关系与程序的代码逻辑,总结出在进行不同的蜕变测试时,哪些用例可以进行该蜕变测试、用例的哪些参数不可修改、哪些参数值可随机生成;得到用例合法输入的范围,并确定每个基线用例可进行的蜕变测试;步骤4:根据基线用例及蜕变关系设计用例生成器;具体为:设计用例生成器,生成器具有用例设置功能,能生成可运行用例所需的所有文件;每个基线用例的设置都存储在一个词典中,针对不同的模拟进行修改;将随机生成的参数生成器同样以词典的形式保存,执行生成器时将调用若干个参数的生成器生成随机参数,修改相应的基线用例配置,生成新的测试用例;步骤5:调用用例生成器随机生成测试用例;具体为:指定进行蜕变测试的种类,测试使用的基准用例及生成的用例数,初始化用例生成器的参数,由生成器随机生成用例;步骤6:验证用例的合法性,将用例输入程序进行计算;具体为:根据步骤3确定的用例参数的合法范围及用例特性,确定由步骤5产生的用例能合法地输入被测程序;确认用例正确后调用被测程序进行计算;步骤7:检查程序输出的正确性,以用例的输出进行断言,通过错误输出捕捉程序的错误;具体为:检查程序是否正常输出,如果程序未按预期正确地生成输出结构或由于其他未知原因抛出错误,则将错误信息存入测试文档,错误信息包括用例信息、错误描述和计算缓存;如果被测程序正常运行生成输出,则以步骤2中提取的蜕变关系为参照,对用例输出进行检查,包含两种情况:情况a:蜕变测试的蜕变关系为从现有的测试数据中生成的新测试用例,而两者输出间存在能比较这对测试用例产生输出的关系;这种蜕变测试强调验证蜕变关系在用例输出间的关系;因此将同一组蜕变测试用例以某种规则两两比较,验证两用例的输出关系满足蜕
变关系;情况b:蜕变测试的蜕变关系为生成的新测试用例与原用例两者输出都符合某种关系的要求;这种蜕变测试强调验证随机生成的若干单个用例是否满足蜕变关系;因此将分别检查单个用例,验证各个用例输出符合蜕变关系的要求;如果用例通过了蜕变测试,则在测试文档中记录用例的名称、测试时间信息,如果用例没有通过蜕变测试,则在测试记录中记录用例的错误信息,包括打印时间和打印运行时信息;步骤8:将先前存入测试文档的信息汇总,产生测试报告,将测试报告提交给软件开发者。2.根据权利要求1所述的一种基于蜕变测试的计算机辅助工程软件测试方法,其特征在于,其中步骤6、7、8通过脚本进行自动化测试。
技术总结
本发明提供了一种基于蜕变测试的计算机辅助工程软件测试方法,可用于测试基于计算机辅助工程的工业软件,如开源项目OpenFOAM、FDS等;亦可根据特定工业软件的用例特征及领域知识,对本发明的相关步骤进行适配,从而对该特定工业软件进行自动化黑盒测试。本发明能够有效地对基于计算机辅助工程的工业软件进行自动化测试,帮助工业软件开发者在系统测试阶段更好地揭示产品故障,提高软件质量,降低软件开发成本。开发成本。开发成本。
技术研发人员:刘昊 李晓晨 郭世凯 江贺
受保护的技术使用者:大连海事大学
技术研发日:2023.05.19
技术公布日:2023/8/21
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:一种户外太阳能天幕的制作方法 下一篇:一种寿司卷/紫菜卷生产线的制作方法