一种软件测试的方法

文档序号:7597881阅读:229来源:国知局
专利名称:一种软件测试的方法
技术领域
本发明涉及一种软件测试的方法,尤其涉及一种基于脚本语言的测试含有通信接口的软件的方法。
背景技术
当前,软件越来越复杂,其规模越来越大。开发一个软件往往要做若干版本,经过每个版本的详细测试和缺陷(bug)修改后,软件才会逐步稳定,达到可用的程度。一个大型软件每个版本测试的工作量都是很大的,在人力资源成本日益增加的今天,如何减少测试的工作量,或者实现大部分测试工作的自动化,是本领域技术人员所要研究的重要课题。
目前,使用测试工具对软件TCP/IP接口进行测试时,一般可以分为数据输入、结果输出、结果比较三步。首先,测试工具发送命令帧给被测软件,被测软件根据收到的命令帧,输出相应的应答消息帧给测试工具,然后,进行结果的比较。目前,结果比较需要人工完成,即手工测试。
在手工测试方案中测试工具收到被测软件发出的应答帧后,通过一定的方式把应答帧显示在屏幕上,由测试人员肉眼观察应答帧内容,并与预期结果比较。如果收到的应答帧与预期结果一致,则该测试用例的测试结果为通过。否则为不通过。在这种方案中,结果比较这一步在测试人员的大脑中完成,有的应答帧内容非常复杂,结果比较的时候就非常吃力,也容易出错,使得测试人员容易疲劳,测试效率较低。
因而,现有的技术存在着测试效率低,且长时间工作后容易出错,需要使用大量的测试工程师,人力成本高的缺点。

发明内容
本发明的目的是提供一种软件测试的方法,实现特定软件的自动化测试,提高测试效率,并提高测试的准确性。
为实现上述目的,本发明提供了一种软件测试的方法,包括以下步骤1)建立与被测软件的连接;2)构造测试用例的测试命令帧并将所构造的测试命令帧发送给被测软件;3)生成所述测试命令帧的等待帧,所述等待帧中包含所述测试用例的预期结果;4)比较所述等待帧和所述被测软件返回的执行结果帧,如果两者一致,则判断测试结果为通过,否则为不通过。
优选地,所述等待帧和所述执行结果帧的比较方法为如果所述两个帧每个字节都一样,则认为这两个帧一致,否则为不一致。
优选地,所述等待帧和所述执行结果帧的比较方法为只比较关心的字段,如果所关心的字段都一样,则认为两个帧一致,否则为不一致。
优选地,在所述步骤2)之后进一步包括设定等待所述被测软件返回执行结果帧的时间,如果在设定的时间内,未收到所述执行结果帧,则判断测试结果为不通过,否则执行步骤4)进行所述等待帧和所述执行结果帧的比较。
具体地,所述帧结构包括帧头和数据区,所述帧头长度固定,包含命令字字段、数据区长度字段,所述数据区长度是可变的,由所述帧头中的数据区长度指定。
优选地,所述被测软件的通信接口为TCP/IP接口、E1线接口或串口线接口。
优选地,所述方法用于对所述被测软件的通信接口进行测试。
优选地,所述测试命令帧由脚本语言创建和/或发送。
优选地,所述等待帧由脚本语言创建。
优选地,所述脚本语言为工具命令语言(TCL)或脚本语言“龙蛇”(python)。
使用本发明的方法,可以避免每个版本测试中的重复劳动,从而提高测试效率。并且由于工具是不会疲劳的,只要测试脚本正确,那么测试工具的测试结果是可靠的,因而可以提高测试的准确率,降低人力资源成本。


