首页 / 专利库 / 软件 / 软件 / 一种软件模拟测试方法

一种软件模拟测试方法

阅读:6发布:2020-11-22

专利汇可以提供一种软件模拟测试方法专利检索,专利查询,专利分析的服务。并且一种SDL 软件 模拟测试方法,涉及计算机软件测试技术,具体地说,涉及电信行业SDL软件的一种通用模拟测试方法。所述的测试方法包括以下步骤:通过分析SDL图及相关系统设计文档,制定测试 用例 ;向被测SDL软件发送输入消息及消息体;捕获被测SDL软件所发出的输出消息,比较SDL软件的输出消息与从SDL图中得到的输出消息,从而验证非形式化语言与形式化语言所表达系统是否一致。,下面是一种软件模拟测试方法专利的具体信息内容。

1.一种SDL软件模拟测试方法,包括以下步骤:(1)分析SDL图及相关系统设计文档,制定测试用例,测试用例包括用来测试SDL软件的输入消息和输出消息;(2)消息模拟发送程序(101)向被测SDL软件(102)发送输入消息;(3)消息捕获及比较程序(103)捕获被测SDL软件所发出的输出消息,并比较SDL软件的输出消息与测试用例中的输出消息。
2.如权利要求1所述的SDL软件模拟测试方法,其特征在于:所述测试用例文件的定制,是可控的。
3.如权利要求1或2所述的SDL软件模拟测试方法,其特征在于:所述的被测SDL软件(102)的所有输出消息都被定向到消息捕获及比较程序(103),这可以通过直接修改被测程序来实现,也可通过重载消息发送函数来实现,或直接修改消息发送函数来实现。
4.如权利要求1或2所述的SDL软件模拟测试方法,其特征在于:向所述被测SDL软件(102)发送消息时,是利用被测进程进行状态迁移时向被测进程发送下一个消息。
5.如权利要求1或2所述的SDL软件模拟测试方法,其特征在于:所述的测试用例,是由SDL进程起始状态点经过状态迁移又回到该状态点的过程得到;或从起始状态点经过状态迁移最后STOP的过程得到;对于不能回到起始状态点且又不STOP的状态机,依次将每一次状态迁移的激发消息作为一条测试用例。
6.如权利要求1或2所述的SDL软件模拟测试方法,其特征在于:所述的测试用例由消息名、消息代码、消息体名、消息体内容构造。
7.如权利要求5所述的SDL软件模拟测试方法,其特征在于:所述的测试用例由消息名、消息代码、消息体名、消息体内容构造。
8.如权利要求6所述的SDL软件模拟测试方法,其特征在于:所述的消息名与消息代号作为数据文件保存;所述的消息体结构分解为以字节为单位,并按低字节在前高字节在后的顺序依次排列。
9.如权利要求1所述的SDL软件模拟测试方法,其特征在于:所述消息模拟发送程序(101)的具体实现包括如下步骤:1)将消息名与消息代号读入内存(801);2)将消息名与消息体名读入内存(802);3)将消息体名与消息内容读入内存(803);4)将输入消息测试用例读入内存(804);5)初始化测试用例指针i和发送消息指针j(805);6)判断被测进程是否状态迁移(806);7)被测进程发送一条消息,并将发送消息指针j指向下一消息(807);8)判断一条测试用例是否使用完(808);9)将测试用例指针i指向下一条测试用例(809);10)如果所有的测试用例都使用完,则可以结束测试(810)11)否则,等待被测进程进行下一次状态迁移时向被测进行发送模拟消息(806),即回到步骤6)。
10.如权利要求1所述的SDL软件模拟测试方法,其特征在于:所述的消息捕获及比较程序(103)的具体实现包括如下步骤:1)将消息名与消息代号读入内存(901);2)将消息名与消息体名读入内存(902);3)将消息体名与消息内容读入内存(903);4)将输入消息测试用例读入内存(904);5)对输出消息比较过程中要使用的指针进行初始化(905);6)接收被测进程向外发出消息(906);7)收到消息后,进行消息名的比较工作,即将收到的消息名与事先读入内存的输出测试用例中的消息名进行比较(907);8)如果出错则将错误路径记录下来(908);9)否则,比较输出消息指针是否到达该测试用例尾(909);10)如果到达该测试用例尾,则将指针指向下一条测试用例(910);11)判断是否所有用测试用例都使用完(911);12)如果是,则结束比较(912);13)否则再等待接收消息(906),即回到步骤6)。

