一种分布式信息系统接口自动化测试方法

文档序号:6357633阅读:256来源:国知局
专利名称:一种分布式信息系统接口自动化测试方法
技术领域
本发明涉及软件自动化测试领域,应用于分布式信息系统软件接口自动化测试中。
背景技术
分布式信息系统一般由多个分系统组成,各个分系统的计算机设备以网络为纽带组成了一个局域以太网。各分系统基于以太网硬件拓扑结构组成一个分布式信息系统,相互协同处理实现所有任务功能。分系统中运行着多个软件配置项,各个软件配置项之间的消息通信是靠消息报文的收发来实现,各分系统之间接口的正确性对分布式信息系统的正常工作起着至关重要的作用。自动化测试是目前测试领域的发展方向,自动化测试能有效地降低测试成本、提高测试效率和测试覆盖面。现有的自动化测试工具,例如QTP、Ranorex、Rational Robot和 LoadRunner,侧重于对界面元素也就是UI (用户界面)控件的操作来实现自动化测试,通过录制脚本、生成测试用例脚本和执行脚本来实现自动化测试。而分布式信息系统接口测试侧重于各个分系统之间的消息的验证,因此现有的自动化测试工具并不能直接应用于分布式信息系统软件的接口测试中。接口测试是分布式信息系统软件测试中非常重要的部分,目的是为验证分布式信息系统内部软件配置项之间消息的正确性,其中包括消息时序和消息内容的正确性等。分布式信息系统软件具有分布性和异构性,分布性体现在所属各分系统的软件配置项部署在不同的主机上,依靠网络来实现消息的传递和通信,异构性表现在不同的主机上运行着不同的操作系统平台,如Windows或Unix等。因此,一个接口测试用例中消息的传递通常会涉及到多台主机和不同的平台。现阶段,测试人员针对接口测试通常的步骤是1、分析测试用例所涉及到的软件配置项,选择相应的主机进行消息获取;2、根据测试用例的内容在相应的主机上开启截包软件进行消息报文截取;3、使用分析工具验证所截获的消息报文中消息名称和消息字段内容是否正确。但是该接口测试方法也存在了不可避免的缺点首先由于分布式信息系统软件的分布性和异构性,测试用例所涉及的消息通信过程复杂,在接口测试过程中,需要多个测试人员分别在相应的主机上进行消息获取,使得接口测试周期长,难以适应分布式信息系统的接口测试特点。第二,分布式信息系统通信协议复杂,消息数量庞大,测试人员通过解析消息报文来获取消息的字段值,这种方法在消息验证上花费时间长,准确性低,给测试人员增加了工作量。第三,针对分布式信息系统接口测试,测试人员在多台被测主机上截取消息报文, 消息报文的收发时间取决于被测主机当前的时间,而对于不同主机,其系统时间很难一致, 因此,很难根据现有的测试方法验证消息的时序性。综上所述,针对分布式信息系统的特点,现有的自动化测试工具和接口测试方法都不适用于分布式信息系统软件的接口测试,需要提出一种接口自动化测试的方法,用以解决分布式信息系统软件接口测试过程中所面临的问题。

