CN1645824A - 消息交换模式模拟代码的自动生成 - Google Patents
消息交换模式模拟代码的自动生成 Download PDFInfo
- Publication number
- CN1645824A CN1645824A CNA2005100057994A CN200510005799A CN1645824A CN 1645824 A CN1645824 A CN 1645824A CN A2005100057994 A CNA2005100057994 A CN A2005100057994A CN 200510005799 A CN200510005799 A CN 200510005799A CN 1645824 A CN1645824 A CN 1645824A
- Authority
- CN
- China
- Prior art keywords
- message
- code
- state
- exchange pattern
- computing system
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3696—Methods or tools to render software testable
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4498—Finite state machines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
- Monitoring And Testing Of Exchanges (AREA)
- Exchange Systems With Centralized Control (AREA)
Abstract
用来自动生成对测试计算系统模拟消息交换模式的能力进行测试的代码的机制。代码生成计算系统使用消息交换模式定义来生成模拟代码。对于消息交换模式定义允许有效消息在其中传送的每个状态,代码为至少模拟有效传送消息传送的状态生成。对于消息交换模式定义允许有效消息在其中接收的每个状态,代码为至少模拟有效接收消息接收的状态生成。如果消息的传送或接收致使状态转换发生,致使消息交换模式中适当状态转换的代码生成。
Description
技术领域
本发明涉及网络化技术,尤其涉及模拟消息交换模式的代码的自动生成。
背景技术
计算技术已经改变了我们工作和娱乐的方式。如今的计算系统在形式上千差万别,包括台式计算机、膝上型计算机、输入板PC、个人数字助理(PDA)等等。甚至家用电器(诸如冰箱、烤箱、缝纫机、安全系统等等)都有不同级别的处理能力,因而可被视作计算系统。
由计算系统提供的功能性中有很大部分依靠的是计算系统要网络连接到(并能够传送消息给)其它计算系统。为使两个通信中的计算系统完成特定任务,可能需要涉及消息交换模式的消息交易(message transaction)。消息交易中所涉及的每个计算系统都有一种应用(在下文中也称为“消息交换模式应用”),该应用帮助处理作为交易一部分接收到的遵从消息交换模式的消息,并传送符合消息交换模式的其它消息。
为了测试消息交换模式应用,消息交换模式应用可在不同计算系统上安装并进行测试。然而,在许多情形中,一个计算系统上的消息交换模式应用可能与另一个计算系统上的消息交换模式应用大为不同,即使这两个消息交换模式应用能使用消息交换模式进行彼此交互。测试者可能只能访问其中一个消息交换模式应用。此外,其它消息交换模式应用的所有者可能不愿意或不能够协力测试这两个消息交换模式应用的交互。因此,在将其实现和调度的真实网络环境中测试消息交换模式应用并不总是可行的。
无需在其最终要被采用的真实网络环境中测试应用即可进行消息交换模式应用测试的机制将是有利的。另外,如果不需要在每次测试消息交换模式应用时编写附加测试软件就可完成该测试也将是有利的。
发明内容
本领域现有技术的前述问题由本发明的原则克服,这些原则涉及用于自动生成对测试计算系统模拟消息交换模式的能力进行测试的代码。
代码生成计算系统使用消息交换模式定义来生成模拟代码。对于消息交换模式中每个转换状态,消息交换模式定义包括以下内容:1)指示哪个计算系统可传送(和/或接收)每个给出状态的有效消息,以及2)源自于传送或接收有效消息而产生的状态转换描述。
对于消息交换模式定义允许有效消息在其中传送的每个状态,为该状态生成至少模拟有效传送消息的传送的代码。对于消息交换模式定义允许有效消息在其中接收的每个状态,为该状态生成至少模拟有效接收消息接收的代码。如果消息的传送或接收致使发生状态转换,即生成导致消息交换模式中适当状态转换的代码。如果给定特定状态,代码生成计算系统还可生成模拟无效消息传送或接收的代码。可以把几率赋予某些在传送中或接收中的消息(不论是有效的或无效的)。可多次模拟消息交换模式,以通过消息交换模式模拟许多或全部状态转换路径。这使模拟能覆盖在真实配置(deployment)中将会遇到的几乎所有可能情形。
因此,模拟代码使用消息模式定义自动生成,从而使生成模拟代码更为容易。此外,由于不与另一计算系统通信就可模拟消息传送和接收,模拟对单个计算系统来说可以是内部的。因此,不需要使用网络资源。可选地,即使模拟对单个计算系统而言不是内部的,模拟允许在单个机构网络内通信。因此,为了测试消息交换模式应用不需要依靠另一机构的合作。
本发明的其它特征和优点将在以下描述中陈述,且部分地在说明书中将显然,或通过发明的实践获知。本发明的特征和优点可通过在所附权利要求中特别指出的要素和组合来实现和获取。阅读以下说明和所附权利要求书,本发明的这些和其它特征将变得更清除,或由此后陈述的发明实践中获知。
附图说明
为了描述能获取本发明的上述和其它优点及特征的方式,以上简述的本发明的更详细描述将参照附图所示的特定实施例呈现。要理解,这些附图仅描绘了本发明的典型实施例,因此不能被视为对其范围的限制,结合以下附图,对本发明进行更为具体和详细的描述和解释,附图中:
图1所示是可实现本发明特征的适当计算系统;
图2所示是一种网络环境,在其中两个计算系统可实现消息交换模式,每个计算系统都使用消息交换模式应用;
图3所示是自动生成在测试计算系统上内部地模拟消息交换模式的代码的代码生成计算系统;
图4所示是使用由代码生成计算系统生成的模拟代码来内部地模拟消息交换模式的测试计算系统;
图5示出了可用来追踪任意消息交换模式中过程的状态转换树;以及
图6示出了代码生成计算系统自动生成内部地模拟消息交换模式的模拟代码的方法流程图。
具体实施方式
本发明的原则涉及自动生成测试计算系统模拟消息交换模式能力的代码的机制。代码生成计算系统以消息交换模式定义为基础,自动生成模拟代码。对于消息交换模式定义允许有效消息在其中传送的每个状态,为该状态生成代码,这种代码至少模拟有效传送消息的传送。对于消息交换模式定义允许有效消息在其中接收的每个状态,为该状态生成代码,这种代码至少模拟有效接收消息的接收。如果消息的传送或接收致使状态发生转换,则生成代码使消息交换模式中产生适当的状态转换。
参看附图,其中相同标记表示相同元素,本发明可被示为在适当计算环境中实现。以下说明是以本发明的图示实施例为基础的,不应当被视为在未在此明确描述的其它实施例方面限制了本发明。
在以下描述中,除非特别注明,本发明是参照动作和由一台或多台计算机执行的操作的符号表示进行描述的。这样,可以理解这种常被称为计算机可执行的方法和操作包括由计算机处理单元对以结构化形式表示数据的电子信号进行操作。该操作转换数据或将其维护在计算机存储系统的单元中,这以本领域技术人员都很理解的方式重新配置或者变换计算机的操作。数据被维护其中的数据结构是具有由数据格式定义的特定属性的物理存储单元。然而,尽管本发明在前述上下文中进行描述,并不意味着是限制性的,因为本领域技术人员将理解,此后描述的一些动作和操作也能以硬件实现。图1示出了对这些装置可用的示例计算机架构的示意图。
为了进行描述,所描绘的架构仅是适当环境的一个示例,且并非旨在显示对本发明使用或功能性范围的任何限制。计算系统也不能被解释为对图1中所示任何组件或组合有任何依赖或需要。
用许多其它通用或专用计算或通信环境或配置,本发明是可操作的。已知的适于本发明使用的计算系统、环境和配置包括,但不限于,移动电话、袖珍式计算机、个人计算机、服务器、多处理器系统、基于微处理器系统、迷你计算机、典型计算机、以及包括任意以上系统或装置的分布式计算环境。
在其最基本配置中,计算系统100一般包括至少一个处理单元102和存储器104。存储器104可能是易失的(诸如RAM)、非易失的(诸如ROM、闪存等)、或者是两者的组合。该最基本配置由虚线106划出如图1所示。
存储介质装置可有附加特征和功能性。例如,它们包括附加存储器(可移动的和不可移动的),其包括但不限于PCMCIA卡、磁盘和光盘、以及磁带。这种附加存储器由可移动存储器108和不可移动存储器110在图1中示出。计算机存储介质包括用来存储诸如计算机可读指令、数据结构、程序模块、或其它数据的信息,以任何方法或技术实现的易失的和非易失的、可移动的和不可移动的介质。存储器104、可移动存储器108和不可移动存储器110都是计算机存储介质的示例。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存、其它存储技术、CD-ROM、数字化视频光盘、其它光学存储、磁卡、磁带、磁盘存储、其它磁性存储装置、以及用来存储所需信息和由计算系统访问的任何其它介质。
在此使用时,术语“模块”或“组件”能指向在计算系统上执行的软件对象或例程。在此描述的不同组件、模块、引擎和服务可被实现为在计算系统上执行的对象或过程(例如单独线程)。尽管在此描述的系统和方法优选地在软件中实现,在软件和硬件中或在硬件中的实现也是可能的和可预期的。
计算系统100还可包含允许主机经网络120与其它系统和装置通信的信道112。信道112是通信介质的示例。通信介质通常包含诸如载波的调制数据信号或其它传送机制中的计算机可读指令、数据结构、程序模块或其它数据,且包括任何信息传递介质。作为示例,而非限制,通信介质包括诸如有线网络和直接有线连接的有线介质,以及诸如听觉、无线电、红外线和其它无线介质的无线介质。在此使用的术语“计算机可读介质”包括存储介质和通信介质。
计算系统100可能还有输入组件114,诸如键盘、鼠标、笔、语音输入组件、触摸输入装置等等。输出组件116包括屏幕显示、扬声器、打印机等等,并呈现驱动它们的模块(常称作“适配器”)。计算系统100有电源118。所有这些组件在本领域内是众所周知的,无需在此赘述。
图2描述的是网络环境200,两个计算系统(图2中称作“实现计算系统”)在其中通信以完成特定任务。特别地,实现计算系统201与实现计算系统202通信。为了完成特定任务,计算系统201和202以特定交换模式230交换消息。消息交换的特定模式定义了在消息交换中任一给定点哪个计算系统要传送哪条消息。消息交换模式取决于要完成的任务,以及交换消息所用的协议。本发明的原则不局限于消息交换模式的任何给定结构。
每个实现计算系统都有参与消息交换模式的消息交换模式应用。例如,实现计算系统201执行消息交换模式应用210,而实现计算系统202执行消息交换模式应用220。尽管不是必须的,实现计算系统201和202可为计算系统进行如上所述的构造。在此说明书和权利要求中,“计算系统”被定义为有能力处理电子消息的任何装置或系统。
消息交换格式中的消息不需要都由计算系统中的相同组件生成和消费。例如,某些消息可以是协议级别的消息,以允许两个计算系统之间协议级别上的适当合作。其它消息可以是应用级别消息,以允许完成期望任务所需数据的交换。在一实施例中,消息交换模式中的协议级别消息由本领域技术人员所共知的web服务协作(WS-协作)和WS-交易规范进行管理。
图2阐述了消息交换模式应用将最终在其中操作的环境。然而,需要在运送该应用之前测试消息交换模式应用以确保适当的操作。测试应用常花费相当长的时间,因为为了执行模拟常常需要起草新代码。此外,由于操作在本质上是分布的且常常是跨信任边界分布的,消息交换模式应用的测试就特别困难。例如,那些编写消息交换模式应用210的人可能无法访问运行在其它计算系统上的消息交换模式应用220。此外,为进行测试取得消息交换模式应用220的所有者的合作可能是困难的。
因此,本发明的原则提供了一种机制,借助该机制,无需广泛的人工代码编写、无需在另一机构的合作下或在任何网络环境中进行测试,就自动生成允许测试计算系统模拟消息交换模式行为的代码。图3阐述了这种自动代码生成可能发生的环境。
参照图3,代码生成计算系统301访问消息交换模式定义302。模拟代码生成模块303使用消息交换模式定义302来生成模拟代码304。参照图4,该模拟代码304接着可由测试计算系统401的模拟器402来测试消息交换模式定义。更多关于该操作的细节将在首先更详细地描述消息交换模式定义303之后进行描述。
在消息交换模式中有众多状态。消息交换模式定义定义了这些状态。对于每个状态,都有零个或多个可传送的有效消息类型、零个或多个可接收的有效消息类型。有效消息类型在接收或传送后,消息交换模式可转换到另外的状态。消息交换模式为每个状态指示有效消息类型,并指示如果给定某有效消息类型应该进行哪种状态转换。消息交换模式定义可以是任何格式的。然而,为了解释消息交换模式以便自动生成代码,如果消息交换模式定义是以一种更易分解的格式将是有利的。这种格式的示例由web服务描述语言(WSDL)标准定义的。
消息交换模式定义可能还包括,例如,某有效消息在给定某状态时将被接收或传送的几率。消息交换模式定义还可施加在给定某状态时应当应用的定时政策。例如,定时政策可指示如果在某时间段内未接收到响应,则应当删除前一请求。
通过把消息交换模式定义简化为状态转换树,就可更好地理解消息交换模式定义。状态转换树可在代码生成过程中在存储器中构建,尽管并不必需是这种情形。消息交换模式状态转换树包括消息交换模式中每个状态的节点。对每个节点,会提供有效消息类型以及哪个计算系统可发送哪类消息的列表。对于每个有效消息类型,也有对在接收到(或视情形可能为传送)指定消息时要转换的那个状态的标识。
树的结构完全取决于消息交换模式,而后者转而取决于要执行的任务。由于各种各样的消息交换模式是无穷尽的,阐述所有可能的状态转换树将是不可能的。罗列多了将使本发明的原则变得模糊。然而,在此仅描述一种消息交换模式作为说明。本领域技术人员将理解(阅读完本说明书之后)本发明的原则适用于任何信息交换模式。
据所述,图5示出了示例消息交换模式状态转换树500。状态转换树500包括从501到507的众多状态。来自计算系统之一的消息的传送导致由实箭头表示的状态转换。另一方面,来自其它计算系统的消息的传送导致由虚线箭头表示的状态转换。暂时忽略箭头541、542以及百分比标记,这些项目会参照图6在后面解释。参照图5,一个计算系统传送消息导致从511直到514的状态转换,而其它计算系统传送消息则导致从521直到527的状态转换。每个箭头关联于对该转换有效的特定消息类型或消息类型组。
如果正在使用WS-协作,实现计算系统201可能首先向实现计算系统202发送协作上下文消息。实现计算系统202然后可向实现计算系统201发送登记消息。然后实现计算系统201向实现计算系统202发送登记接收消息。在该阶段,实现计算系统201担当“协调者”的角色,而实现计算系统202则担当“参与者”的角色,且消息交换在活动状态501中。图5中的实线表示由协调者(即实现计算系统201)发送消息导致的状态转换,而图5中的虚线表示由参与者(即实现计算系统202)发送消息导致的状态转换。
从活动状态501,实现计算系统201可向实现计算系统202传送删除消息。这表示实现计算系统201已选择了先前请求的删除操作,且导致了由实线箭头511表示的从活动状态501到删除状态502的转换。更一般地说来,一旦传送了关联于转换的消息,传送计算系统就识别出状态转换。一旦接收到关联于转换的消息,接收计算系统就识别出状态转换。因此,由实现计算系统201识别的状态转换图表追踪进程与由实现计算系统202识别的状态转换图表追踪进程之间,可能有一些瞬时的差异。在该特定转换511中,实现计算系统201一传送删除消息,就识别了转换511。而实现计算系统202一接收删除消息,就识别了转换511。
可选地,当处于活动状态501中,实现计算系统201可从实现计算系统202接收退出消息。这向实现计算系统201告知实现计算系统202将不再参予消息交换模式。因此,退出消息从实现计算系统202向实现计算系统201的传送导致了从活动状态501到结束状态505的转换522。
可选地,当处于活动状态501中,实现计算系统201可从实现计算系统202接收完成消息。这向实现计算系统201告知实现计算系统202已经完成了相关于先前请求的处理。因此,完成消息从实现计算系统202向实现计算系统201的传送导致了从活动状态501到完成状态503的转换523。
可选地,当处于活动状态501中,实现计算系统201可从实现计算系统202接收错误消息。这向实现计算系统201告知实现计算系统202已在活动状态501失败。因此,错误消息从实现计算系统202向实现计算系统201的传送导致了从活动状态501到错误状态507的转换526。
当处于删除状态502时,实现计算系统201可从实现计算系统202接收删除消息。这向实现计算系统201告知实现计算系统202确认在实现计算系统201请求下已经删除了先前请求的操作。因此,删除消息从实现计算系统202向实现计算系统201的传送导致了从删除状态502到结束状态505的转换521。
当处于完成状态503时,实现计算系统201可向实现计算系统202发送关闭消息。这向实现计算系统202告知先前的请求是成功的。因此,关闭消息从实现计算系统201向实现计算系统202的传送导致了从完成状态503到关闭状态504的转换512。
当在关闭状态504时,实现计算系统201可从实现计算系统202接收关闭消息。这向实现计算系统201告知实现计算系统202已成功完成了操作。因此,关闭消息从实现计算系统202向实现计算系统201的传送导致了从关闭状态504到结束状态505的转换524。
还是在完成状态503时,实现计算系统201可向实现计算系统202传送补偿消息。这向实现计算系统202告知已经完成的工作应当被取消到一合理范围(undone to the extent reasonable)。因此,补偿消息从实现计算系统201向实现计算系统202的传送导致了从完成状态503到补偿状态506的转换513。
当在补偿状态506时,实现计算系统201可从实现计算系统202接收补偿消息。这向实现计算系统202告知补偿动作已成功。因此,补偿消息从实现计算系统202向实现计算系统201的传送导致了从补偿状态506到结束状态505的转换525。
可选地,当在补偿状态506时,实现计算系统201可从实现计算系统202接收错误消息。这向实现计算系统201告知实现计算系统202已经从补偿状态506失败。因此,错误消息从实现计算系统202向实现计算系统201的传送导致了从补偿状态506到错误状态507的转换527。
当在错误状态507时,实现计算系统201可向实现计算系统202传送忽略消息。这向实现计算系统202告知实现计算系统201已知道该错误。因此,忽略消息从实现计算系统202向实现计算系统201的传送导致了从错误状态507到结束状态505的转换514。
图6示出了代码生成计算系统301自动生成对测试计算系统401使用消息交换模式应用以遵从消息交换模式从事消息交易的能力进行测试的代码的方法600的流程图。代码允许模拟而无需测试计算系统401从事与其它机构的消息交易,或甚至在某些情形中无需与其它计算系统进行通信。方法600将不时参照图5的特定示例消息交换模式定义进行描述。
代码生成计算系统访问诸如上述消息交换模式定义的消息交换模式定义(动作601)。然后代码生成计算系统执行功能性的、面向结果的步骤,用来通过使用消息交换模式定义自动生成消息交换模式模拟代码(步骤610)。步骤610可包括完成该结果的任意相应特定动作。然而,在图示实施例中,步骤610包括对应动作611和612。
特别地,对于消息交换模式定义在其中允许有效传送消息由测试计算系统进行传送的每个状态,代码生成计算系统自动生成了至少模拟有效传送消息的传送的代码(动作611)。例如,考虑图5的活动状态501。活动状态501允许一有效消息被传送,一删除消息。指示有3%的几率,该删除消息将被传送。该百分比可由消息交换模式定义指定和/或可由用户或代码生成计算系统指定。与该传送相关联的百分比可在测试过程中随时间动态改变。为了模拟删除消息的有条件传送,代码生成计算系统可生成遵从以下伪码文档的代码,加上行号是为了便于后面作解释。1. main2. {3. Do State501()4. {5. Flip a Coin6. ifCoin is in 3% range7. Send(Cancel)8. Go to DoState5029. end if10. }11. .12. .13. .14. }
在该伪码中,主程序创建时,其标题在行1,其开始括弧在行2,而其结束括弧在行14。然后,称为DoState501的子例程生成。行3标识了括在行4的开始括弧、行10的结束括弧中的子例程。然后代码生成以产生伪随机值(见行5)。然后条件代码生成,从而如果合适,在给定了随机值(见行6)后,至少模拟删除消息的传送(见行7),且代码生成以把执行推进到下一状态(见行8),从而转换到下一适当状态。
回来看图6,对于消息交换模式定义在其中允许有效接收消息进行接收的每个状态,代码生成计算系统生成了模拟有效接收消息的接收及转换到表示要转换的状态的其它代码的代码。例如,活动状态501允许三条有效消息的接收:退出消息有10%的出现几率、完成消息有75%的出现几率、以及错误消息有2%的出现几率。这通过如下把附加条件语句添加到相同的DoState501子例程中,在示例伪码中模拟:1. main2. {3. Do State501()4. {5. Flip a Coin6. if Coin is in the appropriate 3% range7. Send(Cancel)8. Go to DoState5029. end if10. if Coin is in the appropriate 10% range11. Receive(Exited)12. Go to DoState50513. end if14. if Coin is in the appropriate 75% range15. Receive(Completed)16. Go to DoState50317. end if18. if Coin is in the appropriate 2% range19. Receive(Faulted)20. Go to DoState50721. end if22. }23. .24. .25. .26. }
注意有条件执行的伪码的添加,用来模拟接收退出消息,状态适当地转换到状态505(见行10-13)、模拟接收完成消息,状态适当地转换到状态503(见行14-17)、以及模拟接收错误消息,状态适当地转换到状态507(见行18-21)。
另外,通过把正出现几率分配给一些无效消息的传送或接收,可模拟无效消息的传送或接收。这些无效消息可能不由消息交换模式定义指定,因为它们不遵从消息交换模式。相反,它们可由用户或代码生成计算系统输入。例如,当处于活动状态501,可传送无效消息,如箭头541所示(有7%的出现几率)。还有,可接收无效消息,如箭头542所示(有3%的出现几率)。模拟无效消息的接收和传送,使得模拟能对不得不处理不符合消息交换模式的真切可能性进行测试。类似的代码也可为这些无效消息自动生成。例如,以下伪码扩展了前例,以生成有条件地模拟无效消息的传送(见行25-27)和接收(见行22-24)的代码。1. main2. {3. Do State501()4. {5. Flip a Coin6. if Coin is in the appropriate 3%range7. Send(Cancel)8. Go to DoState5029. end if10. if Coin is in the appropriate 10%range11. Receive(Exited)12. Go to DoState50513. end if14. if Coin is in the appropriate 75% range15. Receive(Completed)16. Go to DoState50317. end if18. if Coin is in the appropriate 2% range19. Receive(Faulted)20. Go to DoState50721. end if22. if Coin is in the appropriate 3% range23. Receive(Invalid Message)24. end if25. if Coin is in the appropriate 7% range26. Send(Invalid Message)27. end if28. }29. .30. .31. .32. }
也可执行该生成过程用以为其它有自身分支可能的状态(例如状态502直到507)生成子例程。代码生成过程涉及产生主程序(例如程序“main”)、为每个状态产生子例程、为多个事件可能出现的每个状态产生随机号码、及随后基于该随机号码有条件地执行该事件。由于这是高度过程化的的过程,在判断调用方面很少涉及,代码生成过程可以是高度自动化的。任何用户干预,如果有,也是微不足道的。例如,用户可能需要为每个有效消息类型估计出现几率,并指示无效消息的接收或传送是否会出现(以及相关联几率)。然而,用户将不会真正需要编写代码本身。因此,更容易生成代码。
此外,可创作“发送”和“接收”功能来仅仅模拟在真实部署中会发生的消息的传送和接收。因此,并不需要依靠最终将参与消息交换模式的其它机构的合作,才能测试消息交换模式应用。在一实施例中,传送和接收本身可以被模拟,使得模拟并不产生真实网络通信量,从而保存了网络资源。
本发明可以其它特定形式呈现,而不会背离其精神或实质特征。所描述的实施例在所有方面都被视为仅仅是说明性的,而不是限制性的。因此本发明的范围由所附权利要求书而不是前面的说明书来指示。所有在权利要求同等体含义和范围之内的改变都被包括在其范围里。
Claims (32)
1.在包括能够执行系统存储器中的计算机可执行指令的一个或多个处理器的代码生成计算系统中,一种所述代码生成计算系统自动生成对测试计算系统使用消息交换模式应用来遵从一消息交换模式从事消息交易的能力进行测试的代码的方法,其特征在于,所述方法包括:
一访问一个定义多种状态的一消息交换模式定义的动作,所述消息交换模式定义对于所述多个状态的每一个,还具有:符合该状态的所述消息交换模式的一个或多个有效消息的指示、给定该状态时哪个计算系统可传送每个有效消息的指示、以及一状态转换指示,用于至少部分所述有效消息标识假如所述有效消息出现则要转换到的所述多个状态之一;
对于所述消息交换模式定义允许一有效传送消息由所述测试计算系统进行传送的每个状态,一生成代码的动作,所述代码至少模拟有效传送消息传送,并且如果所述有效传送消息被传送,转换成表示要转换的所述状态的其它代码;以及
对于所述消息交换模式定义允许一有效接收消息由所述测试计算系统进行接收的每个状态,一生成代码的动作,所述代码至少模拟有效接收消息接收,并且如果所述有效接收消息被接收,转换成表示要转换的所述状态的其它代码。
2.如权利要求1所述的方法,其特征在于,所述消息交换模式定义指示当在一特定状态时,可传送多个有效传送消息的任一个。
3.如权利要求2所述的方法,其特征在于,所述消息交换模式定义为所述特定状态的所述多个有效传送消息的每一个指示给定所述特定状态时会传送所述多个有效传送消息的每一个的百分比几率,其中所述方法还包括自动生成代码,用于自动模拟所述多个有效传送消息的每一个并在给定所述传送时执行适当的状态转换。
4.如权利要求3所述的方法,其特征在于,还包括:
一生成代码的动作,其产生一伪随机值并基于所述伪随机值和所述几率选择所述多个有效传送消息之一用于传送。
5.如权利要求1所述的方法,其特征在于,对于至少一个状态还包括:
产生至少模拟一无效传送消息传送的代码的动作。
6.如权利要求5所述的方法,其特征在于,还指示在给定所述特定状态时所述无效传送消息将被传送的百分比几率,其中所述方法还包括一生成代码的动作,其产生一伪随机值并基于所述伪随机值和所述几率选择所述多个无效传送消息之一用于传送。
7.如权利要求5所述的方法,其特征在于,所述消息交换模式定义指示当处于一特定状态时,可接收多个有效接收消息的任一个。
8.如权利要求7所述的方法,其特征在于,所述消息交换模式定义为所述特定状态的所述多个有效接收消息的每一个指示给定所述特定状态时会接收所述多个有效接收消息的每一个的百分比几率,其中所述方法还包括自动生成代码,用于自动模拟所述多个有效接收消息的每一个并在给定所述传送时执行适当的状态转换。
9.如权利要求8所述的方法,其特征在于,还包括:
一生成代码的动作,其产生一伪随机值并基于所述伪随机值和所述几率选择所述多个有效接收消息之一用于模拟接收。
10.如权利要求1所述的方法,其特征在于,对于至少一个状态还包括以下:
产生模拟无效接收???消息接收的代码的动作。
11.如权利要求10所述的方法,其特征在于,还指示在给定所述特定状态时所述无效接收消息将被接收的百分比几率,其中所述方法还包括一生成代码的动作,其产生一伪随机值并基于所述伪随机值和所述几率选择所述无效接收消息之一用于模拟接收。
12.如权利要求1所述的方法,其特征在于,使用web服务描述语言(WSDL)标准来定义所述消息交换模式定义。
13.如权利要求1所述的方法,其特征在于,所述消息交换模式定义还定义在特定状态中要施加的定时政策。
14.一种在包括能够执行系统存储器中的计算机可执行指令的一个或多个处理器的代码生成计算系统中使用的计算机程序产品,所述计算机程序产品用于执行一种方法使所述代码生成计算系统自动生成代码,其中所述代码对测试计算系统使用消息交换模式应用以遵从一消息交换模式从事消息交易的能力进行测试,包括多种计算机可读介质之一的所述计算机程序产品在由所述代码生成计算系统的一个或多个处理器执行时,促使所述代码生成计算系统执行所述方法,其特征在于,所述方法包括以下:
访问定义有多种状态的消息交换模式定义的动作,所述消息交换模式定义对于所述多个状态的每一个还具有:符合所述状态的所述消息交换模式的一个或多个有效消息的指示,在给定所述状态时哪个计算系统可传送每个有效消息的指示,以及一状态转换指示,用于如果所述有效消息呈现,至少部分所述有效消息标识要转换成的所述多个状态之一;
对于所述消息交换模式定义在其中允许有效传送消息由所述测试计算系统进行传送的每个状态,一生成代码的动作,所述代码至少模拟有效传送消息的传送,并且如果所述有效传送消息被传送,转换成表示要转换的所述状态的其它代码;
对于所述消息交换模式定义在其中允许一有效接收消息由所述测试计算系统进行接收的每个状态,一生成代码的动作,所述代码至少模拟有效接收消息的接收,并且如果所述有效接收消息被接收,转换成表示要转换的所述状态的其它代码。
15.如权利要求14所述的计算机程序产品,其特征在于,所述消息交换模式定义指示当在一特定状态时,可传送多个有效传送消息的任一个。
16.如权利要求15所述的计算机程序产品,其特征在于,所述消息交换模式定义为所述特定状态的所述多个有效传送消息的每一个指示一给定所述特定状态时会传送所述多个有效传送消息的每一个的百分比几率,其中所述方法还包括自动生成代码,用于至少模拟所述多个有效传送消息的每一个并在给定所述传送时执行适当的状态转换。
17.如权利要求16所述的计算机程序产品,其特征在于,还包括以下:
一生成代码的动作,其产生一伪随机值并基于所述伪随机值和所述几率选择用来传送的所述多个有效传送消息之一。
18.如权利要求14所述的计算机程序产品,其特征在于,对于至少一个状态还包括以下:
产生至少模拟一无效传送消息传送的代码的动作。
19.如权利要求18所述的计算机程序产品,其特征在于,还指示给定所述特定状态时所述无效传送消息将被传送的百分比几率,其中所述方法还包括一生成代码的动作,其产生一伪随机值并基于所述伪随机值和所述几率选择用来传送的所述多个有效传送消息之一。
20.如权利要求14所述的计算机程序产品,其特征在于,所述消息交换模式定义指示当在一特定状态时,可接收多个有效接收消息的任一个。
21.如权利要求20所述的计算机程序产品,其特征在于,所述消息交换模式定义为所述特定状态的所述多个有效接收消息的每一个指示给定所述特定状态时将接收所述多个有效接收消息的每一个的百分比几率,其中所述方法还包括自动生成代码,用于自动模拟所述多个有效接收消息的每一个并在给定所述接收时执行适当的状态转换。
22.如权利要求21所述的计算机程序产品,其特征在于,还包括以下:
一生成代码的动作,其产生一伪随机值并基于所述伪随机值和所述几率选择用来接收的所述多个有效接收消息之一。
23.如权利要求14所述的计算机程序产品,其特征在于,对于至少一个状态还包括以下:
产生至少模拟一无效传送消息接收的代码的动作。
24.如权利要求23所述的计算机程序产品,其特征在于,还指示给定所述特定状态时所述无效接收消息将被接收的百分比几率,其中所述方法还包括一生成代码的动作,其产生一伪随机值并基于所述伪随机值和所述几率选择用来接收的所述多个有效接收消息之一。
25.如权利要求14所述的计算机程序产品,其特征在于,使用web服务描述语言(WSDL)标准来定义所述消息交换模式定义。
26.如权利要求14所述的计算机程序产品,其特征在于,所述消息交换模式定义还定义在特定状态中要施加的定时政策。
27.如权利要求14所述的计算机程序产品,其特征在于,所述一种或多种计算机可读介质是物理介质。
28.如权利要求27所述的计算机程序产品,其特征在于,所述一种或多种计算机可读介质包括系统存储器。
29.如权利要求27所述的计算机程序产品,其特征在于,所述一种或多种计算机可读介质包括持久存储器。
30.如权利要求29所述的计算机程序产品,其特征在于,所述持久存储器是磁盘。
31.在包括能够执行系统存储器中的计算机可执行指令的一个或多个处理器的代码生成计算系统中,一种代码生成计算系统自动生成代码的方法,所述代码对测试计算系统使用消息交换模式应用以遵从一消息交换模式从事消息交易的能力进行测试,所述方法包括以下:
访问定义有多种状态的消息交换模式定义的动作,所述消息交换模式定义对于所述多个状态的每一个还具有:符合所述状态的所述消息交换模式的一个或多个有效消息的指示、给定所述状态时哪个计算系统可传送每个有效消息的指示、以及一状态转换指示,用于如果所述有效消息出现至少部分所述有效消息标识要转换的所述多个状态之一;以及
使用所述消息交换模式定义来自动生成消息交换模式模拟代码的步骤。
32.如权利要求31所述的方法,其特征在于,使用所述消息交换模式定义来自动生成消息交换模式模拟代码的所述步骤包括:
对于所述消息交换模式定义在其中允许一有效传送消息由所述测试计算系统进行传送的每个状态,生成代码的动作,所述代码至少模拟有效传送消息传送,并且如果所述有效传送消息被传送,转换成表示要转换的所述状态的其它代码;
对于所述消息交换模式定义在其中允许一有效接收消息由所述测试计算系统进行接收的每个状态,生成代码的动作,所述代码至少模拟有效接收消息的接收,并且如果所述有效接收消息被接收,转换成表示要转换的所述状态的其它代码。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/763,311 US7370317B2 (en) | 2004-01-23 | 2004-01-23 | Automated generation of message exchange pattern simulation code |
US10/763,311 | 2004-01-23 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1645824A true CN1645824A (zh) | 2005-07-27 |
CN1645824B CN1645824B (zh) | 2010-05-26 |
Family
ID=34750408
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2005100057994A Expired - Fee Related CN1645824B (zh) | 2004-01-23 | 2005-01-24 | 消息交换模式模拟代码的自动生成 |
Country Status (17)
Country | Link |
---|---|
US (1) | US7370317B2 (zh) |
EP (1) | EP1577777A3 (zh) |
JP (1) | JP5008829B2 (zh) |
KR (1) | KR101031960B1 (zh) |
CN (1) | CN1645824B (zh) |
AU (1) | AU2004240189B8 (zh) |
BR (1) | BRPI0405719A (zh) |
CA (1) | CA2490593A1 (zh) |
IL (1) | IL165890A (zh) |
MX (1) | MXPA05000417A (zh) |
MY (1) | MY145248A (zh) |
NO (1) | NO20050334L (zh) |
NZ (1) | NZ537524A (zh) |
RU (1) | RU2373565C2 (zh) |
SG (1) | SG113532A1 (zh) |
TW (1) | TWI362002B (zh) |
ZA (1) | ZA200410330B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2838217B1 (fr) * | 2002-04-05 | 2004-06-25 | De Chelle Yvonne Auberlet | Procede et dispositif de generation de logiciels executables sur mesure et evolutifs sans programmation informatique |
US20060184914A1 (en) * | 2005-02-17 | 2006-08-17 | Microsoft Corporation | Random code generation |
US7930683B2 (en) * | 2006-03-31 | 2011-04-19 | Sap Ag | Test automation method for software programs |
US20100290854A1 (en) * | 2006-08-23 | 2010-11-18 | Tsudakoma Kogyo Kabushikikaisha | Machining head for machine tool |
US8056090B2 (en) * | 2007-06-29 | 2011-11-08 | International Business Machines Corporation | Reducing layering overhead in collective communication operations |
US8984120B2 (en) * | 2010-12-16 | 2015-03-17 | International Business Machines Corporation | Determining an unexpected disconnect event constraint within a text exchange session |
TWI564711B (zh) * | 2016-02-05 | 2017-01-01 | 立端科技股份有限公司 | 節省網路能源之方法 |
DE102020107141B4 (de) | 2020-03-16 | 2022-03-17 | Dspace Gmbh | Simulieren einer Steuergerätekommunikation zwischen einem zu testenden Steuergerät und mindestens einem weiteren Steuergerät |
US11366705B1 (en) * | 2021-07-29 | 2022-06-21 | Apex.AI, Inc. | Deterministic replay of events between software entities |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5557798A (en) | 1989-07-27 | 1996-09-17 | Tibco, Inc. | Apparatus and method for providing decoupling of data exchange details for providing high performance communication between software processes |
JPH03295339A (ja) * | 1990-04-13 | 1991-12-26 | Oki Electric Ind Co Ltd | プロトコル検証用試験方式 |
JPH06149618A (ja) * | 1992-11-10 | 1994-05-31 | Matsushita Electric Ind Co Ltd | 自動実行装置および自動実行方法 |
JP3075664B2 (ja) * | 1994-03-07 | 2000-08-14 | ケイディディ株式会社 | 通信プロトコル適合性試験装置 |
JPH0847014A (ja) * | 1994-07-27 | 1996-02-16 | Toshiba Corp | 交換機ソフトウェアの開発支援/保守方式 |
JPH08235098A (ja) * | 1995-02-22 | 1996-09-13 | Mitsubishi Electric Corp | 分散アプリケーション通信方式 |
JP4253056B2 (ja) * | 1998-08-03 | 2009-04-08 | 株式会社東芝 | テスト装置、テストケース評価装置、およびテスト結果解析装置 |
JP2000322288A (ja) * | 1999-05-06 | 2000-11-24 | Fujitsu Ltd | 分散オブジェクト開発システム、および、分散オブジェクト開発をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体 |
US7366759B2 (en) * | 2001-02-22 | 2008-04-29 | Parity Communications, Inc. | Method and system for characterizing relationships in social networks |
US7020850B2 (en) | 2001-05-02 | 2006-03-28 | The Mathworks, Inc. | Event-based temporal logic |
EP1337080A3 (en) * | 2002-02-15 | 2005-06-08 | Hitachi, Ltd. | Method of controlling the network devices |
CN1452352A (zh) * | 2002-04-19 | 2003-10-29 | 上海广电信息产业股份有限公司 | 通过互联网实现智能家用电器设备远程控制的系统和方法 |
US7689430B2 (en) * | 2002-12-16 | 2010-03-30 | International Business Machines Corporation | Access to web services |
JP4403794B2 (ja) | 2003-02-28 | 2010-01-27 | 株式会社デンソー | 制御プログラムの検査方法及び検査装置及び検査プログラム |
US20050080608A1 (en) | 2003-06-30 | 2005-04-14 | Joe Burns | Simulator for request/response systems |
US6920410B2 (en) * | 2003-07-08 | 2005-07-19 | Hewlett-Packard Development Company, L.P. | Systems and methods for testing a network service |
US7451211B2 (en) | 2004-01-23 | 2008-11-11 | Microsoft Corporation | Message exchange pattern tracking to avoid invalid message exchange |
-
2004
- 2004-01-23 US US10/763,311 patent/US7370317B2/en not_active Expired - Fee Related
- 2004-12-08 SG SG200407367A patent/SG113532A1/en unknown
- 2004-12-15 EP EP04029708A patent/EP1577777A3/en not_active Ceased
- 2004-12-17 AU AU2004240189A patent/AU2004240189B8/en not_active Ceased
- 2004-12-20 RU RU2004137211/09A patent/RU2373565C2/ru not_active IP Right Cessation
- 2004-12-21 IL IL165890A patent/IL165890A/en not_active IP Right Cessation
- 2004-12-21 CA CA002490593A patent/CA2490593A1/en not_active Abandoned
- 2004-12-21 BR BR0405719-8A patent/BRPI0405719A/pt not_active IP Right Cessation
- 2004-12-22 ZA ZA200410330A patent/ZA200410330B/en unknown
- 2004-12-22 KR KR1020040110466A patent/KR101031960B1/ko not_active IP Right Cessation
- 2004-12-22 TW TW093140098A patent/TWI362002B/zh not_active IP Right Cessation
- 2004-12-23 MY MYPI20045349A patent/MY145248A/en unknown
-
2005
- 2005-01-06 NZ NZ537524A patent/NZ537524A/en not_active IP Right Cessation
- 2005-01-07 MX MXPA05000417A patent/MXPA05000417A/es active IP Right Grant
- 2005-01-21 JP JP2005014569A patent/JP5008829B2/ja not_active Expired - Fee Related
- 2005-01-21 NO NO20050334A patent/NO20050334L/no not_active Application Discontinuation
- 2005-01-24 CN CN2005100057994A patent/CN1645824B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1645824B (zh) | 2010-05-26 |
US7370317B2 (en) | 2008-05-06 |
RU2004137211A (ru) | 2006-05-27 |
US20050166186A1 (en) | 2005-07-28 |
TWI362002B (en) | 2012-04-11 |
KR101031960B1 (ko) | 2011-04-29 |
SG113532A1 (en) | 2005-08-29 |
AU2004240189B2 (en) | 2010-04-01 |
IL165890A0 (en) | 2006-01-15 |
BRPI0405719A (pt) | 2005-09-20 |
JP5008829B2 (ja) | 2012-08-22 |
MXPA05000417A (es) | 2005-08-16 |
CA2490593A1 (en) | 2005-07-23 |
AU2004240189A1 (en) | 2005-08-11 |
MY145248A (en) | 2012-01-13 |
EP1577777A2 (en) | 2005-09-21 |
ZA200410330B (en) | 2006-09-27 |
EP1577777A3 (en) | 2008-08-27 |
RU2373565C2 (ru) | 2009-11-20 |
AU2004240189B8 (en) | 2010-04-29 |
JP2005209209A (ja) | 2005-08-04 |
NZ537524A (en) | 2006-06-30 |
IL165890A (en) | 2010-04-15 |
NO20050334L (no) | 2005-07-25 |
NO20050334D0 (no) | 2005-01-21 |
KR20050076808A (ko) | 2005-07-28 |
TW200527291A (en) | 2005-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1645824A (zh) | 消息交换模式模拟代码的自动生成 | |
CN109767271B (zh) | 基于区块链的抽奖方法和设备 | |
CN104598257B (zh) | 远程应用程序运行的方法和装置 | |
CN100471113C (zh) | 高速缓存后的置换 | |
US20140108589A1 (en) | Testing an executable binary file using an injection proxy | |
CN1471009A (zh) | 适用于设备资源的基于身份的分布式计算系统 | |
CN101197812A (zh) | 一种实现页面调用的系统及方法 | |
CN105657000A (zh) | 消息传送方法及装置 | |
CN103399894A (zh) | 一种基于共享存储池的分布式事务处理方法 | |
CN105513150A (zh) | 签到方法及装置 | |
CN115145806A (zh) | 一种数据采集方法、装置、以及计算机可读存储介质 | |
RU2005114224A (ru) | Гибкое управление контекстом для сеансов перечисления с использованием обмена контекстом | |
CN102959529A (zh) | 用于缓存的网络的广播协议 | |
CN107437036B (zh) | 基于角色的访问控制方法、装置及系统 | |
CN102984282B (zh) | 智能终端获取云存储文件的媒体数据的方法和装置 | |
US20080313200A1 (en) | Method and apparatus for data exploration | |
CN108009247B (zh) | 信息推送方法及装置 | |
Frittelli et al. | A choreography-driven approach to APIs: The OpenDXL case study | |
CN114546410A (zh) | 一种基于设计模式的代码优化方法及相关设备 | |
CN116781780A (zh) | 请求处理方法、装置、服务器和存储介质 | |
KR101951430B1 (ko) | Dds 기반 고해상도 공학급 모델 간 계층적 분산 시뮬레이션 장치 및 방법 | |
US9172729B2 (en) | Managing message distribution in a networked environment | |
CN118409757B (zh) | 分布式编译方法、装置、计算机程序产品、设备及介质 | |
KR101079145B1 (ko) | 데이터 분산 서비스 시스템의 효율적 개발을 위한 토픽 통합 관리 서버, 토픽 통합 관리 시스템 및 토픽 통합 관리 방법 그리고 이를 행하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 매체 | |
Mirisaee et al. | A framework for context-aware university mobile organizer |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100526 Termination date: 20130124 |