说明书全文

一种软件模拟测试方法

发明涉及计算机软件测试技术,具体地说,涉及SDL软件的一种通用模拟测试方法。

SDL(Specification and Description Language)是CCITT制定的一种形式化的描述语言,它主要着眼于规定电信系统的行为,将一种信息准确地从一个人传递到另一个人,因此它在电信行业中应用相当广泛。由于SDL是一种形式化的表意语言,因此在采用SDL语言进行产品开发时,一般的做法是:先使用SDL语言对系统进行详细的描述,生成SDL系统图及进程图等,然后将SDL图用C/C++或汇编等非形式化语言实现,即生成SDL软件。由于完成这两部分工作的人员可能各自对系统理解的不同,以及实现中的方法问题,因此不同的人员表达的系统往往存在差别。

现有技术中,已经有一些可以直接对SDL图进行分析,测试,然后生成相应目标机应用程序的商用工具软件,但没有一种测试非形式化语言与形式化语言所表达系统是否一致的工具或方法。

本发明的目的是提出一种通用的SDL软件模拟测试方法,对各种非形式化语言实现的SDL软件进行模拟测试,以验证非形式化语言与形式化语言所表达系统是否一致。

本发明的目的是这样实现的,构造一种SDL软件模拟测试方法,包括以下步骤:1、分析SDL图及相关系统设计文档,制定测试用例,测试用例包括用来测试SDL软件的输入消息和输出消息;2、消息模拟发送程序向被测SDL软件发送输入消息;3、消息捕获及比较程序捕获被测SDL软件所发出的输出消息,并比较SDL软件的输出消息与测试用例中的输出消息。

实施本发明提供的SDL软件模拟测试方法,可以检验SDL软件的实现与SDL图是否一致。而且本发明提供的SDL软件测试方法并不局限于某一产品,也不受运行平台的限制,是一种通用的测试手段,利用本发明的方法,可以提高程序可靠性,改善测试效率和程序质量,并可大大降低软件测试成本。

结合附图实施例,进一步说明本发明的特点。

图1是SDL软件模拟测试功能的关系示意图;图2是使用本发明的方法进行SDL软件模拟测试的步骤;图3是消息名与消息代号对应文件示意图;图4是消息名与消息体名对应文件示意图;图5是消息体名与具体消息内容对应文件示意图;图6是SDL软件模拟测试中使用的输入消息测试用例;

图7是SDL软件模拟测试中输出消息测试用例;图8是SDL软件输入消息模拟发送的程序流程;图9是SDL软件输出消息捕获及比较程序流程;图10是SDL软件模拟测试中使用的输入消息测试用例的一部分;图11是SDL软件模拟测试中输出消息测试用例的一部分;图12是一个简单的SDL状态迁移图。

为进一步说明本发明涉及的方法,将本发明中涉及的基本概念说明如下:(1)SDL进程图:在本发明中指采用一套标准化的图形符号来描述一个系统的动态行为。

(2)SDL状态迁移图:有时翻译为状态概览图,其主要目的在于给出一个进程的各个状态的概括描述以及它们之间可能有的一些跃迁,该图由状态符号、表示跃迁的有向弧以及可以任选的启动和停止符号组成。

(3)SDL进程:在本发明中指根据SDL进程图,使用非形式化语言(如常用的C/C++,汇编等)实现的与SDL进程图具有相同的功能的一组代码。

(4)SDL软件:在本发明是对SDL进程的一个统称。

(5)SDL图,在本发明中是对SDL进程图及SDL状态迁移图的统称,即它可以单独指SDL状态迁移图,也可以单独指SDL进程图,也可以是同时包含这两者。

图1对SDL软件模拟测试的总体方法进行了描述。SDL软件输入消息模拟发送程序101用于读取输入消息测试用例,并向被测SDL软件102发送模拟消息,从而激发被测SDL软件102运行。SDL软件输出消息捕获及比较程序103用于读取输出消息测试用例并捕获被测SDL软件102发出的消息,与读入内存的输出消息测试用例进行比较,从而检验SDL软件实现与SDL图是否一致。消息模拟发送程序101的具体实现如图8所示,消息捕获及比较程序103的具体实现如图9所示,将在下文详细描述。

