Modbus协议一致性测试的自动化方法
发布时间:2015-07-01 16:34
摘 要:现有modbus协议一致性测试中尚未形成测试自动化方法,给测试的有效性和客观性带来了不利影响,为了解决这一问题,提出一致性测试的自动化方法的体系结构,它由测试用例生成器和测试结果分析器组成,然后基于体系结构实现了一致性自动化测试系统。在实际应用中该系统发现了一些隐藏的modbus一致性问题,证明了该方法的可用性和有效性。
关键词:modbus;一致性测试;自动化;用例生成器
中图分类号:tp393.09文献标识码:a
文章编号:1004-373x(2010)01-171-03
automation of modbus conformance testing
zhao jian
(northwest airtraffic management bureau,xi′an,710082,china)
abstract:the existing modbus protocol conformance testing method has following problem: there is not automatictesting method for it,and this brings negative impact on the effectiveness of order to solve this problem,the architecture of automation method for modbus protocol conformance testing,the architecture includes test case generation and test result automatic conformance testing system based on the architecture is practice,the system found a number of hidden modbus conformance errors,this proves that the availability and effectiveness of the method.
keywords:modbus;conformance testing;automation;test case generation
0 引 言
modbus协议已经成为一种事实的工业标准,但modbus设备间的一致性、互操作性较差,是制约modbus发展的瓶颈。为了解决modbus协议的一致性和互操作性问题,国内外的研究机构展开了深入的研究并取得了一些成果。
在modbus-ida国际组织的支持下,进行modbus一致性测试的实验室陆续建立。目前,在国外得到modbus-ida国际组织授权的modbus一致性测试实验室仅有两处:一处是位于美国密歇根大学的modbus tcp一致性测试实验室;另一处为设在该课题所在机械工业仪器仪表综合技术经济研究所的modbus serial line/tcp一致性测试实验室,它是独立于产品制造商的第三方测试机构[1,2]。国外其他研究机构对modbus测试系统的研究处于发展阶段,modbus测试系统被应用到火电厂、电力监控系统、控制系统安全认证中,但都未形成一致性和互操作测试标准和自动化方法[3-6]。
在国内对进行modbus一致性和互操作性测试研究的机构主要有:北京交通大学的研究人员开展了modbus串行链路协议一致性测试系统的研发工作[7,8];开普电器检测研究院在modbus协议一致性测试方面有多年的经验,已加入modbus-ida协会[9]。
总得来说,国外在modbus协议的一致性和互操作性测试的研究已经取得了一定的成果,并形成了一些测试系统,但国内用户分享成果的代价较大,并且无法进行modbus设备的互操作性测试,并且尚未形成测试自动化方法;国内的研究已经起步并取得了一些初步研究成果,但在国内尚未形成测试标准和测试自动化方法。
为了克服目前研究中所存在的问题,本文主要研究modbus协议的一致性测试的自动化方法,测试的自动化方法主要包括测试用例的自动生成和测试结果的自动分析两方面,限于篇幅对测试结果的自动分析方法不予展开论述,主要论述测试用例的自动生成方法。
1 一致性测试的基本原理
协议测试理论经过几十年的发展,在许多方面都取得了很大的进展,其中最成熟的是协议一致性测试的理论,主要代表是iso制定的国际标准iso/iec-9646:协议一致性测试的方法和框架。图1是一致性测试的基本示意图。iut(implementation under test)是根据规范的具体实现,是一个内部不可见的实体;规范(speciflcation)以某种形式化语言或者自然语言描述,但不管怎样的描述形式,其根本都是一个扩展自动机模型;测试仪(tester)根据规范为iut产生一组测试序列 (test sequence),然后观察iut的外部行为是否符合规范的描述[7,8]。
图1 一致性测试原理示意图
目前的实际工程测试中,测试序列主要是由少数专家凭借经验制定的。因为原始的规范通常都是自然语言描述的,不同的实现者在使用形式化语言建模的过程中,就可能产生了一个一致性问题:原始规范和形式化规范之间可能在语义上产生偏差。根据这样衍生的形式化描述产生的测试序列不能作为判断是否通过一致性测试的依据。
对于一致性测试的过程,大约需要分五个步骤来完成[8],图2是一致性测试的过程。
图2 一致性测试的过程
第一步,分析测试需求。也就是说,分析相应的标准或规范,从中找出一组测试标准,建立用于实现的一致性描述pics(protocol implement conformance statement)。每个pics应该尽可能的简单并且仅仅集中在一个原子功能上,测试标准之间要做到不相抵触。
第二步,在pics上增加一些用于测试实现的协议实现额外信息pixit(protocol implementation extra information statement),pics和pixit就组成用于测试实现的一致性信息citi(conformanee information for testing the implementation)。
第三步,基于citi,生成一组抽象的测试用例atc(abstract test case)的集合——抽象测试套件ats(abstract test suite)。
第四步,对各atc中的参数选择合适的输入值以及相应的“预测结果”,得到可执行的测试用例etc(executable test case)的集合——可执行的测试套件ets(executable test suite)。当然,生成的可执行测试套件是与所处的测试平台是密切相关的。
第五步,对被测单元uut(unit under test)执行etc的时候,被测单元的测试过程将会产生一个“通过”或“失败”的报告。报告“失败”即未能通过测试则意味着与规范不一致。
2 一致性自动化测试方法
目前测试过程中的“生成ets”、“测试uut”等工作步骤中实现了简单的测试系统,能够对一些工作实现自动化,如根据手工输入的modbus协议的从站号、功能号、地址等参数生成测试用例,能够自动执行测试用例并生成简要测试报告。但这些测试过程存在以下问题:测试用例的生成需要大量的人为干预;另外,测试结果只是简要的测试报告,没有更进一步的分析报告,以帮助用户更容易地确定问题所在。
如图2虚线框部分所示,“生成ets”、“测试uut”等工作步骤可以实现测试自动化。自动化后的体系结构如图3所示。其中可视化用例设计器、测试用例生成器完成测试用例的自动生成工作;测试结果分析器完成测试结果的自动分析工作。限于篇幅对测试结果的自动分析方法不予展开论述,主要论述测试用例的自动生成方法。
图3 一致性测试过程的自动化示意图
通常在一致性测试过程中,测试用例的设计和生成是软件测试的关键任务和难点,据统计,约有40%一致性测试开销用于设计和生成测试用例上。长期以来,测试用例的设计和生成主要依靠手工完成,这意味着要求测试人员具有相当的经验和较高的专业水平。因此,实际工程中的测试用例生成往往带有很大的盲目性,主要依靠直觉经验产生测试用例,这导致测试用例数量多,测试效果差,测试成本居高不下。另外,如何生成最能发现被测系统(或程序)存在问题的测试用例,如何能用最少的测试用例实现足够大的覆盖率,也是测试人员一直追求的目标。这些问题的解决方案就是测试用例的自动生成[10]。
2.1 测试用例的自动生成方法的体系结构
图3中的测试用例自动生成器是测试用例自动生成工作的核心。其体系结构如图4所示。
其中用例设计描述是描述用例特性的文本,根据所选择的算法不同而描述方式也不同:如采用“基于形式规格说明的方法”则用z,vdm,obj,larch [11]等语言来描述,如采用“组合覆盖方法”则用xml脚本来描述。
图4 测试用例自动生成器的体系结构
算法适配器为各种算法提供接口,它向上为描述解析器提供算法支持服务,向下解释各种算法,使得体系结构能够兼容多种算法而增强体系结构的扩展性和适用范围。
描述解析器基于算法适配器来分析用例设计描述,将描述统一转换成用例生成器可识别的内部描述形式,然后传递给用例生成器。
用例生成器获得来自描述解析器的内部描述,并根据描述自动生成可执行测试用例。可执行的测试用例支持多种形式存储,如内存存储、文件存储、数据库存储等,具体的存储格式随用例执行器的需求而变。
2.2 测试用例的自动生成方法的实现
为了验证体系结构的合理性和有效性,基于microsoft vc 6.0 sp6、modbus activex控件、“分类树方法”、cte xl(classification tree editor extended logics)实现了modbus协议一致性测试的自动化系统。
其中cte xl是我们系统中的可视化用例设计器,它是一个语法控制的、可视化、图形化的编辑器。帮助我们更加有效地使用分类树方法进行测试用例的设计。
分类树方法是黑盒测试中的一种部分测试方法,由grochtmann 和grinun 提出,后又由chen 和poon 改进[11],它是一种有效的功能测试方法。分类树方法的基本思想是: 首先逐层划分测试对象的输入域,然后将划分的独立的类结合为无冗余的测试用例,这些测试用例覆盖了整个输入数据域。
算法适配器、描述解析器、用例生成器、分类树方法均使用microsoft vc 6.0 sp6实现。
modbus activex控件用来执行用例并生成测试报告。该控件具有多线程、多任务、多优先级等特性,支持modbus serial line/tcp通信协议,支持rtu和ascii两种通信模式,具有良好的性能。
系统实际使用时,首先用cte xl构建用例设计,也就是生成z语言描述的规格说明,然后描述解析器解析该规格说明并生成测试用例模板(系统内部格式),交由用例生成器生成可执行的测试用例,最后由modbus activex控件用来执行用例并生成测试报告。人工参与的部分只是在第一步,即用cte xl构建用例设计,其余部分均自动完成,大大降低测试人员的工作量,提高了测试工作的效率和客观性。
该实现已经被应用到“山东石油化工厂装车管理系统”中用来测试管理系统和油气批量控制仪之间modbus通信,也被应用到“长庆单井计量信息系统”中用来测试信息系统和plc之间的modbus通信,限于篇幅测试过程不赘述,经过测试发现了一些隐藏的modbus一致性问题并且便于使用,提高了一致性测试有效性和客观性,同时增强了产品的可靠性和可用性,也证明了本文所论述的一致性测试自动化方法的有效性和实用性。
3 结 语
在分析了现有modbus协议一致性测试中存在的问题后,本文提出了一致性测试的自动化方法,基于这个方法设计并实现了一致性测试系统,在实际应用中该系统发现一些隐藏的modbus一致性问题,提高了modbus一致性测试的有效性和客观性,证明了该方法的有效性和实用性。目前该方法的实现基于分类树方法,下一步将研究其他测试用例自动生成方法,使其进一步完善。
编辑整理
参考文献
[1]修为明.现场总线技术及发展[j].电力系统装备,2005(3):78-82.
[2]机械工业仪器仪表综合技术经济研究所.基于modbus协议的工业自动化网络规范 第2部分:modbus协议在串行链路上的实现指南(gb/z1958.2-2004)[m].北京:
关键词:modbus;一致性测试;自动化;用例生成器
中图分类号:tp393.09文献标识码:a
文章编号:1004-373x(2010)01-171-03
automation of modbus conformance testing
zhao jian
(northwest airtraffic management bureau,xi′an,710082,china)
abstract:the existing modbus protocol conformance testing method has following problem: there is not automatictesting method for it,and this brings negative impact on the effectiveness of order to solve this problem,the architecture of automation method for modbus protocol conformance testing,the architecture includes test case generation and test result automatic conformance testing system based on the architecture is practice,the system found a number of hidden modbus conformance errors,this proves that the availability and effectiveness of the method.
keywords:modbus;conformance testing;automation;test case generation
0 引 言
modbus协议已经成为一种事实的工业标准,但modbus设备间的一致性、互操作性较差,是制约modbus发展的瓶颈。为了解决modbus协议的一致性和互操作性问题,国内外的研究机构展开了深入的研究并取得了一些成果。
在modbus-ida国际组织的支持下,进行modbus一致性测试的实验室陆续建立。目前,在国外得到modbus-ida国际组织授权的modbus一致性测试实验室仅有两处:一处是位于美国密歇根大学的modbus tcp一致性测试实验室;另一处为设在该课题所在机械工业仪器仪表综合技术经济研究所的modbus serial line/tcp一致性测试实验室,它是独立于产品制造商的第三方测试机构[1,2]。国外其他研究机构对modbus测试系统的研究处于发展阶段,modbus测试系统被应用到火电厂、电力监控系统、控制系统安全认证中,但都未形成一致性和互操作测试标准和自动化方法[3-6]。
在国内对进行modbus一致性和互操作性测试研究的机构主要有:北京交通大学的研究人员开展了modbus串行链路协议一致性测试系统的研发工作[7,8];开普电器检测研究院在modbus协议一致性测试方面有多年的经验,已加入modbus-ida协会[9]。
总得来说,国外在modbus协议的一致性和互操作性测试的研究已经取得了一定的成果,并形成了一些测试系统,但国内用户分享成果的代价较大,并且无法进行modbus设备的互操作性测试,并且尚未形成测试自动化方法;国内的研究已经起步并取得了一些初步研究成果,但在国内尚未形成测试标准和测试自动化方法。
为了克服目前研究中所存在的问题,本文主要研究modbus协议的一致性测试的自动化方法,测试的自动化方法主要包括测试用例的自动生成和测试结果的自动分析两方面,限于篇幅对测试结果的自动分析方法不予展开论述,主要论述测试用例的自动生成方法。
1 一致性测试的基本原理
协议测试理论经过几十年的发展,在许多方面都取得了很大的进展,其中最成熟的是协议一致性测试的理论,主要代表是iso制定的国际标准iso/iec-9646:协议一致性测试的方法和框架。图1是一致性测试的基本示意图。iut(implementation under test)是根据规范的具体实现,是一个内部不可见的实体;规范(speciflcation)以某种形式化语言或者自然语言描述,但不管怎样的描述形式,其根本都是一个扩展自动机模型;测试仪(tester)根据规范为iut产生一组测试序列 (test sequence),然后观察iut的外部行为是否符合规范的描述[7,8]。
图1 一致性测试原理示意图
目前的实际工程测试中,测试序列主要是由少数专家凭借经验制定的。因为原始的规范通常都是自然语言描述的,不同的实现者在使用形式化语言建模的过程中,就可能产生了一个一致性问题:原始规范和形式化规范之间可能在语义上产生偏差。根据这样衍生的形式化描述产生的测试序列不能作为判断是否通过一致性测试的依据。
对于一致性测试的过程,大约需要分五个步骤来完成[8],图2是一致性测试的过程。
图2 一致性测试的过程
第一步,分析测试需求。也就是说,分析相应的标准或规范,从中找出一组测试标准,建立用于实现的一致性描述pics(protocol implement conformance statement)。每个pics应该尽可能的简单并且仅仅集中在一个原子功能上,测试标准之间要做到不相抵触。
第二步,在pics上增加一些用于测试实现的协议实现额外信息pixit(protocol implementation extra information statement),pics和pixit就组成用于测试实现的一致性信息citi(conformanee information for testing the implementation)。
第三步,基于citi,生成一组抽象的测试用例atc(abstract test case)的集合——抽象测试套件ats(abstract test suite)。
第四步,对各atc中的参数选择合适的输入值以及相应的“预测结果”,得到可执行的测试用例etc(executable test case)的集合——可执行的测试套件ets(executable test suite)。当然,生成的可执行测试套件是与所处的测试平台是密切相关的。
第五步,对被测单元uut(unit under test)执行etc的时候,被测单元的测试过程将会产生一个“通过”或“失败”的报告。报告“失败”即未能通过测试则意味着与规范不一致。
目前测试过程中的“生成ets”、“测试uut”等工作步骤中实现了简单的测试系统,能够对一些工作实现自动化,如根据手工输入的modbus协议的从站号、功能号、地址等参数生成测试用例,能够自动执行测试用例并生成简要测试报告。但这些测试过程存在以下问题:测试用例的生成需要大量的人为干预;另外,测试结果只是简要的测试报告,没有更进一步的分析报告,以帮助用户更容易地确定问题所在。
如图2虚线框部分所示,“生成ets”、“测试uut”等工作步骤可以实现测试自动化。自动化后的体系结构如图3所示。其中可视化用例设计器、测试用例生成器完成测试用例的自动生成工作;测试结果分析器完成测试结果的自动分析工作。限于篇幅对测试结果的自动分析方法不予展开论述,主要论述测试用例的自动生成方法。
图3 一致性测试过程的自动化示意图
通常在一致性测试过程中,测试用例的设计和生成是软件测试的关键任务和难点,据统计,约有40%一致性测试开销用于设计和生成测试用例上。长期以来,测试用例的设计和生成主要依靠手工完成,这意味着要求测试人员具有相当的经验和较高的专业水平。因此,实际工程中的测试用例生成往往带有很大的盲目性,主要依靠直觉经验产生测试用例,这导致测试用例数量多,测试效果差,测试成本居高不下。另外,如何生成最能发现被测系统(或程序)存在问题的测试用例,如何能用最少的测试用例实现足够大的覆盖率,也是测试人员一直追求的目标。这些问题的解决方案就是测试用例的自动生成[10]。
2.1 测试用例的自动生成方法的体系结构
图3中的测试用例自动生成器是测试用例自动生成工作的核心。其体系结构如图4所示。
其中用例设计描述是描述用例特性的文本,根据所选择的算法不同而描述方式也不同:如采用“基于形式规格说明的方法”则用z,vdm,obj,larch [11]等语言来描述,如采用“组合覆盖方法”则用xml脚本来描述。
图4 测试用例自动生成器的体系结构
算法适配器为各种算法提供接口,它向上为描述解析器提供算法支持服务,向下解释各种算法,使得体系结构能够兼容多种算法而增强体系结构的扩展性和适用范围。
描述解析器基于算法适配器来分析用例设计描述,将描述统一转换成用例生成器可识别的内部描述形式,然后传递给用例生成器。
用例生成器获得来自描述解析器的内部描述,并根据描述自动生成可执行测试用例。可执行的测试用例支持多种形式存储,如内存存储、文件存储、数据库存储等,具体的存储格式随用例执行器的需求而变。
2.2 测试用例的自动生成方法的实现
为了验证体系结构的合理性和有效性,基于microsoft vc 6.0 sp6、modbus activex控件、“分类树方法”、cte xl(classification tree editor extended logics)实现了modbus协议一致性测试的自动化系统。
其中cte xl是我们系统中的可视化用例设计器,它是一个语法控制的、可视化、图形化的编辑器。帮助我们更加有效地使用分类树方法进行测试用例的设计。
分类树方法是黑盒测试中的一种部分测试方法,由grochtmann 和grinun 提出,后又由chen 和poon 改进[11],它是一种有效的功能测试方法。分类树方法的基本思想是: 首先逐层划分测试对象的输入域,然后将划分的独立的类结合为无冗余的测试用例,这些测试用例覆盖了整个输入数据域。
算法适配器、描述解析器、用例生成器、分类树方法均使用microsoft vc 6.0 sp6实现。
modbus activex控件用来执行用例并生成测试报告。该控件具有多线程、多任务、多优先级等特性,支持modbus serial line/tcp通信协议,支持rtu和ascii两种通信模式,具有良好的性能。
系统实际使用时,首先用cte xl构建用例设计,也就是生成z语言描述的规格说明,然后描述解析器解析该规格说明并生成测试用例模板(系统内部格式),交由用例生成器生成可执行的测试用例,最后由modbus activex控件用来执行用例并生成测试报告。人工参与的部分只是在第一步,即用cte xl构建用例设计,其余部分均自动完成,大大降低测试人员的工作量,提高了测试工作的效率和客观性。
该实现已经被应用到“山东石油化工厂装车管理系统”中用来测试管理系统和油气批量控制仪之间modbus通信,也被应用到“长庆单井计量信息系统”中用来测试信息系统和plc之间的modbus通信,限于篇幅测试过程不赘述,经过测试发现了一些隐藏的modbus一致性问题并且便于使用,提高了一致性测试有效性和客观性,同时增强了产品的可靠性和可用性,也证明了本文所论述的一致性测试自动化方法的有效性和实用性。
3 结 语
在分析了现有modbus协议一致性测试中存在的问题后,本文提出了一致性测试的自动化方法,基于这个方法设计并实现了一致性测试系统,在实际应用中该系统发现一些隐藏的modbus一致性问题,提高了modbus一致性测试的有效性和客观性,证明了该方法的有效性和实用性。目前该方法的实现基于分类树方法,下一步将研究其他测试用例自动生成方法,使其进一步完善。
编辑整理
参考文献
[1]修为明.现场总线技术及发展[j].电力系统装备,2005(3):78-82.
[2]机械工业仪器仪表综合技术经济研究所.基于modbus协议的工业自动化网络规范 第2部分:modbus协议在串行链路上的实现指南(gb/z1958.2-2004)[m].北京:
上一篇:风电场中SCADA系统设计