一种协议一致性测试中的状态验证方法

文档序号:7748319阅读:124来源:国知局
专利名称:一种协议一致性测试中的状态验证方法
技术领域
本发明涉及一种协议一致性测试中的状态验证方法,属于基于FSM/EFSM模型的测试序列生成与协议一致性测试中的错误诊断领域,其中FSM(Finite State Machine)为有限状态自动机,EFSM(Extended FiniteState Machine)为扩展有限状态自动机。
背景技术
如IS0/IEC 9646 (开放系统互联一协议一致性测试方法和框架)所指出,协议一致性测试的主要目标是验证被测协议实现是否与相应的协议规范相一致。协议是两个或多个通信实体相互联系和通信的一组规则和行为约束,其保证了通信实体之间按照规定模式进行通信。因此,协议一致性测试在协议工程中占据着极其重要的地位,是协议实现在网络中实际部署之前不可缺少的部分。国际标准化组织ISO制定了一套国际标准-ISO/工EC 9646,为协议一致性测试提供了基本方法和框架,为抽象测试集制订了设计步骤和描述方法,并为测试系统的实现提供了指导。IS0/IEC 9646描述了一个通用的方法论,用以测试一个声称实现了某一 OSI 协议的产品与相应协议规范的一致性。然而,IS0/IEC 9646标准不涉及形式化的测试序列生成及其相关规定,也不涉及具体的错误诊断技术。在协议一致性测试中,测试序列是一组具有一定顺序关系的测试活动集合,它指明了测试所需的具体内容和步骤。测试序列生成是错误探测过程的核心内容,直接决定了错误探测的效率和质量。形式化的测试序列生成能提高测试的错误覆盖能力并提供一定的自动化测试能力,是一致性测试中的核心技术之
ο在形式化测试序列生成技术中,对协议规范进行形式化描述是相关测试序列生成的基础步骤。状态自动机模型是一种比较成熟的协议描述方法,目前应用最为广泛的状态自动机模型是有限状态自动机(FSM)模型和扩展有限状态自动机(EFSM)模型。在FSM模型中,状态迁移(或称边)用Si X χ — ~ X y表示,其含义为在系统处于状态Si时,若对系统施加一个输入x(输入可以理解为对系统的激励,可以用输入符号表示不同的输入),则系统进入状态~且输出符号y (输出可以理解为系统的响应,可以用输出符号表示不同的输出)。其中,状态Si称为该状态迁移的头(或起始)状态,状态~称为该状态迁移的尾 (或终止)状态。此外,在上述记号中,也可用t(Si,x)表示在状态Si下输入符号χ所进入的状态(即~)。在本发明中,状态迁移中除状态外的元素被称为状态迁移标签元素,(在模型图中)这些元素组成标记在边上的标签,例如FSM模型的状态标签为“输入符号/输出符号”;在EFSM模型中,状态迁移的标签为“输入符号/输出符号/变量操作”。目前,基于FSM/EFSM模型的测试序列生成技术已经得到了长期的研究和发展,并得到了广泛的应用。在已有的基于FSM模型的测试序列生成方法中,比较典型的方法包括 UIO (Unique Input/Output)方法、W 方法、Wp 方法、SC 方法、DS (Distinguishing Sequence) 方法、C方法和T方法等。这些方法的主要目标是生成高错误覆盖率的测试序列,以验证被测系统是否符合相应的规范。
DS方法涉及两个阶段,即状态验证阶段和状态迁移测试阶段。在状态验证阶段, 使用区分序列对状态进行标识。区分序列定义为设\是一个输入序列(即输入符号串), 若将\应用到不同的状态时得到不同的输出序列(即输出符号串),则称\为区分序列。 C方法也称为特征序列方法,其用特征集对状态进行标识。特征集由输入序列组成,可表示为C = ICpC2,. . .,CJ,且满足当C中的测试序列应用于规范FSM中的任意两个不同状态时,所得到的输出序列都是不相同的。C中的每个元素(测试序列)被称为特征序列。当C 仅包含一个元素时,包含的唯一的特征序列就是区分序列。在UIO方法中,假定存在一个输入/输出序列能标识每一个状态,这种序列称为UIO序列。形式化地,状态Si的UIO序列 (记为UIOi)是一个能从其它状态中区分该状态的具有最小长度的输入/输出序列。W方法通过特征集对状态进行标识,特征集与输出符号关联。Wp方法是对W方法的改进,其利用W 方法中特征集的一个子集去进行状态验证,故该方法能够降低测试序列的长度。在Wp方法中,不同状态使用不同的子集进行状态验证。基于FSM模型的测试序列生成方法的主要目标是测试被测系统是否符合相应的规范,是一种验证整体一致性的技术手段。在一些基于FSM模型的测试序列生成方法中(如上文介绍的方法),涉及到对状态自动机的状态标识(或称验证),但这种状态标识针对协议规范所描述的FSM模型(称为规范FSM)。当协议实现中存在错误时,上述状态标识方法无法对被测状态进行验证(即判断被测状态是否为规范FSM中某个指定的状态),从而导致错误诊断难以有效进行。输出符号错误(即协议实现的某个响应不按照规范进行)和转换错误(即协议实现的某个状态迁移所进入的状态不是规范FSM中的对应状态)是导致上述情况的两种主要原因,如说明书附图1(a)所示,“a/b,c/d”是状态S1的UIO序列,但在图1(b)所示的错误状况下,该序列不再区分状态S1,即无法通过该序列判断某被测状态是否为状态Sl。在基于EFSM模型的错误诊断过程中,对指定状态的验证同样存在上述问题。总体而言,在基于FSM/EFSM模型的协议一致性测试中,错误诊断是一个研究比较薄弱的环节。目前,在存在不确定错误的情况下,尚无对协议实现中的状态进行准确验证的方法。