所述测试用例是依据SDL图及系统设计文档生成的。因此,可以使用这些测试用例来验证SDL软件实现的正确性,至于SDL图的正确性,则可以采用目前很多商用软件,如ObjectGEODE来进行验证。

在具体实现中,消息模拟发送程序101与消息捕获比较程序103可以在一个进程中实现,也可在不同的进程中实现。被测SDL软件102的所有输出消息都被定向到测试程序,这可以通过直接修改被测程序来实现,也可通过重载消息发送函数来实现,或直接修改消息发送函数来实现。

在决定何时向被测SDL软件发送消息时,一般有以下一些方法:(1)定时发送,即设置一个定时器,每隔一个固定的时间间隔即向被测进程发送一个消息,该方法的不足之处是时间间隔难以确定,如果时间间隔定得太长,则系统测试效率不高,如果时间间隔定得太短,则容易造成消息拥塞。(2)收到被测进程发送出来的消息后即向被测进程发送下一个消息,但由于被测进程并不是每收到一个消息即向外发送消息,因此,该方法无法一直维持下去。(3)利用被测进程进行状态迁移时向被测进程发送下一个消息,由于被测进程每收到一个消息都要进行状态迁移,或者是迁移到其它状态,或者是迁移至当前状态。因此,利用被测进程的状态迁移来激发向被测进程发送下一个消息是比较高效且可行的一种方法,这也是本发明的一个特征所在。

图2是使用本发明所提供的方法,进行SDL软件测试的步骤:首先执行201,分析SDL图及相关系统设计文档,从而生成如图3、图4、图5、图6及图7所示测试用例;然后进行202,使用如图8所示的测试程序101向被测SDL软件102发送输入消息;最后执行203,使用如图9所示的测试程序103比较被测SDL软件102发出的消息。从而可以验证SDL软件实现与SDL图是否一致。

图3表示消息名与消息代号的对应关系,如消息名IN EVENT1对应消息代号100。测试程序在向被测软件发送消息时,使用的是消息代号,但为了方便他人的阅读,在测试用例中直接采用消息名将更有利于对测试用例的理解。另外通过将消息名与消息代号作为数据文件保存,从而可以实现测试程序与测试用例分开,即测试不同的SDL软件或采用不同的测试用例进行多次测试时,只要修改测试用例数据文件即可,而不必修改测试程序,从而可大大提高测试效率。该图所示测试用例可通过分析被测SDL软件或系统设计文档得到。

图4表示消息名与消息体名的对应关系,通过对消息体命名,有利于对相同消息不同消息体情况的处理。如在图4中,消息IN EVENT1带有两个消息体名,A1和A2,这表示被测SDL软件在收到同一个消息IN EVENT1时,可能会带两种不同的消息体,A1和A2,从而完成不同的处理。该图所示测试用例可从系统设计文档中得到。

图5表示消息体名与消息体内容的对应关系。在图5中所示的消息体内容,可以从系统设计文档中得到。在系统设计文档中,消息体内容一般为一些自定义的数据结构,并给出了结构中不同字段的长度及所代表的含义,在编写如图5所示的测试用例文件时,应将消息体结构分解为以字节为单位,并按低字节在前高字节在后的顺序依次排列,这样测试程序在读入消息体内容后,可以直接保存在一个unsigned char型的数组中,作为相应消息的消息体。

图6表示向被测SDL软件102发送的输入消息。图6中,每一行即代表一条测试用例,表示从SDL进程起始状态点经过状态迁移又回到该状态点的过程,或从起始状态点经过状态迁移最后STOP的过程。对于不能回到起始状态点且又不STOP的状态机,可以依次将每一次状态迁移的激发消息作为一条测试用例。该测试用例从SDL进程图,或SDL状态迁移图生成,用于对SDL进程进行指定路径或所有路径的测试。在图6中,每一条测试用例均以输入消息体名来表示,使用消息体名而不是使用消息名来表示一条测试用例的主要原因在于同一个消息名可能有不同的消息体,这样测试程序无法确认应使用哪一条消息体,而使用消息体名来表示一条测试用例则不存在这个问题,因为从消息体名可以找到唯一的消息名。

