一种针对PLC程序的自动测试方法、装置、设备及介质制造方法及图纸

技术编号:37152430 阅读:21 留言:0更新日期:2023-04-06 22:10
本申请涉及程序产品测试技术领域,更为具体来说,本申请涉及一种针对PLC程序的自动测试方法、装置、设备及介质。所述方法包括:获取待进行自动测试的PLC程序,并对PLC程序进行静态分析,得到PLC程序的语句的输入输出关系;根据语句的输入输出关系对PLC程序进行插桩,并将插桩后的PLC程序作为目标程序;为目标程序生成测试用例,根据测试用例自动测试执行目标程序,并在自动测试执行目标程序的同时从执行轨迹中挖掘目标程序的不变性;将挖掘出的目标程序的不变性作为待检测不变性,并根据预设规范检测待检测不变性。本申请不仅能检查PLC程序的设计缺陷,且能发现源程序的具体实现错误,进而提升了测试效率。进而提升了测试效率。进而提升了测试效率。

【技术实现步骤摘要】
一种针对PLC程序的自动测试方法、装置、设备及介质


[0001]本申请涉及程序产品测试
,更为具体来说,本申请涉及一种针对PLC程序的自动测试方法、装置、设备及介质。

技术介绍

[0002]PLC表示可编程逻辑控制器,属于一种工业计算机,可以对其进行编程以执行控制功能。近年来,PLC已成为工业控制系统(ICS)中使用最广泛的组件,在许多至关重要的安全领域,例如电网、供水和运输等领域中发挥着重要的作用。
[0003]对于C或Java程序,可以采用Daikon工具根据函数的粒度推断程序中的不变性。然而,PLC程序不是由函数组成的,PLC中有三种类型的程序组织单元,即程序、功能块和函数。每个PLC程序可以包含几个POU(程序组织单元),若在POU级别检测不变性,则粒度较粗糙。现有技术中的测试方法多处于抽象模型级别,更适合于检查设计缺陷而不是实现错误,且其容易得到很多假阳性的验证结果,因此总的来说,现有技术中的针对PLC程序的测试效率有待提升。

技术实现思路

