CN101674205B - 基于有限状态机的网络通信协议测试序列生成方法及装置 - Google Patents

基于有限状态机的网络通信协议测试序列生成方法及装置 Download PDF

Info

Publication number
CN101674205B
CN101674205B CN2009101712638A CN200910171263A CN101674205B CN 101674205 B CN101674205 B CN 101674205B CN 2009101712638 A CN2009101712638 A CN 2009101712638A CN 200910171263 A CN200910171263 A CN 200910171263A CN 101674205 B CN101674205 B CN 101674205B
Authority
CN
China
Prior art keywords
state
access path
condition
path
finite
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2009101712638A
Other languages
English (en)
Other versions
CN101674205A (zh
Inventor
薛素芬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
STATE GRID ZHEJIANG ZHUJI POWER SUPPLY Co Ltd
Zhuji Dongbai Electric Power Equipment Manufacturing Co Ltd
State Grid Corp of China SGCC
State Grid Zhejiang Electric Power Co Ltd
Shaoxing Power Supply Co of State Grid Zhejiang Electric Power Co Ltd
Original Assignee
Fujian Star Net Communication Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujian Star Net Communication Co Ltd filed Critical Fujian Star Net Communication Co Ltd
Priority to CN2009101712638A priority Critical patent/CN101674205B/zh
Publication of CN101674205A publication Critical patent/CN101674205A/zh
Application granted granted Critical
Publication of CN101674205B publication Critical patent/CN101674205B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种基于有限状态机的网络通信协议测试序列生成方法及装置,用以提供一种有效的进行一致性测试的测试序列生成方法。该方法确定该有限状态机中初始状态与每个第一状态之间的连接路径,选择包含状态最多的连接路径,并将该选择的连接路径之外的第二状态连接到该连接路径上,根据该连接路径上每个状态的输入跳转条件,生成对应该连接路径的每个测试序列,本发明实施例将网络通信协议的一致性测试序列的生成步骤化,根据上述提供的各个步骤,生成测试序列,从而提高了网络通信协议一致性测试的测试效率。

Description

基于有限状态机的网络通信协议测试序列生成方法及装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于有限状态机的网络通信协议测试序列生成方法及装置。 
背景技术
网络通信协议是网络设备之间在进行信息传递,以及信息管理时需要遵守的规则,常见的网络通信协议包括:TCP/IP协议、IPX/SPX协议、NetBEUI协议等。网络通信协议可以通过文本来描述,也可以通过基于图表的有限状态机(FSM)来表示。 
在进行网络通信的过程中,网络设备之间需要遵循网络通信协议才能进行数据的交互。但在实际过程中,并不确定网络设备之间是能够正确的遵循该网络通信协议,因此,需要对网络设备进行一致性测试。并且可以采用基于有限状态机的一致性测试,即通过有限状态机生成测试序列,根据该测试序列对网络设备进行一致性测试。 
有限状态机包括一组状态,其中该一组状态中包括一个初始状态,每个状态在输入的激励信号下,实现该状态的动作并产生输出信号,例如将某变量设置为特定值或调用某函数进行特定输出,该输出信号即为下一状态的输入信号。通常只有满足每个状态的特定事件发生后才会进行状态的跳转。 
下面以802.1x为例说明网络通信协议中的有限状态机,以及基于有限状态机的一致性测试的主要内容。图1为802.1x协议中客户端supplciant状态机,在该supplciant状态机中包括7个有限的状态,其中每个方格表示一个状态,方格的上半部为状态名称,下半部为跳转该状态后所做的操作。该7个状态分别为静默(HELD)状态、未连接(DISCONNETTED)状态、连接(CONNECTING)状 态、认证(AUTHENTICANTED)状态、队列等待(ACQUIRED)状态、下线(LOGOFF)状态、认证(AUTHENTICATING)状态。其中DISCONNECTED状态为初始状态。在该图1中指向每个状态的箭头上方标注的文字为跳转到该状态的条件,从每个状态引出的箭头上标注的文字为跳转到下一状态的条件。 
图2A为HELD状态的示意图,在该图2A跳转到HELD状态的条件,以下称为输入跳转条件,包括:收到eapfail报文并且非初始或端口不可用状态,不是用户主动下线或被动下线(eapfail&&(!intialze||!por-tenable)&&!userloggoff&&!logoffsent)。一个指向该状态的箭头就代表一个输入跳转条件。跳转到该HELD状态后所做的操作包括:将变量heldWhile、eapfail、eapsuccess、suppstatus分别设置为等号右边的值,即使heldWhile=heldPeriod,suppstatus=unauthorized,eapfail=false,eapsu--ccess=false。由该状态跳转到下一状态的条件,以下称为输出条件,包括:进入HELD状态超时(heldwhile==0)和reqid,当heldwhile==0时,跳转到CONNECTING状态,当收到reqid时,跳转到ACQUIRED状态。两个由该状态指出的箭头就代表有两个输出条件。 
在基于有限状态机对网络设备进行一致性测试时,需要对网络通信系统进行测试,确定该网络通信系统中的网络设备之间的通信过程,是否与状态机定义的协议一致,例如有限状态机A为网络通信系统B需要遵循的网络通信协议,或者说根据该进行测试的网络通信系统B能够自动导出有限状态机A,对于A与B之间的一致性测试,其主要内容包括: 
1、A中的所有状态,在B中是否能够全部实现; 
2、对于A中每个状态的输入跳转条件,在B中该相应状态的跳转是否符合A的要求; 
3、对于A中每个状态的输入跳转条件,在B中该相应的状态跳转后所产生的输出是否符合A的要求。 
目前,基于状态机的网络通信协议一致性测试序列的生成方法暂时还没 有,并且由于有限状态机中各状态之间的跳转错综复杂,如单单CONNECTING状态就有5个输入跳转条件和3个输出条件,因此如何简化有限状态机中各状态之间的跳转关系,并针对第2条的测试生成有效的测试序列就显得尤为困难。 
发明内容
有鉴于此,本发明实施例提供一种基于有限状态机的网络通信协议测试序列生成方法及装置,用以提供一种有效的简化有限状态机中各状态之间跳转关系,并提供一种一致性测试的测试序列步骤化的生成方法。 
本发明实施例提供的一种基于有限状态机的网络通信协议测试序列生成方法,包括: 
根据有限状态机中的初始状态,及各状态之间的连接关系,确定有限状态机中初始状态与每个第一状态之间对应的每条连接路径,其中每条连接路径中包括至少两个状态; 
根据所述每条连接路径中初始状态及第一状态之间包括的状态的数量,选择包括状态数量最多的连接路径; 
确定位于所述选择的连接路径之外的每个第二状态,根据该每个第二状态与该选择的连接路径中每个状态的连接关系,将该每个第二状态连接到所述选择的连接路径上; 
根据所述选择的连接路径上的每个状态的输入跳转条件,及所述选择的连接路径中每个状态之间的连接关系,生成对应所述选择的连接路径的测试序列。 
本发明实施例提供的一种基于有限状态机的网络通信协议测试序列生成装置,包括: 
连接路径确定模块,用于根据有限状态机中的初始状态,及各状态之间的连接关系,确定有限状态机中初始状态与每个第一状态之间对应的每条连接路径,其中每条连接路径中包括至少两个状态; 
选择模块,用于根据所述每条连接路径中初始状态及第一状态之间包括的状态的数量,选择包括状态数量最多的连接路径; 
连接模块,用于确定位于所述选择的连接路径之外的每个第二状态,根据该每个第二状态与该选择的连接路径中每个状态的连接关系,将该每个第二状态连接到所述选择的连接路径上; 
生成模块,用于根据所述选择的连接路径上的每个状态的输入跳转条件,及所述选择的连接路径中每个状态之间的连接关系,生成对应所述选择的连接路径的测试序列。 
本发明实施例提供了一种基于有限状态机的网络通信协议测试序列生成方法及装置,该方法中确定该有限状态机中初始状态与每个第一状态之间的连接路径,选择包含状态最多的连接路径,并将该选择的连接路径之外的第二状态连接到该连接路径上,从而实现了对有限状态机中各状态的跳转关系的简化,根据该选择的连接路径上每个状态的输入跳转条件,生成对应该选择的连接路径的测试序列,本发明实施例将网络通信协议的一致性测试序列的生成步骤化,根据上述提供的各个步骤,生成测试序列,从而提高了网络通信协议一致性测试的测试效率。 
附图说明
图1为802.1x协议中客户端supplciant状态机; 
图2A为HELD状态的示意图; 
图2B为本发明实施例提供的基于有限状态机的网络通信协议测试序列的生成过程; 
图3为本发明实施例提供的依据图1对各状态之间的连接关系的图表表示方式; 
图4为本发明实施例提供的将第二状态连接到第四连接路径上的第四连接路径结构示意图; 
图5为本发明实施例提供的第二状态与连接路径的连接结构示意图; 
图6为本发明实施例提供的基于有限状态机的网络通信协议测试序列生成的装置结构示意图。 
具体实施方式
在基于有限状态机的网络通信协议的测试过程中,当有限状态机中存在状态较多,并且状态之间的跳转关系比较复杂时,有限状态机各状态之间的跳转关系的简化变得很复杂,当该有限状态机中所有的状态的输入跳转条件都要求包含在测试序列中时,很可能因为连接关系的错综复杂而将部分输入跳转条件疏漏掉,从而使生成的测试序列不能达到对网络通信系统的有效测试。在本发明实施例中通过简化有限状态机中各状态之间的跳转关系,基于简化后的跳转关系生成测试序列,从而使测试序列的生成步骤化,并且该测试序列的生成方法简单高效,并达到对网络通信系统的一致性测试。 
下面结合说明书附图,对本发明实施例进行详细说明。 
图2B为本发明实施例中基于有限状态机的网络通信协议测试序列的生成过程,该过程包括以下步骤: 
S201:根据有限状态机中的初始状态,及各个状态之间连接关系,确定有限状态机中初始状态与每个第一状态之间对应的每条连接路径,其中,每条连接路径中包括至少两个状态。 
在本发明实施中,首先需要根据各个状态之间的连接关系,及各个状态的输入跳转条件和输出条件,确定路径上的每个状态是否为连接路径上的第一状态,当确定了第一状态后,将该初始状态到该第一状态的路径作为连接路径。 
S202:根据每条连接路径中初始状态和第一状态之间包含的状态的数量,选择包含状态数量最多的连接路径。 
在本发明实施例中,当确定了初始状态与第一状态之间的连接路径后,选择最长的连接路径,从而便于后续过程中测试序列的生成。当至少两条连接路 径中包含的状态数量相同,并且数量最多时,可以在该至少两条连接路径中任意选择一条连接路径,从而使后续过程可以根据该选择的连接路径生成测试序列。 
S203:确定位于选择的连接路径之外的每个第二状态,根据该每个第二状态与该选择的连接路径上每个状态的连接关系,将该每个第二状态连接到该选择的连接路径上。 
由于确定了初始路径到第一状态的最长连接路径,但该有限状态机中有部分状态并不包含在该连接路径内,将该部分状态作为第二状态,根据该有限状态机中每个第二状态与该连接路径中每个状态的连接关系,将该每个第二状态连接到该连接路径中,只要根据该第二状态与连接路径上包含的状态的连接关系,在该连接路径中任意选择一个与该第二状态连接的状态,将该第二状态连接到该选择的状态上即可,从而实现将该每个第二状态连接到对应的连接路径上。 
上述过程中由于按照有限状态机中各个状态之间的连接关系,按照第一状态的确定条件,确定连接路中的第一状态,从而使各状态之间的跳转关系的确定步骤化,并且由于连接路径中确定的为路径中个每个状态在某一种跳转关系的条件下满足的跳转条件后实现的跳转,不同的连接路径对应的该路径中各状态的跳转关系不同,从而实现了对错综复杂的状态之间的跳转关系的分化,因此实现了对有限状态机中各状态之间跳转关系的简化。 
S204:根据该选择的连接路径上的每个状态的输入跳转条件,及该选择的连接路径中每个状态之间的连接关系,生成对应该选择的连接路径的测试序列。 
在生成对应该连接路径的测试序列时,根据该选择的连接路径上初始状态与第一状态之间的状态的输入跳转条件,确定第一组测试序列,并且根据连接在该选择的连接路径上的每个第二状态的输入跳转条件,确定第二组测试序列。则该第一组测试序列和第二组测试序列,即为基于有限状态机的生成的网 络通信协议的测试序列。 
基于简化后的有限状态机中各状态之间的跳转关系,根据连接路径中各状态的输入跳转条件生成测试序列,从而使测试序列的生成步骤化。 
图1为802.1x协议中客户端supplciant状态机,下面基于该有限状态机中每个状态之间的连接关系,详细说明在本发明实施例中,确定初始状态与第一状态之间的连接路径的过程。由于每一个状态的跳转条件都很复杂,在本发明实施例中,针对每个状态的每个跳转条件,确定该跳转条件归属的路径,从而实现对有限状态机中各状态跳转关系的简化。在本发明实施例中每个状态之间的连接关系复杂,状态与状态之间连接构成了对应两个状态之间的路径,但每条路径归属于哪条连接路径,需要依据下述方法确定。 
在确定连接路径的过程中,判断路径上的某一个状态是否为第一状态时,需要判断该状态的某一输出条件是否为其自身状态的一个输入跳转条件,当判断结果为是时,则该状态为对应该输出条件的连接路径上的第一状态,否则,该状态不是第一状态。或者,判断某一个状态是否为第一状态的过程还包括:判断某一个状态的输出条件,为与其连接的下一个状态的输入跳转条件时,判断该下一个状态是否在对应该输出条件的路径上,进行过是否为第一状态的判断,当判断结果为是时,将该某一状态作为连接路径上的第一状态,否则,该状态不是第一状态。并且,在某一状态是否为第一状态进行判断时,也可以判断该状态是否有输出条件,当该状态没有输出条件时,判断该状态为连接路径上的第一状态,否则,该状态不是第一状态。 
在该图1中初始状态为DISCONNECTED状态,该初始状态有一个输出条件,该输出条件为CONNECTING状态的输入跳转条件,因此可以称DISCONNECTED状态与CONNECTING状态连接,该CONNECTING状态有三个输出条件,该三个输出条件中第一输出条件为其自身状态的输入跳转条件,第二输出条件为ACQUIRED状态的输入跳转条件,第三输出条件为AUTHENTICATED状态的输入跳转条件。 
由于该CONNECTING状态的第一输出条件为其自身状态的一个输入跳转条件,因此,该CONNECTING状态满足连接路径上第一状态的条件,确定该CONNECTING状态为对应其第一输出条件的连接路径上为第一状态,则根据初始状态和第一状态确定的连接路径为:DISCONNECTED状态-CONNECTING状态。 
对于该CONNECTING状态的第二输出条件,由于该第二输出条件为ACQUIRED状态的输入跳转条件,在对应该第二输出条件的路径上,该CONNECTING状态不满足第一状态的条件,沿该第二输出条件的路径继续向下查找,ACQUIRED状态有三个输出条件,该三个输出条件中第一输出条件为其自身状态的输入跳转条件,第二输出条件为CONNECTING状态的输入跳转条件,第三输出条件为AUTHENTICATING状态的输入跳转条件。 
由于该ACQUIRED状态的第一输出条件为其自身状态的一个输入跳转条件,因此,该ACQUIRED状态满足连接路径上第一状态的条件,确定该ACQUIRED状态为对应其第一输出条件的连接路径上的第一状态,则根据初始状态和第一状态确定的连接路径为:DISCONNECTED状态-CONNECTING状态-ACQUIRED状态。 
该ACQUIRED状态的第二输出条件为CONNECTING状态的输入跳转条件,该CONNECTING状态在对应该第二输出条件的路径上已经进行过判断,因此,确定该ACQUIRED状态为对应该第二输出条件的连接路径上的第一状态,根据初始状态和第一状态确定的连接路径同样为:DISCONNECTED状态-CONNECTING状态-ACQUIRED状态。 
该ACQUIRED状态的第三输出条件为AUTHENTICATING状态的输入跳转条件,在对应该第三输出条件的路径上该ACQUIRED状态不满足第一状态的条件,沿该路径进行继续查找,该AUTHENTICATING状态有三个输出条件,其中第一输出条件为其自身状态的输入跳转条件,第二输出条件为ACQUIRED状态的输入跳转条件,第三输出条件为CONNECTING状态的输入跳转条件。 
对于AUTHENTICATING状态的第一输出条件,由于该第一输出条件为其自身状态的输入跳转条件,因此该AUTHENTICATING状态为对应该第一输出条件的连接路径上的第一状态,确定的初始状态和第一状态之间的连接路径包括:DISCONNECTED状态-CONNECTING状态-ACQUIRED状态-AUTHENTICATING状态。对于AUTHENTICATING状态的第二输出条件及第三输出条件,为ACQUIRED状态及CONNECTING状态的输入跳转条件,该两个状态已经在该路径中进行过是否为第一状态的判断,因此根据该第二、及第三输出条件分别确定的初始状态和第一状态之间的连接路径都为:DISCONNECTED状态-CONNECTING状态-ACQUIRED状态-AUTHENTICATING状态。 
依据上述描述,相信本领域技术人员可以确定初始状态和不同的第一状态之间的连接路径。图3为依据图1对各状态之间的连接关系的图表表示方式,可知,在本发明实施例中依据上述方法,确定的初始状态和每个第一状态之间对应的每条连接路径包括:第一连接路径DISCONNECTED状态-CONNECTING状态;第二连接路径DISCONNECTED状态-CONNECTING状态-ACQUIRED状态;第三连接路径DISCONNECTED状态-CONNECTING状态-ACQUIRED状态-AUTHENTICATING状态;第四连接路径DISCONNECTED状态-CONNECTING状态-AUTHENTICATED状态-ACQUIRED状态;第五连接路径DISCONNECTED状态-CONNECTING状态-AUTHENTICATED状态-ACQUIRED状态-AUTHENTICATING状态。 
在确定的上述连接路径中可以看到,有的连接路径中包括的有限状态机中的状态比较多,有的连接路径包括的有限状态机中的状态比较少,并且有些状态并不包含在该连接路径内,根据连接路径中包含的状态的数量,选择连接路径中包含状态数量最多的路径,即选择最长路径。例如上述基于802.1x协议中客户端supplciant状态机中,确定的五条连接路径中,第一连接路径初始状态与第一状态之间包括两个状态,第二连接路径初始状态与第一状态之间包括三 个状态,第三连接路径初始状态与第一状态之间包括三个状态,第四连接路径初始状态与第一状态之间包括四个状态,第五连接路径初始状态与第一状态之间包括五个状态,因此可知第五连接路径初始状态与第一状态之间包括的状态数量最多。 
由于一致性测试过程中,需要对所有状态的输入跳转条件进行测试,因此生成的测试序列中需要包括所有状态的信息。由于选择了第五连接路径,该连接路径包括DISCONNECTED状态-CONNECTING状态-AUTHENTICATED状态-ACQUIRED状态-AUTHENTICATING状态,在该连接路径中包括5个状态,而LOGOFF状态、HELD状态不包含在该连接路径内,在本发明实施例中将该不包含在该连接路径内的状态称为第二状态。该第二状态不包含在该连接路径内,但与该连接路径内的一些状态之间存在连接关系。可以根据该连接关系,将该第二状态添加到该连接路径内。 
对应该第五连接路径的第二状态包括:LOGOFF状态以及HELD状态,该LOGOFF状态与第五连接路径中的DISCONNECTED状态连接,则可以将该LOGOFF状态在该路径内与该DISCONNECTED状态相连。同样,查找HELD状态与该路径内的CONNECTING状态以及ACQUIRED状态连接,则在该两个状态中任意选择一个状态与HELD状态连接。 
图4为将第二状态连接到该第五连接路径上后的该第五连接路径的结构示意图,该第五连接路径的连接顺序为DISCONNECTED状态-CONNECTING状态-AUTHENTICATED状态-ACQUIRED状态-AUTHENTICATING状态,对于LOGOFF状态在图4中其与DISCONNECTED状态连接,HELD状态与CONNECTING状态连接。 
由于在对网络通信系统进行一致性测试时,需要针对有限状态机中的所有符合要求的输入跳转条件,在网络通信系统中对所有状态的转换输出判断其是否满足有限状态机的要求。因此在进行测试序列的生成时,需要确定每个状态的输入跳转条件。根据图1可知,对于初始状态DISCONNECTED状态有两个 指向该状态的箭头,即有两个输入跳转条件,该两个输入跳转条件分别为:Initialize‖!portenabled,另一个为经LOGOFF状态发生!userlogoff事件后跳转进入该DISCONNECTED状态。表1为跳转进入DISCONNECTED状态的条件。 
Figure DEST_PATH_GDA0000067887970000091
表1 
在本发明实施中都以“状态名<事件>形式,表示在当前状态下发生<>内事件后的跳转。如LOGOFF<!userlogoff>表示在LOGOFF状态下发生!userlogoff事件后的跳转。基于上述描述,查找其他状态的输入跳转条件,表2为该有限状态机的每一状态的输入跳转条件表: 
Figure DEST_PATH_GDA0000067887970000101
表2 
由表2可知,每个状态的输入跳转条件有一个或几个,即存在一个或几个跳转到该状态的可能,并且,当其中一个状态存在几个输入跳转条件时,该几个输入跳转条件也可以作为跳转到下一状态的输入跳转条件,因此跳转到下一状态的输入跳转条件个数可能大于指向该下一个状态的箭头的个数。但一般初始状态的输入跳转条件的个数与指向该状态的箭头的个数相同。 
当通过上述步骤查找,确定了初始状态与第一状态之间的连接路径,选择包含状态最多的连接路径,并将该包含状态最多的连接路径之外的第二状态连 接到了该连接路径上后,即确定了各个状态之间的连接关系,或跳转关系后,在根据该连接路径进行测试序列的生成时,需要根据该连接路径上每个状态的每个跳转条件,生成测试序列。首先确定连接路径上每个状态的输入跳转条件,该连接路径上每个状态的输入跳转条件,包括该初始状态到该第一状态之间的连接路径上每个状态的输入跳转条件,还包括连接在该连接路径上的第二状态的输入跳转条件,根据该每个状态的输入跳转条件,生成对应该路径的每个测试序列。 
其中,在具体生成测试序列的过程中,在连接路径的该初始状态和第一状态之间的任意状态中,根据该每个状态的输入跳转条件,生成对应的第一组测试序列,根据连接在该连接路径上的第二状态的输入跳转条件,生成对应的第二组测试序列。 
在生成第一组测试序列的过程中,在连接路径的初始状态与第一状态之间的任意状态中,根据每个状态的每个输入跳转条件,判断该输入跳转条件是否为与其连接的状态的输出条件,该与其连接的状态为该连接路径中初始状态与第一状态之间的与该状态连接的状态,并且该状态在该连接路径中与初始状态的位置临近,当判断结果为是时,将跳转到该与其连接的状态的每条路径,作为该状态对应该输入跳转条件,跳转到该状态的路径,否则,将该状态的该输入跳转条件,作为跳转到该状态的路径,根据跳转到该第一状态的路径,生成第一组测试序列。在本发明实施例中由于在连接路径中除初始状态和第一状态外,其他的状态都存在两个与其连接的状态,在本发明实施例中在判断每个状态的每个输入跳转条件,是否为与其连接的状态输出条件时,该与其连接的状态为连接路径中与该状态相连的,且在连接路径中位置较临近初始状态。 
由于本发明实施例中基于图1的有限状态机进行测试序列生成方法的说明,当该有限状态机中状态比较多时,该每个第二状态中包括多个状态,并且该多个状态连接在一起形成最初状态和最终状态之间的每个第二状态,如图5所示为第二状态与连接路径的连接结构示意图,在该连接路径中包括初始状态 到第一状态之间的多个状态,并且,初始状态与第二状态连接,其中,该第二状态包括最初状态和最终之间的状态。 
在根据上述描述生成第二测试序列的过程中,需要根据连接到该连接路径上的每个第二状态,判断该第二状态中的状态的输入跳转条件,是否为与其连接的状态的输出条件,其中该与其连接的状态包括该第二状态中与该状态连接的、且与初始状态位置临近的状态,当判断结果为是时,根据跳转到与其连接的状态每条路径,确定该状态中对应该输入跳转条件的跳转到该状态的路径,否则,根据该状态的该输入跳转条件,确定跳转到该状态的路径;根据跳转到每个第二状态中的最终状态的每条路径,生成对应的第二组测试序列。在本发明实施例中确定第二组测试序列时,在判断该每个第二状态中的状态的输入跳转条件,是否为与其连接的状态的输出条件时,确定与其连接的状态的方法与上述第一组测试序列生成时的判断方法相同,在此就不一一赘述。 
由于上述确定的连接路径中,第五连接路径包含的状态最多,下面以第五连接路径为例进行说明,第五连接路径包括:DISCONNECTED状态-CONNECTING状态-AUTHENTICATED状态-ACQUIRED状态-AUTHENTICATING状态。 
首先说明第一组测试序列的生成过程。在该第五连接路径中初始状态DISCONNECTED状态存在两个输入跳转条件,由于该状态为初始状态,该初始状态的两个输入跳转条件不可能是与其连接的状态的输出条件,因此,根据该两个输入跳转条件,确定跳转到该初始状态的路径,即跳转到该初始状态可以通过两条路径,该两条路径分别为表2中1.1和1.2两条路径,其中1.1路径为Initialize‖!portenabled,1.2路径为LOGOFF<!userlogoff>。 
在该第四连接路径上与该DISCONNECTED状态相连的为CONNECTING状态,对于该CONNECTING状态在表2中可以看出,存在5个指向该状态的箭头,即存在5个输入跳转条件,其中一个输入跳转条件为DISCONNECTED状态的输出条件,即该表2中2.2,由于CONNECTING状态与DISCONNECTED 状态在该连接路径中相连,且DISCONNECTED状态较与CONNECTING状态连接的AUTHENTICATED状态的位置临近初始状态,则将跳转到该DISCONNECTED状态的路径,作为对应该输入跳转条件的跳转到该路径的路径,由于该DISCONNECTED状态存在两条跳转到该状态的路径1.1和1.2,因此对于CONNECTING状态该2.2的输入跳转条件存在两条分支,即DISCONNECTED状态的两个输入跳转条件,即在该DISCONNECTED状态为该1.1和1.2两个条件时,都可以使该DISCONNECTED状态跳转到该CONNECTING状态,即都可以满足2.2的输出条件。因此,可以通过2.1、2.3、2.4、2.5以及满足该2.2条件的1.1以及1.2等路径实现该CONNECTING状态的跳转,即跳转到该CONNECTING状态存在2+(5-1)=6种路径。由于该第四路径上CONNECTING状态为第二个状态,因此可以确定跳转到该第二状态CONNECTING状态的路径包括:1.1-2、1.2-2、2.1-2、2.3-2、2.4-2以及2.5-2,即分别通过1.1、1.2、2.1、2.3、2.4及2.5的输入跳转条件,跳转到该CONNECTING状态。 
在第四连接路径上与该CONNECTING状态相连的为AUTHENTICATED状态,通过表2可以看出跳转到该AUTHENTICATED状态的输入跳转条件包括2个,其中输入跳转条件3.2是CONNECTING状态的输出条件,因此当跳转到该CONNECTING状态存在6条路径的情况下,在该CONNECTING状态通过任意一条路径跳转到该CONNECTING状态后,都可以产生3.2的输出条件,因此跳转到该AUTHENTICATED状态的路径包括6+(2-1)=7条。该AUTHENTICATED状态为该第五连接路径的第三个状态,因此,跳转到第三个状态AUTHENTICATED状态的路径包括:1.1-2-3、1.2-2-3、2.1-2-3、2.3-2-3、2.4-2-3、2.5-2-3以及3.1-3。即分别通过1.1、1.2、2.1、2.3、2.4、2.5及3.1的输入跳转条件,跳转到该AUTHENTICATED状态。 
对于该第五连接路径上的第四个状态ACQUIRED状态,从表2中可以看出,该状态存在5个输入跳转条件,其中输入跳转条件4.2是AUTHENTICATED 状态的输出条件,因此,跳转到该AUTHENTICATED状态的所有输入跳转条件,都可以产生4.2的输出条件,因此,跳转到该第四状态的路径包括:7+(5-1)=11条。因此,跳转到该第四状态ACQUIRED状态的路径包括:1.1-2-3-4、1.2-2-3-4、2.1-2-3-4、2.3-2-3-4、2.4-2-3-4、2.5-2-3-4、3.1-3-4、4.1-4、4.3-4、4.4-4以及4.5-4,即通过1.1、1.2、2.1、2.3、2.4、2.5、3.1、4.1、4.3、4.4以及4.5的输入跳转条件,都可以跳转到该ACQUIRED状态。 
在第五连接路径的第一状态为AUTHENTICATING状态,从表2中可以看出,该状态存在2个输入跳转条件,其中输入跳转条件5.2是该路径中与其连接的ACQUIRED状态的输出条件,因此,跳转到该ACQUIRED状态的所有输入跳转条件,都可以产生5.2的输出条件,因此,跳转到该第一状态的路径包括:11+(2-1)=12条。因此,跳转到该第一状态AUTHENTICATING状态的路径包括:1.1-2-3-4-5、1.2-2-3-4-5、2.1-2-3-4-5、2.3-2-3-4-5、2.4-2-3-4-5、2.5-2-3-4-5、3.1-3-4-5、4.1-4-5、4.3-4-5、4.4-4-5、4.5-4-5以及5.1-5,即通过1.1、1.2、2.1、2.3、2.4、2.5、3.1、4.1、4.3、4.4、4.5以及5.1的输入跳转条件,都可以跳转到该AUTHENTICATING状态。 
因此可以根据该第五连接路径中的跳转到该第一状态,即AUTHENTICATING状态的路径,生成第一组测试序列,即将该1.1、1.2、2.1、2.3、2.4、2.5、3.1、4.1、4.3、4.4、4.5以及5.1的输入跳转条件,作为该测试序列的输入条件,判断该第一状态的输出是否满足该有限状态机中该第一状态的输出条件。 
上述过程中对于第一组测试序列进行了分析,对于第二组测试序列,同样依据上述方法进行分析。对于连接在该第五连接路径之上的第二状态:LOGOFF状态以及HELD状态,由于该第二状态中只包含一个状态,该状态可以为该第二状态中的最初状态或最终状态,该状态直接与该连接路径相连,如图5所示,该第二状态中包括三个状态,首先分析该第二状态中最初状态的输入跳转条件,确定跳转到该最初状态的路径,然后确定该第二状态中与该最初 状态连接的状态的跳转路径,方法与第一组测试序列组中进行确定的方法相同,在这里就不一一赘述,同样确定该第二状态中最终状态的输入跳转条件,进而确定跳转到该最终状态的路径,从而根据跳转到该最终状态的路径生成第二组测试序列。 
在进行一致性测试的时候,仍属于黑盒测试,测试的过程不可知,只能对有输出结果的过程进行测试,因此,当该有限测试机中某一连接路径的第一状态没有输出条件时,则无法对该第一状态进行测试。 
由于上述实施对该连接路径中跳转到每个状态的路径进行了分析,根据该连接路径上每条跳转到第一状态的路径,生成基于该有限状态机的网络通信协议测试的测试序列。并且在进行黑盒测试,确定测试序列时,当跳转到第一状态路径对应输出条件时,即第一状态没有输出条件,则该跳转路径不满足测试序列的生成条件,不能根据该跳转路径生成测试序列。 
在具体根据该生成的测试序列进行一致性测试时,可以将对应跳转到第一状态的所有路径的输入跳转条件,作为无线通信系统的输入条件,判断该无线通信系统的输出,是否满足该连接路径中第一状态的输出条件。而对于该连接路径之外的第二状态,对其进行一致性测试时,根据跳转到该第二状态的最终状态的路径对应的输入跳转条件,作为无线通信系统的输入条件,判断该无线通信系统的输出,是否满足该连接路径中第二状态中最终状态的输出条件。 
在本发明实施例中将网络通信协议中有限状态机之间各状态之间的跳转关系简化,并基于简化后的各状态之间的跳转关系,使一致性测试序列的生成步骤化,根据上述提供的各个步骤,生成测试序列,从而提高了网络通信协议一致性测试的测试效率,并且使各个状态机之间的关系清晰化、直观化,便于后续过程中根据该测试序列进行测试过程的监测,该测试序列的生成方法有较广的应用范围,当有限状态机之间的各状态的连接关系比较复杂时,也可以采用本发明实施例提供的生成测试序列的步骤,简化各状态之间的跳转关系进行测试序列的生成,从而简化该测试序列生成的过程。 
图6为本发明实施例提供的一种基于有限状态机的网络通信协议测试序列生成装置,该装置包括: 
连接路径确定模块61,用于根据有限状态机中的初始状态,及各状态之间的连接关系,确定有限状态机中初始状态与每个第一状态之间对应的每条连接路径,其中每条连接路径中包括至少两个状态; 
选择模块64,用于根据所述每条连接路径中初始状态及第一状态之间包括的状态的数量,选择包括状态数量最多的连接路径; 
连接模块62,用于确定位于所述选择的连接路径之外的每个第二状态,根据该每个第二状态与该选择的连接路径中每个状态的连接关系,将该每个第二状态连接到所述选择的连接路径上; 
生成模块63,用于根据所述选择的连接路径上的每个状态的输入跳转条件,及所述连接路径中每个状态之间的连接关系,生成对应所述选择的连接路径的每个测试序列。 
所述连接路径确定模块61包括: 
第一状态确定单元611,用于根据各状态之间的连接关系,及各状态的输入跳转条件和输出条件,确定每个状态是否为连接路径上的第一状态; 
路径确定单元612,用于根据确定的第一状态,确定初始状态到该第一状态连接路径。 
所述第一状态确定单元611包括: 
第一确定子单元6111,用于当判断状态的输出条件为其自身的输入跳转条件时,则判断该状态为对应该输出条件的连接路径上的第一状态。 
所述第一状态确定单元611包括: 
第二确定子单元6112,用于当状态的输出条件为与其连接的另一状态的输入跳转条件,并且该另一状态在该连接路径中进行过是否为第一状态的判断时,则确定该状态为连接路径上的第一状态。 
所述第一状态确定单元611包括: 
第三确定子单元6113,用于当状态不存在输出条件时,确定该状态为连接路径上的第一状态。 
所述生成模块63包括: 
第一生成单元631,用于根据该选择的连接路径上初始状态与第一状态之间的状态的输入跳转条件,确定第一组测试序列; 
第二生成单元632,用于根据连接在该选择的连接路径上的每个第二状态的输入跳转条件,确定第二组测试序列。 
所述第一生成单元631包括: 
第一判断子单元6311,用于在所述选择的连接路径的初始状态和第一状态之间的任意状态中,判断每个状态的每个输入跳转条件,是否为与其连接的状态输出条件,其中该与其连接的状态为所述选择的连接路径中与该状态连接的,且与初始状态临近的状态; 
第一路径确定子单元6312,用于根据判断的结果,确定跳转到每个状态的路径; 
第一序列生成子单元6313,用于根据跳转到第一状态的每条路径,生成对应的第一组测试序列。 
所述第二生成单元632包括: 
第二判断子单元6321,用于根据该选择的连接到该连接路径上的每个第二状态,判断该每个第二状态中的状态的输入跳转条件,是否为与其连接的状态的输出条件,其中该与其连接的状态包括该第二状态中与该状态连接的,且与初始状态临近的状态; 
第二路径确定子单元6322,用于根据判断的结果,确定跳转到每个状态的路径; 
第二序列生成子单元6323,用于根据跳转到每个第二状态中的最终状态的每条路径,生成对应的第二组测试序列。 
本发明实施例提供了一种基于有限状态机的网络通信协议测试序列生成 方法及装置,该方法中确定该有限状态机中初始状态与每个第一状态之间的连接路径,选择包含状态最多的连接路径,并将该选择的连接路径之外的第二状态连接到该选择的连接路径上,从而实现了对有限状态机中各状态的跳转关系的简化,根据该选择的连接路径上每个状态的输入跳转条件,生成对应该选择的连接路径的每个测试序列,本发明实施例将网络通信协议的一致性测试序列的生成步骤化,根据上述提供的各个步骤,生成测试序列,从而提高了网络通信协议一致性测试的测试效率。 
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。 

Claims (4)

1.一种基于有限状态机的网络通信协议测试序列生成方法,其特征在于,包括:
根据有限状态机中各状态之间的连接关系,及各状态的输入跳转条件和输出条件,确定每个状态是否为连接路径上的第一状态,其中,当判断状态的输出条件为其自身的输入跳转条件时,则判断该状态为对应该输出条件的连接路径上的第一状态,或,当状态的输出条件为与其连接的另一状态的输入跳转条件,并且该另一状态在对应该输出条件的连接路径中进行过是否为第一状态的判断时,则确定该状态为连接路径上的第一状态,或,当状态不存在输出条件时,则判断该状态为连接路径上的第一状态;
根据有限状态机中的初始状态,及各状态之间的连接关系,确定有限状态机中初始状态与每个第一状态之间对应的每条连接路径,其中每条连接路径中包括至少两个状态;
根据所述每条连接路径中初始状态及第一状态之间包括的状态的数量,选择包括状态数量最多的连接路径,有限状态机中有部分状态并不包含在所述选择的连接路径内,将该部分状态作为第二状态;
确定位于所述选择的连接路径之外的每个第二状态,根据该每个第二状态与所述选择的连接路径中每个状态的连接关系,将该每个第二状态连接到所述选择的连接路径上;
根据所述选择的连接路径上初始状态与第一状态之间的状态的输入跳转条件,确定第一组测试序列,并根据连接在所述选择的连接路径上的每个第二状态的输入跳转条件,确定第二组测试序列。
2.如权利要求1所述的方法,其特征在于,所述确定第一组测试序列包括:
在所述选择的连接路径的初始状态和第一状态之间的任意状态中,判断每个状态的每个输入跳转条件,是否为与其连接的状态输出条件,其中该与其连 接的状态为所述选择的连接路径中与该状态连接,且与初始状态位置临近的状态;
当判断结果为是时,根据跳转到该与其连接的状态的每条路径,确定该状态中对应该输入跳转条件的跳转到该状态的路径,
否则,根据该状态的该输入跳转条件,确定跳转到该状态的路径;
根据跳转到第一状态的每条路径,生成对应的第一组测试序列。
3.如权利要求1所述的方法,其特征在于,所述确定第二组测试序列包括:
根据该连接到该选择的连接路径上的每个第二状态,判断该每个第二状态中的状态的输入跳转条件,是否为与其连接的状态的输出条件,其中该与其连接的状态包括该第二状态中与该状态连接的,且与初始状态位置临近的状态;
当判断结果为是时,根据跳转到与其连接的状态每条路径,确定该状态中对应该输入跳转条件的跳转到该状态的路径,
否则,根据该状态的该输入跳转条件,确定跳转到该状态的路径;
根据跳转到每个第二状态中的最终状态的每条路径,生成对应的第二组测试序列。
4.一种基于有限状态机的网络通信协议测试序列生成装置,其特征在于,该装置包括:
连接路径确定模块,用于根据有限状态机中的初始状态,及各状态之间的连接关系,确定有限状态机中初始状态与每个第一状态之间对应的每条连接路径,其中每条连接路径中包括至少两个状态,其中,所述连接路径确定模块包括用于根据各状态之间的连接关系,及各状态的输入跳转条件和输出条件,确定每个状态是否为连接路径上的第一状态的第一状态确定单元,以及用于根据确定的第一状态,确定初始状态到该第一状态的连接路径的路径确定单元;所述第一状态确定单元包括:第一确定子单元、第二确定子单元和第三确定子单元,所述第一确定子单元用于当判断状态的输出条件为其自身的输入跳转条件 时,则判断该状态为对应该输出条件的连接路径上的第一状态,所述第二确定子单元用于当状态的输出条件为与其连接的另一状态的输入跳转条件,并且该另一状态在对应该输出条件的连接路径中进行过是否为第一状态的判断时,则确定该状态为连接路径上的第一状态,所述第三确定子单元用于当状态不存在输出条件时,确定该状态为连接路径上的第一状态;
选择模块,用于根据所述每条连接路径中初始状态及第一状态之间包括的状态的数量,选择包括状态数量最多的连接路径;
连接模块,用于确定位于所述选择的连接路径之外的每个第二状态,根据该每个第二状态与该选择的连接路径中每个状态的连接关系,将该每个第二状态连接到所述选择的连接路径上,其中,第二状态是有限状态机中不包含在所述选择的连接路径内的部分状态;
生成模块,包括用于根据所述选择的连接路径上初始状态与第一状态之间的状态的输入跳转条件,确定第一组测试序列的第一生成单元,以及用于根据连接在所述选择的连接路径上的每个第二状态的输入跳转条件,确定第二组测试序列的第二生成单元。 
CN2009101712638A 2009-08-27 2009-08-27 基于有限状态机的网络通信协议测试序列生成方法及装置 Expired - Fee Related CN101674205B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009101712638A CN101674205B (zh) 2009-08-27 2009-08-27 基于有限状态机的网络通信协议测试序列生成方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009101712638A CN101674205B (zh) 2009-08-27 2009-08-27 基于有限状态机的网络通信协议测试序列生成方法及装置

Publications (2)

Publication Number Publication Date
CN101674205A CN101674205A (zh) 2010-03-17
CN101674205B true CN101674205B (zh) 2011-11-09

Family

ID=42021209

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009101712638A Expired - Fee Related CN101674205B (zh) 2009-08-27 2009-08-27 基于有限状态机的网络通信协议测试序列生成方法及装置

Country Status (1)

Country Link
CN (1) CN101674205B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102279795B (zh) * 2011-08-24 2013-10-09 北京神州绿盟信息安全科技股份有限公司 一种测试方法及装置
CN102685128B (zh) * 2012-05-09 2015-09-30 东南大学 一种基于状态机的协议构造方法
CN103391224B (zh) * 2013-07-22 2016-07-06 清华大学 基于并行扩展有限状态机的协议层次化测试生成方法
CN104243243B (zh) * 2014-10-14 2017-08-04 清华大学 一种用于生成协议测试序列的方法
CN106706329A (zh) * 2015-07-31 2017-05-24 大陆汽车电子(长春)有限公司 测试汽车天窗控制器的方法
CN110858810B (zh) * 2018-08-24 2021-07-30 中国移动通信集团四川有限公司 网络链路状态监测方法、设备、系统及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6282681B1 (en) * 1995-03-06 2001-08-28 Motorola, Inc. Method and apparatus for testing finite state machine (FSM) conformance utilizing unique input/output sequence (UIO) sets
CN1564489A (zh) * 2004-04-19 2005-01-12 中兴通讯股份有限公司 一种通信系统有限状态机的测试方法
CN1866883A (zh) * 2005-10-19 2006-11-22 华为技术有限公司 对互联网协议第6版协议族进行一致性测试的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6282681B1 (en) * 1995-03-06 2001-08-28 Motorola, Inc. Method and apparatus for testing finite state machine (FSM) conformance utilizing unique input/output sequence (UIO) sets
CN1564489A (zh) * 2004-04-19 2005-01-12 中兴通讯股份有限公司 一种通信系统有限状态机的测试方法
CN1866883A (zh) * 2005-10-19 2006-11-22 华为技术有限公司 对互联网协议第6版协议族进行一致性测试的方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
赖祥等.一种新的通信协议最短UIO序列生成算法.《军事通信技术》.2009,第30卷(第2期),62-66. *
魏仰苏等.通信协议一致性测试序列自动生成算法研究.《计算机工程与设计》.2007,第28卷(第10期),2312-2315. *

Also Published As

Publication number Publication date
CN101674205A (zh) 2010-03-17

Similar Documents

Publication Publication Date Title
CN101674205B (zh) 基于有限状态机的网络通信协议测试序列生成方法及装置
CN104468531B (zh) 敏感数据的授权方法、装置和系统
CN109669717A (zh) 基于部署平台的数据处理方法、装置、设备及存储介质
CN103490909B (zh) 计费处理方法及装置
CN104133765B (zh) 网络活动的测试用例发送方法及测试用例服务器
CN106469113A (zh) 应用程序测试方法及系统
CN109783357A (zh) 测试应用程序的方法及装置、计算机设备、存储介质
CN106604362A (zh) 一种无线保真Wi‑Fi扫描方法及移动终端
CN107318104A (zh) 账号注册方法、装置、计算机设备和介质
CN103888597B (zh) 一种通信方法、装置及电子设备
CN104702598B (zh) 一种智能电网分布式网络协议安全性检测方法
CN107424259B (zh) 共享物品的订单处理方法、智能锁、共享物品和系统
Grabowski et al. The standardization of message sequence charts
CN109213782A (zh) 搜索界面的配置、显示方法、装置及通信设备
CN109145608A (zh) 一种基于区块链的数据处理方法及装置
CN105812343A (zh) 一种可穿戴业务认证方法、云平台、可穿戴设备及终端
CN106034132A (zh) 保护方法与计算机系统
CN103888314A (zh) 基于uio序列法验证有限状态机所处状态的方法
CN106658670A (zh) 一种无线保真Wi‑Fi扫描方法及移动终端
CN105450464B (zh) 用于服务接口的测试方法和装置
CN107643858A (zh) 一种信息处理方法、终端和服务器
CN103326892B (zh) Web接口的操作方法及装置
CN104378329B (zh) 安全验证的方法、装置及系统
CN106303904A (zh) 用于连接可穿戴设备与移动终端的方法与设备
CN109117238A (zh) 一种基于微信小程序的图例展示系统及方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: PU NING

Free format text: FORMER OWNER: FUJIAN XINGWANGRUIJIE NETWORK CO., LTD.

Effective date: 20140604

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 350015 FUZHOU, FUJIAN PROVINCE TO: 518052 SHENZHEN, GUANGDONG PROVINCE

TR01 Transfer of patent right

Effective date of registration: 20140604

Address after: 518052 Guangdong city of Shenzhen province Nanshan District Nanshan digital and cultural industry base east tower room 407

Patentee after: Pu Ning

Address before: 350015 M9511 Industrial Park, fast road, Mawei District, Fujian, Fuzhou

Patentee before: Fujian Xingwangruijie Network Co., Ltd.

ASS Succession or assignment of patent right

Owner name: STATE GRID ZHEJIANG ELECTRIC POWER COMPANY SHAOXIN

Effective date: 20141016

Owner name: STATE GRID CORPORATION OF CHINA

Free format text: FORMER OWNER: PU NING

Effective date: 20141016

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 518052 SHENZHEN, GUANGDONG PROVINCE TO: 100031 XICHENG, BEIJING

TR01 Transfer of patent right

Effective date of registration: 20141016

Address after: 100031 Xicheng District West Chang'an Avenue, No. 86, Beijing

Patentee after: State Grid Corporation of China

Patentee after: State Grid Zhejiang Electric Power Company

Patentee after: Shaoxing Power Supply Company of State Grid Zhejiang Electric Power Company

Patentee after: State Grid Zhejiang Zhuji Power Supply Co., Ltd.

Patentee after: Zhuji Dongbai Electric Power Equipment Manufacturing Co., Ltd.

Address before: 518052 Guangdong city of Shenzhen province Nanshan District Nanshan digital and cultural industry base east tower room 407

Patentee before: Pu Ning

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20111109

Termination date: 20170827

CF01 Termination of patent right due to non-payment of annual fee