发明内容
本发明针对目前缺少对分布式信息系统软件接口进行自动测试的情况,提出一种分布式信息系统接口自动化测试方法,用以提高分布式信息系统软件接口测试效率。一种分布式信息系统接口自动化测试方法,具体包括以下步骤步骤一、自动化测试控制端解析接口测试用例文件,获取接口测试用例执行的前提信息相关被测软件配置项以及被测软件配置项所在的被测主机,并验证该接口测试用例执行的前提信息是否满足执行条件,若满足,则执行下一步骤,否则结束该接口测试用例的执行;步骤二、自动化测试控制端向被测主机中的代理程序发送测试消息;步骤三、被测主机中的代理程序接收到自动化测试控制端发送的测试消息后,解析该测试消息,开始监听被测主机发送的消息报文;步骤四、自动化测试控制端解析接口测试用例文件,获取该接口测试用例中消息的触发方式,判断该接口测试用例中第一条消息的产生方式是否为事件触发,若是,则自动化测试控制端向被测主机的代理程序发送测试脚本,代理程序调用其所在主机中的自动化测试工具执行测试脚本,然后执行步骤五,若不是,直接执行步骤五;步骤五、代理程序将所监听到的消息报文实时转发给自动化测试控制端;步骤六、自动化测试控制端解析接收到的消息报文,输出验证结果;步骤七、根据验证结果生成测试报告,并输出给用户。步骤一中所述的自动化测试控制端部署在与被测系统独立的主机中。所述的接口测试用例文件为已定义好的XML文件,文件内容包括接口用例执行所需的相关信息。所述执行条件包括被测软件配置项所在主机的工作正常和相关被测软件配置项已开启。步骤二中所述的代理程序部署在被测主机中,在测试过程中代理程序与自动化测试控制端进行通信,在接口测试过程中它接收控制端发送的测试消息,并且在测试执行过程中将消息报文发送给自动化测试控制端。步骤四中所述的测试脚本是指现有的自动化测试软件能够解释并执行的脚本,代理程序通过调用现有的自动化测试软件来执行该测试脚本,现有的自动化测试工具根据测试脚本内容进行相应的操作。本发明的接口自动化测试方法的优点和积极效果在于(1)本发明接口测试方法实现了分布式信息系统接口测试用例的自动化执行、测试数据信息的自动采集、测试结果的自动验证和测试报告的自动生成,提高了测试人员的工作效率。(2)本发明实现了分布式信息系统软件接口自动化测试,通过代理程序转发软件配置项间通信的消息报文给控制端进行统一处理,不需要多个测试人员在不同的主机上进行测试操作,从而简化了测试人员的工作。(3)代理程序将被测主机发送的消息报文实时转发给测试控制端,在测试控制端实现了被测主机之间消息报文的时序性验证。
(4)在自动化测试的全过程中使用XML文件描述测试用例、测试消息和测试报告, 使得接口测试用例文件具有跨平台性,同时使得接口测试用例文件和测试结果报告更具有可编辑性和可读性。(5)根据验证结果自动生成测试用例执行测试报告,减轻了测试人员的工作量。


