本发明涉及自动化控制技术领域,尤其涉及一种用于可编程控制器的自动化测试方法及装置。
背景技术:
可编程控制系统在工业控制自动化技术领域有着极其重要的作用,其广泛应用于石油、化工、高铁、电力等各行各业的自动化控制系统中。可编程逻辑控制器(Programmable Logic Controller,PLC)是可编程控制系统的核心,主要用于运行控制逻辑和执行现场I/O变量刷新操作,其运行状态直接关乎整个可编程控制系统运行结果的正确性,由此可见,PLC运行的正确性和可靠性对工控现场的安全显得尤为关键。
为了提高PLC运行的准确性和可靠性,在PLC的开发过程中往往需要对PLC进行反复测试,任何由于对PLC测试不充分、不全面所引发的问题,都有可能导致对现场设备的损害,甚至对人身安全的威胁,给国家和人民造成不可估量的损失。因此,对于可编程控制器来说,一个全面、高效的测试方法和实施方案是非常重要也是一个必不可少的环节。对PLC的测试需要可编程控制系统中软硬件的配合,具体涉及编译,下装,通信等一系列的操作。目前,在PLC的开发过程中,多是采用人工手动测试方式对PLC进行测试,即通过测试人员依据自身的专业素养,手动依次完成组建测试用例、运行测试用例等测试步骤。
在实现本发明的过程中,发明人发现现有技术中至少存在如下技术问题:
采用人工手动测试方式对PLC进行测试时,对测试人员测试时的身体状态和专业素质要求较高,由于各种外界因素所导致的误操作对测试的干扰性极大,因此测试结果的可靠性也会受到很大程度上的影响;同时,由于需要人工手动完成各个测试步骤,因此测试效率低,从而影响了PLC的研发进度。
技术实现要素:
本发明提供的用于可编程控制器的自动化测试方法及装置,能够减少PLC测试过程中测试人员的工作量以提高测试效率,从而能够降低测试过程对测试人员专业素质的过度依赖以提高测试的准确性。
第一方面,本发明提供一种用于可编程控制器的自动化测试方法,应用于计算机,包括:
步骤1、加载包含至少一个测试用例的测试用例包;
步骤2、对当前测试用例进行检查与编译,以生成对应的可执行文件;
步骤3、判断所述当前测试用例编译是否成功;
步骤4、如果所述当前测试用例编译成功,根据预设的测试参数建立计算机与可编程控制器的通信通道和数据传输通道;
步骤5、判断所述计算机与所述可编程控制器之间的通信通道和数据传输通道建立是否成功;
步骤6、如果所述计算机与所述可编程控制器之间的通信通道和数据传输通道建立成功,通过所述数据传输通道发送所述当前测试用例对应的可执行文件至所述可编程控制器;
步骤7、判断所述当前测试用例对应的可执行文件发送是否成功;
步骤8、如果所述当前测试用例对应的可执行文件发送成功,通过所述通信通道发送任务启动命令和任务停止命令至所述可编程控制器,以控制所述可编程控制器的任务运行和任务停止;
步骤9、通过所述通信通道发送读取命令至所述可编程控制器;
其中,所述读取命令用于获取所述当前测试用例的实际执行结果与预期执行结果经过逻辑与运算得到的最终测试结果;
步骤10、通过所述数据传输通道接收并显示所述可编程控制器发送的所述当前测试用例的最终测试结果;
步骤11、判断所述当前测试用例为本次测试的最后一个测试用例;
步骤12、如果所述当前测试用例为本次测试的最后一个测试用例,则汇总各个测试用例的所有单步测试结果和最终测试结果,生成测试结果报表;
步骤13、如果所述当前测试用例不是本次测试的最后一个测试用例,则跳转至步骤2,直至完成本次测试的所有测试用例。
可选地,所述预设的测试参数包括账户、密码和通信端口号,其中,所述通信端口用于连接计算机与可编程控制器。
可选地,所述根据预设的测试参数建立计算机与可编程控制器的通信通道和数据传输通道包括:
读取所述预设的测试参数;
使用所述账户、所述密码及所述通信端口号登录所述可编程控制器,以建立所述计算机与所述可编程控制器之间的通信通道和数据传输通道。
可选地,如果所述当前测试用例编译不成功、如果所述计算机与所述可编程控制器之间的通信通道和数据传输通道建立不成功,或者如果所述当前测试用例对应的可执行文件发送不成功,则跳转至步骤11。
可选地,所述当前测试用例对应的可执行文件至少运行一个任务周期。
第二方面,本发明提供一种用于可编程控制器的自动化测试装置,设置于计算机,包括:
加载模块,用于加载包含至少一个测试用例的测试用例包;
检查与编译模块,用于对当前测试用例进行检查与编译,以生成对应的可执行文件;
第一判断模块,用于判断所述当前测试用例编译是否成功;
第一处理模块,用于当所述当前测试用例编译成功时根据预设的测试参数建立计算机与可编程控制器的通信通道和数据传输通道;
第二判断模块,用于判断所述计算机与所述可编程控制器之间的通信通道和数据传输通道建立是否成功;
第二处理模块,用于当所述计算机与所述可编程控制器之间的通信通道和数据传输通道建立成功时通过所述数据传输通道发送所述当前测试用例对应的可执行文件至所述可编程控制器;
第三判断模块,用于判断所述当前测试用例对应的可执行文件发送是否成功;
第三处理模块,用于当所述当前测试用例对应的可执行文件发送成功时通过所述通信通道发送任务启动命令和任务停止命令至所述可编程控制器,以控制所述可编程控制器的任务运行和任务停止;
发送模块,用于通过所述通信通道发送读取命令至所述可编程控制器;
其中,所述读取命令用于获取所述当前测试用例的实际执行结果与预期执行结果经过逻辑与运算得到的最终测试结果;
接收模块,用于通过所述数据传输通道接收并显示所述可编程控制器发送的所述当前测试用例的最终测试结果;
第四判断模块,用于判断所述当前测试用例为本次测试的最后一个测试用例;
第四处理模块,用于当所述当前测试用例为本次测试的最后一个测试用例时汇总各个测试用例的所有单步测试结果和最终测试结果,生成测试结果报表;以及用于当所述当前测试用例不是本次测试的最后一个测试用例时跳转至步骤2,直至完成本次测试的所有测试用例。
可选地,所述预设的测试参数包括账户、密码和通信端口号,其中,所述通信端口用于连接计算机与可编程控制器。
可选地,所述第一处理模块包括:
读取单元,用于读取所述预设的测试参数;
建立单元,用于使用所述账户、所述密码及所述通信端口号登录所述可编程控制器,以建立所述计算机与所述可编程控制器之间的通信通道和数据传输通道。
可选地,所述第五处理模块,还用于当所述当前测试用例编译不成功时跳转至所述第四处理模块;
所述第六处理模块,还用于当所述计算机与所述可编程控制器之间的通信通道和数据传输通道建立不成功时跳转至所述第四处理模块;
所述第七处理模块,还用于当所述当前测试用例对应的可执行文件发送不成功时跳转至所述第四处理模块。
可选地,所述当前测试用例对应的可执行文件至少运行一个任务周期。
本发明实施例提供的用于可编程控制器的自动化测试方法及装置,与现有技术相比,一方面,本发明通过测试用例的批量自动编译、自动执行、自动显示和存储测试结果以及自动生成测试报表,能够提高测试效率,同时避免测试人员手工测试引入的误操作,从而能够降低测试过程对测试人员专业素质的过度依赖以提高测试的准确性;另一方面,由于测试报表中包括各个测试用例的单步测试结果和最终测试结果,使得测试人员可以依据与其对应的各单步测试结果来判定该项测试在哪一步测试中出现了问题,以便测试人员对问题进行定位并反馈给开发人员进行修改,从而加快产品的研发进度。
附图说明
图1为本发明一实施例用于可编程控制器的自动化测试方法的流程图;
图2为本发明一实施例用于可编程控制器的自动化测试装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供一种用于可编程控制器的自动化测试方法,如图1所示,所述方法包括:
S11、加载包含至少一个测试用例的测试用例包。
其中,所述测试用例的组建过程为测试人员利用关键字、变量等基本元素,组合生成程序组织单元(Program Organization Unit,POU),然后按照测试需求,通过若干POU之间的组合和相互调用形成复杂的测试用例,其主要包括待测的指令集和对测试结果的预判,以使得测试用例尽可能全面地覆盖测试范围。
另外,在组建测试用例的过程中,测试人员会创建一个用于显示单步测试结果的局部布尔型变量和一个用于保存最终测试结果的全局布尔型变量。
S12、对当前测试用例进行检查与编译,以生成对应的可执行文件。
具体地,所述对当前测试用例进行检查包括检查当前测试用例的语法是否符合规则、语意是否正确以及逻辑是否合理。
S13、判断所述当前测试用例编译是否成功,如果所述当前测试用例编译成功,则执行步骤S14,否则执行步骤S15。
S14、显示单步测试结果为TRUE,并根据预设的测试参数建立计算机与可编程控制器的通信通道和数据传输通道,并跳转至步骤S16。
S15、显示对应的单步测试结果为FALSE,设置其余步骤的单步测试结果和最终测试结果为FALSE,并跳转至步骤S24。
S16、判断所述计算机与所述可编程控制器之间的通信通道和数据传输通道建立是否成功,如果所述计算机与所述可编程控制器之间的通信通道和数据传输通道建立成功,则执行步骤S17,否则执行步骤S18。
S17、显示单步测试结果为TRUE,并通过所述数据传输通道发送所述当前测试用例对应的可执行文件至所述可编程控制器,并跳转至步骤S19。
S18、显示对应的单步测试结果为FALSE,设置其余步骤的单步测试结果和最终测试结果为FALSE,并跳转至步骤S24。
S19、判断所述当前测试用例对应的可执行文件发送是否成功,如果所述当前测试用例对应的可执行文件发送成功,则执行步骤S20,否则执行步骤S21。
S20、设置单步测试结果为TRUE,并通过所述通信通道发送任务启动命令和任务停止命令至所述可编程控制器,以控制所述可编程控制器的任务运行和任务停止,并跳转至步骤S22。
S21、显示对应的单步测试结果为FALSE,设置其余步骤的单步测试结果和最终测试结果为FALSE,并跳转至步骤S24。
S22、通过所述通信通道发送读取命令至所述可编程控制器。
其中,所述读取命令用于获取所述当前测试用例的实际执行结果与预期执行结果经过逻辑与运算得到的最终测试结果。
S23、通过所述数据传输通道接收并显示所述可编程控制器发送的所述当前测试用例的最终测试结果。
S24、判断所述当前测试用例为本次测试的最后一个测试用例,如果所述当前测试用例为本次测试的最后一个测试用例,则执行步骤S25,否则跳转至S12,直至完成本次测试的所有测试用例。
S25、汇总各个测试用例的所有单步测试结果和最终测试结果,生成测试结果报表。
本发明实施例提供的用于可编程控制器的自动化测试方法,与现有技术相比,一方面,本发明通过测试用例的批量自动编译、自动执行、自动显示和存储测试结果以及自动生成测试报表,能够提高测试效率,同时避免测试人员手工测试引入的误操作,从而能够降低测试过程对测试人员专业素质的过度依赖以提高测试的准确性;另一方面,由于测试报表中包括各个测试用例的单步测试结果和最终测试结果,使得测试人员可以依据与其对应的各单步测试结果来判定该项测试在哪一步测试中出现了问题,以便测试人员对问题进行定位并反馈给开发人员进行修改,从而加快产品的研发进度。
可选地,所述预设的测试参数包括账户、密码和通信端口号,其中,所述通信端口用于连接计算机与可编程控制器。
可选地,所述根据预设的测试参数建立计算机与可编程控制器的通信通道和数据传输通道包括:
读取所述预设的测试参数;
使用所述账户、所述密码及所述通信端口号登录所述可编程控制器,以建立所述计算机与所述可编程控制器之间的通信通道和数据传输通道。
具体地,如果登录成功,则表示所述计算机与所述可编程控制器之间的通信通道和数据传输通道建立成功;如果登录失败或者登录超时,则表示所述计算机与所述可编程控制器之间的通信通道和数据传输通道建立不成功。
可选地,所述当前测试用例对应的可执行文件至少运行一个任务周期。
这样做的目的是为了能够获取更加准确的测试结果,避免由于运行不充分而对最终测试结果产生的误判。
本发明实施例还提供一种用于可编程控制器的自动化测试装置,设置于计算机,如图2所示,所述装置包括:
加载模块11,用于加载包含至少一个测试用例的测试用例包;
检查与编译模块12,用于对当前测试用例进行检查与编译,以生成对应的可执行文件;
第一判断模块13,用于判断所述当前测试用例编译是否成功;
第一处理模块14,用于当所述当前测试用例编译成功时显示单步测试结果为TRUE时根据预设的测试参数建立计算机与可编程控制器的通信通道和数据传输通道;
第二判断模块15,用于判断所述计算机与所述可编程控制器之间的通信通道和数据传输通道建立是否成功;
第二处理模块16,用于当所述计算机与所述可编程控制器之间的通信通道和数据传输通道建立成功时显示单步测试结果为TRUE,并通过所述数据传输通道发送所述当前测试用例对应的可执行文件至所述可编程控制器;
第三判断模块17,用于判断所述当前测试用例对应的可执行文件发送是否成功;
第三处理模块18,用于当所述当前测试用例对应的可执行文件发送成功时设置单步测试结果为TRUE时通过所述通信通道发送任务启动命令和任务停止命令至所述可编程控制器,以控制所述可编程控制器的任务运行和任务停止;
发送模块19,用于通过所述通信通道发送读取命令至所述可编程控制器;
其中,所述读取命令用于获取所述当前测试用例的实际执行结果与预期执行结果经过逻辑与运算得到的最终测试结果;
接收模块20,用于通过所述数据传输通道接收并显示所述可编程控制器发送的所述当前测试用例的最终测试结果;
第四判断模块21,用于判断所述当前测试用例为本次测试的最后一个测试用例;
第四处理模块22,用于当所述当前测试用例为本次测试的最后一个测试用例时汇总各个测试用例的所有单步测试结果和最终测试结果,生成测试结果报表;以及用于当所述当前测试用例不是本次测试的最后一个测试用例时跳转至步骤2,直至完成本次测试的所有测试用例。
本发明实施例提供的用于可编程控制器的自动化测试装置,与现有技术相比,一方面,本发明通过测试用例的批量自动编译、自动执行、自动显示和存储测试结果以及自动生成测试报表,能够提高测试效率,同时避免测试人员手工测试引入的误操作,从而能够降低测试过程对测试人员专业素质的过度依赖以提高测试的准确性;另一方面,由于测试报表中包括各个测试用例的单步测试结果和最终测试结果,使得测试人员可以依据与其对应的各单步测试结果来判定该项测试在哪一步测试中出现了问题,以便测试人员对问题进行定位并反馈给开发人员进行修改,从而加快产品的研发进度。
进一步地,所述装置还包括第五处理模块23、第六处理模块24和第七处理模块25,其中,所述第五处理模块23,还用于当所述当前测试用例编译不成功时显示对应的单步测试结果为FALSE,设置其余步骤的单步测试结果和最终测试结果为FALSE,并跳转至所述第四处理模块21;
所述第六处理模块24,还用于当所述计算机与所述可编程控制器之间的通信通道和数据传输通道建立不成功时显示对应的单步测试结果为FALSE,设置其余步骤的单步测试结果和最终测试结果为FALSE,并跳转至所述第四处理模块21;
所述第七处理模块25,还用于当所述当前测试用例对应的可执行文件发送不成功时显示对应的单步测试结果为FALSE,设置其余步骤的单步测试结果和最终测试结果为FALSE,并跳转至所述第四处理模块21。
可选地,所述预设的测试参数包括账户、密码和通信端口号,其中,所述通信端口用于连接计算机与可编程控制器。
可选地,所述第一处理模块14包括:
读取单元,用于读取所述预设的测试参数;
建立单元,用于使用所述账户、所述密码及所述通信端口号登录所述可编程控制器,以建立所述计算机与所述可编程控制器之间的通信通道和数据传输通道。
具体地,如果登录成功,则表示所述计算机与所述可编程控制器之间的通信通道和数据传输通道建立成功;如果登录失败或者登录超时,则表示所述计算机与所述可编程控制器之间的通信通道和数据传输通道建立不成功。
可选地,所述当前测试用例对应的可执行文件至少运行一个任务周期。
这样做的目的是为了能够获取更加准确的测试结果,避免由于运行不充分而对最终测试结果产生的误判。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。