专利名称:一种飞机工程算法的测试方法及系统
专利类型:实用新型专利
专利申请号:CN202210871277.6
专利申请(专利权)人:上海航空工业(集团)有限公司,商飞软件有限公司
权利人地址:上海市徐汇区云锦路5号
专利发明(设计)人:吕泽巨,吕陈扬韬,孙成祥
专利摘要:本申请提供了一种飞机工程算法的测试方法及系统,包括:获取用于分析飞机结构的飞机工程算法中的目标子算法;从测试用例库中确定出用于测试目标子算法的测试用例;当算法库中未存储有目标子算法对应的标准算法时,进行数据解析,确定每个测试用例对应的一组测试数据;基于每组测试数据中的输入数据,确定目标子算法输出的每组测试数据对应的计算结果;根据每组测试数据的预期输出结果与计算结果的对比结果,确定目标子算法的测试结果;所述测试结果用于确定是否将所述目标子算法存储至所述算法库中。这样,通过所提供的测试方法可以实现对飞机工程算法中子算法的计算准确度的监督,通过构建的算法库实现了对飞机工程算法的整合。
主权利要求:
1.一种飞机工程算法的测试方法,其特征在于,所述测试方法包括:
获取用于分析飞机结构的飞机工程算法中的目标子算法;
从预先构建好的测试用例库中确定出用于测试所述目标子算法的至少一个测试用例;
所述测试用例为测试目标子算法是否达到预期功能的一组数据;
判断预先构建好的算法库中是否存储有所述目标子算法对应的标准算法;所述标准算法为与所述目标子算法具有相同算法名称且用于分析确定飞机同一位置处结构特性的算法;
当为否时,分别对每个测试用例进行数据解析,确定每个测试用例对应的一组测试数据,得到至少一组测试数据;所述测试数据中至少包括测试所述目标子算法所需的输入数据以及预期输出结果;
将每组测试数据中的输入数据输入至所述目标子算法中执行计算测试,确定所述目标子算法输出的每组测试数据对应的计算结果;
根据每组测试数据的预期输出结果与计算结果的对比结果,确定所述目标子算法的测试结果;所述测试结果用于确定是否将所述目标子算法存储至所述算法库中。
2.根据权利要求1所述的测试方法,其特征在于,当所述算法库中存储有所述目标子算法对应的标准算法时,所述测试方法还包括:对比所述目标子算法的程序代码与所述标准算法的程序代码是否完全一致;
当不一致时,分别对每个测试用例进行数据解析,确定每个测试用例对应的一组测试数据,得到至少一组测试数据;所述测试数据中至少包括测试所述目标子算法所需的输入数据以及预期输出结果;
将每组测试数据中的输入数据分别输入至所述目标子算法和所述标准算法中执行计算测试,确定所述目标子算法输出的每组测试数据对应的计算结果和所述目标子算法对应的第一计算效率,以及确定所述标准算法对应的第二计算效率;
根据每组测试数据的预期输出结果与计算结果的对比结果,以及根据所述第一计算效率和所述第二计算效率的对比结果,确定所述目标子算法的测试结果;所述测试结果用于确定是否使用所述目标子算法替换所述算法库中标准算法。
3.根据权利要求1所述的测试方法,其特征在于,在根据每组测试数据的预期输出结果与计算结果的对比结果,确定所述目标子算法的测试结果之后,所述测试方法还包括:当所述测试结果为测试通过且算法正确时,将所述目标子算法保存至所述算法库中,并对所述目标子算法添加分类标注信息。
4.根据权利要求2所述的测试方法,其特征在于,在根据每组测试数据的预期输出结果与计算结果的对比结果,以及根据所述第一计算效率和所述第二计算效率的对比结果,确定所述目标子算法的测试结果之后,所述测试方法还包括:当所述测试结果为测试通过、算法正确以及所述第一计算效率高于所述第二计算效率时,使用所述目标子算法替换所述算法库中的所述标准算法。
5.根据权利要求1所述的测试方法,其特征在于,所述从预先构建好的测试用例库中确定出用于测试所述目标子算法的至少一个测试用例,包括:使用测试基础服务库中的识别程序对所述目标子算法进行识别,确定所述目标子算法的索引信息;所述索引信息用于从所述测试用例库中确定出测试所述目标子算法所需的测试用例;
基于所述索引信息,从所述测试用例库中确定出用于测试所述目标子算法的至少一个测试用例。
6.根据权利要求1所述的测试方法,其特征在于,所述将每组测试数据中的输入数据输入至所述目标子算法中执行计算测试,包括:通过测试引擎,将每组测试数据中的输入数据输入至所述目标子算法中执行计算测试;所述测试引擎用于对飞机工程算法中的目标子算法进行调用计算。
7.根据权利要求2所述的测试方法,其特征在于,当所述目标子算法的程序代码与所述标准算法的程序代码完全一致时,所述测试方法还包括:向客户端反馈测试结果信息;所述测试结果信息为所述目标子算法已存在于所述算法库中。
8.一种飞机工程算法的测试系统,其特征在于,所述测试系统包括:
获取模块,用于获取用于分析飞机结构的飞机工程算法中的目标子算法;
测试用例确定模块,用于从预先构建好的测试用例库中确定出用于测试所述目标子算法的至少一个测试用例;所述测试用例为测试目标子算法是否达到预期功能的一组数据;
判断模块,用于判断预先构建好的算法库中是否存储有所述目标子算法对应的标准算法;所述标准算法为与所述目标子算法具有相同算法名称且用于分析确定飞机同一位置处结构特性的算法;
解析模块,用于当算法库中未存储有所述目标子算法对应的标准算法,分别对每个测试用例进行数据解析,确定每个测试用例对应的一组测试数据,得到至少一组测试数据;所述测试数据中至少包括测试所述目标子算法所需的输入数据以及预期输出结果;
执行模块,用于将每组测试数据中的输入数据输入至所述目标子算法中执行计算测试,确定所述目标子算法输出的每组测试数据对应的计算结果;
测试结果确定模块,用于根据每组测试数据的预期输出结果与计算结果的对比结果,确定所述目标子算法的测试结果;所述测试结果用于确定是否将所述目标子算法存储至所述算法库中。
9.一种电子设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过所述总线进行通信,所述机器可读指令被所述处理器运行时执行如权利要求1至7任一所述的测试方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1至7任一所述的测试方法的步骤。 说明书 : 一种飞机工程算法的测试方法及系统技术领域[0001] 本申请涉及工业软件测试技术领域,尤其是涉及一种飞机工程算法的测试方法及系统。背景技术[0002] 飞机结构分析算法主要是指对于飞机各个部位中在相关专业领域如强度、疲劳、载荷、损伤容限等,所涉及到的计算流程与方法以模块化算法的形式实现,进而简化计算流程,提高飞机设计人员的工作效率,并由计算结果反向判断设计过程是否存在进一步优化空间,从而使得飞机结构设计更加合理。在对飞机结构进行设计时要严谨无误,因此对算法实现的准确性就有极其严格的要求,而且由于实际要计算的飞机结构分析数据庞大,飞机设计工作时间节点不容推迟,那么在实际应用中对工程分析算法的高效率计算就有着极其严格的要求,算法测试系统就变得尤为重要。[0003] 由于飞机结构分析算法种类多样,而现有的测试方法大多只适用于工程软件平台自身或基于工程软件平台的单一分析算法,这类测试方法依赖于工程软件平台,当面对多种类、较复杂的飞机结构分析算法测试需求时,通用性、扩展性能力较差,极大的影响了算法开发人员的测试体验及工作效率。发明内容[0004] 有鉴于此,本申请的目的在于提供一种飞机工程算法的测试方法及系统,通过对飞机工程算法中的子算法进行测试监控,可以保证目标子算法的准确性,并通过构建的算法库,实现了飞机工程算法的整合。[0005] 本申请实施例提供了一种飞机工程算法的测试方法,所述测试方法包括:[0006] 获取用于分析飞机结构的飞机工程算法中的目标子算法;[0007] 从预先构建好的测试用例库中确定出用于测试所述目标子算法的至少一个测试用例;所述测试用例为测试目标子算法是否达到预期功能的一组数据;[0008] 判断预先构建好的算法库中是否存储有所述目标子算法对应的标准算法;所述标准算法为与所述目标子算法具有相同算法名称且用于分析确定飞机同一位置处结构特性的算法;[0009] 当为否时,分别对每个测试用例进行数据解析,确定每个测试用例对应的一组测试数据,得到至少一组测试数据;所述测试数据中至少包括测试所述目标子算法所需的输入数据以及预期输出结果;[0010] 将每组测试数据中的输入数据输入至所述目标子算法中执行计算测试,确定所述目标子算法输出的每组测试数据对应的计算结果;[0011] 根据每组测试数据的预期输出结果与计算结果的对比结果,确定所述目标子算法的测试结果;所述测试结果用于确定是否将所述目标子算法存储至所述算法库中。[0012] 可选的,当所述算法库中存储有所述目标子算法对应的标准算法时,所述测试方法还包括:[0013] 对比所述目标子算法的程序代码与所述标准算法的程序代码是否完全一致;[0014] 当不一致时,分别对每个测试用例进行数据解析,确定每个测试用例对应的一组测试数据,得到至少一组测试数据;所述测试数据中至少包括测试所述目标子算法所需的输入数据以及预期输出结果;[0015] 将每组测试数据中的输入数据分别输入至所述目标子算法和所述标准算法中执行计算测试,确定所述目标子算法输出的每组测试数据对应的计算结果和所述目标子算法对应的第一计算效率,以及确定所述标准算法对应的第二计算效率;[0016] 根据每组测试数据的预期输出结果与计算结果的对比结果,以及根据所述第一计算效率和所述第二计算效率的对比结果,确定所述目标子算法的测试结果;所述测试结果用于确定是否使用所述目标子算法替换所述算法库中标准算法。[0017] 可选的,在根据每组测试数据的预期输出结果与计算结果的对比结果,确定所述目标子算法的测试结果之后,所述测试方法还包括:[0018] 当所述测试结果为测试通过且算法正确时,将所述目标子算法保存至所述算法库中,并对所述目标子算法添加分类标注信息。[0019] 可选的,在根据每组测试数据的预期输出结果与计算结果的对比结果,以及根据所述第一计算效率和所述第二计算效率的对比结果,确定所述目标子算法的测试结果之后,所述测试方法还包括:[0020] 当所述测试结果为测试通过、算法正确以及所述第一计算效率高于所述第二计算效率时,使用所述目标子算法替换所述算法库中的所述标准算法。[0021] 可选的,所述从预先构建好的测试用例库中确定出用于测试所述目标子算法的至少一个测试用例,包括:[0022] 使用测试基础服务库中的识别程序对所述目标子算法进行识别,确定所述目标子算法的索引信息;所述索引信息用于从所述测试用例库中确定出测试所述目标子算法所需的测试用例;[0023] 基于所述索引信息,从所述测试用例库中确定出用于测试所述目标子算法的至少一个测试用例。[0024] 可选的,所述将每组测试数据中的输入数据输入至所述目标子算法中执行计算测试,包括:[0025] 通过测试引擎,将每组测试数据中的输入数据输入至所述目标子算法中执行计算测试;所述测试引擎用于对飞机工程算法中的目标子算法进行调用计算。[0026] 可选的,当所述目标子算法的程序代码与所述标准算法的程序代码完全一致时,所述测试方法还包括:[0027] 向客户端反馈测试结果信息;所述测试结果信息为所述目标子算法已存在于所述算法库中。[0028] 本申请实施例还提供了一种飞机工程算法的测试系统,所述测试系统包括:[0029] 获取模块,用于获取用于分析飞机结构的飞机工程算法中的目标子算法;[0030] 测试用例确定模块,用于从预先构建好的测试用例库中确定出用于测试所述目标子算法的至少一个测试用例;所述测试用例为测试目标子算法是否达到预期功能的一组数据;[0031] 判断模块,用于判断预先构建好的算法库中是否存储有所述目标子算法对应的标准算法;所述标准算法为与所述目标子算法具有相同算法名称且用于分析确定飞机同一位置处结构特性的算法;[0032] 解析模块,用于当算法库中未存储有所述目标子算法对应的标准算法,分别对每个测试用例进行数据解析,确定每个测试用例对应的一组测试数据,得到至少一组测试数据;所述测试数据中至少包括测试所述目标子算法所需的输入数据以及预期输出结果;[0033] 执行模块,用于将每组测试数据中的输入数据输入至所述目标子算法中执行计算测试,确定所述目标子算法输出的每组测试数据对应的计算结果;[0034] 测试结果确定模块,用于根据每组测试数据的预期输出结果与计算结果的对比结果,确定所述目标子算法的测试结果;所述测试结果用于确定是否将所述目标子算法存储至所述算法库中。[0035] 可选的,当所述算法库中存储有所述目标子算法对应的标准算法时,所述测试系统还用于:[0036] 对比所述目标子算法的程序代码与所述标准算法的程序代码是否完全一致;[0037] 当不一致时,分别对每个测试用例进行数据解析,确定每个测试用例对应的一组测试数据,得到至少一组测试数据;所述测试数据中至少包括测试所述目标子算法所需的输入数据以及预期输出结果;[0038] 将每组测试数据中的输入数据分别输入至所述目标子算法和所述标准算法中执行计算测试,确定所述目标子算法输出的每组测试数据对应的计算结果和所述目标子算法对应的第一计算效率,以及确定所述标准算法对应的第二计算效率;[0039] 根据每组测试数据的预期输出结果与计算结果的对比结果,以及根据所述第一计算效率和所述第二计算效率的对比结果,确定所述目标子算法的测试结果;所述测试结果用于确定是否使用所述目标子算法替换所述算法库中标准算法。[0040] 可选的,所述测试系统还包括保存模块,所述保存模块用于:[0041] 当所述测试结果为测试通过且算法正确时,将所述目标子算法保存至所述算法库中,并对所述目标子算法添加分类标注信息。[0042] 可选的,所述保存模块还用于:[0043] 当所述测试结果为测试通过、算法正确以及所述第一计算效率高于所述第二计算效率时,使用所述目标子算法替换所述算法库中的所述标准算法。[0044] 可选的,所述测试用例确定模块在用于从预先构建好的测试用例库中确定出用于测试所述目标子算法的至少一个测试用例时,所述测试用例确定模块用于:[0045] 使用测试基础服务库中的识别程序对所述目标子算法进行识别,确定所述目标子算法的索引信息;所述索引信息用于从所述测试用例库中确定出测试所述目标子算法所需的测试用例;[0046] 基于所述索引信息,从所述测试用例库中确定出用于测试所述目标子算法的至少一个测试用例。[0047] 可选的,所述执行模块在用于将每组测试数据中的输入数据输入至所述目标子算法中执行计算测试时,所述执行模块用于:[0048] 通过测试引擎,将每组测试数据中的输入数据输入至所述目标子算法中执行计算测试;所述测试引擎用于对飞机工程算法中的目标子算法进行调用计算。[0049] 可选的,所述测试系统还包括反馈模块,所述反馈模块用于:[0050] 向客户端反馈测试结果信息;所述测试结果信息为所述目标子算法已存在于所述算法库中。[0051] 本申请实施例还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如上述的测试方法的步骤。[0052] 本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如上述的测试方法的步骤。[0053] 本申请实施例提供的一种飞机工程算法的测试方法,所述测试方法包括:获取用于分析飞机结构的飞机工程算法中的目标子算法;从预先构建好的测试用例库中确定出用于测试所述目标子算法的至少一个测试用例;所述测试用例为测试目标子算法是否达到预期功能的一组数据;判断预先构建好的算法库中是否存储有所述目标子算法对应的标准算法;所述标准算法为与所述目标子算法具有相同算法名称且用于分析确定飞机同一位置处结构特性的算法;当为否时,分别对每个测试用例进行数据解析,确定每个测试用例对应的一组测试数据,得到至少一组测试数据;所述测试数据中至少包括测试所述目标子算法所需的输入数据以及预期输出结果;将每组测试数据中的输入数据输入至所述目标子算法中执行计算测试,确定所述目标子算法输出的每组测试数据对应的计算结果;根据每组测试数据的预期输出结果与计算结果的对比结果,确定所述目标子算法的测试结果;所述测试结果用于确定是否将所述目标子算法存储至所述算法库中。[0054] 这样,通过构建出完善的测试算例库,可以针对多种类、较复杂的飞机结构分析工程算法提供充分有效的测试数据,避免因测试数据不充分而导致问题出现的情况,更加确保了飞机工程算法的准确性;同时对算法的计算效率做了严格的测试,保证了飞机结构分析工程算法在实际应用中的计算性能。并且本方案的集成性、可扩展性更好,当算法存储形式及算例数据存储形式较统一时,可在不更改系统结构的前提下,对多种工程软件平台中的算法进行集成,完成该系统规模的扩大和业务范围的扩展,有效的降低了系统管理、维护及再次开发的成本。此外还对测试过程进行全面监控,提高了测试效率,有效降低了测试成本。[0055] 为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。附图说明[0056] 为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。[0057] 图1为本申请实施例所提供的一种飞机工程算法的测试方法的流程图;[0058] 图2为本申请另一实施例所提供的一种飞机工程算法的测试方法的流程图;[0059] 图3为本申请实施例所提供的一种飞机工程算法的测试系统的结构示意图之一;[0060] 图4为本申请实施例所提供的一种飞机工程算法的测试系统的结构示意图之二;[0061] 图5为本申请实施例所提供的一种电子设备的结构示意图。具体实施方式[0062] 为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的每个其他实施例,都属于本申请保护的范围。[0063] 飞机结构分析算法主要是指对于飞机各个部位中在相关专业领域如强度、疲劳、载荷、损伤容限等,所涉及到的计算流程与方法以模块化算法的形式实现,进而简化计算流程,提高飞机设计人员的工作效率,并由计算结果反向判断设计过程是否存在进一步优化空间,从而使得飞机结构设计更加合理。但是由于飞机结构分析算法种类多样,而现有的测试方法大多只适用于工程软件平台自身或基于工程软件平台的单一分析算法,这类测试方法依赖于工程软件平台,当面对多种类、较复杂的飞机结构分析算法测试需求时,通用性、扩展性能力较差,极大的影响了算法开发人员的测试体验及工作效率。[0064] 基于此,本申请实施例提供了一种飞机工程算法的测试方法,通过对飞机工程算法中的子算法进行测试监控,可以保证目标子算法的准确性,并通过构建的算法库,实现了飞机工程算法的整合。[0065] 请参阅图1,图1为本申请实施例所提供的一种飞机工程算法的测试方法的流程图。如图1中所示,本申请实施例提供的测试方法,包括:[0066] S101、获取用于分析飞机结构的飞机工程算法中的目标子算法。[0067] 这里,根据飞机工程算法的测试任务需求获取用于分析飞机结构的飞机工程算法中的目标子算法。所述飞机工程算法为对于飞机各个部位中在相关专业领域如强度、疲劳、载荷、损伤容限等进行相应参数确定的算法,所述飞机工程算法为飞机总体算法的总称,所述飞机工程算法中包括种类多样的子算法。[0068] 每个子算法可用于确定飞机某个部位处的某个物理参量。所述飞机工程算法具体可以为针对民机的工程算法。[0069] 需要说明的是,飞机工程算法也称为飞机结构分析算法,飞机工程算法种类多样,而现有的测试方法大多只适用于工程软件平台自身或基于工程软件平台的单一分析算法,这类测试方法依赖于工程软件平台,当面对多种类、较复杂的飞机工程算法测试需求时,通用性、扩展性能力较差,极大的影响了算法开发人员的测试体验及工作效率。[0070] S102、从预先构建好的测试用例库中确定出用于测试所述目标子算法的至少一个测试用例。[0071] 这里,所述测试用例为测试目标子算法是否达到预期功能的一组数据。所述测试用例库中存储有多个测试用例,可以对多种多样的飞机工程算法中的子算法进行测试。[0072] 其中,所述测试用例库是基于大量真实的飞机结构分析数据,针对多种类复杂的飞机结构分析算法,提前构建出真实有效且完备的算法用例,并为算法的回归测试提供充分的测试用例,从而提升飞机结构分析工程算法的可靠性。[0073] 在本申请提供的一种实施方式中,所述从预先构建好的测试用例库中确定出用于测试所述目标子算法的至少一个测试用例,包括:使用测试基础服务库中的识别程序对所述目标子算法进行识别,确定所述目标子算法的索引信息;基于所述索引信息,从所述测试用例库中确定出用于测试所述目标子算法的至少一个测试用例。[0074] 这里,所述索引信息用于从所述测试算例库中确定出测试所述目标子算法所需的测试用例,所述索引信息中可以包括算法名称、算法类型以及所计算的飞机具体位置处的物理量等信息。测试用例库中每个测试用例会预先配置有相应的索引信息,这样在确定出目标子算法的索引信息后,通过匹配处理,可从测试用例库中匹配出测试所述目标子算法是否达到预期功能的至少一个测试用例。[0075] 其中,在确定目标子算法时,是通过测试基础服务库中的识别程序确定的。测试基础服务库用于为测试过程中的相关功能提供基础服务,主要包括识别所需要测试的飞机工程算法、在算例库中自动匹配出对应测试用例并进行解析测试、根据相关评判标准判断所测试算法是否准确有效等功能。通过执行基础测试服务库的各项功能,能够使测试流程实现智能化。[0076] S103、判断预先构建好的算法库中是否存储有所述目标子算法对应的标准算法。[0077] 这里,所述标准算法为与所述目标子算法具有相同算法名称且用于分析确定飞机同一位置处结构特性的算法。所述算法库可以为空也可以为存储有至少一个已测试合格的飞机工程算法中的子算法。[0078] 其中,所述算法库中包括的算法可为飞机工程算法的回归测试提供对照的标准算法。算法库中的算法具体存储形式为可执行的程序文件。[0079] S104、当为否时,分别对每个测试用例进行数据解析,确定每个测试用例对应的一组测试数据,得到至少一组测试数据。[0080] 这里,所述测试数据中至少包括测试所述目标子算法所需的输入数据以及预期输出结果。在对每个测试用例进行数据解析时,可通过测试基础服务库中预先保存的解析程序进行数据解析。[0081] 其中。每个测试用例可以解析出组测试数据,测试数据的数量与测试用例的数量相同。[0082] S105、将每组测试数据中的输入数据输入至所述目标子算法中执行计算测试,确定所述目标子算法输出的每组测试数据对应的计算结果。[0083] 在本申请提供的一种实施方式中,所述将每组测试数据中的输入数据输入至所述目标子算法中执行计算测试,包括:通过测试引擎,将每组测试数据中的输入数据输入至所述目标子算法中执行计算测试;所述测试引擎用于对飞机工程算法中的目标子算法进行调用计算。[0084] 这里,所述测试引擎为通用测试引擎,包括python引擎、Matlab引擎、AI引擎以及其他引擎等,在对测试用例进行解析结束后,会发送相应的测试请求,然后通过测试引擎来对飞机工程算法中的目标子算法进行调用计算。[0085] 其中,所述基于测试数据进行算法测试时,可以通过测试引擎同时进行多组计算测试,从而确定所述目标子算法输出的每组测试数据对应的计算结果,得到多组计算结果。[0086] S106、根据每组测试数据的预期输出结果与计算结果的对比结果,确定所述目标子算法的测试结果。[0087] 这里,所述测试结果用于确定是否将所述目标子算法存储至所述算法库中。其中,在确定对比结果时,针对每组测试数据的计算结果,确定与该计算结果属于同一测试数据的预期输出结果,然后进行一一对比,确定出与测试数据数量相同的至少一组对比结果,并对所有对比结果进行综合判断,判断后确定所述目标子算法的测试结果。[0088] 其中,在对所有对比结果进行综合判断时,可以根据预先设定的验证准则,确定测试结果。所述验证准则中设定了对比结果和测试结果的映射关系。[0089] 在本申请提供的一种实施方式中,在根据每组测试数据的预期输出结果与计算结果的对比结果,确定所述目标子算法的测试结果之后,所述测试方法还包括:当所述测试结果为测试通过且算法正确时,将所述目标子算法保存至所述算法库中,并对所述目标子算法添加分类标注信息。[0090] 这里,对所述目标子算法添加分类标注信息是为了方便后续算法查找和索引。[0091] 此外,所述测试结果还可能包括测试结束但算法错误,以及测试过程中断的结果,对于这种结果,可以向客户端直接反馈该测试结果,以供算法程序开发人员或相关人员对所述目标子算法进行重新调试和编辑。[0092] 本申请实施例的提供的一种飞机工程算法的测试方法,所述测试方法包括:获取用于分析飞机结构的飞机工程算法中的目标子算法;从预先构建好的测试用例库中确定出用于测试所述目标子算法的至少一个测试用例;所述测试用例为测试目标子算法是否达到预期功能的一组数据;判断预先构建好的算法库中是否存储有所述目标子算法对应的标准算法;所述标准算法为与所述目标子算法具有相同算法名称且用于分析确定飞机同一位置处结构特性的算法;当为否时,分别对每个测试用例进行数据解析,确定每个测试用例对应的一组测试数据,得到至少一组测试数据;所述测试数据中至少包括测试所述目标子算法所需的输入数据以及预期输出结果;将每组测试数据中的输入数据输入至所述目标子算法中执行计算测试,确定所述目标子算法输出的每组测试数据对应的计算结果;根据每组测试数据的预期输出结果与计算结果的对比结果,确定所述目标子算法的测试结果;所述测试结果用于确定是否将所述目标子算法存储至所述算法库中。[0093] 这样,本申请通过构建出完善的测试算例库,可以针对多种类、较复杂的飞机结构分析工程算法提供充分有效的测试数据,避免因测试数据不充分而导致问题出现的情况,更加确保了飞机工程算法的准确性;同时对算法的计算效率做了严格的测试,保证了飞机结构分析工程算法在实际应用中的计算性能。并且对多种工程软件平台中的算法进行集成,完成该系统规模的扩大和业务范围的扩展,有效的降低了系统管理、维护及再次开发的成本。此外还对测试过程进行全面监控,提高了测试效率,有效降低了测试成本。[0094] 请参阅图2,图2为本申请另一实施例所提供的一种飞机工程算法的测试方法的流程图。如图2中所示,本申请实施例提供的测试方法,包括:[0095] S201、获取用于分析飞机结构的飞机工程算法中的目标子算法。[0096] S202、从预先构建好的测试用例库中确定出用于测试所述目标子算法的至少一个测试用例。[0097] S203、判断预先构建好的算法库中是否存储有所述目标子算法对应的标准算法。[0098] 步骤S201‑S203的描述可以参照S101‑S103的描述,在此不做赘述。[0099] S204、当所述算法库中存储有所述目标子算法对应的标准算法时,对比所述目标子算法的程序代码与所述标准算法的程序代码是否完全一致。[0100] 这里,进行程序代码的一致性比较,是为了确定是否需要执行后续的测试工作,以便减轻计算压力和工作人员的工作量。[0101] 示例的,当所述目标子算法是用来确定飞机机翼强度的算法时,查找到的所述标准算法也是用来确定飞机机翼强度的算法。[0102] S205、当不一致时,分别对每个测试用例进行数据解析,确定每个测试用例对应的一组测试数据,得到至少一组测试数据。[0103] 这里,所述测试数据中至少包括测试所述目标子算法所需的输入数据以及预期输出结果。[0104] 其中,当目标子算法的程序代码与所述标准算法的程序代码不完全一致时,所执行的操作与步骤S104中当算法库中不存储有所述目标子算法对应的标准算法时的操作步骤相同,在此不再赘述。[0105] 在本申请提供的另一种实施方式中,当所述目标子算法的程序代码与所述标准算法的程序代码完全一致时,所述测试方法还包括:向客户端反馈测试结果信息;所述测试结果信息为所述目标子算法已存在于所述算法库中。[0106] 这里,当确定所述目标子算法的程序代码与所述标准算法的程序代码完全一致时,说明算法库中已经存在该目标子算法。然后,直接向客户端反馈所述目标子算法已存在于所述算法库中的测试结果信息,测试结束。这样可以减少算法的重复测试,从而减少计算压力。[0107] S206、将每组测试数据中的输入数据分别输入至所述目标子算法和所述标准算法中执行计算测试,确定所述目标子算法输出的每组测试数据对应的计算结果和所述目标子算法对应的第一计算效率,以及确定所述标准算法对应的第二计算效率。[0108] 这里,通过测试引擎,分别将每组测试数据中的输入数据输入至所述目标子算法和所述标准算法中执行计算测试,从而确定目标子算法输出的每组测试数据对应的计算结果和所述目标子算法的第一计算效率,以及确定标准算法的第二计算效率。[0109] 其中,因为算法库中所存储的子算法都是测试合格的算法,因此所述标准算法的测试结果一定是测试结束且算法正确。[0110] 其中,所述测试第一计算效率和所述第二计算效率可通过从测试开始到测试结束时所使用的时间进行确定。时间越短效率越高。[0111] S207、根据每组测试数据的预期输出结果与计算结果的对比结果,以及根据所述第一计算效率和所述第二计算效率的对比结果,确定所述目标子算法的测试结果。[0112] 这里,所述测试结果用于确定是否使用所述目标子算法替换所述算法库中标准算法。其中,所述根据每组测试数据的预期输出结果与计算结果的对比结果,包括,针对每组测试数据的计算结果,确定与该计算结果属于同一测试数据的预期输出结果,然后进行一一对比,确定出与测试数据数量相同的至少一组对比结果,并对所有对比结果进行综合判断确定第一对比结果。所述根据所述第一计算效率和所述第二计算效率的对比结果,包括,使用所述第一计算效率和所述第二计算效率进行对比,确定出一个对比结果,将该对比结果确定为第二对比结果。最后基于所述第一对比结果和第二对比结果进行综合判断,确定所述目标子算法的测试结果。[0113] 其中,在确定第一对比结果时,可以根据预先设定的验证准则,确定第一对比结果。所述验证准则中设定了对比结果和测试结果的映射关系。[0114] 在本申请提供的另一种实施方式中,在根据每组测试数据的预期输出结果与计算结果的对比结果,以及根据所述第一计算效率和所述第二计算效率的对比结果,确定所述目标子算法的测试结果之后,所述测试方法还包括:当所述测试结果为测试通过、算法正确以及所述第一计算效率高于所述第二计算效率时,使用所述目标子算法替换所述算法库中的所述标准算法。[0115] 这里,在确定出目标子算法优于从算法库中的确定的标准算法时,使用所述目标子算法替换所述标准算法,进行算法更新,从而可以进一步的提高算法库中算法的质量。[0116] 本申请实施例提供的一种飞机工程算法的测试方法,获取用于分析飞机结构的飞机工程算法中的目标子算法;从预先构建好的测试用例库中确定出用于测试所述目标子算法的至少一个测试用例;判断预先构建好的算法库中是否存储有所述目标子算法对应的标准算法;当所述算法库中存储有所述目标子算法对应的标准算法时,对比所述目标子算法的程序代码与所述标准算法的程序代码是否完全一致;当不一致时,分别对每个测试用例进行数据解析,确定每个测试用例对应的一组测试数据,得到至少一组测试数据;将每组测试数据中的输入数据分别输入至所述目标子算法和所述标准算法中执行计算测试,确定所述目标子算法输出的每组测试数据对应的计算结果和所述目标子算法对应的第一计算效率,以及确定所述标准算法对应的第二计算效率;根据每组测试数据的预期输出结果与计算结果的对比结果,以及根据所述第一计算效率和所述第二计算效率的对比结果,确定所述目标子算法的测试结果。[0117] 这样,通过构建出完善的测试算例库,可以针对多种类、较复杂的飞机结构分析工程算法提供充分有效的测试数据,避免因测试数据不充分而导致问题出现的情况,更加确保了飞机工程算法的准确性;同时对算法的计算效率做了严格的测试,保证了飞机结构分析工程算法在实际应用中的计算性能。并且本方案的集成性、可扩展性更好,当算法存储形式及算例数据存储形式较统一时,可在不更改系统结构的前提下,对多种工程软件平台中的算法进行集成,完成该系统规模的扩大和业务范围的扩展,有效的降低了系统管理、维护及再次开发的成本。此外还对测试过程进行全面监控,提高了测试效率,有效降低了测试成本。[0118] 请参阅图3、图4,图3为本申请实施例所提供的一种飞机工程算法的测试系统的结构示意图之一,图4为本申请实施例所提供的一种飞机工程算法的测试系统的结构示意图之二。如图3所示,所述测试系统300包括:[0119] 获取模块310,用于获取用于分析飞机结构的飞机工程算法中的目标子算法;[0120] 测试用例确定模块320,用于从预先构建好的测试用例库中确定出用于测试所述目标子算法的至少一个测试用例;所述测试用例为测试目标子算法是否达到预期功能的一组数据;[0121] 判断模块330,用于判断预先构建好的算法库中是否存储有所述目标子算法对应的标准算法;所述标准算法为与所述目标子算法具有相同算法名称且用于分析确定飞机同一位置处结构特性的算法;[0122] 解析模块340,用于当算法库中未存储有所述目标子算法对应的标准算法,分别对每个测试用例进行数据解析,确定每个测试用例对应的一组测试数据,得到至少一组测试数据;所述测试数据中至少包括测试所述目标子算法所需的输入数据以及预期输出结果;[0123] 执行模块350,用于将每组测试数据中的输入数据输入至所述目标子算法中执行计算测试,确定所述目标子算法输出的每组测试数据对应的计算结果;[0124] 测试结果确定模块360,用于根据每组测试数据的预期输出结果与计算结果的对比结果,确定所述目标子算法的测试结果;所述测试结果用于确定是否将所述目标子算法存储至所述算法库中。[0125] 可选的,当所述算法库中存储有所述目标子算法对应的标准算法时,所述测试系统300还用于:[0126] 对比所述目标子算法的程序代码与所述标准算法的程序代码是否完全一致;[0127] 当不一致时,分别对每个测试用例进行数据解析,确定每个测试用例对应的一组测试数据,得到至少一组测试数据;所述测试数据中至少包括测试所述目标子算法所需的输入数据以及预期输出结果;[0128] 将每组测试数据中的输入数据分别输入至所述目标子算法和所述标准算法中执行计算测试,确定所述目标子算法输出的每组测试数据对应的计算结果和所述目标子算法对应的第一计算效率,以及确定所述标准算法对应的第二计算效率;[0129] 根据每组测试数据的预期输出结果与计算结果的对比结果,以及根据所述第一计算效率和所述第二计算效率的对比结果,确定所述目标子算法的测试结果;所述测试结果用于确定是否使用所述目标子算法替换所述算法库中标准算法。[0130] 可选的,如图4所示,所述测试系统300还包括保存模块370,所述保存模块370用于:[0131] 当所述测试结果为测试通过且算法正确时,将所述目标子算法保存至所述算法库中,并对所述目标子算法添加分类标注信息。[0132] 可选的,所述保存模块370还用于:[0133] 当所述测试结果为测试通过、算法正确以及所述第一计算效率高于所述第二计算效率时,使用所述目标子算法替换所述算法库中的所述标准算法。[0134] 可选的,所述测试用例确定模块320在用于从预先构建好的测试用例库中确定出用于测试所述目标子算法的至少一个测试用例时,所述测试用例确定模块320用于:[0135] 使用测试基础服务库中的识别程序对所述目标子算法进行识别,确定所述目标子算法的索引信息;所述索引信息用于从所述测试用例库中确定出测试所述目标子算法所需的测试用例;[0136] 基于所述索引信息,从所述测试用例库中确定出用于测试所述目标子算法的至少一个测试用例。[0137] 可选的,所述执行模块350在用于将每组测试数据中的输入数据输入至所述目标子算法中执行计算测试时,所述执行模块350用于:[0138] 通过测试引擎,将每组测试数据中的输入数据输入至所述目标子算法中执行计算测试;所述测试引擎用于对飞机工程算法中的目标子算法进行调用计算。[0139] 可选的,所述测试系统300还包括反馈模块380,所述反馈模块380用于:[0140] 向客户端反馈测试结果信息;所述测试结果信息为所述目标子算法已存在于所述算法库中。[0141] 请参阅图5,图5为本申请实施例所提供的一种电子设备的结构示意图。如图5中所示,所述电子设备500包括处理器510、存储器520和总线530。[0142] 所述存储器520存储有所述处理器510可执行的机器可读指令,当电子设备500运行时,所述处理器510与所述存储器520之间通过总线530通信,所述机器可读指令被所述处理器510执行时,可以执行如上述图1以及图2所示方法实施例中的测试方法的步骤,具体实现方式可参见方法实施例,在此不再赘述。[0143] 本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时可以执行如上述图1以及图2所示方法实施例中的测试方法的步骤,具体实现方式可参见方法实施例,在此不再赘述。[0144] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。[0145] 在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。[0146] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。[0147] 另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。[0148] 所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read‑OnlyMemory,ROM)、随机存取存储器(RandomAccessMemory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。[0149] 最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
专利地区:上海
专利申请日期:2022-07-22
专利公开日期:2024-07-26
专利公告号:CN115129610B