跨多个组件的场景测试可编纂性的制作方法

文档序号:6439327阅读:186来源:国知局
专利名称:跨多个组件的场景测试可编纂性的制作方法
跨多个组件的场景测试可编纂性
背景技术
软件总是存在的,并是许多现代技术的实现者。随着技术的进步,软件变得越来越复杂。当前,应用程序可包括多个交互的组件,这些组件常常是在一个堆栈或其他更复杂的层次结构中分层的。为了避免这样的复杂性中的非故意的后果,软件测试是重要的。为了正确地测试软件,使软件经历各种场景,包括一些通常预期的场景,以及潜在地一些边界情况。如果在通过场景运行软件的过程中检测到软件缺陷,则随后可以校正该缺陷。在非正式的测试环境中,可以由测试者在运行时手动创建这些场景。然而,为了取得更加可控的测试,常常编写公式化写成的场景描述,并将它们用于引导软件通过各种预定场景。为自动化这样的测试,甚至可以常常编写符合可以由计算系统解释的模式的场景描述。然后,当软件在由描述所定义的场景中运行时,计算系统使用这些描述来引导对软件的自动化测试。当测试具有多个组件或层的软件时,当检测到缺陷时,由于组件或层之间的抽象, 会难以确定哪一个软件组件或层将导致缺陷。此外,通常,常常对于每一个层编写不同的场景描述,以计及一个层的期待的不同的功能,因为该层运行通过其唯一功能来支持整个场景。此外,如果软件或应用程序编程接口应该改变,则场景描述也常常改变,以计及软件和 /或不同的应用程序编程接口结构的已改变的功能。

发明内容
此处所描述的至少一个实施例涉及使用场景描述来测试多层软件,该场景描述包括多个动作描述,该多个动作描述各自根据场景流相互关联。测试软件针对软件中的至少一些层中的每一层运行。对于每一层,标识执行上下文。然后,代码被标识,并对于每一个动作描述和每一个执行上下文运行。此处所描述的一些实施例准许应用程序的多个层中的特定缺陷的源被比较轻松地标识。此外,接受测试的软件中的更改不要求重新起草方案或动作描述。本概述并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。附图简述为了描述可以获得本发明的上文所列举的及其他优点和特征的方式,下面将通过参考附图来呈现对各实施例的更具体的描述。可以理解,这些附图只描绘了示例实施例,并且因此不被认为是对其范围的限制,将通过使用附图并利用附加特征和细节来描述和解释各实施例,在附图中