图7所示测试用例与图6中所示测试用例一一对应。图6中相应的输入消息及消息体,根据SDL图将产生图7所示的相应输出消息及消息体。图7所示的测试用例将用于比较被测SDL进程的输出消息是否正确,从而确定SDL进程与SDL图是否一致。由于输出消息体的不确定性,一般不比较输出消息体的内容,而只比较输出消息代号。但为了保持测试软件的一致性,图7所示的测试用例仍然同图6一样以消息体名表示,而不是消息名。

图3至图7所示的各种测试用例,可作为文本文件保存,也可作为数据库保存,这样可以方便的进行修改。如果保存为其它格式,则应开发相应的修改维护工具。

图8是SDL软件输入消息模拟发送程序101的工作流程,在该流程中,1)首先执行801,将消息名与消息代号读入内存,即读入如图3所示的数据,建立消息名与消息代号的一一对应关系;2)接着执行802,将消息名与消息体名读入内存,即读入如图4所示的数据,在此过程中,依据801的结果,将采用字符串表示的消息名转换成相应的消息数字代号,从而建立消息代号与消息体名的对应关系;3)执行803,将消息体名与消息体内容读入内存,即读入如图5所示的数据;这样消息代号与消息体内容一起形成测试用例;4)执行804,将输入消息测试用例读入内存,即读入如图6所示的数据,在得到测试用例后,输入消息模拟程序即等待被测进程进行状态迁移;5)执行805,初始化测试用例指针i和发送消息指针j;6)执行806,只有被测进程进行了状态迁移,则执行807,向被测进程发送一条消息,并将发送消息指针j指向下一条消息;7)执行808,判断一条测试用例是否使用完,如果使用完,则执行809,将指针i指向下一条测试用例,如果所有的测试用例都使用完,则可以结束测试或从头开始进行第二遍测试,否则,等待被测进程进行下一次状态迁移时向被测进行发送模拟消息,如此循环。

图9是SDL软件输出消息捕获及比较程序的工作流程,与图8类似,901至904用于将输出测试用例读入内存,905用于对输出消息比较过程中要使用的指针进行初始化,执行906等待被测进程向外发出消息,收到消息后,执行907进行消息名的比较工作,即将收到的消息名与事先读入内存的输出测试用例中的消息名进行比较,如果出错则执行908将错误路径记录下来,否则执行909,比较输出消息指针是否到达该测试用例尾,如果到达该测试用例尾,则执行910将指针指向下一条测试用例,并执行911判断是否所有用测试用例都使用完,如果是,则结束比较,否则再回到906等待接收消息。

通过对测试用例文件的定制,可实现一种可控的SDL软件测试过程,即如果用户对SDL软件的某一个路径感兴趣,那么可以只给出这条路径的测试用例,即可完成对单条或一组特定路径的测试。如图12中,从状态SA出发再回到SA一共有两条路径,如果只想测试其中的一条路径,如从状态点SA出发经过消息IN EVENT1,IN EVENT3,IN EVENT4后回到起始状态点SA,则可以只给出与这条路径相关的测试用例,如图10、图11所示。

最后介绍本发明方法的一个具体实施案例:图12表示一个简单的SDL状态迁移图,该图一共有三个状态,SA,SB及SC。经过分析SDL系统设计文档及SDL图,可以编写如图3,图4,图5,图6,图7所示的测试用例,将图8,图9所示的测试程序与被测SDL程序一起编译链接,生成可执行目标程序,运行目标程序,即开始进行自动测试过程,运行结束,分析记录错误的文件,即可判断SDL软件实现与SDL进程图是否一致。通常,由开发人员实现的SDL进程与由系统设计人员设计的SDL图之间总是存在一些差别,通过本发明的方法,可以很容易找出这两者之间的不同,并为问题的定位给出较明确的指导。

在对SDL软件进行模拟测试时,可以使用被测软件运行的真实环境,或调试环境,也可以使用各种模拟环境。在这里,模拟环境指能提供SDL软件运行支撑但与被测软件运行的真实环境不同的环境。如被测SDL软件运行于186单板,则可以在单板上对SDL软件进行模拟测试,也可以采用PC机Windows环境来模拟一个SDL软件运行的环境,从而完成SDL软件的模拟测试。本发明中所指的模拟是模拟被测SDL软件的输入,从而激励被测软件运行。

高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