一种用于生成测试用例的方法和装置的制造方法
【技术领域】
[0001]本发明涉及软件测试技术领域,尤其涉及一种用于生成测试用例的技术。
【背景技术】
[0002]软件产品开发完成之后,为了保障软件系统能够完成预期需求的功能,需要对软件进行测试。
[0003]自动化测试需通过对系统需求文档的分析,编写代码调用系统接口模拟用户操作路径,在代码文件中指定输入参数、操作步骤及预期结果。然而,现有的这种自动化测试方法为测试人员进行自动化测试用例代码编写及维护,人力成本高,且存在覆盖度无法保证的问题。
【发明内容】
[0004]本发明的目的是提供一种用于生成测试用例的方法和装置。
[0005]根据本发明的一个方面,提供了一种用于生成测试用例的方法,其中,该方法包括以下步骤:
[0006]获取用户所构建的业务状态图;
[0007]根据所述业务状态图,生成对应的状态图代码;
[0008]遍历所述状态图代码,生成对应的测试用例。
[0009]根据本发明的另一个方面,还提供了一种用于生成测试用例的装置,其中,该装置包括:
[0010]用于获取用户所构建的业务状态图的装置;
[0011]用于根据所述业务状态图,生成对应的状态图代码的装置;
[0012]用于遍历所述状态图代码,生成对应的测试用例的装置。
[0013]与现有技术相比,本发明通过将web系统的业务抽象为业务状态图,自动生成状态图代码,遍历状态图自动生成可执行的测试用例代码,将人工编写测试用例代码转化为人工编写业务模型,而将业务模型至测试用例的过程变为自动化,大大降低了人力成本,提高了测试效率,提升了使用体验。进一步地,本发明将人工进行业务操作场景覆盖,转变为全自动对输入参数进行组合遍历、对操作路径进行图遍历,保障了测试覆盖率。
[0014]进一步地,本发明自动化并发执行测试用例,实现对web系统的自动化测试。
[0015]进一步地,本发明为通用性平台,可以应用于web系统的自动化测试场景,方便用户的使用。
[0016]更进一步地,用户无需生成直接可执行的代码,而仅需提交测试服务接口,简化了用户的操作及流程,提高了测试效率,提升了用户的使用体验。
[0017]更进一步地,本发明采用单边交叉遍历、多边交叉遍历状态图代码,生成对应的单边交叉测试用例、多边交叉测试用例,更有效地保障了测试覆盖率。
【附图说明】
[0018]通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
[0019]图1为根据本发明一个方面的用于生成测试用例的装置的结构示意图;
[0020]图2为根据本发明一个实施例的用于生成测试用例的示意图;
[0021]图3为根据本发明另一个实施例的用于生成测试用例的示意图;
[0022]图4为根据本发明另一个方面的用于生成测试用例的方法的流程示意图。
[0023]附图中相同或相似的附图标记代表相同或相似的部件。
【具体实施方式】
[0024]在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
[0025]在上下文中所称“计算机设备”,也称为“电脑”,是指可以通过运行预定程序或指令来执行数值计算和/或逻辑计算等预定处理过程的智能电子设备,其可以包括处理器与存储器,由处理器执行在存储器中预存的存续指令来执行预定处理过程,或是由ASIC、FPGA、DSP等硬件执行预定处理过程,或是由上述二者组合来实现。计算机设备包括但不限于服务器、个人电脑、笔记本电脑、平板电脑、智能手机等。
[0026]所述计算机设备包括用户设备与网络设备。其中,所述用户设备包括但不限于电脑、智能手机、PDA等;所述网络设备包括但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(Cloud Computing)的由大量计算机或网络服务器构成的云,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。其中,所述计算机设备可单独运行来实现本发明,也可接入网络并通过与网络中的其他计算机设备的交互操作来实现本发明。其中,所述计算机设备所处的网络包括但不限于互联网、广域网、城域网、局域网、VPN网络等。
[0027]需要说明的是,所述用户设备、网络设备和网络等仅为举例,其他现有的或今后可能出现的计算机设备或网络如可适用于本发明,也应包含在本发明保护范围以内,并以引用方式包含于此。
[0028]后面所讨论的方法(其中一些通过流程图示出)可以通过硬件、软件、固件、中间件、微代码、硬件描述语言或者其任意组合来实施。当用软件、固件、中间件或微代码来实施时,用以实施必要任务的程序代码或代码段可以被存储在机器或计算机可读介质(比如存储介质)中。(一个或多个)处理器可以实施必要的任务。
[0029]这里所公开的具体结构和功能细节仅仅是代表性的,并且是用于描述本发明的示例性实施例的目的。但是本发明可以通过许多替换形式来具体实现,并且不应当被解释成仅仅受限于这里所阐述的实施例。
[0030]应当理解的是,虽然在这里可能使用了术语“第一”、“第二”等等来描述各个单元,但是这些单元不应当受这些术语限制。使用这些术语仅仅是为了将一个单元与另一个单元进行区分。举例来说,在不背离示例性实施例的范围的情况下,第一单元可以被称为第二单元,并且类似地第二单元可以被称为第一单元。这里所使用的术语“和/或”包括其中一个或更多所列出的相关联项目的任意和所有组合。
[0031]应当理解的是,当一个单元被称为“连接”或“耦合”到另一单元时,其可以直接连接或耦合到所述另一单元,或者可以存在中间单元。与此相对,当一个单元被称为“直接连接”或“直接耦合”到另一单元时,则不存在中间单元。应当按照类似的方式来解释被用于描述单元之间的关系的其他词语(例如“处于...之间”相比于“直接处于...之间”,“与...邻近”相比于“与...直接邻近”等等)。
[0032]这里所使用的术语仅仅是为了描述具体实施例而不意图限制示例性实施例。除非上下文明确地另有所指,否则这里所使用的单数形式“一个”、“一项”还意图包括复数。还应当理解的是,这里所使用的术语“包括”和/或“包含”规定所陈述的特征、整数、步骤、操作、单元和/或组件的存在,而不排除存在或添加一个或更多其他特征、整数、步骤、操作、单元、组件和/或其组合。
[0033]还应当提到的是,在一些替换实现方式中,所提到的功能/动作可以按照不同于附图中标示的顺序发生。举例来说,取决于所涉及的功能/动作,相继示出的两幅图实际上可以基本上同时执行或者有时可以按照相反的顺序来执行。
[0034]下面结合附图对本发明作进一步详细描述。
[0035]图1为根据本发明一个方面的用于生成测试用例的装置的结构示意图。
[0036]该用于生成测试用例的装置(以下简称“测试用例装置I”)包括用于获取用户所构建的业务状态图的装置(以下简称“业务状态图构建装置101”)、用于根据所述业务状态图,生成对应的状态图代码的装置(以下简称“图代码生成装置102”)和用于遍历所述状态图代码,生成对应的测试用例的装置(以下简称“测试用例生成装置103”)。
[0037]其中,业务状态图构建装置101获取用户所构建的业务状态图。
[0038]具体地,业务状态图构建装置101获取用户所构建的业务状态图的方式包括但不限于:
[0039]I)用户构建完业务状态图,通过与该测试用例装置I进行交互,上传其所构建的业务状态图,业务状态图构建装置101例如通过调用API (应用程序接口)等方式,获取该用户所构建的业务状态图。
[0040]2)测试用例装置I提供业务状态图构建平台,将图编辑实现可视化操作,用户直接在该平台上构建业务状态图,例如,用户可以直接在改平台上拖动要素,实现业务状态图的构建、编辑;业务状态图构建装置101根据用户的操作,获
取该用户构建的业务状态图。
[0041]需要说明的是,上述举例仅为更好地说明本发明的技术方案,而非对本发明的限制,本领域技术人员应该理解,任何其他现有的或今后可能出现的获取用户所构建的业务状态图的实现方式,如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。
[0042]优选地,所述业务状态图的要素包括状态、行为及规则。
[0043]具体地,对于业务状态图的状态要素的编辑例如需指定状态名、获取或校验状态的接口 ;对于业务状态图的行为要素的编辑例如需指定行为输入、输出参数或触发行为的接口 ;对于业务状态图的规则要素的编辑例如需指定状态之间的连接关系。
[0044]以图2为例,其为一音乐业务状态图。该图中,圆圈“非VIP”、“普通VIP”及“白金VIP”表示该业务状态图的状态要素;“1、下单白金VIP”、“2、支付白金单子”、“3、下单普通VIP”、“4、支付普通单子”则表示该业务状态图的行为要素;带有箭头指向的边,例如“非VIP”指向“普通VIP”的边、“非VIP”指向“白金VIP”的边、“普通VIP”指向自身的边、“普通VIP”指向“白金VIP”的边、“白金VIP”指向自身的边等,则表示该业务状态图的规则要素。
[0045]需要说明的是,上述举例仅为更好地说明本发明的技术方案,而非对本发明的限制,本领域技术人员应该理解,任何其他现有的或今后可能出现的业务状态图的要素,如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。
[0046]优选地,业务状态图构建装置101还包括用于获取所述用户所提供的测试服务接口的装置(以下简称“测试服务接口获取装置”(未示出))。
[0047]具体地,用户在构建业务状态图时,可以通过封装可调用的服务,将对应的测试服务接口进行上传,例如,将获取所述状态的接口、校验所述状态的接口、触发所述行为的接口或校验所述行为的接口等进行上传,该测试服务接口获取装置获取该用户所提供的测试服务接口,以供后续调用,并生成对应的状态图代码。
[0048]在此,用户无需生成直接可执行的代码,而仅需提交测试服务接口,简化了用户的操作及流程,提高了测试效率,提升了用户的使用体验。
[0049]优选地,所述测试服务接口包括以下至少任一项:
[0050]-获取所述状态的接口;
[0051]-校验所述状态的接口;
[0052]-触发所述行为的接口;
[0053]-校验所述行为的接口。
[0054]例如,以图2为例,当状态“非VIP”通过行为“下单普通VIP”、“支付普通单子”到达状态“普通VIP”时,则该测试用例装置I通过调用上述获取所述状态的接口,获取状态“非VIP” ;通过调用上诉触发所述行为的接口,触发上述行为“下单普通VIP”、“支付普通单子”;通过调用上述校验所述状态的接口,校验该行为达到的状态是否为状态“普通VIP”;通过调用上述校验所述行为的接口,校验上述行为“下单普通VIP”、“支付普通单子”是否正确。
[0055]需要说明的是,上述举例仅为更好地说明本发明的技术方案,而非对本发明的限制,本领域技术人员应该理解,任何其他现有的或今后可能出现的测试服务接口,如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。
[0056]图代码生成装置102根据所述业务状态图,生成对应的状态图代码。
[0057]具体地,图代码生成装置102根据业务状态图构建装置101所获取的用户构建的业务状态图,生成对应的状态图代码,以供测试用例生成装置103调用。
[0058]在此,测试用例装置I根据业务状态图自动生成对应的状态图代码,将人工维护测试用例代码转化为人工维护业务模型,而将业务模型至测试用例的过程变为自动化,大大降低了人力成本,提高了测试效率,提升了使用体验。
[0059]测试用例生成装置103遍历所述状态图代码,生成对应的测试用例。
[0060]具体地,测试用例生成装置103遍历该图代码生成装置102所生成的状态图代码,例如,遍历该状态图代码的边与输入参数,生成对应的测试用例。在此,该测试用例生成装置103遍历状态图代码的方式包括但不限于:
[0061]I)单边遍历该状态图代码,生成对应的单边测试用例。
[0062]例如,如图3的左上图所示,测试用例生成装置103自状态“非VIP”至状态“普通VIP”,即完成对该状态图的一次单边遍历。该测试用例生成装置103可以分别自业务状态图的不同的状态,遍历经过一条“边”,至该业务状态图的另一状态,以实现对该状态图代码的单边遍历,生成对应的单边测试用例。
[0063]在此,该遍历的起点状态和终点状态可以是一致的。例如,如图3的左上图所示,状态“普通VIP”可以经过行为“3、下单普通VIP”或“4、支付普通单子”回到自身的状态,艮P,测试用例生成装置103自状态“普通VIP”,经过行为“3、下单普通VIP”或“4、支付普通单子”,完成对该状态图的一次单边遍历,并回到状态“普通VIP”。
[0064]在此,该测试用例生成装置103还可以采用结对算法,以防止用例数量爆炸。
[0065]2)多边遍历该状态图代码,生成对应的多边测试用例。
[0066]例如,如图3的右上图所示,测试用例生成装置103先自状态“非VIP”至状态“普通VIP”,再自状态“普通VIP”至状态“白金VIP”,即完成对该状态图的一次多边遍历。该测试用例生成装置103可以分别自业务状态图的不同的状态,顺序遍历经过两条或两条以上“边”,至该业务状态图的另一状态,通过对该状态图的多种路径覆盖,实现对该状态图代码的多边遍历,生成对应的多边测试用例。
[0067]在此,该测试用例生成装置103还可以采用正交算法,以防止用例数量爆炸。
[0068]3)单边交叉遍历该状态图代码,生成对应的单边交叉测试用例。
[0069]4)多边交叉遍历该状态图代码,生成对应的多边交叉测试用例。
[0070]我们将在下文具体描述单边交叉遍历状态图代码及多边交叉遍历状态图代码。
[0071]需要说明的是,上述举例仅为更好地说明本发明的技术方案,而非对本发明的限制,本领域技术人员应该理解,任何其他现有的或今后可能出现的遍历状态图代码的方式,如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。
[0072]在此,测试用例装置I通过将web系统的业务抽象为业务状态图,自动生成状态图代码,遍历状态图自动生成可执行的测试用例代码,将人工编写测试用例代码转化为人工编写业务模型,而将业务模型至测试用例的过程变为自动化,大大降低了人力成本,提高了测试效率,提升了使用体验。进一步地,测试用例装置I将人工进行业务操作场景覆盖,转变为全自动对输入参数进行组合遍历、对操作路径进行图遍历,保障了测试覆盖率。
[0073]优选地,所述测试用例生成装置103还包括用于单边交叉遍历所述状态图代码,生成对应的单边交叉测试用例的装置(以下简称“单边交叉测试用例生成装置”(未示出))。
[0074]具体地,单边交叉测试用例生成装置单边交叉遍历图代码生成装置102所生成的状态图代码,例如,单边交叉遍历该状态图代码的边与输入参数,生成对应的单边交叉测试用例。
[0075]如图3的左下图所示,单边交叉测试用例生成装置自状态“非VIP”出发,先调用行为“下单普通VIP”,即下第一单,接着继续调用行为“下单普通VIP”,即下第二单,再调用行为“支付普通单子”,即支付第一单,接着继续调用行为“支付普通单子”,即支付第二单,并至状态“普通VIP”,即完成对该状态图的一次单边交叉遍历,随后,生成对应的单边交叉测试用例。
[0076]在此,单边交叉测试用例为对单个边上的行为进行交叉调用,模拟web系统用户重复调用一个系统功能的场景。
[0077]优选地,所述测试用例生成装置103还包括用于多边交叉遍历所述状态图代码,生成对应的多边交叉测试用例的装置(以下简称“多边交叉测试用例生成装置”(未示出))。
[0078]具体地,多边交叉测试用例生成装置多边交叉遍历图代码生成装置102所生成的状态图代码,例如,多边交叉遍历该状态图代码的边与输入参数,生成对应的多边交叉测试用例。
[0079]如图3的右下图所示,多边交叉测试用例生成装置
自状态“非VIP”出发,先调用行为“下单普通VIP”,即下第一单普通单,接着继续调用行为“下单白金VIP”,即下第二单白金单,再调用行为“支付普通单子”,即支付第一单普通单,接着继续调用行为“支付白金单子”,即支付第二单白金单,并分别至状态“普通VIP”与“白金VIP”,即完成对该状态图的一次多边交叉遍历,随后,生成对应的多边交叉测试用例。
[0080]在此,多边交叉测试用例为同一状态出发不同状态结束的两个边上行为的交叉调用,模拟Web系统用户在一个状态下执行两种系统不同功能的场景。
[0081]在此,测试用例装置I采用单边交叉遍历、多边交叉遍历状态图代码,生成对应的单边交叉测试用例、多边交叉测试用例,更有效地保障了测试覆盖率。
[0082]优选地,该测试用例装置I还包括用于调用所述测试用例,解析并保存所生成的测试结果的装置(以下简称“测试用例调用装置”(未示出))。
[0083]具体地,测试用例调用装置调用该测试用例生成装置103所生成的测试用例,例如,为这些测试用例装载web系统用户ID,并发调用这些测试用例,解析并保存所生成的测试结果。
[0084]在此,测试用例装置I自动化并发执行测试用例,实现对web系统的自动化测试。进一步地,该测试用例装置I为通用性平台,可以应用于web系统的自动化测试场景,方便用户的使用。
[0085]图4为根据本发明另一个方面的用于生成测试用例的方法的流程示意图。
[0086]在步骤S401中,测试用例装置I获取用户所构建的业务状态图。
[0087]具体地,在步骤S401中,测试用例装置I获取用户所构建的业务状态图的方式包括但不限于:
[0088]I)用户构建完业务状态图,通过与该测试用例装置I进行交互,上传其所构建的业务状态图,在步骤S401中,测试用例装置I例如通过调用API (应用程序接口)等方式,获取该用户所构建的业务状态图。
[0089]2)测试用例装置I提供业务状态图构建平台,将图编辑实现可视化操作,用户直接在该平台上构建业务状态图,例如,用户可以直接在改平台上拖动要素,实现业务状态图的构建、编辑;在步骤S401中,测试用例装置I根据用户的操作,获取该用户构建的业务状态图。
[0090]需要说明的是,上述举例仅为更好地说明本发明的技术方案,而非对本发明的限制,本领域技术人员应该理解,任何其他现有的或今后可能出现的获取用户所构建的业务状态图的实现方式,如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。
[0091]优选地,所述业务状态图的要素包括状态、行为及规则。
[0092]具体地,对于业务状态图的状态要素的编辑例如需指定状态名、获取或校验状态的接口 ;对于业务状态图的行为要素的编辑例如需指定行为输入、输出参数或触发行为的接口 ;对于业务状态图的规则要素的编辑例如需指定状态之间的连接关系。
[0093]以图2为例,其为一音乐业务状态图。该图中,圆圈“非VIP”、“普通VIP”及“白金VIP”表示该业务状态图的状态要素;“1、下单白金VIP”、“2、支付白金单子”、“3、下单普通VIP”、“4、支付普通单子”则表示该业务状态图的行为要素;带有箭头指向的边,例如“非VIP”指向“普通VIP”的边、“非VIP”指向“白金VIP”的边、“普通VIP”指向自身的边、“普通VIP”指向“白金VIP”的边、“白金VIP”指向自身的边等,则表示该业务状态图的规则要素。
[0094]需要说明的是,上述举例仅为更好地说明本发明的技术方案,而非对本发明的限制,本领域技术人员应该理解,任何其他现有的或今后可能出现的业务状态图的要素,如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。
[0095]优选地,步骤S401还包括用于获取所述用户所提供的测试服务接口的子步骤(以下简称“子步骤S4011”(未示出))。
[0096]具体地,用户在构建业务状态图时,可以通过封装可调用的服务,将对应的测试服务接口进行上传,例如,将获取所述状态的接口、校验所述状态的接口、触发所述行为的接口或校验所述行为的接口等进行上传,在步骤S4011中,测试用例装置I获取该用户所提供的测试服务接口,以供后续调用,并生成对应的状态图代码。
[0097]在此,用户无需生成直接可执行的代码,而仅需提交测试服务接口,简化了用户的操作及流程,提高了测试效率,提升了用户的使用体验。
[0098]优选地,所述测试服务接口包括以下至少任一项:
[0099]-获取所述状态的接口;
[0100]-校验所述状态的接口;
[0101]-触发所述行为的接口;
[0102]-校验所述行为的接口。
[0103]例如,以图2为例,当状态“非VIP”通过行为“下单普通VIP”、“支付普通单子”到达状态“普通VIP”时,则该测试用例装置I通过调用上述获取所述状态的接口,获取状态“非VIP” ;通过调用上诉触发所述行为的接口,触发上述行为“下单普通VIP”、“支付普通单子”;通过调用上述校验所述状态的接口,校验该行为达到的状态是否为状态“普通VIP”;通过调用上述校验所述行为的接口,校验上述行为“下单普通VIP”、“支付普通单子”是否正确。
[0104]需要说明的是,上述举例仅为更好地说明本发明的技术方案,而非对本发明的限制,本领域技术人员应该理解,任何其他现有的或今后可能出现的测试服务接口,如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。
[0105]在步骤S402中,测试用例装置I根据所述业务状态图,生成对应的状态图代码。
[0106]具体地,在步骤S402中,测试用例装置I根据在步骤S401中所获取的用户构建的业务状态图,生成对应的状态图代码,以供后续步骤调用。
[0107]在此,测试用例装置I根据业务状态图自动生成对应的状态图代码,将人工维护测试用例代码转化为人工维护业务模型,而将业务模型至测试用例的过程变为自动化,大大降低了人力成本,提高了测试效率,提升了使用体验。
[0108]在步骤S403中,测试用例装置I遍历所述状态图代码,生成对应的测试用例。
[0109]具体地,在步骤S403中,测试用例装置I遍历在步骤S402中所生成的状态图代码,例如,遍历该状态图代码的边与输入参数,生成对应的测试用例。在此,在步骤S403中,测试用例装置I遍历状态图代码的方式包括但不限于:
[0110]I)单边遍历该状态图代码,生成对应的单边测试用例。
[0111]例如,如图3的左上图所示,在步骤S403中,测试用例装置I自状态“非VIP”至状态“普通VIP”,即完成对该状态图的一次单边遍历。在步骤S403中,测试用例装置I可以分别自业务状态图的不同的状态,遍历经过一条“边”,至该业务状态图的另一状态,以实现对该状态图代码的单边遍历,生成对应的单边测试用例。
[0112]在此,该遍历的起点状态和终点状态可以是一致的。例如,如图3的左上图所示,状态“普通VIP”可以经过行为“3、下单普通VIP”或“4、支付普通单子”回到自身的状态,艮P,测试用例装置I自状态“普通VIP”,经过行为“3、下单普通VIP”或“4、支付普通单子”,完成对该状态图的一次单边遍历,并回到状态“普通VIP”。
[0113]在此,该测试用例装置I还可以采用结对算法,以防止用例数量爆炸。
[0114]2)多边遍历该状态图代码,生成对应的多边测试用例。
[0115]例如,如图3的右上图所示,在步骤S403中,测试用例装置I先自状态“非VIP”至状态“普通VIP”,再自状态“普通VIP”至状态“白金VIP”,即完成对该状态图的一次多边遍历。在步骤S403中,测试用例装置I可以分别自业务状态图的不同的状态,顺序遍历经过两条或两条以上“边”,至该业务状态图的另一状态,通过对该状态图的多种路径覆盖,实现对该状态图代码的多边遍历,生成对应的多边测试用例。
[0116]在此,该测试用例装置I还可以采用正交算法,以防止用例数量爆炸。
[0117]3)单边交叉遍历该状态图代码,生成对应的单边交叉测试用例。
[0118]4)多边交叉遍历该状态图代码,生成对应的多边交叉测试用例。
[0119]我们将在下文具体描述单边交叉遍历状态图代码及多边交
叉遍历状态图代码。
[0120]需要说明的是,上述举例仅为更好地说明本发明的技术方案,而非对本发明的限制,本领域技术人员应该理解,任何其他现有的或今后可能出现的遍历状态图代码的方式,如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。
[0121]在此,测试用例装置I通过将web系统的业务抽象为业务状态图,自动生成状态图代码,遍历状态图自动生成可执行的测试用例代码,将人工编写测试用例代码转化为人工编写业务模型,而将业务模型至测试用例的过程变为自动化,大大降低了人力成本,提高了测试效率,提升了使用体验。进一步地,测试用例装置I将人工进行业务操作场景覆盖,转变为全自动对输入参数进行组合遍历、对操作路径进行图遍历,保障了测试覆盖率。
[0122]优选地,所述步骤S403还包括用于单边交叉遍历所述状态图代码,生成对应的单边交叉测试用例的子步骤(以下简称“子步骤S4031” (未示出))。
[0123]具体地,在子步骤S4031中,测试用例装置I单边交叉遍历在步骤S402中所生成的状态图代码,例如,单边交叉遍历该状态图代码的边与输入参数,生成对应的单边交叉测试用例。
[0124]如图3的左下图所示,在步骤子S4031中,测试用例装置I自状态“非VIP”出发,先调用行为“下单普通VIP”,即下第一单,接着继续调用行为“下单普通VIP”,即下第二单,再调用行为“支付普通单子”,即支付第一单,接着继续调用行为“支付普通单子”,即支付第二单,并至状态“普通VIP”,即完成对该状态图的一次单边交叉遍历,随后,生成对应的单边交叉测试用例。
[0125]在此,单边交叉测试用例为对单个边上的行为进行交叉调用,模拟web系统用户重复调用一个系统功能的场景。
[0126]优选地,所述步骤S403还包括用于多边交叉遍历所述状态图代码,生成对应的多边交叉测试用例的子步骤(以下简称“子步骤S4032” (未示出))。
[0127]具体地,在步骤S4032中,测试用例装置I多边交叉遍历在步骤S402中所生成的状态图代码,例如,多边交叉遍历该状态图代码的边与输入参数,生成对应的多边交叉测试用例。
[0128]如图3的右下图所示,在子步骤S4032中,测试用例装置I自状态“非VIP”出发,先调用行为“下单普通VIP”,即下第一单普通单,接着继续调用行为“下单白金VIP”,即下第二单白金单,再调用行为“支付普通单子”,即支付第一单普通单,接着继续调用行为“支付白金单子”,即支付第二单白金单,并分别至状态“普通VIP”与“白金VIP”,即完成对该状态图的一次多边交叉遍历,随后,生成对应的多边交叉测试用例。
[0129]在此,多边交叉测试用例为同一状态出发不同状态结束的两个边上行为的交叉调用,模拟web系统用户在一个状态下执行两种系统不同功能的场景。
[0130]在此,测试用例装置I采用单边交叉遍历、多边交叉遍历状态图代码,生成对应的单边交叉测试用例、多边交叉测试用例,更有效地保障了测试覆盖率。
[0131]优选地,该方法还包括用于调用所述测试用例,解析并保存所生成的测试结果的步骤(以下简称“步骤S404” (未示出))。
[0132]具体地,在步骤S404中,测试用例装置I调用在步骤S403中所生成的测试用例,例如,为这些测试用例装载web系统用户ID,并发调用这些测试用例,解析并保存所生成的测试结果。
[0133]在此,测试用例装置I自动化并发执行测试用例,实现对web系统的自动化测试。进一步地,该测试用例装置I为通用性平台,可以应用于web系统的自动化测试场景,方便用户的使用。
[0134]需要注意的是,本发明可在软件和/或软件与硬件的组合体中被实施,例如,本发明的各个装置可采用专用集成电路(ASIC)或任何其他类似硬件设备来实现。在一个实施例中,本发明的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本发明的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本发明的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
[0135]对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此夕卜,显然“包括” 一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
【主权项】
1.一种用于生成测试用例的方法,其中,该方法包括以下步骤: 获取用户所构建的业务状态图; 根据所述业务状态图,生成对应的状态图代码; 遍历所述状态图代码,生成对应的测试用例。2.根据权利要求1所述的方法,其中,所述遍历所述状态图代码,生成对应的测试用例的步骤还包括: -单边交叉遍历所述状态图代码,生成对应的单边交叉测试用例。3.根据权利要求1所述的方法,其中,所述遍历所述状态图代码,生成对应的测试用例的步骤还包括: -多边交叉遍历所述状态图代码,生成对应的多边交叉测试用例。4.根据权利要求1所述的方法,其中,该方法还包括: -调用所述测试用例,解析并保存所生成的测试结果。5.根据权利要求1所述的方法,其中,所述业务状态图的要素包括状态、行为及规则。6.根据权利要求1至5中任一项所述的方法,其中,所述获取用户所构建的业务状态图的步骤还包括: -获取所述用户所提供的测试服务接口。7.根据权利要求6所述的方法,其中,所述测试服务接口包括以下至少任一项: -获取所述状态的接口; -校验所述状态的接口; -触发所述行为的接口; -校验所述行为的接口。8.一种用于生成测试用例的装置,其中,该装置包括: 用于获取用户所构建的业务状态图的装置; 用于根据所述业务状态图,生成对应的状态图代码的装置; 用于遍历所述状态图代码,生成对应的测试用例的装置。9.根据权利要求8所述的装置,其中,所述用于遍历所述状态图代码,生成对应的测试用例的装置还包括: -用于单边交叉遍历所述状态图代码,生成对应的单边交叉测试用例的装置。10.根据权利要求8所述的装置,其中,所述用于遍历所述状态图代码,生成对应的测试用例的装置还包括: -用于多边交叉遍历所述状态图代码,生成对应的多边交叉测试用例的装置。11.根据权利要求8所述的装置,其中,该装置还包括: -用于调用所述测试用例,解析并保存所生成的测试结果的装置。12.根据权利要求8所述的装置,其中,所述业务状态图的要素包括状态、行为及规则。13.根据权利要求8至12中任一项所述的装置,其中,所述用于获取用户所构建的业务状态图的装置还包括: -用于获取所述用户所提供的测试服务接口的装置。14.根据权利要求13所述的装置,其中,所述测试服务接口包括以下至少任一项: -获取所述状态的接口;-校验所述状态的接口;-触发所述行为的接口;-校验所述行为的接口。
【专利摘要】本发明的目的是提供一种用于生成测试用例的方法和装置;获取用户所构建的业务状态图;根据所述业务状态图,生成对应的状态图代码;遍历所述状态图代码,生成对应的测试用例。与现有技术相比,本发明通过将web系统的业务抽象为业务状态图,自动生成状态图代码,遍历状态图自动生成可执行的测试用例代码,将人工编写测试用例代码转化为人工编写业务模型,而将业务模型至测试用例的过程变为自动化,大大降低了人力成本,提高了测试效率,提升了使用体验。进一步地,本发明将人工进行业务操作场景覆盖,转变为全自动对输入参数进行组合遍历、对操作路径进行图遍历,保障了测试覆盖率。
【IPC分类】G06F11/36
【公开号】CN104899136
【申请号】CN201510251389
【发明人】熊倩倩, 宋书青, 王泽光, 杜娇, 艾婷, 张天宇
【申请人】百度在线网络技术(北京)有限公司
【公开日】2015年9月9日
【申请日】2015年5月15日