图1示出了可以用来利用此处所描述的各实施例的示例计算系统;图2A示出了可包括任意数量的层的多层软件;图2B示出了多层软件的替换的配置;图3示出了示例场景描述;
图4示出了其中代码与执行上下文1到5和动作A到D相关联的代码图;以及图5示出了根据此处所描述的原理的计算系统测试多层软件的方法的流程图。详细描述根据此处所描述的实施例,描述了对多层软件的测试。测试是使用场景描述实现的,该场景描述包括多个动作描述,每一个动作描述都根据场景流而相互关联。测试软件是对照软件中的至少一些层中的每一层运行。对于每一层,标识执行上下文。代码在随后被标识,并对于每一个动作描述和每一个执行上下文运行。首先,将参考图1来描述关于计算系统的一些引导性讨论。然后,将参考图2到5来描述测试的实施例。首先,参考图1来描述关于计算系统的介绍性讨论。计算系统现在越来越多地采取多种多样的形式。计算系统可以例如是手持式设备、电器、膝上型计算机、台式计算机、大型机、分布式计算系统,或者甚至通常不被视为计算系统的设备。在本说明书以及权利要求书中,术语“计算系统”被广义地定义为包括任何设备或系统(或其组合),该设备或系统包含至少一个物理有形的处理器以及其上能含有可由处理器执行的计算机可执行指令的物理有形的存储器。存储器可以采取任何形式,并可以取决于计算系统的特性和形式。计算系统可以分布在网络环境中,并可包括多个组分计算系统。如图1所示,在其最基本的配置中,计算系统100通常包括至少一个处理单元102和存储器104。存储器104可以是物理系统存储器,该物理系统存储器可以是易失性、非易失性、或两者的某种组合。术语“存储器” 在此也可用来指诸如物理存储介质等非易失性大容量存储。如果计算系统是分布式的,则处理、存储器和/或存储能力也可以是分布式的。如此处所使用的那样,术语“模块”或“组件”可以指在计算系统上执行的软件对象或例程。此处所描述的不同组件、模块、引擎,以及服务可以实现为在计算系统上执行的对象或进程(例如,作为分开的线程)。在随后的描述中,参考由一个或多个计算系统执行的动作描述了各实施例。如果这样的动作是以软件实现的,则执行动作的相关联计算系统的一个或多个处理器响应于已经执行了计算机可执行指令来引导计算系统的操作。这样的操作的示例涉及对数据的操纵。计算机可执行指令(以及被操纵的数据)可以存储在计算系统100的存储器104中。 计算系统100还可包含允许计算系统100例如通过网络110与其他消息处理器通信的通信信道108。本发明的各实施例可包括或利用专用或通用计算机,该专用或通用计算机包括诸如例如一个或多个处理器和系统存储器等计算机硬件,如以下更详细讨论的。本发明范围内的各实施例还包括用于携带或存储计算机可执行指令和/或数据结构的物理介质和其他计算机可读介质。这些计算机可读介质可以是通用或专用计算机系统能够访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质。携带计算机可执行指令的计算机可读介质是传输介质。由此,作为示例而非限制,本发明的各实施例可包括至少两种完全不同类型的计算机可读介质计算机存储介质和传输介质。计算机存储介质包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他磁存储设备、或可用于存储计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的任何其他介质。“网络”被定义为允许在计算机系统和/或模块和/或其他电子设备之间传输电子数据的一个或多个数据链路。当信息通过网络或另一个通信连接(硬连线、无线、或者硬连线或无线的组合)传输或提供给计算机时,该计算机将该连接适当地视为传输介质。传输介质可包括可用于携带计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的网络和/或数据链路。上述的组合也应被包括在计算机可读介质的范围内。此外,在到达各种计算机系统组件之后,计算机可执行指令或数据结构形式的程序代码装置可从传输介质自动传输到计算机存储介质(或反之亦然)。例如,通过网络或数据链路接收到的计算机可执行指令或数据结构可被缓存在网络接口模块(例如,“OTC”) 内的RAM中,然后最终被传输到计算机系统RAM和/或计算机系统处的较不易失性的计算机存储介质。因而,应当理解,计算机存储介质可被包括在还利用(或甚至主要利用)传输介质的计算机系统组件中。计算机可执行指令例如包括,当在处理器处执行时使通用计算机、专用计算机、或专用处理设备执行某一功能或某组功能的指令和数据。计算机可执行指令可以是例如二进制代码、诸如汇编语言之类的中间格式指令、或甚至源代码。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述特征或动作。相反,上述特征和动作是作为实现权利要求的示例形式而公开的。本领域的技术人员将理解,本发明可以在具有许多类型的计算机系统配置的网络计算环境中实践,这些计算机系统配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器的或可编程消费电子设备、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机等等。本发明也可在其中通过网络链接(或者通过硬连线数据链路、无线数据链路,或者通过硬连线和无线数据链路的组合)的本地和远程计算机系统两者都执行任务的分布式系统环境中实施。在分布式系统环境中,程序模块可位于本地和远程存储器存储设备中。图2A示出了多层软件200A。多层软件可包括任意数量的层。此处所描述的原理不限于接受测试的多层软件内的结构或层数。然而,只是说明性的目的,多层软件200A被示为包括作为单个堆栈垂直地排序的5层201A到205A。然而,省略号206A表示此处所描述的原理可以适于对任何层数的,以及任何结构的任何多层软件的测试。例如,接受测试的多层软件可以具有层次上更复杂的结构,或许是树状结构的,而不是简单堆栈。例如,图2B示出了多层软件200B的一个替换性结构。在此情况下,有一个后端服务器20;3B,该后端服务器20 具有可以调用后端服务器20 的两个对应的中间层服务器。 例如,后端服务器20 具有对应的中间层服务器202B和204B。用户接口组件201B与中间层服务器202B接口。另外,两个额外的用户接口组件205B和206B可以调用中间层服务器 204B。在此说明书和权利要求书中,服务器201B、202B、20;3B、204B、205B和206B中的每一个都可以是系统中的不同的层或组件。此处所描述的至少一些实施例可以以这样的方式来测试多层软件,当检测到缺陷时,可以通过或许测试过程的自动化来发现表示缺陷的源的层。下面将进一步描述关于这种自动化的更详细信息。测试可使用场景描述来执行,该场景描述描述了将被应用来测试多层软件的测试场景。每一个场景都可包括特定场景流中要对多层软件执行的一个或多个动作。如此,该场景描述包括多个动作描述,并且除非隐式的,否则或许还包括要作为场景的部分来执行的动作的流的某种指示。例如,场景流可包括其中一个动作在前面的动作完成之后执行的连续的流,其中可以有两个或更多动作被同时执行的并行流,和/或其中一个路径中的动作可以在排除一个或多个其他路径的情况下执行的分叉流。还可有描述多层软件的拓扑的拓扑描述。此拓扑描述可以被包括在场景描述内, 但是,也可以是单独的描述。拓扑描述描述了多层软件的不同的组件如何交互,以及那些层之间的依赖关系。例如,拓扑描述可以描述图2A的拓扑,或者,或许可以描述图2B的更复杂的拓扑。可以咨询拓扑描述以自动标识哪一个组件将导致错误。图3示出了示例场景描述300。在此特定的情况下,场景描述包括以特定场景流配置的四个动作描述301到304,且首先执行动作301,然后,执行两个分支中的一个——要么是按顺序执行动作302和303的第一分支,要么是执行动作304的第二分支。然而,这只是一个示例,因为可以应用此处所描述的原理,而不管顺序流或组成动作的数量或特征如何。 此处所描述的原理的这种广泛的应用通过省略号305以符号方式来表示。每一个动作都可以对应于当动作被实现时实施的特定数据契约。现在将描述一个最终结构,以为描述测试过程本身作准备。图4示出了其中代码与执行上下文1到5和动作A到D相关联的代码图400。执行上下文基本上是多层应用程序中的一层或组件的身份。动作只是对于该特定层的场景的动作。不必使用实际图来执行此处所描述的原理。然而,图被用作功能例示图,示出了可以有对应于执行上下文和动作的特定组合的代码,当将在执行上下文中测试对应的动作时,代码是针对对应的执行上下文而被执行的。例如,在图4中,图400示出了,如果动作A将针对执行上下文5执行,则将检索代码A5,并针对执行上下文5来执行。如果动作C将针对执行上下文2执行,那么,将检索代码C2,并针对执行上下文2来执行。只有几个例外,每一个执行上下文/动作对都具有当对应的动作将针对执行上下文被执行时将被执行的对应的代码。例如,如果将针对执行上下文1执行相应的动作B、C,以及D,则将分别检索代码Bi、Cl,以及Dl,并针对执行上下文1 来执行。如果将针对执行上下文2执行相应的动作A和C,则将分别检索代码A2和C2,并针对执行上下文2来执行。如果将针对执行上下文3执行相应的动作A、B、C,以及D,则将分别检索代码A3、B3、C3和D3,并针对执行上下文3来执行。如果将针对执行上下文4执行相应的动作A、B以及D,则将分别检索代码A4、B4和D4,并针对执行上下文4来执行。最后,如果将针对执行上下文5执行相应的动作A、B、C,以及D,则将分别检索代码A5、B5、C5 和D5,并针对执行上下文5来执行。然而,有四对没有对应的代码,这说明这样的事实并非所有的动作都可以适当地针对特定执行上下文来执行。例如,在图4的具体示例中,动作A不针对执行上下文1执行, 动作B和D不针对执行上下文2执行,而动作C不针对执行上下文4执行。可以咨询拓扑描述以确定如何处理其中没有对应于当前接受测试的执行上下文的动作的情况。在该情况下,例如,如果拓扑描述指示执行上下文4高于执行上下文3,则系统将知道在执行上下文4 中调用C3,因为它察觉到拓扑中隐含的责任和依赖关系的链。图5示出了计算系统测试多层软件的方法500的流程图。当测试多层软件时,方法 500可以对于可能的多种场景中的每一种执行一次,从而,给予测试者关于软件的性能的很好的指示。还可针对不同种类的多层软件执行方法500。上文参考图2的多层软件200描述了多层软件的示例。将在场景描述的指示下执行测试。因此,访问场景描述(动作501)。上文参考图 3的场景描述300描述了场景描述的示例。如上文所提及的,场景描述描述了场景的一个或多个动作,并因此包括根据场景流相互关联的一个或多个动作描述。可以由物理计算系统通过例如让该计算系统的一个或多个物理处理器导致场景描述的存储器内表示被加载到该计算系统的物理存储器中来访问场景描述。还可由物理计算系统在一个或多个物理处理器的指示下执行该方法的其余部分。然后,对于多层软件的多个层(以及潜在地,所有层)中的每一层,通过针对该层运行测试软件来测试该层(动作510)。首先,确定特定层的执行上下文(动作511)。然后, 对于与场景相关联的动作描述的至少一些(或全部)中的每一个动作描述,按照场景流的顺序,对于场景的每一个动作,执行框520的内容。具体而言,标识对应于特定动作描述和执行上下文的代码(动作521)。例如,参考图4的图400,假设执行上下文3将针对它应用动作B,在该情况下,将标识代码B3。然后, 访问已标识的代码,并针对该特定层运行该代码(动作52幻。例如,可以针对执行上下文3 来运行代码B3。作为此执行的一部分,可尊重对应于该动作的数据契约。例如,数据契约可以指定一个动作将导致遵循特定模式的特定对象,并且下一动作将消费该对象。此外,场景流还可以指定对于稍后的动作需要哪些数据,以及在需要时如何检索它。在一个实施例中,将以系统的方式,或许按顺序,针对每一层来运行场景动作,直到发现缺陷的源。假设执行上下文5依赖于执行上下文4的正确操作才能起作用,并且此外该执行上下文4依赖于执行上下文3的正确操作才能起作用。在咨询拓扑描述之后,可以由系统了解此假设。在该情况下,假设当在针对执行上下文5测试动作B时有缺陷出现。 然后,可以针对执行上下文4运行动作B。如果仍发现缺陷,则可以针对执行上下文3来运行动作B。如果没有发现缺陷,那么,系统可以结束,并报告当执行动作B时在执行上下文4 中有缺陷,以及执行上下文4是错误的源。当调试和测试复杂软件(其常常是多层的),标识错误的源有很大的帮助。为进一步阐明此处所描述的原理,现在将描述应用于特定示例多层软件的特定示例场景。在此示例中,按顺序执行场景动作,并如下所示1)创建美国客户2)利用全年订购来创建订单3)执行过程来生成费用和发票4)将时间提前1个月5)执行过程,且不生成发票6)将时间提前1年7)执行过程以生成发票参考动作1 (创建美国客户),多层软件的每一个层将执行不同的任务才能完成该动作。与每一个层相关联的代码将指示对应的层来执行完成整个动作所需的它们的唯一任务。作为再一个示例,提前时间(如在动作4和6中)可以涉及不同的层的不同的任务。对应的被访问的代码是每一个动作和层所特有的,并且因此,将指示每一个层执行提前时间所需的任何任务。如此,可以针对多层软件来测试场景。在多层软件改变的情况下,或许可能有对针对改变的层执行动作的对应的代码的一些更改。然而,场景描述本身不必改变。因此,此处所描述的原理准许灵活使用场景描述来针对多层软件来测试一个场景,而允许特定缺陷的源被更轻松地标识。此外,还可以在负责软件中的不同的层的开发小组之间共享场景描述,以确保针对一致的场景集合来测试每一层。同样,还可以缩小或最小化组件之间的测试缺口,因为可以同时或接近于同时地来测试每一层。最后,由于测试件不绑定到特定实现,因此,不懂技术的人更容易定义、修改,以及评论场景。本发明可具体化为其它具体形式而不背离其精神或本质特征。所描述的实施例在所有方面都应被认为仅是说明性而非限制性的。从而,本发明的范围由所附权利要求书而非前述描述指示。落入权利要求书的等效方案的含义和范围内的所有改变应被权利要求书的范围所涵盖。
权利要求
1.一种计算系统(100)测试多层软件O00)的方法,所述方法包括所述计算系统的一个或多个物理处理器(10 导致场景描述(300)将被加载(501)到所述计算系统的一个或多个物理存储器(104)中的动作,所述场景描述包括多个动作描述 (301,302,303,304,305),所述多个动作描述各自根据场景流相互关联;对于多层软件中的多个层的至少多个层中的每一层(510),所述一个或多个物理处理器运行导致所述计算系统执行下列各项动作的测试软件的动作确定(511)与所述特定层相关联的执行上下文的动作;以及根据所述场景流,并且对于至少一些动作描述的每一个动作描述(520),标识(521)对应于所述特定动作描述以及所述执行上下文的动作,以及针对所述特定层运行(52 所标识的代码的动作。
2.根据权利要求1所述的方法,其特征在于,所述场景流包括连续流。
3.根据权利要求1所述的方法,其特征在于,所述场景流包括并行流。
4.根据权利要求1所述的方法,其特征在于,所述场景流包括分支流。
5.根据权利要求1所述的方法,其特征在于,所述标识对应于所述特定动作描述和所述执行上下文的代码的动作,以及所述针对所述特定层运行所标识的代码的动作两者都是对于所有所述动作描述中的每一个执行的。
6.根据权利要求1所述的方法,其特征在于,对于多个场景描述中的每一个,执行所述方法。
7.根据权利要求1所述的方法,其特征在于,所述一个或多个物理处理器运行所述测试软件的动作是针对所述多层软件中的所述多个层中的全部执行的。
8.根据权利要求1所述的方法,其特征在于,所述一个或多个物理处理器运行所述测试软件的动作是按顺序针对所述多个层中的每一层执行直到发现缺陷的源的。
9.如权利要求1所述的方法,其特征在于,还包括向测试者呈现所述多个层中的每一层的测试结果的动作。
10.如权利要求1所述的方法,其特征在于,还包括向测试者标识所述多个层中的哪一层导致了缺陷的动作。
全文摘要
使用场景描述来测试多层软件,该场景描述包括多个动作描述,每一个动作描述都根据方案流而相互关联。测试软件针对软件中的至少一些层中的每一层运行。对于每一层,标识执行上下文。然后,标识代码,并对于每一个动作描述和每一个执行上下文运行。
文档编号G06F11/36GK102567199SQ20111038299
公开日2012年7月11日 申请日期2011年11月16日 优先权日2010年11月17日
发明者A·M·史密斯, A·克斯南达 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1