一种PaaS化全软数据设备模拟方法与流程

文档序号:17639907发布日期:2019-05-11 00:36阅读:185来源:国知局
一种PaaS化全软数据设备模拟方法与流程

本发明涉及一种全软的大量的虚拟数据设备模拟方法,属于数据设备模拟技术领域。



背景技术:

随着科技的发展,一些传统企业(比如水厂、电厂)正在转型,其系统的自动化程度和联网程度都在不断提高,通过网络实时监控、测试企业设备越来越重要。企业规模越大意味着需要接入主站的设备越多,系统压力越大,系统的稳定性受到越来越多的考验,严格的系统测试是必须重视的一关。

目前很多企业在进行系统测试的时候是采用真实的数据设备构建测试系统的,这种方法成本过高,而且容易受实际测试场地限制,难以模拟真实情况,同时真实的硬件设备由于功能的固化很难做到满足业务层面测试的特定需要,还容易出现安全问题。一些企业选择通过软件模拟数据设备进行测试,由研发人员制作模拟设备软件,测试人员进行系统测试,但是这种模式必须在开发软件的时候确定好模拟软件需要的功能,如果后续测试过程中对模拟软件有新的需求,往往需要开发人员重新编写脚本,耗时耗力,而且很难灵活满足测试需求。



技术实现要素:

本发明需要解决的技术问题是数据设备测试中成本较高、灵活性较差的问题,本发明提供了一种paas化全软数据设备模拟方法,采用python语言构建虚拟数据设备,并在云端构建对象符号表,在测试阶段,测试人员可以通过对象符号表查找需要测试的对象并使用较简单的赋值脚本对其进行赋值测试。

为解决上述技术问题,本发明采用了如下技术手段:

一种paas化全软数据设备模拟方法,包括以下步骤:

s1、分析模拟需求,计算虚拟数据设备数量,并确定每个设备对应的变量;

s2、采用python语言构建虚拟数据设备;

s3、云客户端调用编译好的虚拟设备模拟插件生成设备实例,并根据设备对应的变量建立对象符号表;

s4、利用多线程设备模拟算法将虚拟数据设备分成多个线程;

s5、利用虚拟通信链路和设备代理连接虚拟数据设备组成虚拟测试系统;

s6、根据默认逻辑进行虚拟测试或者在对象符号表内修改虚拟设备的变量进行虚拟测试;

s7、将测试数据发送到数据驻留层,并从驻留层依次保存到redis数据库。

进一步的,所述的步骤s1中的变量指该虚拟设备中可赋值的参数。

进一步的,所述的步骤s3的具体操作如下:

s31、调用虚拟设备模拟插件生成设备实例;

s32、对设备实例和设备实例对应的变量进行编号;

s33、将设备编号、设备变量名称和设备变量的赋值脚本依次存储在对象符号表中。

进一步的,所述的步骤s4的具体操作如下:

s41、设置单线程测试的时长、交互允许的时延值和测试期间交互超时的比例值;

s42、在单个线程内加压虚拟设备数,得到单个线程最大容载量;

s43、根据单个线程最大容载量将虚拟数据设备分成多个线程。

进一步的,步骤s5中的虚拟通信链路是用于将任何需要彼此通讯的虚拟数据设备连接起来的功能模块,设备代理用于将需要连接硬件串口的虚拟设备连接到就近的串口上,当某个虚拟设备通过设备代理连接硬件串口,在该计算机上该串口会显示已占用。在连接虚拟设备的过程中采用多进程+多线程模式,利于服务器资源的从cpu到进程内资源的水平扩展,中间通过软总线方式协调多进程+多线程之间的资源协调。

进一步的,步骤s6的具体操作如下:

s61、调用虚拟设备模拟插件中的默认脚本进行虚拟测试,生成默认测试数据;

s62、在对象符号表中查找特定测试设备;

s63、利用设备变量的赋值脚本给变量赋值;

s64、运行赋值脚本,生成特定设备的测试数据。

进一步的,所述的步骤s7的具体操作如下:

s71、建立数据驻留层,设置与线程数量相同且依次连接的入库队列,并设置数据驻留时间;

s72、线程内设备生成的测试数据通过相连的入库队列存入数据驻留层;

s73、依次将数据驻留层内的数据存储到redis数据库;

s74、根据设置数据驻留时间清理数据驻留层中的存储数据。

采用以上技术手段后可以获得以下优势:

本发明提出了一种paas化全软数据设备模拟方法,引入对象符号表的概念,在构建虚拟数据设备的时候针对每个设备的特点,选出后续测试需要使用的设备变量,比如电表的功率值,针对每个变量开发对应的赋值脚本,并将变量名称、赋值脚本对号存储在对象符号表中,在后续的测试过程中,既可以按照开发时候的默认脚本进行系统测试,也可以由测试人员修改赋值脚本进行定向测试,本发明方法的测试灵活性更高,并且因为是全软件设计,不占用空间、不涉及实物,测试成本较小。本发明方法通过多线程设备模拟算法将虚拟数据设备分成多个线程,确保每个线程的资源成分利用,避免网络资源浪费,进一步缩小了测试成本。

