燕嘉诚,印凯欧
(南京航空航天大学计算机科学与技术学院,江苏 南京 211100)
信息物理系统[1](Cyber-Physical System, CPS)是将计算、通信和过程控制技术紧密结合的自治系统,通过为物理对象配备与信息设备的接口,实现大型工程系统的实时感知、动态控制和信息服务。采用RESTful[2]风格定义信息物理系统中的接口,可以轻松实现跨平台调用,让使用不同编程语言的用户都能够访问调用信息物理系统中的资源。
对于信息物理系统中的RESTful API[2],通常会开发出一个测试套件来进行测试。但是随着信息物理系统中RESTful API数量的增加,测试用例的数量也会随之增加。考虑时间和资源成本,实际上不可能执行所有的测试用例。因此,有必要寻找一种解决方案,在执行测试用例之前有效地最小化测试套件,以降低测试成本[3]。
测试套件最小化[3](Test Suite Minimization, TSM)存在2个潜在问题:1)最小化的测试套件可能不能够覆盖所有测试功能(即测试需求);2)最小化的测试套件可能比原始测试套件具有更低的故障检测能力。因此,在实际的测试工作中,需要基于各种成本(例如,测试用例的执行时间)和有效性标准(例如,故障检测能力)来筛选测试用例。测试用例选择[4]的总体目标是选择能够在有限时间预算内执行的测试用例,同时最佳地满足各种成本和效率目标。
基于搜索的软件工程[4](Search-Based Software Engineering, SBSE)是传统软件工程和人工智能相结合的研究领域,SBSE运用元启发式搜索优化算法,在问题的候选解组成的空间中展开搜索,切实有效地解决软件工程相关问题。在解决多目标优化问题的时候,选取基于搜索的优化算法,通过适应度函数的构建来指导搜索,能够寻找最优解或接近最优的解,能够自动化和智能化地解决问题。
由于RESTful API通常应用于Web端的设计,测试人员可以访问代码,所以大多采用白盒测试的方法。对于信息物理系统中RESTful API的测试,测试人员并不清楚程序内部的编写内容,关注的更多是对功能需求的测试,必须采取黑盒测试方法,所以对于优化目标的选取与传统的测试优化存在一定差异。
通过研究发现,用于测试信息物理系统中RESTful API的测试套件中通常存在冗余测试用例,消除冗余测试用例可以降低测试的执行成本(测试最小化)。测试最小化需要同时满足测试需求以及高故障检测能力。因此面临着一个挑战,需要在保证测试套件的高故障检测能力和功能覆盖的同时减少测试成本和开销。
基于上述挑战,本文的目标问题是一个多目标优化问题,多目标优化算法可以被用来解决这一问题。本文首先根据信息物理系统的特性,定义了3个优化目标:故障严重级别(Fault Severity Level)、平均故障检测百分比(Average Percentage of Fault Detected)以及测试用例执行时间(Test Case Execution Time);其次,通过对比不同多目标优化算法的适用条件,本文选择使用NSGA-Ⅱ[5]算法对上述3个目标进行优化;最后,本文通过一个真实案例研究,使用NSGA-Ⅱ[5]算法对测试套件进行最小化处理,比较了NSGA-Ⅱ和Random Search(RS)同时应用于测试套件时的性能。
本文的贡献在于:1)针对信息物理系统中RESTful API的特性定义了3个优化目标;2)基于案例研究,通过与Random Search对比,评估NSGA-Ⅱ用于测试套件最小化的性能表现。
目前,大部分对于RESTful API的测试研究工作都是基于其在Web端的应用的,并没有一种专门用来测试信息物理系统中RESTful API的方法。
测试Web服务中的RESTful API的方法有很多种,其中,Segura等人[6]主张采用蜕变测试的方法,提出了6个抽象关系,它们捕捉了RESTful网络应用程序接口中发现的许多蜕变关系的形状并称之为蜕变关系输出模式(MROPs)。然后,每个MROP可以被实例化为一个或多个具体的蜕变关系。该方法使用6个网络应用程序接口中的真实错误进行评估。
Arcuri等人[7]提出了一种全自动的白盒测试方法,使用进化算法自动生成测试用例。该方法的优化目标是语句的覆盖度、代码间分支的覆盖度和不同API端口返回的HTTP状态代码,通过分析处理调用API后Web端返回的HTTP状态码,构建适应度函数。测试用例的筛选排序是基于代码覆盖率和错误发现度量来进行的。
Dipesh等人[4]定义了一个适应度函数,包括一个成本度量:时间差(TD)和3个有效性度量:平均优先级(MPR)、平均概率(MPO)和平均结果(MC),评估了8种多目标搜索算法的性能。通过2组案例的评估,证明了基于搜索的测试用例优化算法表现都要好于Random Search算法,这为本文的算法选择提供了指引。
测试套件最小化技术的应用很广泛,研究中最常见的测试集最小化技术是贪婪算法[8]的变体,该算法已被证明是有效的启发式算法。贪婪算法的2个众所周知的扩展[9]是Greedy Essential(贪婪本质)算法和Greedy Redundant Essential(贪婪冗余本质)算法。Chen和Lau[8]将这2个贪婪算法的变种与另一个启发式算法HGS[10](Harrold-Gupta-Soffa)进行了比较。他们的结果表明,HGS算法可以在不严重影响测试集缩减程度的情况下,显著提高减少测试集的故障检测效率,相比GE和GRE算法效果明显更好。
Zhang等人[11]提出了一个基于模型和搜索的测试用例生成和最小化框架(UncerTest),用于测试不确定环境下的信息物理系统。UncerTest利用了不确定性理论和基于搜索的优化技术,在此基础上提出了一套创新的与不确定性相关的测试用例最小化策略。通过2个工业信息物理系统案例和8个常用的多目标搜索算法对UncerTest进行了评估,与其他测试策略相比,他们的测试策略能够发现比平均多51%的由于未知不确定性来源而导致的不确定性。
Zhang等人[12]使用真实的JUnit测试套件研究Java程序的测试套件最小化技术,对4个现实中的Java程序的19个版本进行了实证研究,并发现在相同的项目上使用测试套件缩减时,故障检测的损失很小。Wong等人[13]还发现,测试套件最小化对测试套件检测故障能力的影响可以忽略不计,这对本文设定平均故障检测百分比作为优化目标提供了支持。
在本文的研究中,对信息物理系统中RESTful API的测试采取了黑盒测试的方法,使用了与Wang等人[14]相似的方法来精简测试用例集。通过定义优化目标对测试套件使用多目标优化算法进行最小化处理。重点是将多目标优化问题通过人为设置权重系数的方法转化为一个单目标优化问题,对3个优化目标在最小化测试套件前后的性能进行比较分析。人为设置的权重系数来自其工业界合作伙伴的历史数据,根据分析用户的需求以及偏好得出数据,因此人为设置权重系数是可行的。由于本文的被测对象不存在历史数据的参考,无法合理地人为设置各优化目标的权重系数,且本文针对信息物理系统特性提出的3个优化目标也与文献[14]的不尽相同,故选择采用基于支配关系的多目标优化算法NSGA-Ⅱ对测试套件进行最小化处理。
现实世界中的优化问题通常是多属性的,一般是对多个目标的同时优化。多数情况下,被同时优化的多个目标之间是相互作用且相互冲突的,这就需要对相互冲突的子目标进行综合考虑。多目标优化算法就是用来解决多个目标之间的协同优化问题的。
多目标优化算法[15]大致可以分为3类:基于分解的多目标优化算法、基于指标的多目标优化算法和基于支配关系的多目标优化算法。
在处理多目标优化问题的时候,最直接的方法,也是比较早期所使用的方法就是聚集函数方法。这种方法对被优化的所有子目标设置权重系数,再将它们组合或者聚集为一个单目标,从而将多目标优化问题转化为单目标的优化问题。
Zhang等人[16]基于分解思想,提出了基于分解的多目标优化算法,将数学规划方法和进化算法相结合,把一个多目标优化问题分解为一组单目标的子问题或多个多目标的子问题,利用子问题之间的邻域关系,通过协作的方式优化所有子问题。
基于指标的多目标优化算法使用性能评价指标来引导搜索过程和对解的选择过程。评价指标是用于评价不同多目标优化算法性能的量化工具,可以分为收敛性、分布性和综合性3大类。
Zitzler[17]于2004年提出了一个通用的基于指标的进化算法IBEA,算法思想是使用一个任意的指标来评价和比较一对候选解的性能。Basseur和Zitzler提出了一个用于解决不确定性问题的基于指标的模型,其中每个个体被赋予一个在目标空间中的概率值,在不确定环境中讨论一些用来计算期望指标值的方法,并且提出和实证研究了一些基于指标模型的变种模型。
基于支配关系的多目标优化算法的基本思路是利用基于Pareto的适应度分配策略,从当前的群体中寻找出所有的非支配个体。
在多目标优化问题中,问题的最优解称为Pareto最优解[18]。当一个优化问题存在m个相互冲突的优化目标时,优化目标可以表示为:
f(x)=(f1(x),f2(x),…,fm(x))s.t.x∈Ω
(1)
其中,Ω为满足多目标优化中2个约束的可行解集,被称为决策变量空间。
对于一个给定的多目标优化问题maxf(x),若x*∈Ω,且不存在其他的x∈Ω,使得fi(x*)≤fi(x)(i=1,2,…,m)成立,且其中至少一个是严格不等式,则称x*是maxf(x)的Pareto最优解。
在多数情况下,Pareto最优解可能不止一个,而是一个包含所有Pareto最优解的Pareto最优解集。
NSGA-Ⅱ[5]算法是基于支配关系的多目标优化算法,是Srinivas和Deb于2000年在NSGA的基础上提出的,它比NSGA(Non-Dominated Sorting In Genetic Algorithm)算法性能更加优越:NSGA-Ⅱ算法采用了快速非支配排序算法,其计算复杂度相比NSGA算法大大降低;采用了拥挤度和拥挤度比较算子,代替了需要指定的共享半径shareQ,并在快速排序后的同级比较中作为胜出标准,使得准Pareto域中的个体能够扩展到整个Pareto域,并均匀分布,保持了种群的多样性;引入了精英策略,扩大了采样空间,防止最佳个体的丢失,提高了算法的运算速度和鲁棒性。
因为NSGA-Ⅱ算法在多目标优化问题中被广泛使用[19],并且在无法确定信息物理系统中RESTful API优化目标的权重系数和评价指标的时候,NSGA-Ⅱ算法相较于前2种优化算法,采用精英保留策略,能够根据优化目标快速筛选出非支配解集,使得非支配解集兼顾各个优化目标。故NSGA-Ⅱ算法适用于信息物理系统中RESTful API的测试用例的优化筛选。
信息物理系统中RESTful API的测试用例设计需要考虑到其应用场景的特性,对优化目标的选取也需要对信息物理系统与传统软件的区别进行分析总结。
针对信息物理系统中RESTful API与Web端中RESTful API的区别,其特性被总结归纳为以下5点:
1)RESTful API的编写代码不可见。对于Web端中RESTful API而言,其源码获取情况不明确。信息物理系统中RESTful API只能作为调用接口供开发测试人员使用,其内部代码不可访问,无法获取。
2)测试输入形式不同。Web端中RESTful API的测试用例是根据Swagger UI编写,测试输入多为GET、POST等动作,不需要具体的输入数据。信息物理系统中RESTful API的测试输入可以是GET、POST等动作,也可以是具体数据。如测试车辆速度功能API时,测试输入是随机选取车辆速度限制范围中的某一具体数值。
3)Test Oracle问题。信息物理系统中RESTful API的Test Oracle问题需要根据实际的测试输入决定assertion语句的编写。
4)时延。调用RESTful API需要连接实际目标,通信、响应以及信息物理系统的硬件反馈需要一定时间。
5)故障类型需要根据实际情况分类。测试信息物理系统中RESTful API时出现的故障与传统软件测试中发现的错误存在不同,如信息物理系统的故障可能是受其物理性能的限制,而日常的软件测试工作中则不会出现这种类型的故障。
信息物理系统中各RESTful API具备不同的功能和属性,所有RESTful API的协同运作使得信息物理系统能够正常运行。然而对于不同的RESTful API,其功能的重要性以及对信息物理系统的影响程度也是不尽相同的。需要具体分析每一个RESTful API的运行方式和实现逻辑,再对其划分层级。
本文根据信息物理系统中RESTful API的功能,参考车辆测试大致将它们分为3个层级,分别是Strategic Level、Manoeuvring Level、Control Level。
具体分析3个层级的定义,其中Control Level属于实现基础控制功能的层级,处于RESTful API分级中的最底层。Manoeuvring Level属于实现复杂操控功能的层级,处于RESTful API分级中的中间层。Strategic Level属于实现策略控制功能的层级,处于RESTful API分级中的最高层。高层级中的RESTful API代表着其功能具有更复杂的实现逻辑,低层级中的RESTful API往往被视为组成信息物理系统的基础。
图1 RESTful API功能分级
传统软件测试中,并不存在对故障类型进行分级处理的先例,只有对实际系统进行测试时会评估故障的严重级别;平均故障检测百分比和测试用例执行时间则是比较常见的评估测试用例的指标。
基于上述问题,本文提出了信息物理系统中RESTful API的测试用例的3个优化目标。
3.3.1 故障严重级别
在测试信息物理系统中的RESTful API时,执行一个测试用例会多次产生多个测试结果。当测试结果与预期结果不一致时,将从测试用例结果中检测到故障。面对这些故障,需要尝试找出每个故障的原因,并分析其对信息物理系统运行的影响,然后对这些故障进行分类,以确定发生故障的严重性,并据此分析测试用例的优先级。
由于信息物理系统与传统软件的测试存在差异,二者对于故障的分级也存在着不同。参考软件测试中故障的严重级别划分[20],本文把信息物理系统中出现的故障大致分为4个级别,4个故障等级分别是致命故障、严重故障、一般故障和轻微故障,故障等级定义如下:
1)轻微故障。对信息物理系统的功能没有影响或外部干扰导致的故障视为轻微故障。
2)一般故障。对信息物理系统的整体运行没有影响,只对部分功能产生影响的故障视为一般故障。
3)严重故障。对信息物理系统的整体运行有一定影响且对部分功能产生影响的故障视为严重故障。
4)致命故障。对信息物理系统的整体运行产生重大影响,进而导致整个信息物理系统崩溃的故障视为致命故障。
结合实验中的案例分析,案例中一共出现了5个故障类型,分别是环境影响、赋值类型错误、超出边界值、API运行的充分条件不满足以及其他API调用冲突,具体分析故障类型及故障产生原因如下:
1)环境影响。测试环境中出现的突发状况或场地条件限制而导致故障。案例中表现为测试环境中突然出现的动物或行人影响车辆的功能实现。
2)赋值类型错误。测试用例中的赋值类型错误而导致故障。案例中表现为当调用某一API时赋值类型出错会导致该API无法正常被调用。
3)超出边界值。测试用例中的赋值超出API的数值范围而导致故障。案例中表现为当调用某一API时给它的赋值超出该API的取值范围,测试用例的断言会报错。
4)API运行的充分条件不满足。某一API正常工作需要调用其他API运行,当被调用的API出现故障时导致该API无法正常工作而导致故障。案例中表现为定速巡航API需要调用前进API才能实现自身功能,当前进API出现故障时会导致定速巡航API也无法正常工作。
5)其他API调用冲突。调用某一API之前调用其他功能API导致出现冲突而导致故障。案例中表现为在调用前进API之前先调用后退API,当再次调用前进API时会出现车辆无法前进只能后退的严重故障,并且此时车辆的所有前进功能都被默认更改为后退。
将案例中信息物理系统中RESTful API出现的故障类型进行总结并分级如表1所示。
表1 故障类型及分级
3.3.2 平均故障检测百分比
平均故障检测百分比[14,21](Average Percentage of Fault Detected)是用来评判测试用例的故障检测能力的重要参数。如果一个测试用例能够在有限的执行次数中多次检测到故障,那么它被定义为成功;如果它没有检测到任何错误,那么它被定义为失败。
测试用例的平均故障检测百分比[14](APFD)可以用下面的方法来衡量:
(2)
其中,APFD是平均故障检测百分比;NumSuctci给定执行次数内测试用例i的执行成功的次数;NumFailtci给定执行次数内测试用例i的执行失败的次数。
例如,如果一个测试用例被执行了100次,其中80次能够发现故障,20次没有发现故障,则该测试用例的平均故障检测百分比就是80/100=80%。
3.3.3 测试用例执行时间
由于信息物理系统的测试环境较为复杂且需要进行实物测试,需要大量的测试资源和开销。但是实际中测试的时间成本有限,测试用例执行时间[4]是非常重要的一个考量因素,可以用来评估一个测试用例的优劣。若多个测试用例在执行后均能发现同一故障,则其中执行时间最短的测试用例会被视为性能较好的。
本文的研究案例是Simplexity实验室的智能车。该信息物理系统中的9个功能接口均使用RESTful风格定义,通过调用这9个RESTful API,测试人员能远程对该信息物理系统进行测试、控制。实验中涉及9个被测的RESTful API,具体功能和名称如表2所示。
表2 API名称、种类和功能
该案例中测试套件包含1000个测试用例,这1000个测试用例包含了上述全部9个RESTful API。其中,根据RESTful API功能优先级不同,各个RESTful API的测试用例数量也存在差异。Control类的每个RESTful API存在70个测试用例,Manouvring类的每个RESTful API存在90个测试用例,Stragtegic类的每个RESTful API存在320个测试用例。本文通过在远程的电脑端调用RESTful API的方法执行测试用例,观察实际车辆的表现和测试用例的反馈。
本实验的目的是通过上文给出的3个优化目标,使用NSGA-Ⅱ算法对测试套件进行优化处理,最终从这1000个测试用例中筛选出性能相对更好的测试用例从而达到测试套件最小化的目标。
实验采用在仿真环境中模拟与现实环境中测试相结合的方式,使用的是南京航空航天大学Simplexity实验室的计算机集群以及Airsim仿真环境,实物车辆使用的是Simplexity实验室的智能车。
实验采用了jMetalPy框架,并使用了其内置的NSGA-Ⅱ算法。NSGA-Ⅱ算法的参数选择使用了jMetalPy的默认设置,交叉操作的交叉率为1.0,变异操作的变异率为1.0。考虑实验运行的时间成本,本文将人口规模设置为100,初始种群是随机选取的,子代数也设置为100。本文通过预实验分析了NSGA-Ⅱ的性能趋势,并得出结论,它大致收敛于第350代。因此,本文将适应性评估的数量固定为35000(100×350)作为终止标准。
本文选取Random Search(RS)作为比较基线,RS的适应性评估总数与NSGA-Ⅱ终止条件一致。由于其固有的随机性,NSGA-Ⅱ和RS都各运行了30次。
NSGA-Ⅱ的实现流程如图2所示。
图2 NSGA-Ⅱ流程图
编码方式:种群采用二进制编码方式,用0、1代表测试用例的选择与否。例如,个体x1和x2分别包含9个测试用例T1~T9,编码方式如图3所示。
图3 编码方式
为了比较结果和给定的阈值,根据随机算法的统计检验报告指南,本文使用了12和p-value方法[22]:
p-value:采用非参数U检验(The Mann-Whitney U test)计算p值,以此判断2种算法是否存在显著差异。本文选择的显著性水平为0.05,即p值小于0.05时存在显著性差异。
为了评价实验中采用NSGA-Ⅱ算法最小化前后测试套件的性能,本文根据3个优化目标的选择使用了3个评价指标,即故障严重值、故障检测百分比以及测试用例执行时间。
本文将4个故障严重级别按轻微故障、一般故障、严重故障和致命故障从低到高分别赋值,其中轻微故障的值为1;一般故障的值为2;严重故障的值为3;致命故障的值为4。
平均故障检测百分比可以根据公式(2)计算得到,测试用例执行时间根据每个测试用例的实际运行时间取整后得到数据。
反世代距离评价指标[23](Inverted Generational Distance, IGD)是一个综合性能评价指标。它主要通过计算每个在真实Pareto前沿面上的点(个体)到算法获取的个体集合之间的最小距离和,来评价算法的收敛性能和分布性能。值越小,算法的综合性能包括收敛性和分布性能越好。
IGD的计算公式如下:
(3)
其中,P为均匀分布在真实Pareto面上的点集,|P|为分布在真实Pareto面上的点集的个体数。Q为算法获取的最优解集。而d(v,Q)为P中个体v到种群Q的最小欧几里得距离。
本文采取上文中的算法设置和评价标准进行实验处理及数据分析,实验总体步骤如下:
1)将测试套件中的1000个测试用例每个执行30次并收集数据。
2)根据收集的数据分析案例中测试用例执行后产生的故障,并具体分级如表1所示。
3)根据收集的数据计算出测试用例执行时间和平均故障检测百比。
4)使用NSGA-Ⅱ算法对测试用例进行多目标优化并筛选得到最小化后的测试套件。
5)根据3个优化目标的数据对比评估原始测试套件、使用Random算法选取的测试套件与使用NSGA-Ⅱ最小化后的测试套件的性能差异。
其中,每个测试用例执行30次可以避免出现由于环境因素等导致的偶然故障并收集更为准确的数据。
图4所示为使用NSGA-Ⅱ对测试套件最小化处理的总体框架。
图4 测试套件最小化框架
采用4.4节中的实验步骤,通过将案例中提供的1000个测试用例重复执行30次后得到30000个执行结果,计算出每个测试用例相应的执行时间、平均故障检测百分比,分析出故障严重级别,再通过NSGA-Ⅱ算法对3个优化目标进行优化,最后得到的测试用例构成最小化后的测试套件。
本文首先将使用NSGA-Ⅱ最小化后的测试套件与原始套件在3项优化目标中表现的平均值进行对比。
图5 故障严重级别
对于信息物理系统中的每一个RESTful API,分别计算出原始测试套件发现故障严重级别的值以及使用NSGA-Ⅱ最小化后的测试套件发现的故障严重级别的平均值。将二者的数值进行对比,根据图5可以直观地发现:对于信息物理系统中的每一个RESTful API来说,最小化后的测试套件所发现的故障严重级别的最大值与原始测试套件相同,但无论是比较最小值或中位数,最小化后的测试套件的得分均明显高于原始测试套件。这说明原始的测试套件在经过最小化处理后,获得了更强的发现高级别故障的能力。
通过计算出原始测试套件和使用NSGA-Ⅱ最小化后的测试套件的平均故障检测百分比,将二者进行对比,可以发现如图6所示:9个API的平均故障检测百分比的最大值全部相同,均为100%;使用NSGA-Ⅱ最小化后的测试套件的平均故障检测百分比在中位数和最小值等方面均高于原始测试套件,这就说明最小化后的测试套件具有更加优异的故障检测能力,能够在有限的执行次数内尽可能多地检测到故障。
图6 平均故障检测百分比
对比原始测试套件以及使用NSGA-Ⅱ最小化后的测试套件的平均测试用例执行时间,如图7所示,它们最小化后的测试套件的执行时间的最大值、最小值以及中位数全部小于等于原始测试套件的表现。所以相对而言,最小化后的测试套件所需要的平均测试用例执行时间比原始套件更短,能够为测试工作降低大量的时间成本。
表3显示了对测试套件使用不同算法的IGD数值。比较NSGA-Ⅱ和Random Search的表现,NSGA-Ⅱ的A12的值都高于0.5,而其p-value的值也都低于0.05。根据4.3节的描述,基于以上结果,本文可以得出结论,对信息物理系统中RESTful API的测试套件使用NSGA-Ⅱ优化后得到的全新测试套件,其性能是远远好于RS选择的测试套件。
图7 测试用例执行时间
表3 NSGA-Ⅱ和RS性能对比结果
案例中RESTful API的原始测试套件中包含了1000个测试用例,经过本文使用NSGA-Ⅱ对3个优化目标进行处理后,最终得到最小化后的测试套件。对比最小化后的测试套件和原始套件的故障严重级别、平均故障检测百分比和测试用例执行时间,最小化后的测试套件的性能表现明显是全面优于原始测试套件。
本文又使用Random Search选取测试用例组成新的测试套件,将其与使用NSGA-Ⅱ最小化后的测试套件比较,这说明根据确定的优化目标对信息物理系统中的RESTful API的测试套件,使用NSGA-Ⅱ算法进行优化筛选测试用例能够提高测试套件的性能。最小化后的测试套件具有更高的故障检测能力,且所需要的时间成本和资源开销也更少。
原始测试套件中可能存在大量冗余重复的测试用例,通过合理的优化目标的设置和算法处理,能够大幅度剔除掉这部分测试用例,使得精简后的测试套件在保留一定的故障检测能力的同时节约测试成本。对信息物理系统中RESTful API的测试套件使用NSGA-Ⅱ算法进行最小化处理,获得了性能更优越的,包含测试用例数更少的测试套件。
测试套件最小化是测试领域在有限的资源下提高测试效率的主要技术之一。对于信息物理系统中RESTful API的测试,3个优化目标是通过参考传统软件测试并结合信息物理系统的特性选取的。
实验结果表明,使用NSGA-Ⅱ算法对测试套件进行最小化处理能够在提高测试用例的故障检测率、发现更严重级别的故障、减少测试用例执行时间的同时降低测试成本。后续工作将参考其他多目标优化问题的优化目标选取,定义更多的优化目标,以更好地提高测试套件的质量。