发明内容
有鉴于在利用基于FSM/EFSM模型的协议一致性测试方法发现协议实现存在错误后,由于转换错误或/和输出错误的数量和位置无法确定,在错误诊断过程中难以对指定状态进行判断的问题,本发明提供一种协议一致性测试(基于FSM/EFSM模型)中的状态验证方法,以对协议实现中指定状态是否为规范FSM/EFSM模型的某个状态进行验证。本发明采用以下技术方案该发明为协议一致性测试中的状态验证方法,该方法基于FSM/EFSM模型并且其采用以下步骤1)验证准备给定一个被测实现、该被测实现对应的规范FSM/EFSM模型、该被测实现中一个被测状态u及拟验证的状态s ;2)若所述被测实现符合输入正确条件或为提供诊断信息而假定输入正确条件成立,则将规范FSM/EFSM模型以预定的数据结构加以存储。否则,结束本方法;3)基于规范FSM/EFSM模型获取拟验证状态s所对应的诊断输入序列及候选状态集合,并将获得的诊断输入序列及候选状态集合加以存储以备验证所述被测实现中的其它被测状态;4)若步骤3)中所述候选状态集合中的元素数量超过候选阈值,则放弃继续进行本方法;否则,进入下一步;5)根据步骤幻中找到的拟验证的状态s所对应的诊断输入序列对被测状态u进行测试,观察对应的测试结果,得到状态验证结论,即被测实现中被测状态u是否为拟验证的状态S,或该被测状态是否为拟验证的状态S所对应的候选状态集合中的某一个状态。在协议一致性测试过程中,错误诊断的主要目标是判断错误发生的位置,因此需要对协议实现中的状态进行识别。依据本发明技术方案的的状态验证方法,可以不考虑输出符号是否错误,从而克服或缓解了由于输出符号错误所导致的状态难以有效识别的问题,在一定程度上提高了错误诊断的定位能力。本方法的状态验证能力可在测试前加以分析,从而避免了不必要的测试。此外,方法的具体状态验证能力与对应的规范FSM/EFSM模型有关,在一定程度上取决于模型规范输入符号定义的完全度(即模型中状态的规范输入符号数量与全部输入符号数量的比值)。一般情况下,若某状态的规范输入符号的完全度越小,则该状态的候选状态集越小,该方法的状态验证能力越强。通常而言,特别是在通信协议中,规范输入符号的平均定义完全度较小,本发明所提出的方法具有高的状态识别能力。例如,在图 2 所示的模型(模型来源=Yujun Zhang and Zhongcheng Li,Hierarchical Protocol Description and Test Genration Method forMobile IPv6 Testing)中,规范输入符号的平均定义完全度较低。在最坏情况下(假定所有状态能转向任意状态),该模型仅%和S7的诊断输入序列所对应的候选状态集大小为2,其它的候选状态集的大小均为 1,即本例有很强的状态验证能力。上述方法,所述输入正确条件优选在相关联的单元测试中针对被测实现进行规范输入符号测试得以满足。上述方法,规范FSM/EFSM模型以矩阵结构或者链接表结构存储,且若采用矩阵结构存储,须区分状态迁移标签元素;若采用邻接表结构存储,则节点元素与状态迁移标签的元素相对应。上述方法,矩阵结构的存储元素类型为字符串形式,加以区分的状态迁移标签元素包括任何输入符号、输出符合和变量赋值操作,并采用转义符号表示法对状态迁移标签元素加以区分;该转义符号表示法采用“\”表示分隔符号,若标签元素包含“\”符号,则用 “\\”符号替换;在对上述表示方法进行语义解释时,单个出现的“\”符号为分隔符,顺序出现的连续两个“\”符号用一个符号“ \ ”符号替换回来。上述方法,所述步骤3)中首先获取起始于对应拟验证的状态s的基于规范FSM/ EFSM模型的可执行输入序列,进而选取能够把相应状态与模型中的其它状态最大可能区分开来的可执行输入序列作为诊断输入序列;并取诊断输入序列不能区分的状态组成的集合作为拟验证的状态s所对应的候选状态集合。优选地,所述候选阈值设为较小的值,如2或3。优选地,当拟验证的状态s所对应的候选状态集合的大小为1时,若拟验证的状态 S所对应的诊断输入序列施加在被测状态U上能够无中断地执行,则被测状态U为拟验证的状态S,否则被测状态u不是拟验证的状态s ;当状态S的候选状态集合的大小大于1时,若拟验证的状态s所对应的诊断输入序列施加在被测状态u上能够无中断地执行,则被测状态U是拟验证的状态S所对应的候选状态集合中的一个状态,否则,被测状态U不在拟验证的状态S的候选状态集合中。