附图说明

图1为本发明一种paas化全软数据设备模拟方法的步骤流程图。

具体实施方式

下面结合附图对本发明的技术方案作进一步说明:

一种paas化全软数据设备模拟方法,如图1所示,包括以下步骤:

s1、分析模拟需求,计算虚拟数据设备数量,并确定每个设备对应的变量,此处的变量指该虚拟设备中可赋值的参数。比如一个电厂模拟系统,需要的虚拟数据设备有发电机、锅炉、电表等,电表中需要考虑的变量有费率、时段、功率、电表值等。

s2、采用python语言构建虚拟数据设备,开发人员在服务器上撰写代码生成虚拟的数据设备,给数据设备的变量赋予取值区间,并根据正常工作状态设定一个默认取值逻辑,同时编写一端赋值脚本,允许通过赋值脚本进行变量赋值。

s3、在云客户端调用s2编译好的虚拟设备的模拟插件生成设备实例,并根据设备对应的变量建立对象符号表,具体操作如下:

s31、调用虚拟设备模拟插件生成设备实例,比如,调用s2编译的电表的脚本在计算机上生成一个模拟电表。

s32、对设备实例和设备实例对应的变量进行编号,设备实例和设备实例对应的变量的编号是一样的,在一个测试系统中一般存在多个相同的虚拟设备,所有的虚拟设备及其对应的变量应该有唯一的编号。

s33、将设备编号、设备变量名称和设备变量的赋值脚本依次存储在对象符号表中。

s4、利用多线程设备模拟算法将虚拟数据设备分成多个线程,具体操作如下:

s41、设置单线程测试的时长、交互允许的时延值和测试期间交互超时的比例值,测试期间交互超时的比例值是测试期间交互时延超过设置的允许时延值的次数与总交互次数的比值。

s42、在单个线程内不断增加虚拟设备数量,测试满足交互时延要求的单个线程的最大容载量。

s43、根据单个线程最大容载量将所有的虚拟数据设备分成多个线程。

s5、利用虚拟通信链路和设备代理连接虚拟数据设备组成虚拟测试系统。虚拟通信链路是用于将任何需要彼此通讯的虚拟数据设备连接起来的功能模块,既可以连接同一个线程中的虚拟设备,也可以跨线程连接虚拟设备。设备代理用于将需要连接硬件串口的虚拟设备连接到就近的串口上,当某个虚拟设备通过设备代理连接硬件串口,在该计算机上该串口会显示已占用,同时,在同一个线程内,只需要其中一个被代理的设备打开物理串口即可代表所有的该链路上的设备都已串口在线。

为了更好的利用资源,利于服务器资源的从cpu到进程内资源的水平扩展,在连接虚拟设备的过程中采用多进程+多线程模式,中间通过软总线方式协调多进程+多线程之间的资源协调。

s6、根据默认逻辑进行虚拟测试或者在对象符号表内修改虚拟设备的变量进行虚拟测试,具体的操作如下:

s61、调用虚拟设备模拟插件中的默认脚本进行虚拟测试,比如电表设备,调用开发时编写的默认脚本中的逻辑,在允许的取值空间内电表功率按照从低到高的顺序改变,生成默认的电表功率测试数据。

s62、通过唯一的编号或者变量名称在对象符号表中查找需要特定测试的设备。

s63、测试人员可以在对象符号表中利用设备变量的赋值脚本给变量随意赋值。

s64、运行赋值脚本,改变该虚拟设备的变量,生成特定的设备测试数据。

s7、将测试数据发送到数据驻留层,并从驻留层依次保存到redis数据库,具体操作如下:

s71、在云客户端建立数据驻留层,数据驻留层具有固定的内存,数据驻留层内设置与测试系统的线程数量相同且依次连接的入库队列,并设置数据驻留的时间。

s72、某一个线程内设备生成的测试数据通过相连的入库队列存入数据驻留层。

s73、按照时间顺序依次将数据驻留层内的数据存储到redis数据库;针对活跃度较高的线程或者设备,可以优先进行入库和存储。

s74、为了防止数据丢失,数据存入redis数据库后不会立刻从数据驻留层删除,已经入库的数据会在到达数据驻留时间后确认是否已经存入redis数据库,未存入的立刻进行存储,只有到达了数据驻留时间并且已经存入redis数据库的数据才会进行清理。

上面结合附图对本发明的实施方式作了详细地说明,但是本发明并不局限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1