[0004]基于上述技术问题,本专利技术旨在关注数据和时间不变性的相互作用,以发现PLC程序中源代码的缺陷,具体而言,旨在为目标程序生成测试用例,根据所述测试用例自动测试执行所述目标程序,并在自动测试执行所述目标程序的同时从执行轨迹中挖掘所述目标程序的不变性,并根据预设规范检测所述目标程序的不变性,以解决测试效率低的问题。
[0005]本专利技术第一方面提供了一种针对PLC程序的自动测试方法,所述方法包括:
[0006]获取待进行自动测试的PLC程序,并对所述PLC程序进行静态分析,得到所述PLC程序的语句的输入输出关系;
[0007]根据所述语句的输入输出关系对所述PLC程序进行插桩,并将插桩后的PLC程序作为目标程序;
[0008]为所述目标程序生成测试用例,根据所述测试用例自动测试执行所述目标程序,并在自动测试执行所述目标程序的同时从执行轨迹中挖掘所述目标程序的不变性;
[0009]将挖掘出的所述目标程序的不变性作为待检测不变性,并根据预设规范检测所述待检测不变性。
[0010]在本专利技术的一些实施例中,所述对所述PLC程序进行静态分析,得到所述PLC程序的语句的输入输出关系,包括:
[0011]对所述PLC程序进行静态分析,并根据静态分析结果构造所述PLC程序的控制流图和数据流图;
[0012]在控制流图和数据流图的基础上获得控制依赖关系和数据依赖关系;
[0013]根据所述控制依赖关系和数据依赖关系确定所述PLC程序的语句的输入输出关系。
[0014]在本专利技术的一些实施例中,所述根据所述语句的输入输出关系对所述PLC程序进行插桩,包括:
[0015]根据所述语句的输入输出关系确定目标节点,其中,所述语句的输入输出关系包括语句的输入节点与输出节点间的关系;
[0016]基于预先设计的注释在所述PLC程序的所述目标节点处进行插桩。
[0017]在本专利技术的一些实施例中,所述为所述目标程序生成测试用例,包括:
[0018]将预设测试用例做变异设计,将经变异设计得到的测试用例作为目标测试用例;
[0019]使用DSE工具生成所述目标测试用例,其中,所述目标测试用例满足分支覆盖。
[0020]在本专利技术的一些实施例中,所述在自动测试执行所述目标程序的同时从执行轨迹中挖掘所述目标程序的不变性,包括:
[0021]在自动测试执行所述目标程序的同时提取执行轨迹;
[0022]对提取到的执行轨迹进行预设处理得到包含有元组的执行轨迹,并将所述包含有元组的执行轨迹作为目标执行轨迹;
[0023]在所述目标执行轨迹中挖掘不变式和不变量;
[0024]根据所述不变式和不变量确定所述目标程序的不变性。
[0025]在本专利技术的一些实施例中,所述在所述目标执行轨迹中挖掘不变式和不变量,包括:
[0026]在所述目标执行轨迹中根据元组的谓词和变量的对应关系提取子轨迹;
[0027]基于所述子轨迹中的数据跟踪记录挖掘不变式和不变量。
[0028]在本专利技术的一些实施例中,所述基于所述子轨迹中的数据跟踪记录挖掘不变式和不变量,包括:
[0029]针对所述子轨迹中的数据跟踪记录,采用Daikon工具生成所述目标程序的不变量,采用Daikon工具内置的不变式过滤工具获取所述目标程序的不变式。
[0030]本专利技术的第二方面提供了一种针对PLC程序的回归测试装置,所述装置包括:
[0031]获取模块,被配置为获取待进行自动测试的PLC程序,并对所述PLC程序进行静态分析,得到所述PLC程序的语句的输入输出关系;
[0032]插桩模块,被配置为根据所述语句的输入输出关系对所述PLC程序进行插桩,并将插桩后的PLC程序作为目标程序;
[0033]测试模块,被配置为为所述目标程序生成测试用例,根据所述测试用例自动测试执行所述目标程序,并在自动测试执行所述目标程序的同时从执行轨迹中挖掘所述目标程序的不变性;
[0034]检验模块,被配置为将挖掘出的所述目标程序的不变性作为待检测不变性,并根据预设规范检测所述待检测不变性。
[0035]本专利技术的第三方面提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行以下步骤:
[0036]获取待进行自动测试的PLC程序,并对所述PLC程序进行静态分析,得到所述PLC程序的语句的输入输出关系;
[0037]根据所述语句的输入输出关系对所述PLC程序进行插桩,并将插桩后的PLC程序作为目标程序;
[0038]为所述目标程序生成测试用例,根据所述测试用例自动测试执行所述目标程序,并在自动测试执行所述目标程序的同时从执行轨迹中挖掘所述目标程序的不变性;
[0039]将挖掘出的所述目标程序的不变性作为待检测不变性,并根据预设规范检测所述待检测不变性。
[0040]本专利技术第四方面提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以下步骤:
[0041]获取待进行自动测试的PLC程序,并对所述PLC程序进行静态分析,得到所述PLC程序的语句的输入输出关系;
[0042]根据所述语句的输入输出关系对所述PLC程序进行插桩,并将插桩后的PLC程序作为目标程序;
[0043]为所述目标程序生成测试用例,根据所述测试用例自动测试执行所述目标程序,并在自动测试执行所述目标程序的同时从执行轨迹中挖掘所述目标程序的不变性;
[0044]将挖掘出的所述目标程序的不变性作为待检测不变性,并根据预设规范检测所述待检测不变性。
[0045]本申请实施例中提供的技术方案,至少具有如下技术效果或优点:
[0046]本申请先获取待进行自动测试的PLC程序,并对所述PLC程序进行静态分析,得到所述PLC程序的语句的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种针对PLC程序的自动测试方法,其特征在于,所述方法包括:获取待进行自动测试的PLC程序,并对所述PLC程序进行静态分析,得到所述PLC程序的语句的输入输出关系;根据所述语句的输入输出关系对所述PLC程序进行插桩,并将插桩后的PLC程序作为目标程序;为所述目标程序生成测试用例,根据所述测试用例自动测试执行所述目标程序,并在自动测试执行所述目标程序的同时从执行轨迹中挖掘所述目标程序的不变性;将挖掘出的所述目标程序的不变性作为待检测不变性,并根据预设规范检测所述待检测不变性。2.根据权利要求1所述的针对PLC程序的自动测试方法,其特征在于,所述对所述PLC程序进行静态分析,得到所述PLC程序的语句的输入输出关系,包括:对所述PLC程序进行静态分析,并根据静态分析结果构造所述PLC程序的控制流图和数据流图;在控制流图和数据流图的基础上获得控制依赖关系和数据依赖关系;根据所述控制依赖关系和数据依赖关系确定所述PLC程序的语句的输入输出关系。3.根据权利要求1所述的针对PLC程序的自动测试方法,其特征在于,所述根据所述语句的输入输出关系对所述PLC程序进行插桩,包括:根据所述语句的输入输出关系确定目标节点,其中,所述语句的输入输出关系包括语句的输入节点与输出节点间的关系;基于预先设计的注释在所述PLC程序的所述目标节点处进行插桩。4.根据权利要求1所述的针对PLC程序的自动测试方法,其特征在于,所述为所述目标程序生成测试用例,包括:将预设测试用例做变异设计,将经变异设计得到的测试用例作为目标测试用例;使用DSE工具生成所述目标测试用例,其中,所述目标测试用例满足分支覆盖。5.根据权利要求3所述的针对PLC程序的自动测试方法,其特征在于,所述在自动测试执行所述目标程序的同时从执行轨迹中挖掘所述目标程序的不变性,包括:在自动测试执行所述目标程序的同时提取执行轨迹;对提取到的执...

【专利技术属性】
技术研发人员:黄滟鸿史建琦路则雨
申请(专利权)人:上海丰蕾信息科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1