图1为本发明分布式信息系统软件接口自动化测试方法流程图;图2为本发明接口测试用例文件示意图;图3为本发明测试消息文件示意图;图4为本发明消息内容和消息时序的验证流程图;图5为本发明测试报告文件示意图。
具体实施例方式下面将结合附图对本发明作进一步的详细说明。本发明针对分布式信息系统软件接口自动化测试方法,如图1所示,具体包括以下步骤步骤一、自动化测试控制端解析接口测试用例文件,获取接口测试用例信息,验证该接口测试用例执行的前提条件是否满足执行条件,若满足,则执行下一步骤,否则,该接口测试用例执行结束。所述的自动化测试控制端为部署在与被测系统独立的主机中的自动化测试控制端软件,用来解析接口测试用例文件,验证接口测试用例是否能够执行,在接口测试用例执行过程中向被测主机发送测试脚本,以及接收被测主机的消息报文,解析接收到的消息报文生成测试报告。所述的接口测试用例信息包括接口测试用例执行的相关被测软件配置项以及被测软件配置项所在的主机。所述执行条件主要包括被测软件配置项所在主机工作正常以及相关被测软件配置项已开启等。所述的接口测试用例文件为已定义好的XML文件,文件内容包括接口用例执行所需的相关信息。下面举例说明接口测试用例,该用例测试系统状态由工作转换为待机过程中的消息交互的正确性。下述CSCI_A, CSCI_B,CSCI_C 为软件配置项名称,Station_A, Station_B> Station_C为主机名称,软件配置项CSCI_A、CSCI_B和CSCI_C分别部署在主机Station_A、 Station_B> Station_C中。测试约束条件为软件配置项CSCI_A,CSCI_B,CSCI_C开启,主机Mati0n_A、Mati0n_B、Mati0n_C工作正常;该测试用例中消息的传递行需要用户的激励操作,激励操作为左键单击CSCI_A的工作状态转换界面中“待机”按钮。具体测试步骤为第1步软件配置项CSCI_A向软件配置项CSCI_B发送工作状态转换请求STATUS_ CHANGE_REQ消息,该消息为事件触发,产生消息的事件为用户操作为鼠标左键单击软件配置项CSCI_A的工作状态转换界面中“待机”按钮。消息STATUS_CHANGE_REQ中字段SUBSYS 值为1000,字段W0RK_STUTAS值为1 ;字段SUBSYS表示发送消息的软件配置项所属的分系统,字段W0RK_STUTAS表示分系统的工作状态。第2步软件配置项CSCI_B在收到STATUS_CHANGE_REQ消息后向软件配置项
7CSCI_A发送STATUS_CHANGE_ACK消息,该消息为消息触发,消息STATUS_CHANGE_ACK中字段 SUBSYS 值为 2000,字段 W0RK_STUTAS 值为 0 ;第3步软件配置项CSCI_A在收到消息STATUS_CHANGE_ACK后向软件配置项 CSCI_C发送DBA_DATA_REQ消息,该消息为消息触发,消息DBA_DATA_REQ中字段SUBSYS值为 1000,字段 W0RK_STUTAS 值为 0。上述系统工作状态转换接口测试用例可以被XML文件所描述。如图2所示,该文件中各元素的含义如下l)<testcase>元素为根元素,表示一个接口测试用例,作为该接口测试用例文件的第一层目录,<testcase> 包含 3 个元素<name>、<constraint> 禾口 <teststep>,这 3 个元素作为该接口测试用例文件的第二层目录。元素<name>包含测试用例名称,本发明实施例中的接口测试用例名称为JK_work_status_changing ;元素〈constraint〉中包含测试用例执行的前提信息,包含两个元素<CSCI>和〈machine〉,其中元素<CSCI>中包含所开启的被测软件配置项的名称,元素〈machine〉中包含所开启被测主机的名称;元素〈testst印〉 为该测试用例的主体部分,包含测试用例的详细步骤信息,本发明实施例中包含三个详细步骤,每个步骤通过一个元素〈detailst印〉来描述。2)<detailstep>元素为该接口测试用例文件的第三层目录,包含了测试用例中 $的IlJi式内^#。7li:^<det£iilstep> 4^^^5^71: :<trigger>><message>><sender>>
〈receiver〉和〈para〉,这5个元素为该接口测试用例文件的第4层目录。3)<trigger>元素<trigger>元素中属性att的值表示消息的触发方式,包括三种类型周期触发,事件触发和消息触发,对应属性att可填的值分别为fre、action和 message.当att属性值为fre时,表示该消息为周期触发,〈trigger〉元素值为消息发送周期,通常以毫秒为单位,如5000表示5000毫秒;当att属性值为action时,表示该消息为事件触发,〈trigger〉元素值为触发该消息的事件,通常为可以被自动化测试工具执行的测试脚本,如图2所示,在接口用例文件中第10行中〈trigger〉元素属性att值为action,表示CSCI_A发送消息STATUS_CHANGE_REQ需要事件触发,该事件脚本为“mouse SingleClick left_button' standby' ”,表示鼠标左键单击界面上的'standby'按钮,用户应根据所选⑶I (Graphical User hterface,图形用户界面)自动化测试工具来编写相应的脚本; 当att属性值为message时,表示该消息产生为消息触发,如图2所示,在该接口用例文件中第观行中的〈trigger〉元素属性att值为message,表示软件配置项CSCI_B在收到消息 STATUS_CHANGE_REQ 后,会发送消息 STATUS_CHANGE_ACK。4)〈message〉元素包含了发送的消息的名称。5)<sender>元素包含了消息的发送方软件配置项名称。6)〈receiver〉元素包含了消息的接收方软件配置项名称。7) <para>元素包含了被验证消息中需要验证的详细字段信息。<para>元素中包含4个子元素<parname>、〈datatype〉、<startpos>和<val>。所述的被验证消息就是软件配置项之间发送的消息,因为需要对其进行验证,所以称为被验证消息。8) <parname>元素包含了该消息中需要验证的字段的名称。9)〈datatype〉元素表示该消息所需要验证字段的数据类型,如int (整型), float (浮点型),char (字符型)等通用的数据类型。
10)<startpos>元素所需要验证的字段在实际报文中开始字节位置。若需要验证的字段数据类型为int,则根据该字段所在报文开始字节的位置可以获取该字段的字段值。ll)<val>元素表示所需要验证字段期望的字段值。步骤二、自动化测试控制端向被测主机中的代理程序发送测试消息。所述的代理程序部署在被测主机中,在接口测试过程中代理程序与自动化测试控制端进行通信。在接口测试过程中代理程序接收自动化测试控制端发送的测试消息,并且在测试执行过程中将所监听的消息报文实时转发给自动化测试控制端。根据上述接口测试用例所描述内容,上述自动化测试控制端向代理程序发送测试消息可以被下述XML文件所描述。如图3所示,该文件中各元素的含义如下1)〈message〉元素为根元素,表示测试消息,作为该接口测试用例文件的第一层目录,<message> 包含 5 个兀素<des>、<dur>、<protocol>、<srcport> 禾口 <desport>。2) <des>元素表示该消息发送的目的地址,为主机名称。3) <dur>元素表示代理程序开启的时间,以毫秒为单位,本发明实施例为10000毫秒。4)〈protocol〉元素表示传输层协议的类型,传输层协议的类型为TCP或者UDP, 如图3中所示,本发明实施例中为UDP协议,表示该代理程序只转发UDP数据包。5)<srcport>元素表示代理程序所监听消息报文的源端口号。6)<deSp0rt>元素表示代理程序所监听消息报文的目的端口号。代理程序解析测试消息,根据测试消息中描述的转发规则将被测主机中发送的消息报文实时转发给自动化测试控制端。步骤三、被测主机中代理程序接收到自动化测试控制端发送的测试消息后,解析该测试消息,开始监听被测主机发送的消息报文。如图3所示,所监听的消息报文类型为 UDP,监听的消息报文的源端口号和目的端口号分别为10000和11000。步骤四、自动化测试控制端解析接口测试用例文件,获取该接口测试用例中消息的触发方式,然后判断该接口测试用例中的第一条消息的产生方式是否为时间触发。若接口测试用例中第一条消息的产生方式为事件触发,则自动化测试控制端将接口测试用例文件中的测试脚本发送给被测主机的代理程序,代理程序调用其所在主机中的自动化测试工具执行该测试脚本,然后执行下一步骤;否则,直接执行下一步骤。所述的测试脚本是指现有的自动化测试软件可以解释并执行的脚本,代理程序通过调用现有的自动化测试软件来执行该测试脚本,自动化测试工具根据测试脚本内容对被测软件进行相应的操作。消息的产生方式为以下三种周期触发、事件触发和消息触发。周期触发是指每隔一定的时间软件配置项之间自动发送消息报文,消息报文的发送周期通常以毫秒为单位, 如系统心跳消息,各分系统周期性的自动发送心跳报文,报告自身的工作状态;事件触发是指消息的产生需要用户执行相应的激励操作,通常包括鼠标和键盘的操作,如在系统工作状态转换用例中用户需要点击相应的界面中相关按钮来执行接口消息测试;消息触发是指消息的产生需要其它消息的激励,如在上述例子中,当CSCI_B在收到STATUS_CHANGE_REQ 消息后向CSCI_A发送消息STATUS_CHANGE_ACK消息。若该接口测试中消息的发送需要事件触发,则代理程序调用已有的自动化测试工具执行相应的测试脚本。所述的测试脚本记载在接口测试用例文件中元素〈detailstep〉 中的元素〈trigger〉中,该测试脚本为现有的自动化测试工具例如QTP、Ranorex、Rational Robot和LoadRimner所能解释并执行的脚本,并且该脚本语言依赖于不同的自动化测试工具,用户应根据相应的自动化测试工具编写测试脚本。测试脚本中的内容表示相应的触发操作,如图2中,当〈trigger〉元素中att属性值为“action”时,表示该消息的产生为事件角虫发,<trigger> 元素的值为 mouse SingleClick left_button' standby',表示鼠标左键单击〃 standby"按钮。步骤五、运行在各个被测主机中的代理程序将各自所监听的消息报文实时地转发给自动化测试控制端,自动化测试控制端接收消息报文。如图1所示,代理程序根据测试消息中元素<dur>所记载的时间进行监听,根据该代理程序开启的时间来判断代理程序是否结束监听,若结束转步骤六执行,若没有结束,则继续监听直到代理程序开启的时间结束。步骤六、自动化测试控指端接收消息报文,并在所有代理程序结束监听后,开始解析所接收到的消息报文,输出验证结果。具体解析过程如图4所示第1步从接口测试用例文件中依次读取一条被验证消息及其字段的信息,初始状态下默认该消息未找到,字段验证结果为不正确。所述的被验证消息指被测软件配置项之间传递的消息,本发明实施例中是指在接口测试用例文件的〈detailst印〉中记载的三个消息STATUS_CHANGE_REQ 消息、STATUS_CHANGE_ACK 消息和 DBA_DATA_REQ 消息。所述的该验证消息的字段的信息在接口测试用例文件中的元素<para>中所描述。第2步从消息报文文件的开始读取一条消息报文。针对每一个被验证消息,从消息报文文件中的开始就行查找。所述的消息报文文件是指自动化测试控制端按照接收到的消息报文的时间先后顺序,将接收到的所有代理程序发送来的消息报文组成的文件。第3步判断当前是否读到消息报文文件的结尾,若是,转第6步执行,若不是,继续执行下一步。第4步判断所读取的当前消息报文中的消息码的实际值是否等于当前被验证消息的消息码,若等于,执行第5步,否则,读取消息报文文件中的下一条消息报文,转第3步执行。若当前消息报文中的消息码的实际值等于当前被验证消息的消息码,则表明找到了与被验证消息对应的消息报文。所述的消息码是所有消息中都固有的字段,消息码的值可以唯一标识一个消息。第5步记录下当前消息报文在消息报文文件中的位置,然后验证当前被验证消息的字段信息。若找到对应的消息报文,则根据被验证字段的起始位和数据类型从该消息报文中读取对应字段的实际值,与期望值比较,若所有被验证字段的实际值与期望值相同, 则该消息正确,将字段验证结果更改为正确,否则,对字段验证结果不做修改。所述的被验证字段的起始位记载在接口测试用例文件被验证消息中的〈startpos〉元素中,被验证字段的数据类型记载在接口测试用例文件被验证消息中的〈datatype〉元素中,被验证字段的期望值记载在接口测试用例文件被验证消息中的元素<val>中。第6步判断接口测试用例文件中的被验证消息是否均已验证完毕,若是则执行下一步,若不是转第1步执行,进行下一条被验证消息的验证工作。第7步判断是否找到了所有被验证消息对应的消息报文,若是,根据消息报文在消息报文文件中的位置排序得到被验证消息的发出先后顺序,从而完成被验证消息的时序性验证,若不是,则不验证被验证消息的时序性。本次消息报文解析结束。步骤七、根据步骤六得到的验证结果生成测试报告,并输出测试报告给用户。用户通过测试报告来判断分布式信息系统的各分系统之间的接口是否正确,完善或维护分布式信息系统。上述系统工作状态转换接口测试用例的测试报告可以被XML文件所描述。如图5 所示,该文件中各元素的含义如下<testreport>元素为根元素,表示测试报告,作为该接口测试用例测试报告的第一层目录,<testreport> 包含 5 个元素<name>、<operator>、<start>、<end> 禾口 〈result〉,这5个元素作为该接口测试用例测试报告的第二层目录。〈name〉元素包含接口测试用例名称,本发明实施例中该接口测试用例名称为JK_WOrk_StatuS_Changing ; 〈operator〉元素包含该接口测试用例的执行者;〈start〉元素中包含该接口测试用例开始时间,时间格式为年/月/日/小时/分/秒;<end>元素中包含该测试用例结束时间,时间格式为年/月/日/小时/分/秒;〈result〉元素中包含该接口测试用例执行结果的详细信息,具有三个属性值属性att值表示该接口测试用例执行是否通过,属性pass值表示该接口测试用例通过,属性fail值表示该接口测试用例执行未通过。〈result〉元素里接口测试用例中具体每一个步骤的测试结果,用一个〈detailresult〉元素来描述,接口测试用例的时序验证结果在元素〈sequence〉中描述。1)〈detailresult〉元素为该接口测试用例测试报告的第三层目录,包含了接口测试用例中每一步的测试结果。〈detailresult〉元素包含三个属性属性st印值表示对应接口测试用例文件中的测试步骤,属性name值表示被验证消息名称,属性att表示自动化测试控制端是否收到该消息,可选值为exist或者为notexist,当属性att值为exist时, 表示自动化测试控制端收到了该消息报文,当属性值为notexist时,表示自动化测试控制端没有收到该消息报文。〈detailresult〉包含两个元素<subsys>和Workstatus〉,这两个元素作为该接口测试用例测试报告的第四层目录。元素〈subsys〉中描述了被验证消息中的subsys字段是否正确,subsys字段代表子系统,元素Workstatus〉中描述了被验证消息的workstatus字段是否正确,workstatus字段代表工作状态,subsys禾口 workstatus为被验证消息中两个字段的名称,当被验证字段的值正确时,元素中的内容为correct,反之, 不正确时元素中的内容为incorrect。2)〈sequence〉元素表示该接口测试用例中消息时序信息,correct表示该接口测试用例消息时序正确,反之,为incorrect,表示不正确。具体该接口测试用例中的消息时序是否正确是根据步骤六中的得到的消息报文在消息报文文件中的位置排序来判定的,如果被验证消息对应的消息报文在消息报文文件中的位置排序与接口测试用例中的被验证消息的顺序是一样的,则时序正确,如果被验证消息对应的消息报文在消息报文文件中的位置排序与接口测试用例中的被验证消息的顺序不一样,或者被验证消息对应的消息报文在消息报文文件中未全部找到,则时序不正确。
权利要求
1.一种分布式信息系统接口自动化测试方法,其特征在于,该测试方法具体步骤如下步骤一、自动化测试控制端解析接口测试用例文件,获取接口测试用例执行的前提信息包括被测软件配置项以及被测软件配置项所在的被测主机,并验证该接口测试用例执行的前提信息是否满足执行条件被测软件配置项所在的被测主机工作正常以及被测软件配置项已开启,若满足,则执行下一步骤,否则结束该接口测试用例的执行; 步骤二、自动化测试控制端向被测主机中的代理程序发送测试消息; 步骤三、被测主机中的代理程序接收到自动化测试控制端发送的测试消息后,解析该测试消息,开始监听被测主机发送的消息报文;步骤四、自动化测试控制端解析接口测试用例文件,获取该接口测试用例中消息的触发方式,判断该接口测试用例中第一条消息的产生方式是否为事件触发,若是,则自动化测试控制端向被测主机的代理程序发送测试脚本,代理程序调用其所在主机中的自动化测试工具执行测试脚本,然后执行步骤五,若不是,直接执行步骤五;步骤五、代理程序将所监听到的消息报文实时转发给自动化测试控制端; 步骤六、自动化测试控制端解析接收到的消息报文,输出验证结果; 步骤七、根据验证结果生成测试报告,并输出给用户。
2.根据权利要求1所述的一种分布式信息系统接口自动化测试方法,其特征在于,所述的自动化测试控制端部署在与被测系统独立的主机中,用来解析接口测试用例文件,验证接口测试用例是否能够执行,在接口测试用例执行过程中向被测主机发送测试脚本,以及接收被测主机的消息报文,解析接收到的消息报文生成测试报告。
3.根据权利要求1所述的一种分布式信息系统接口自动化测试方法,其特征在于, 步骤一与步骤四中所述的接口测试用例文件,为已定义好的XML文件,XML文件中根元素 <testcase> 表示接口测试用例,其包括 3 个元素<name>、〈constraint〉禾口 <teststep> ;元素〈name〉中描述接口测试用例的名称;元素〈constraint〉包含测试用例执行的前提信息,包含两个元素<CSCI>和 〈machine〉,元素<CSCI>中包含所开启的被测软件配置项的名称,元素〈machine〉中包含所开启的被测主机的名称;元素〈teststep〉中描述接口测试用例的具体步骤,每个步骤通过一个元素 〈detailst印〉来描述,元素〈detailst印〉中包含5个元素 :<trigger>、 <message>、 〈sender〉、〈receiver〉和<para> ;元素〈trigger〉中属性att的值表示消息的触发方式, 包括三种类型周期触发,事件触发和消息触发,当att属性值为周期触发时,〈trigger〉 元素值为消息发送周期,以毫秒为单位,当att属性值为事件触发时,〈trigger〉元素值为触发该消息的事件,为被自动化测试工具执行的测试脚本,当att属性值为消息触发时, 〈trigger〉元素值为收到的消息的名称;元素〈message〉中描述了发送的消息的名称;元素 〈sender〉中描述了消息发送方的软件配置项名称;元素〈receiver〉中描述了消息接收方的软件配置项名称;元素<para>中描述了被验证消息中需要验证的详细字段信息,包含4 个子元素<parname>、<datatype>、<startpos> 禾口 <val>,元素 <parname> 中描述了该消息中需要验证的字段的名称,元素〈datatype〉中描述了该消息中需要验证的字段的数据类型,元素〈startpos〉中描述了该消息中需要验证的字段在实际报文中的开始字节位置,元素<val>中描述了该消息中需要验证的字段的期望字段值。
4.根据权利要求1所述的一种分布式信息系统接口自动化测试方法,其特征在于,所述的代理程序部署在被测主机中,在测试执行过程中代理程序与自动化测试控制端进行通信,代理程序接收自动化测试控制端发送的测试消息,并在测试执行过程中将消息报文发送给自动化测试控制端。
5.根据权利要求1所述的一种分布式信息系统接口自动化测试方法,其特征在于,步骤二与步骤三中所述的测试消息,为XML文件,XML文件中根元素〈message〉表示测试消息, 其包括 5 个元素<des>、<dur>、<protocol>、<srcport> 禾Π <desport> ;元素 <des> 表示该消息发送的目的地址,为主机名称;元素<dur>表示代理程序开启的时间,以毫秒为单位; 元素〈protocol〉表示传输层协议的类型;元素〈srcport〉表示代理程序所监听消息报文的源端口号;元素〈desport〉表示代理程序所监听消息报文的目的端口号。
6.根据权利要求1或5所述的一种分布式信息系统接口自动化测试方法,其特征在于, 步骤五中所述的代理程序根据测试消息中所记载的代理程序开启的时间来控制监听是否结束,若结束转步骤六执行,若没有结束,则继续监听直到代理程序开启的时间结束。
7.根据权利要求1所述的一种分布式信息系统接口自动化测试方法,其特征在于,步骤六中所述的自动化测试控制端解析消息报文的具体步骤为第1步从接口测试用例文件中依次读取一条被验证消息及其字段信息,初始状态下默认该被验证消息未找到,字段验证结果为不正确;第2步从消息报文文件的开始读取一条消息报文;第3步判断当前是否读到消息报文文件的结尾,若是,转第6步执行,若不是,继续执行下一步;第4步判断所读取的当前消息报文中的消息码的实际值是否等于当前被验证消息的消息码,若等于,执行第5步,否则,读取消息报文文件中的下一条消息报文,转第3步执行;第5步记录下当前消息报文在消息报文文件中的位置,然后验证当前被验证消息的字段信息,具体根据被验证字段的起始位和数据类型从消息报文中读取对应字段的实际值,与期望值比较,若所有被验证字段的实际值与期望值相同,则将字段验证结果更改为正确,否则,对字段验证结果不做修改;第6步判断接口测试用例文件中的被验证消息是否都已经验证完毕,若没有转第1步执行,若验证完毕,执行下一步;第7步判断是否找到了所有被验证消息对应的消息报文,若是,根据消息报文在消息报文文件中的位置排序得到被验证消息的发出先后顺序,验证被验证消息的时序性,若不是,则不验证被验证消息的时序性。
8.根据权利要求1所述的一种分布式信息系统接口自动化测试方法,其特征在于, 步骤七中所述的验证结果,为XML文件,XML文件中根元素〈testreport〉表示测试报告, 其包含 5 个元素<name>、<operator>、<start>、<end> 禾Π <result>,元素 <name> 中描述接口测试用例的名称,元素〈operator〉中描述了接口测试用例的执行者,元素〈start〉 中描述了该接口测试用例的开始时间,元素<end>中描述了该接口测试用例的结束时间,元素〈result〉中描述了该接口测试用例执行结果的详细信息,包括接口测试用例的具体每一个步骤的测试结果和接口测试用例的时序验证结果,每一个步骤的测试结果用一个元素〈detailresult〉来描述,接口测试用例的时序验证结果在元素〈sequence〉中描述,元素〈result〉包含一个用来表示该接口测试用例执行是否通过的属性;所述的元素〈detailresult〉包含三个属性表示接口测试用例文件中的测试步骤的属性step,表示被验证消息的名称的属性name,以及表示自动化测试控制端是否收到该被验证消息的属性 att ;元素 <result> 包含两个元素:<subsys> 和 <workstatus>,元素 <subsys> 和 Workstatus〉用来表示消息的字段值是否正确。
全文摘要
本发明为一种分布式信息系统接口自动化测试方法,涉及软件自动化测试领域。在与被测系统独立的主机中部署自动化测试控制端,被测主机中部署代理程序,自动化测试控制端解析测试用例文件,并查看该测试用例是否能够执行,若能则向被测主机中的代理程序发送测试消息,代理程序解析测试消息并监听被测主机发送的消息报文,若测试用例中第一条消息为事件触发,则代理程序调用自动化测试工具执行自动化测试控制端发送的测试脚本,在测试过程中,代理程序实时监听消息报文并转发给自动化测试控制端,最后控制端解析接收到的消息报文,输出验证结果,生成测试报告。本发明提高了分布式信息系统软件接口测试效率,简化了测试人员的工作。
文档编号G06F11/36GK102163173SQ20111008519
公开日2011年8月24日 申请日期2011年4月6日 优先权日2011年4月6日
发明者余丹, 储大为, 叶钢, 尹杰, 张强, 王志超, 马世龙 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1