下面结合说明书附图对本发明的技术方案作进一步的阐述,其中图1为FSM错误实例图,其中图(a)为规范FSM模型,图(b)为错误的FSM实现。图2为MIPv6移动节点状态转换图。图3为基于本发明技术方案的协议一致性测试中的状态验证方法流程图,其中图 (a)为状态表示方法步骤图,图(b)为状态表示实体关系。图4为FSM/EFSM的邻接表存储结构图,其中图(a)为状态自动机模型邻接表总体结构图,图(b)为FSM模型邻接表节点结构图,图(c)为EFSM模型邻接表节点结构图。图5为状态Si的输入转发树结构示意图。
具体实施例方式本发明涉及一些新的概念,包括状态的诊断输入序列、候选状态集合和输入正确条件,下面首先对这些概念进行说明。如果一个输入符号对某状态s在给定的规范中有明确的定义(即状态s能接受该输入符号),则称该符号是状态S的规范输入符号。当在某状态S下输入一个输入符号时, 输出可能存在以下情况1.输出正常的符号;2.没有任何输出,但在规范FSM/EFSM模型中该情况应有正常输出;3.报输出错误。上述后两种情况的输出统称为非正常输出。若在指定状态下输入一个该状态的非规范输入符号,则称产生一个输出中断。称所述输出中断发生时的输出为中断输出。如果一个输入序列α应用在状态s(指从状态s 开始依次输入α中的输入符号)时不存在输出中断现象,该序列被称为起始于状态s的可执行输入序列。注意可执行输入序列是针对规范FSM/EFSM模型定义的。若起始于状态s 的可执行输入序列对其它状态t是不可执行的,则称状态s和t是可区分的。形式化地,在某状态s下输入某规范输入符号(记为a)时,可能进入的状态集合记为C(s,a)。本发明进一步引入符号C' (S,i)。形式化地,设集合S= {%,%,...,et}, 则 C' (S,i) = C(e1 i) U U C(e2,i) U . · · U C(et,i)。设“i0,“,···,ik”表示一个输入序列,当将该序列应用在状态S0上时,所进入状态序列为“S1, S2, ... , %”,则满足(I)S1 e C(s,i0);(2) sm e C' (C' (C' . .. (C' (C(s,i0),ii)···),im_2),Ul <m彡 k。如果某可执行输入序列能将状态s最大限度地与其它状态区分开来,则称该可执行输入序列为诊断输入序列,称不能区分的其它状态和该状态组成的集合为该诊断输入序列(或状态s)所对应的候选状态集合。为简化方便,本方案有时将诊断输入序列称为 DI (Distinguishing Input)序列。在已有的基于FSM/EFSM模型的测试序列生成方法中,多数方法合理地假定实现中的对应状态能接受所有的规范输入符号。本发明进一步合理地假定实现中的对应状态能且仅能接受所有的规范输入符号,并称该假定为输入正确假定。对应地,输入正确条件指规范FSM/EFSM模型在实现中的对应状态能且仅能接受所有的规范输入符号。输入正确条件可通过在状态相关的单元测试中对输入进行简单的相关测试加以满足。在通常的测试实践中,这种测试往往会进行或部分进行,本方案仅对其进行明确要求,不对其具体操作进行详述。参考说明书附图3所示的协议一致性测试中的状态验证方法,该方法基于FSM/ EFSM模型并且其采用以下步骤1)验证准备给定一个被测实现、该被测实现对应的规范FSM/EFSM模型、该被测实现中一个被测状态u及拟验证的状态s ;2)若所述被测实现符合输入正确条件或为提供诊断信息而假定输入正确条件成立,则将规范FSM/EFSM模型以预定的数据结构加以存储。否则,结束本方法;3)基于规范FSM/EFSM模型获取拟验证状态s所对应的诊断输入序列及候选状态集合,并将获得的诊断输入序列及候选状态集合加以存储以备验证所述被测实现中的其它被测状态;4)若步骤3)中所述候选状态集合中的元素数量超过候选阈值,则放弃继续进行本方法;否则,进入下一步;5)根据步骤幻中找到的拟验证的状态s所对应的诊断输入序列对被测状态u进行测试,观察对应的测试结果,得到状态验证结论,即被测实现中被测状态u是否为拟验证的状态S,或该被测状态是否为拟验证的状态S所对应的候选状态集合中的某一个状态。说明书附图3中,给出了 FSM/EFSM模型的邻接表存储结构图。在图3中,假定状态自动机模型共有k个状态,其中为%起始状态,有η (i)个状态迁移以状态Si (0 < i < k) 为起始节点,符号Su表示从状态Si出发的第1个状态迁移的尾状态。如上文所述,输入正确条件可通过如下简单限制满足在相关联的单元测试中针对被测实现进行规范输入符号测试,并在测试出不符合输入正确条件时进行相关修正工作,即对软件(或系统)不符合输入正确条件之处进行改正或完善,使其符合输入正确条件。若在相关测试中遵从上述限制,则被测实现符合输入正确条件。若为提供一种错误判断而假定输入正确条件满足,则也进行后续的状态诊断过程。本领域的技术人员可以根据实际需要进行选择。规范FSM/EFSM以矩阵结构或者链接表结构存储,且若采用矩阵结构存储,须区分状态迁移标签元素;若采用邻接表结构存储,则节点元素与状态迁移标签的元素相对应。优选地,如果采用矩阵结构进行存储,则元素类型为字符串形式,加以区分的状态迁移标签元素至少包括任何输入符号、输出符合和变量赋值操作,并采用转义符号表示法对状态迁移标签元素进行区分以满足数据检索的需要;该转义符号表示法采用“\”表示分隔符号,若标签元素包含“\”符号,则用“\\”符号替换;在对上述表示法进行语义解释时, 单个出现的“\”符号为分隔符,顺序出现的连续两个“\”符号用一个“\”符号替换回来。为满足方法的要求,所述诊断输入序列的获取包括首先获取起始于对应状态s的基于规范FSM/EFSM模型的可执行输入序列,进而选取能够把相应状态与模型中的其它状态最大可能区分开来的可执行输入序列作为诊断输入序列;并取诊断输入序列不能区分的状态组成的集合为s所对应的候选状态集合。进一步地,一种优选的方式,为了得到诊断输入序列,引入输入包含集和输入转换树两个概念,下面分别进行介绍。指定状态的规范输入符号集合表示该状态的所有规范输入符号集合。在给定状态自动机模型中,不同状态的规范输入符号集合可能不同,也可能相同。如果两个状态的规范输入符号集合相同,则称这两个状态是输入等价的。进一步地,引入状态(设为s)的输入包含集,记为S1+(s),满足-.^(SMS^S ^I(S1))。其中,I(s)表示状态s的规范输入符号集合,即包含状态s的所有规范输入符号的集合。为了解释和构建状态的DI序列,本方案引入一种特殊的树结构——输入转换树。 每个转换树与确定的状态所对应,描述了在输入正确假定下的某一状态迁移可能进入的状态。在转换树中,各节点(设为N)均位于一定的层次(记为lev(N)),定义如下
权利要求
1.一种协议一致性测试中的状态验证方法,该方法基于FSM/EFSM模型并且采用以下步骤1)验证准备给定一个被测实现、该被测实现对应的规范FSM/EFSM模型、该被测实现中的一个被测状态u及拟验证的状态s ;2)若所述被测实现符合输入正确条件或为提供诊断信息而假定输入正确条件成立,则将规范FSM/EFSM模型以预定的数据结构加以存储;否则,结束本方法;3)基于规范FSM/EFSM模型获取拟验证状态s所对应的诊断输入序列及候选状态集合, 并将获得的诊断输入序列及候选状态集合加以存储以备验证所述被测实现中的其它被测状态;4)若步骤幻中所述候选状态集合中的元素数量超过候选阈值,则放弃继续进行本方法;否则,进入下一步;5)根据步骤幻中找到的拟验证的状态s所对应的诊断输入序列对被测状态u进行测试,观察对应的测试结果,得到状态验证结论,即被测实现中被测状态u是否为拟验证的状态s,或该被测状态是否为拟验证的状态s所对应的候选状态集合中的一个状态。
2.根据权利要求1所述的方法,其特征在于所述输入正确条件优选在相关联的单元测试中通过对被测实现的状态进行输入符号测试得以满足。
3.根据权利要求1所述的方法,其特征在于规范FSM/EFSM模型以矩阵结构或者链接表结构存储,且若采用矩阵结构存储,须区分各状态迁移标签元素;若采用邻接表结构存储,则节点元素与状态迁移标签的元素相对应。
4.根据权利要求3所述的方法,其特征在于矩阵结构的存储元素类型为字符串形式, 加以区分的状态迁移标签元素包括输入符号、输出符合和变量赋值操作,并采用转义符号表示法对状态迁移标签元素加以区分;该转义符号表示法采用“\”表示分隔符号,若标签元素包含“\”符号,则用“\\”符号替换;在对上述表示方法进行语义解释时,单个出现的 “\”符号为分隔符,顺序出现的连续两个“\”符号用一个“\”符号替换回来。
5.根据权利要求1所述的方法,其特征在于所述步骤3)中首先获取起始于对应拟验证的状态s所对应的基于规范FSM/EFSM模型的可执行输入序列,进而选取能够把相应状态与模型中的其它状态最大可能区分开来的可执行输入序列作为诊断输入序列;并取诊断输入序列不能区分的状态组成的集合作为拟验证的状态s所对应的候选状态集合。
6.根据权利要求1或5所述的方法,其特征在于诊断输入序列通过对错误转换空间的遍历获得。
7.根据权利要求1所述的方法,其特征在于所述候选阈值设为2或3。
8.根据权利要求1所述的方法,其特征在于当拟验证的状态s所对应的候选状态集合的大小为1时,若拟验证的状态s所对应的诊断输入序列施加在被测状态u上能够无中断地执行,则被测状态u为拟验证的状态s,否则被测状态u不是拟验证的状态s ;当状态s 的候选状态集合的大小大于1时,若拟验证的状态s所对应的诊断输入序列施加在被测状态u上能够无中断地执行,则被测状态u是拟验证的状态s所对应的候选状态集合中的一个状态,否则,被测状态u不在拟验证的状态s所对应的候选状态集合中。
全文摘要
本发明公开了一种一致性测试中的状态验证方法,该方法基于FSM/EFSM模型并且首先验证被测实现是否符合正确输入条件,并构建拟验证状态对应的诊断输入序列及候选状态集合,通过验证被测实现中被测状态u是否为拟验证的状态s,或该被测状态是否为拟验证的状态s所对应的候选状态集合中的某一个状态实现。基于本发明的验证方法验证能力强,效率高。
文档编号H04L12/26GK102244590SQ20101016758
公开日2011年11月16日 申请日期2010年5月10日 优先权日2010年5月10日
发明者张新常, 杨美红 申请人:山东省计算中心
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1