专利名称:基于SPEA2的无人机PX4中RESTful API测试套件最小化方法
专利类型:发明专利
专利申请号:CN202210201699.2
专利申请(专利权)人:南京航空航天大学
权利人地址:江苏省南京市秦淮区御道街29号
专利发明(设计)人:王铁鑫,燕嘉诚
专利摘要:本发明公开了一种基于SPEA2的无人机PX4中RESTfulAPI测试套件最小化方法,包括如下步骤:(1)确定无人机PX4中RESTfulAPI的测试用例的特性并设计生成测试用例;(2)针对无人机PX4的测试套件制定三个优化目标,即适应度函数;(3)给每个测试用例中的三个优化目标的数据来源打上标签,将数据自动收集汇总;(4)根据步骤(2)中的优化目标使用SPEA2算法对无人机PX4的测试套件进行最小化处理,得到最小化后的测试套件。本发明用以解决无人机PX4中RESTfulAPI的测试套件最小化问题,能够使设计出的测试套件适用于无人机PX4,通过SPEA2算法最小化后的测试套件具有更好的检测效果。
主权利要求:
1.一种基于SPEA2的无人机PX4中RESTfulAPI测试套件最小化方法,其特征在于,包括以下步骤:(1)根据无人机功能实现逻辑分析被测无人机PX4中各RESTfulAPI的特性;
(2)根据无人机PX4中各RESTfulAPI的属性设计测试用例;
(3)定义无人机PX4中RESTfulAPI的测试套件的优化目标,确定优化目标的参数设置;
(4)根据优化目标使用SPEA2算法对无人机PX4中RESTfulAPI的测试套件最小化方法;
所述步骤(1)包括以下步骤:
(11)根据被测无人机PX4中RESTfulAPI的特性确定各RESTfulAPI的优先层级;在将确定各RESTfulAPI的优先层级的时候,需要将各RESTfulAPI根据功能依次分为以下层级:将基础控制功能API定义为基础控制层;将复杂操控功能API定义为复杂操控层;将逻辑策略功能API定义为逻辑策略层;
(12)根据逻辑实现顺序分析各RESTfulAPI之间的先后调用关系;
(13)根据调用关系绘制调用图;
所述步骤(2)包括以下步骤:
(21)设计测试用例时需设置RESTfulAPI的取值范围,根据提供的RESTfulAPI设计说明确定测试输入值;
(22)设计测试用例时根据步骤(1)的调用关系图顺序调用所需API;
所述步骤(3)包括以下步骤:
(31)在测试无人机PX4中的RESTfulAPI时,执行测试用例后得到测试结构与预期结果不一致时,将从测试用例结果中检测到故障;根据PX4的物理特性及对无人机PX4系统运行的影响,对故障进行分类,确定发生故障的严重性,选取故障严重等级作为优化目标之一;
(32)故障检测能力是用来评判测试用例的优劣的重要参数,故障检测能力越高的测试用例被视为性能更好的测试用例,选取故障检测能力作为优化目标之一;测试用例的故障检测能力用下面的方法来衡量:其中,FDC是故障检测能力;SucRtci是在给定执行次数内测试用例i的执行成功的百分比;NumSuctci是在给定执行次数内测试用例i的执行成功的次数;NumFailtci是在给定执行次数内测试用例i的执行失败的次数;测试用例执行时间以实际执行时间为基准;
(33)测试用例执行时间用来评估一个测试用例的优劣,选取测试用例执行时间作为优化目标之一;
所述步骤(4)包括以下步骤:
(41)使用SPEA2算法对测试用例的三个优化目标进行筛选优化,初始化种群,根据支配关系构造非支配解集:对群体P进行分类排序的目的是为了将其划分成若干个互不相交的子群体,对个体分类排序的依据为Pareto支配关系;N为进化群体P的规模,M为归档集Q的大小,T为预定的进化代数;
初始化:产生一个初始种群P0,同时使归档集Q0为空,t=0;
适应度分配:计算Pt和Qt中所有个体的适应度;
环境选择:将Pt和Qt中所有的非支配个体保存到Qt+1中,若Qt+1的大小超过M,则利用修剪过程降低其大小;若Qt+1的大小比M小,则从Pt和Qt中选取支配个体填满Qt+1;
结束条件:若t≥T,则将Qt+1中的所有非支配个体作为返回结果,保存到NDSet中;
配对选择:对Qt+1执行锦标赛选择;
进化操作:对Qt+1执行交叉、变异操作,并将结果保存到Qt+1中,t=t+1;
(42)根据三个优化目标设置选择算子、交叉算子和变异算子的参数;选择测试套件作为输入,在仿真模拟器中进行测试模拟;运行算子,输出结果;
(43)将精简后的测试用例合并为最小化后的测试套件。 说明书 : 基于SPEA2的无人机PX4中RESTfulAPI测试套件最小化方法技术领域[0001] 本发明属于软件测试领域,具体涉及一种基于SPEA2的无人机PX4中RESTfulAPI测试套件最小化方法。背景技术[0002] PX4是平台无关的自动驾驶仪软件(或称为固件),可以驱动无人机或无人车。它可以被烧写在某些硬件(如Pixhawkv2),并与地面控制站在一起组成一个完全独立的自动驾驶系统。[0003] PX4地面控制站被称为QGroundControl,是PX4自驾系统不可分割的一部分,可以运行在Windows,OSX或Linux等多个平台。采用RESTful风格定义无人机PX4中的接口,可以轻松实现跨平台的调用,让使用不同编程语言的用户都能够访问调用操控无人机PX4。[0004] 对于无人机PX4中RESTfulAPI的测试,通常会开发出一个测试套件来进行测试。但是,随着无人机PX4中RESTfulAPI的数量的增加,测试用例的数量也会随之增加。考虑到时间和资源成本,实际上不可能执行所有的测试用例。因此,有必要寻找一种解决方案,在执行测试用例之前有效地最小化测试套件,以降低测试成本。[0005] 测试套件最小化(TestSuiteMinimization,TSM)存在两个潜在的问题:一是最小化的测试套件可能不能够覆盖所有测试功能(即测试需求);二是最小化的测试套件可能比原始测试套件具有更低的故障检测能力。因此,在实际的测试工作中,需要基于各种成本(例如,测试用例的执行时间)和有效性标准(例如,故障检测能力)来筛选测试用例。测试用例选择的总体目标是选择能够在有限时间预算内执行的测试用例,同时最佳地满足各种成本和效率目标。因此,我们在测试信息物理系统中的RESTfulAPI时也面临着挑战,即需要最小化用于测试产品的测试套件,同时能够实现高故障检测能力。发明内容[0006] 发明目的:为了测试无人机PX4中RESTfulAPI以及降低测试成本,本发明的目的是提供一种无人机PX4中RESTfulAPI测试用例的设计方法和基于SPEA2算法的测试套件最小化方法。[0007] 技术方案:本发明所述的一种基于SPEA2的无人机PX4中RESTfulAPI测试套件最小化方法,包括以下步骤:[0008] (1)根据无人机功能实现逻辑分析被测无人机PX4中各RESTfulAPI的特性;[0009] (2)根据无人机PX4中各RESTfulAPI的属性设计测试用例;[0010] (3)定义无人机PX4中RESTfulAPI的测试套件的优化目标,确定优化目标的参数设置;[0011] (4)根据优化目标使用SPEA2算法对无人机PX4中RESTfulAPI的测试套件最小化方法。[0012] 进一步地,所述步骤(1)包括以下步骤:[0013] (11)根据被测无人机PX4中RESTfulAPI的特性确定各RESTfulAPI的优先层级;在将确定各RESTfulAPI的优先层级的时候,需要将各RESTfulAPI根据功能依次分为以下层级:将基础控制功能API定义为基础控制层;将复杂操控功能API定义为复杂操控层;将逻辑策略功能API定义为逻辑策略层;[0014] (12)根据逻辑实现顺序分析各RESTfulAPI之间的先后调用关系;[0015] (13)根据调用关系绘制调用图。[0016] 进一步地,所述步骤(2)包括以下步骤:[0017] (21)设计测试用例时需设置RESTfulAPI的取值范围,根据提供的RESTfulAPI设计说明确定测试输入值;[0018] (22)设计测试用例时根据步骤(1)的调用关系图顺序调用所需API。[0019] 进一步地,所述步骤(3)包括以下步骤:[0020] (31)在测试无人机PX4中的RESTfulAPI时,执行测试用例后得到测试结构与预期结果不一致时,将从测试用例结果中检测到故障;根据PX4的物理特性及对无人机PX4系统运行的影响,对故障进行分类,确定发生故障的严重性,选取故障严重等级作为优化目标之一;[0021] (32)故障检测能力是用来评判测试用例的优劣的重要参数,故障检测能力越高的测试用例被视为性能更好的测试用例,选取故障检测能力作为优化目标之一;测试用例的故障检测能力用下面的方法来衡量:[0022][0023] 其中,FDC是故障检测能力;SucRtci是在给定执行次数内测试用例i的执行成功的百分比;NumSuctci是在给定执行次数内测试用例i的执行成功的次数;NumFailtci是在给定执行次数内测试用例i的执行失败的次数;测试用例执行时间以实际执行时间为基准;[0024] (33)测试用例执行时间可以用来评估一个测试用例的优劣,选取测试用例执行时间作为优化目标之一。[0025] 进一步地,所述步骤(4)包括以下步骤:[0026] (41)使用SPEA2算法对测试用例的三个优化目标进行筛选优化,初始化种群,根据支配关系构造非支配解集:[0027] 对群体P进行分类排序的目的是为了将其划分成若干个互不相交的子群体,对个体分类排序的依据为Pareto支配关系;N为进化群体P的规模,M为归档集Q的大小,T为预定的进化代数;[0028] 初始化:产生一个初始种群P0,同时使归档集Q0为空,t=0;[0029] 适应度分配:计算Pt和Qt中所有个体的适应度;[0030] 环境选择:将Pt和Qt中所有的非支配个体保存到Qt+1中,若Qt+1的大小超过M,则利用修剪过程降低其大小;若Qt+1的大小比M小,则从Pt和Qt中选取支配个体填满Qt+1;[0031] 结束条件:若t≥T,或其他终止条件满足,则将Qt+1中的所有非支配个体作为返回结果,保存到NDSet中;[0032] 配对选择:对Qt+1执行锦标赛选择;[0033] 进化操作:对Qt+1执行交叉、变异操作,并将结果保存到Qt+1中,t=t+1;[0034] (42)根据三个优化目标设置选择算子、交叉算子和变异算子的参数;选择测试套件作为输入,在仿真模拟器中进行测试模拟;运行算子,输出结果;[0035] (43)将精简后的测试用例合并为最小化后的测试套件。[0036] 有益效果:与现有技术相比,本发明的有益效果:测试用例的设计充分考虑了信息物理系统的特性,更加适用于信息物理系统的测试。与原始测试套件相比,该方法定义了三个优化目标,通过优化目标对测试套件进行最小化处理,得到性能更加优越的测试套件。附图说明[0037] 图1本发明的流程图;[0038] 图2为本发明的RESTfulAPI分级图;[0039] 图3为本发明的RESTfulAPI调用顺序图。具体实施方式[0040] 下面结合附图对本发明做进一步详细说明。[0041] 本发明提出一种基于SPEA2的无人机PX4中RESTfulAPI测试套件最小化方法,如图1所示,包括以下步骤:[0042] 步骤1:根据无人机功能实现逻辑分析被测无人机PX4中各RESTfulAPI的特性。[0043] RESTfulAPI分级。首先分析无人机PX4中RESTfulAPI的功能。RESTfulAPI的功能是支撑信息物理系统正常工作的关键,不同的功能所对应的实现方式也不同。分析RESTfulAPI的工作方式来标记该RESTfulAPI的功能。[0044] 如图2所示,在将确定各RESTfulAPI的优先层级的时候,需要将各RESTfulAPI根据功能依次划分为三个层级,基础控制功能对应基础控制层;复杂操控功能API对应复杂操控层;逻辑策略功能API对应逻辑策略层。根据分析得到的各RESTfulAPI的功能将对应的RESTfulAPI划分入对应的层级中。[0045] 如图3所示,各个API之间的调用关系可能是顺序执行,可能是并行执行。当某一API实现自身功能时,需要依次或同时调用其他功能的API,故分析API的相互关系时需要根据逻辑实现顺序分析各RESTfulAPI之间的先后调用关系,根据调用关系绘制调用图。[0046] 步骤2:根据无人机PX4中各RESTfulAPI的属性设计测试用例。[0047] 设计测试用例时需考虑API的赋值范围。设计测试用例时根据步骤1的调用关系图顺序调用所需API。在Pycharm中创建一个python工程,工程目录中不要有中文、空格等特殊符号,导入所有测试用例。[0048] 引入如下的类:[0049] Flask类:用于调用Flask框架编写RESTfulAPI。[0050] request类:用于获取请求RESTfulAPI中的数据,其中获取的方法包括post、get等。[0051] json类:用于从字符串解析JSON对象。[0052] pprint类:pprint模块提供了打印任意python数据结构的方法。[0053] time类:用于获取当前时间状态[0054] 对优化目标故障严重级别的数值收集设置标签为FaultLevel;[0055] 对优化目标平均故障检测百分比的数值收集设置标签为FaultDetectedCapacity;[0056] 对优化目标测试用例执行时间的数值收集设置标签为TimeExecution;[0057] 根据优化目标的定义收集每个测试用例的数据并存储进数据库中。[0058] 步骤3:定义无人机PX4中RESTfulAPI的测试套件的优化目标,确定优化目标的参数设置。包括以下步骤:[0059] 在测试无人机PX4中的RESTfulAPI时,当测试结果与预期结果不一致时,将从测试用例结果中检测到故障。面对这些故障,需要尝试找出每个故障的原因,分析其对信息物理系统运行的影响,然后对这些故障进行分类,以确定发生故障的严重性。选取故障严重级别作为优化目标之一。[0060] 将信息物理系统中出现的故障大致分为四个级别,四个故障等级分别是致命故障、严重故障、一般故障和轻微故障。[0061] 故障检测能力是用来评判测试用例优劣的重要参数,选取故障检测能力作为优化目标之一。[0062] 测试用例执行时间可以用来评估一个测试用例的优劣,选取测试用例执行时间作为优化目标之一。[0063] 对优化目标故障严重级别的数值收集设置标签为FaultLevel;对优化目标平均故障检测百分比的数值收集设置标签为FaultDetectedCapacity;对优化目标测试用例执行时间的数值收集设置标签为TimeExecution;根据优化目标的定义收集每个测试用例的数据并存储进数据库中。[0064] 将无人机PX4中出现的故障大致分为四个级别,四个故障等级分别是致命故障、严重故障、一般故障和轻微故障。轻微故障:对信息物理系统的功能没有影响或外部干扰导致的故障视为轻微故障。一般故障:对信息物理系统的整体运行没有影响,只对部分功能产生影响的故障视为一般故障。严重故障:对信息物理系统的整体运行有一定影响且对部分功能产生影响的故障视为严重故障。致命故障:对信息物理系统的整体运行产生重大影响,进而导致整个信息物理系统崩溃的故障视为致命故障。[0065] 测试用例的故障检测能力(FDC)可以用下面的方法来衡量:[0066][0067] 其中,FDC是故障检测能力;SucRtci是在给定执行次数内测试用例i的执行成功的百分比;NumSuctci是在给定执行次数内测试用例i的执行成功的次数;NumFailtci是在给定执行次数内测试用例i的执行失败的次数;测试用例执行时间以实际执行时间为基准。[0068] 步骤4:根据优化目标使用SPEA2算法对无人机PX4中RESTfulAPI的测试套件最小化方法。[0069] 使用SPEA2算法对测试用例的三个优化目标进行筛选优化,首先初始化种群,根据支配关系构造非支配解集。[0070] (1)构造过程如下:[0071] 对群体P进行分类排序的目的是为了将其划分成若干个互不相交的子群体,对个体分类排序的依据为Pareto支配关系。[0072] N为进化群体P的规模,M为归档集Q的大小,T为预定的进化代数。[0073] 1:初始化:产生一个初始种群P0,同时使归档集Q0为空,t=0.[0074] 2:适应度分配:计算Pt和Qt中所有个体的适应度。[0075] 3:环境选择:将Pt和Qt中所有的非支配个体保存到Qt+1中。若Qt+1的大小超过M,则利用修剪过程降低其大小;若Qt+1的大小比M小,则从Pt和Qt中选取支配个体填满Qt+1。[0076] 4:结束条件:若t≥T,或其他终止条件满足,则将Qt+1中的所有非支配个体作为返回结果,保存到NDSet中。[0077] 5:配对选择:对Qt+1执行锦标赛选择。[0078] 6:进化操作:对Qt+1执行交叉、变异操作,并将结果保存到Qt+1中,t=t+1,转步骤2。[0079] (2)根据步骤3中提出的三个优化目标(即适应度函数)设置选择算子、交叉算子和变异算子的参数。[0080] (3)选择测试套件作为输入,在仿真模拟器中进行测试模拟。[0081] (4)运行算子,输出结果。[0082] 将精简后的测试用例合并为最小化后的测试套件在Pycharm中创建一个python工程,使用Jmetal框架调用SPEA2算法。[0083] 引入如下类:[0084] fromjmetal.algorithm.multiobjectiveimportSPEA2[0085] fromjmetal.operatorimportBitFlipMutation,SPXCrossover[0086] fromJiaChengSearching.problemimportBinarySelection[0087] fromjmetal.util.termination_criterionimportStoppingByEvaluations[0088] fromjmetal.lab.visualizationimportPlot[0089] fromjmetal.util.solutionimportget_non_dominated_solutions,print_function_values_to_file[0090] importtime[0091] 将数据库中的数据作为输入,SPEA2算法设置如下:[0092] population_size=100,[0093] offspring_population_size=100,[0094] mutation=BitFlipMutation(probability=1.0/problem.number_of_bits),[0095] crossover=SPXCrossover(probability=1.0),[0096] termination_criterion=StoppingByEvaluations(max_evaluations=35000)[0097] 初始化种群大小为100,子代大小为100,交叉变异概率为1.0,终止条件为350次执行。将最终数据以csv文件的形式放到output目录下,不同RESTfulAPI对应的不同的文件名:算法名_API名。[0098] 编码方式:种群采用二进制编码方式,0代表不选择当前的测试用例,1代表选择当前的测试用例。[0099] 计算优化后的测试套件的反世代距离评价指标IGD评估优劣:[0100][0101] 其中,V为均匀分布在真实帕累托面上的点集,|V|代表分布在真实帕累托面上的点集P的个体数;U为使用优化算法得到的最优解集,d(t,U)表示V中的个体t到最优解集U的欧氏距离。将精简后的测试用例合并为最小化后的测试套件。[0102] 本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。[0103] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。[0104] 尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。[0105] 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
专利地区:江苏
专利申请日期:2022-03-02
专利公开日期:2024-07-26
专利公告号:CN114816982B