图1是应用本发明一个实施例的软件测试的方法的测试工具与被测软件的连接关系示意图;图2是本发明的软件测试的方法的一个实施例的流程图;图3是本发明所使用的帧的帧结构一个实施例的示意图。
具体实施例方式
下面结合附图对本发明的优选实施例进行详细的说明,附图仅用于说明,不是对本发明保护范围的限制。
图1示出了应用本发明一个实施例的软件测试的方法的测试工具与被测软件的连接关系示意图。其中测试工具一般为软件,可以与被测软件在不同的硬件上也可以在同一硬件上。测试工具可以运行于普通PC上,如果被测软件是一完整系统,如一路由器,则被测软件与测试工具在不同的硬件上。如果被测软件是一纯软件,则可以在同一计算机上。在图1所示的实施例中,应用本发明的软件测试的方法的自动化测试工具通过TCP/IP协议与被测软件通讯,其发出测试命令帧,接收被测软件的相应执行输出,并与预期结果(在软件测试中,执行一个测试用例后,希望得到的结果)比较。在其它的实施例中,也可以通过串口线、E1线等接口与被测软件连接。
图2是本发明的软件测试的方法的一个实施例的流程图。如图2所示,在本发明的一个实施例中,软件测试的方法包括的具体步骤为1.被测软件初始化;即被测软件的启动,如果被测软件是一个嵌入式系统,则包括硬件初始化和软件的启动,如网口的初始化、TCP/IP协议栈初始化等;如果被测软件是纯软件,则是指软件的启动。
2.建立与被测软件连接;
3.构造并发送测试用例的测试命令帧;4.生成上述测试命令帧的等待帧,所述等待帧中含有所述测试用例的预期结果;5.被测软件收到测试命令帧后,经过一系列运算或操作,返回执行结果帧;6.收到被测软件的执行结果帧后,比较被测软件的执行结果帧和含有预期结果的等待帧,如果两者一致,则该测试用例的测试结果为PASS(通过),否则为FAILED(不通过);7.重复所述步骤3到6,直到所有的测试用例执行完毕。
下面对上述步骤进行详细的说明。
建立连接的方法是公知的。依据被测软件所具有的通信接口,建立测试工具与被测软件的连接。以对具有TCP/IP接口的软件进行测试为例,建立连接可以是在被测软件与测试工具之间建立套接字(socket)连接,在一方建立服务器套接字(Server Socket),在另一方建立客户机套接字(Client Socket)。可以使用TCL(工具命令语言,一种脚本语言)扩展命令建立套接字连接,也可以使用其它的方法建立套接字连接,这些建立套接字的方法是本领域的技术人员所公知的,所以本文不予赘述。当然,也可以不采用套接字连接,而直接使用TCP/IP。总之可以采用本领域技术人员所公知的任何方法来建立测试工具与被测软件建立连接。
建立连接以后,构造并发送测试命令帧。图3示出了本发明所使用的命令帧的帧结构的一个示例。如图3所示,帧结构包括帧头和数据区。帧头长度固定,包含帧序号(表示第几个帧)、帧类型(表示二进制或文本类型,取值0~1)、命令字(命令含义,100~10000,四个字节)、数据区长度、IP地址、端口号等,数据区长度是可变的,由帧头中的数据区长度指定。对于命令帧,数据区存放除了命令字外命令的其他参数(需要时)。例如,如果一个测试用例是启动OSPF协议,该被测软件中定义的启动OSPF协议的命令码是1001,则测试工具构造一个命令帧,在命令字字段填上1001(此用例不用填写数据区)。后文描述的等待帧、执行结果帧与命令帧的帧结构是相同的。应该注意,图3所示的帧结构只是一个示例而已,可以依据本发明的原理对其进行各种修改,这对于本领域的技术人员来说,都是显而易见的,因而本文不一一列举。
在构造并发送测试命令的步骤中,构造命令帧可以采用TCL扩展命令NewCurFrame和FillCurFrame实现。其中NewCurFrame新建一个空的帧,FillCurFrame用指定的内容填充由NewCurFrame新建的空帧。所谓指定的内容即根据具体的测试用例确定要填充的内容。发送命令帧由TCL扩展命令send实现。发送命令帧之后,等待被测软件的应答。使用脚本语言建立和发送命令帧,可以比较灵活地修改命令帧(以及后文所述的等待帧)中内容,一般修改时无需重新修改源代码、重新编译测试工具,可以有效地提高效率。
随后,创建用来放置预期结果的等待帧,根据测试用例的内容,用测试用例的预期结果填充所创建的等待帧。仍以上文所述的启动OSPF协议的测试用例为例,如被测软件支持OSPF协议,且还没有启动OSPF协议,则测试工具发送启动OSPF协议命令后,被测软件如果执行成功,将返回一个结果(例如0000),则在该例中,预期结果就是0000。将0000填入等待帧的数据区中。等待帧的创建、填充优选地由TCL扩展命令NewWaitFrame、FillWaitFrame实现。其中,NewWaitFrame新建用来放置预期结果的等待帧,就是在内存中开辟一块区域,用来存放等待帧。FillWaitFrame用指定的内容填充所创建的等待帧,即给帧头的各个字段赋值,并把预期结果存放到数据区。
被测软件在收到命令帧之后,会根据命令帧中的内容进行一系列的运算,并返回含有执行结果的执行结果帧。
如果在指定的时间内未收被测软件返回的执行结果帧,则认为该测试用例为不通过(FAILED),如果在指定的时间内收到了执行结果帧,则与前面创建的等待帧比较。如果两者一致,则通过(PASS),否则为不通过。
具体地,比较的过程为,测试工具收到来自被测软件的执行结果帧后,在内存中开辟一块区域,存放结果帧;然后比较该执行结果帧和等待帧。可以采用逐字节比较的方法进行比较,即如果每个字节都一样,则认为这两个帧一致,否则为不一致;也可以采用关心字段比较法,即只比较关心的字段,如果所关心的字段都一样,则认为两个帧一致,否则为不一致。仍以上文所述的启动OSPF协议的测试用例为例,可以只关心命令字字段和数据区中的内容,如果被测系统返回的帧中,命令字字段为启动OSPF命令(1001),且数据区内容为0000,则认为启动OSPF这个测试用例执行成功。
本领域的技术人员应该意识到,本发明的方法中所涉及的TCL扩展命令的部分也可使用其他脚本语言,如python(龙蛇)语言,来实现。其中,python语言的编程可以参见O’Reilly于1999年4月出版的MarkLutz等箸的《Learning Python》(ISBN1-56592-464-9,384pages)以及O’Reilly于2001年5月出版的Fredrick Lundh箸的《PythonStandard Library》(ISBN0-596-00096-0)。
虽然本发明是通过优选实施例进行说明的,但是本领域技术人员应当理解本发明并不限于这些实施例,而是可以在不脱离本发明实质的情况下对其进行各种变化和修改。因此,本发明的范围只由权利要求及其等同物来确定。
权利要求
1.一种软件测试的方法,包括以下步骤1)建立与被测软件的连接;2)构造测试用例的测试命令帧并将所构造的测试命令帧发送给被测软件;3)生成所述测试命令帧的等待帧,所述等待帧中包含所述测试用例的预期结果;4)比较所述等待帧和所述被测软件返回的针对所述测试命令帧的执行结果帧,如果两者一致,则判断测试结果为通过,否则为不通过。
2.根据权利要求1所述的方法,其特征在于,所述等待帧和所述执行结果帧的比较方法为比较两个帧的每个字节,如果所述两个帧每个字节都一样,则认为这两个帧一致,否则为不一致。
3.根据权利要求1所述的方法,其特征在于,所述等待帧和所述执行结果帧的比较方法为只比较关心的字段,如果所关心的字段都一样,则认为两个帧一致,否则为不一致。
4.根据权利要求1所述的方法,其特征在于,在所述步骤2)之后进一步包括设定等待所述被测软件返回执行结果帧的时间,如果在设定的时间内,未收到所述执行结果帧,则判断测试结果为不通过,否则执行步骤4)进行所述等待帧和所述执行结果帧的比较。
5.根据权利要求1所述的方法,其特征在于,所述各帧的结构包括帧头和数据区,所述帧头长度固定,包含命令字字段、数据区长度字段,所述数据区长度是可变的,由所述帧头中的数据区长度指定。
6.根据权利要求1所述的方法,其特征在于,所述被测软件带有从包括TCP/IP接口、串口线接口和E1线接口的组中选出的通信接口。
7.根据权利要求6所述的方法,其特征在于,所述方法用于对所述被测软件的通信接口进行测试。
8.根据权利要求1到7任一项所述的方法,其特征在于,所述测试命令帧由脚本语言创建和/或发送。
9.根据权利要求1到7任一项所述的方法,其特征在于,所述等待帧由脚本语言创建。
10.根据权利要求8或9所述的方法,其特征在于,所述脚本语言为工具命令语言或脚本语言“龙蛇”。
全文摘要
本发明公开了一种软件测试的方法,包括以下步骤1)建立与被测软件的连接;2)构造测试用例的测试命令帧并将所构造的测试命令帧发送给被测软件;3)生成所述测试命令帧的等待帧,所述等待帧中包含所述测试用例的预期结果;4)比较所述等待帧和所述被测软件返回的针对所述测试命令帧的执行结果帧,如果两者一致,则判断测试结果为通过,否则为不通过。使用本发明的方法,可以提高测试效率,降低人力资源成本。
文档编号H04L12/26GK1755643SQ20041008091
公开日2006年4月5日 申请日期2004年9月27日 优先权日2004年9月27日
发明者孙孟杰, 张晓翔, 刘波 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1