一种生成测试用例的方法和装置的制作方法

文档序号:6464556阅读:150来源:国知局

专利名称::一种生成测试用例的方法和装置的制作方法
技术领域
:本发明涉及计算机领域,尤其涉及一种生成测试用例的方法和装置。
背景技术
:随着软件业的日益壮大和逐步走向成熟,系统测试的重要性是勿庸置疑的。如何以最少的人力和资源的投入,在最短的时间内完成测试,发现系统缺陷,则设计测试用例的最终目的。测试用例是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实所写程序是否满足某个特定需求。测试用例是按一定的顺序执行的与测试目标相关的测试活动的描述,是确定"怎样"测试。测试用例被看作是有效发现系统缺陷的最小测试测试组。在测试工作中,测试用例的设计是非常重要的,是测试执行的正确性、有效性的基础。如何有效地设计测试用例,一直是测试人员所关注的问题;设计好测试用例,也是保证测试工作的关键因素之一。现有技术中各种系统几乎都是多模块多业务运作的,业务和业务之间存在关联,模块和模块之间也存在关联,但是现有技术中测试用例的设计方法还局限于分析单个模块内的单功能点或关联功能点之间,因此会造成测试不完全的问题,导致被测系统存在的问题不能被及早发现。另外,现有技术中在生成测试用例的过程中存在大量的人工操作,会造成大量的用例遗漏和缺失。
发明内容本发明提供一种设计测试用例的方法,用以解决现有技术中测试用例不完备和因人为操作带来的测试用例缺失的问题。本发明实施例提供一种生成测试用例的方法,包括以下步骤根据被测系统各功能模块间关键动作的关联性生成映射表,其中所述映射表包含存在关联性的关键动作的执行顺序;遍历所述映射表,并在遍历过程中按关键动作之间的执行顺序对存在关联性的每两个关键动作进行组合,生成包括首关键动作和尾关键动作的基础测试组以及基础业务流,其中,每个^出测试组对应一个基础业务流;确定起始测试组,按照第一测试组的尾关键动作与第二的测试组的首关键动作相同,则根据关键动作之间的执行顺序将第二测试组合并到第一测试组的原则,选择测试组与该起始测试组进行合并,并且,每次合并后都以合并后的测试组为起始测试组根据上述原则选择新的测试组进行合并,生成合并测试组和合并业务流,其中每个合并测试组对应一个合并业务流;根据所述基础业务流和/或合并业务流为单位输出测试用例。所述输出测试用例之前还包括,删减所述基础业务流和合并业务流中的重复项。在生成业务流的过程中,利用计数设备对基础业务流和合并业务流以及所述重复项的数目进行统计,从而得到有效业务流的总数,即测试用例的数目,其中,通过基础业务流与合并业务流的总和减去所述重复项的总数得到有效业务流的总数。进一步,当存在多个测试组的首关键动作与所述起始测试组的尾关键动作相同时,则所述多个测试组分别与所述起始测试组进行合并,生成多个合并测试组以及合并测试流。本发明实施例在提供一种生成测试用例的方法的同时还提供一种生成测试用例的装置,其中包括映射表生成模块,用于根据被测系统各功能模块间关键动作的关联性,生成映射表,其中所述映射表包含关键动作间的关联性以及存在关联性的关键动作的执行顺序;基础业务流生成模块,用于遍历所述映射表,并在遍历过程中按关^:动作之间的执行顺序对存在关联性的每两个关键动作进行组合,生成包括首关4建动作和尾关键动作的基础测试组和基础业务流,其中,每个测试组对应一个基础业务流;合并业务流生成模块,用于确定起始测试组,按照第一测试组的尾关4建动作与第二的测试组的首关键动作相同,则按照关键动作之间的执行顺序将第二测试组合并到第一测试组的原则,选择测试组与该起始测试组进行合并,并且,组进行合并,生成合并测试组和合并业务流,其中每个合并测试组对应一个合并业务流;测试用例输出模块,用于以所述基础业务流和/或合并业务流为单位输出测试用例。删减模块,用于在生成所述业务流后,删减业务流中的重复项。计数模块,用于统计有效业务流的数目,其中所述有效业务流的数目是基础业务流与合并业务流的总和减去所述重复项的总数。本发明的有益效果如下采用本发明实施例中的方法和装置,针对被测系统的业务流程以关键动作间关联性来生成测试用例,实现了测试用例对多交互模块间的连接关系的测试,提高了测试用例的完备性,并且本发明实施例通过程序细化测试用例的生成步骤使得在生成测试用例的过程中减少人工操作,从而减少测试用例生成中的人为主观判断,提高了测试用例的完备性的同时减少了测试用例的遗漏和缺失。图1为本发明实施列一种生成测试用例的方法的流程图;图2为本发明实施例一种生成测试用例的装置图。具体实施例方式由于现有计数中的测试用例都是通过大量的人为分析,存在人为主^见因素导致测试用例的覆盖不全面,本发明实施例提供的方法通过对测试用例的步骤进行细化便于利用计算机进行测试用例分析,减少了测试用例生成过程中的人工操作,提高了测试用例的全面性。本发明实施例是根据净皮测系统各功能模块间关键动作的关联性生成映射表,并且任意两个存在关联性的关键动作根据所述映射表中执行顺序进行连接生成测试组,然后以任一测试组为起始测试组选择与该起始测试组具有相同关键动作的测试组连接形成业务流,其中,所选测试组的首关键动作和所述起始测试组的尾关键动作相同;进一步,根据所述业务流并结合所述映射表中各关键动作的连接关系,输出以业务流为单位的测试用例。本发明实施例的具体步骤如图1所示步骤101、提取被测系统的功能模块以及各功能模块中的关键动作。现有技术中基本上采用的是功能分解的方式来描述系统功能,通过描述细分的系统模块功能来达到描述整个系统功能的目的,该系统可以是软件系统或硬件系统,还可以是软硬件结合的系统。进行功能分解后的系统包括各功能模块,其中,功能模块指的是最小的、不可再细分的功能实体。在提取功能模块时遵循以下原则一是,在已知软件系统的功能菜单的情况下,一个菜单对应一个功能才莫块;二是,如果可以判断某一功能模块是不可再细分的功能实体,该功能实体则是一个功能模块。功能模块是一个属性的集合,该集合里至少包含l个属性,如表1所示,功能模块1包括属性1.1(关键动作)、属性1.2(非关键动作)...属性l.N,功能模块2包括属性2.1(关键动作)、属性2.2(关键动作).....属性2.N以及功能模块N的各属性,确定关键动作时的原则是1、同一功能模块内的关键动作两两组合都可构成一个简单的测试用例,例如用户管理模块包括添加用户、修改用户、删除用户三个关键动作两两关键动作组合都能组成一个简单的测试用例。2、关键动作是构成系统业务流程的一个操作。本发明实施例中,首先将所有关键动作列成表格的形式,并对所有的关键:动作进行编号,其中关键动作编号由功能模块编号和关键动作编号两部分组成^口表1声斤示<table>tableseeoriginaldocumentpage8</column></row><table>表1步骤102、提取关键动作间的连接关系并生成映射表。每一个功能模块都以自身为基点与其余的功能模块逐一进行组合,并且两功能模块组合后,分别以参与组合的两功能模块的关键动作数目为列宽和行宽生成矩阵,其中两功能模块的组合不存在顺序性。根据被测系统的业务流程,在有关联性的两关键动作对应的矩阵交叉点标注存在关联性并且标注所述两个关键动作的执行顺序,其中所述关联性是指两关键动作之间存在的内在联系;所述执行顺序由被测系统的业务流程决定。上述任意的两个关键动作根据执行顺序进行连接形成一个测试组,根据上述内容生成映射表,所述映射表中包含关键动作是否存在关联性以及存在关联性的关键动作的执行顺序,如表2所示<table>tableseeoriginaldocumentpage9</column></row><table>表3以上每一个测试组(基础测试组)都对应一个基础业务流,同时计算基础业务流的个数。2、以任意测试组为起始,生成表述多个关键动作连接关系的合并测试组,即合并业务流。每个测试组都将作为起始点进行合并业务流的例举,其中,生成合并业务流的具体步骤为对于任意两个测试组M(ml—m2)和N(nl—n2),其中,ml是测试组M中先执行的关键动作编号、m2是在ml之后执行的关键动作编号;nl和n2分别为测试组N中先执行的关键动作编号、后执行的关键动作编号。M和N进行连接的原则是如果m2和nl相同,并且ml和n2不相同,则把测试组M和N连接起来,既是将N的尾关键动作附加到M的尾关键动作之后。进一步,再以N的尾关键动作即n2作为起始点,根据上述原则搜寻其他测试组进行连接,遍历所有的测试组,并每次进行合并后的测试组作为起点根据上述连接原则查找测试组进行合并,最终生成表述多个关键动作连接关系的合并业务流。如果还存在P(X1—-X2)并且XI也与m2相同,则M分别与N和P形成两条不同的合并业务流。在由于在生成测试组的过程当中可能存在首关键动作不与任何一个测试组的尾关键动作相同的测试组,所有在本发明实施例中的每个测试组都将作为起始测试组通过上述原则生成合并业务流,例如某一系统中有测试组1—2、l一3、2—3、34、5~6。其中5~6是孤立的关键动作5并不与其他任何一个测试组的尾关4建动作相同,如果不将所有测试组都作为起点进行分析则会出现漏测的问题。在生成合并业务流的同时计算得到的合并业务流的个数,与之前得到的基础业务流的个数相加即是生成业务流的总数。3、在生成业务流后对业务流集合中的重复项进行删减,并对所有的重复项进行计数,其中,重复项是指一条业务流的所有关键动作都被另一条业务流所覆盖,并且执行顺序一致,则说这条路径是重复的。例如业务流"A1—B2,,所有步骤都被业务流"A1—B2^C3,,所覆盖,且执行顺序一致,则业务流"A1^B2,,为重复项。如果业务流"A1^B2"所有步骤都被业务流"A1—C3^B2,,所覆盖,执行顺序一致但是业务流"A1—C3—-B2"的步骤Al和B2之间多了步骤C3,破坏了步骤Al和B2的执行顺序,则业务流"A1—B2"与A1~C3—B2并不是重复项。4、对有效业务流进行统计。其中,有效业务流的数目为生成业务流总数减重复业务流的总数。步骤104、测试用例输出。以所述有效业务流为单位并结合表2中各关键动作之间的执行顺序,输出测试用例,如表4所示<table>tableseeoriginaldocumentpage11</column></row><table>表4根据本发明实施例提供的上述方法,本发明另提供一种相应的实现装置,其结构示意图如图2示,主要包括映射表生成模块201,用于根据被测系统各功能模块间关键动作的关联性,生成映射表。其中,所述映射表包含关键动作间的关联性以及存在关联性的关键动作的执行顺序。查找被测系统中是否存在连接所述关键动作的关联节点,若存在关联节点则将与该关键动作存在关联性的关键动作以及存在关联性的关键动作的执行顺序都保存到映射表中。基础业务流生成模块202,用于遍历所述映射表,并在遍历过程中按关键动作之间的执行顺序对存在关联性的每两个关键动作进行組合,生成包括首关键动作和尾关键动作的勤出测试组和基础业务流,其中,每个基础测试组对应一个基础业务流。合并业务流生成模块203,用于确定起始测试组,按照第一测试组的尾关键动作与第二的测试组的首关键动作相同,则按照关键动作之间的执行顺序将第二测试组合并到第一测试组的原则,选择测试组与该起始测试组进行合并,并且,遍历所有测试组,每次都以合并后的测试组为起点根据上述原则选择新的测试组进行合并,生成合并测试组和合并业务流,其中每个合并测试组对应一个合并业务流。删减模块204,用于在输出测试用例之前,删除业务流中的重复项。计数模块205,用于统计有效业务流的数目,其中有效业务流是指基础业务流与合并业务流的总和减去所述重复项的总数。测试用例输出模块206,用于以所述l^出业务流和/或合并业务流为单位输出测试用例。下面以一用户信息管理系统为例进行说明,该系统进行功能分解后包括用户管理模块包括属性添加用户(关键动作)、修改用户(关键动作)、删除用户(关键动作),认证管理模块包括属性用户认证上线(关键动作)、用户认证下线(关键动作),日志管理模块包括属性查询日志(关键动作)。1、根据所列出的各模块属性,生成表5。<table>tableseeoriginaldocumentpage13</column></row><table><table>tableseeoriginaldocumentpage14</column></row><table>表83、根据表6、7、8中的测试对象中关键动作的编号进行存储,在存储时根据关键动作的执行顺序排放关键动作编号。并且每行的两个关^t动作编号组成一个测试组,最终生成表9。<table>tableseeoriginaldocumentpage14</column></row><table>表9以任意测试组为起始,生成表述多个关键动作连接关系的合并业务流。每个测试组都将作为起始点进行合并业务流的例举。在生成业务流后对业务流集合中的重复项进行删减,其中,重复项是指一条业务流的所有步骤都被另一条业务流所覆盖,并且执行顺序一致,则说这条业务流是重复的。在该用户信息管理系统中最终生成的业务流一共17条如表10所示<table>tableseeoriginaldocumentpage15</column></row><table>表10依次读取每条业务流进行分析,可知其中重复的业务流有6条其中每条都被其他业务流覆盖。0201—0102—02020102—02020201—0102_03010102—03010201—0103—03010201—0301对于重复的业务流,在总的业务流中减去重复业务流的数目。最终得到有效业务流共11条。4、以生成的有效业务流为单位结合表6、7、8中关键动作的执行顺序,得到测试用例输入如表11所示:业务流测试用例预期结果0101~O201—0102—0202添加一个用户,该用户认证上线,用户上线后修改该用户,用户下线。1、用户添加成功。2、用户登录成功。3、用户上线后修改用户信息成功。4、用户下线成功。0103—0201—0301删除用户,用户iU正上线,查询日志。1、删除用户成功。2、用户认证失败。3、可查询到用户i/v证失败的日志记录,认证失败原因为用户名不存在。0103—0301删除用户,查询曰志。1、删除成功。2、可查询到删除用户的操作日志记录。表11应用本发明的方法和装置,以业务流为单位输出测试用例,从多个模块间交互的角度出发进行分析,提高了测试用例对复杂业务的测试覆盖率,在业务流的列举中对重复项的删减,减少了测试用例中的重复测试,提高了测试执行效率,本发明实施例通过细化测试用例的生成步骤使得在生成测试用例的过程中减少人工操作,从而减少测试用例生成中的人为主观判断,提高了测试用例的完备性。另外,在生成或删减的业务流的同时还利用程序对业务流进行了计数统计,最终通过公式一基础业务流与合并业务流的总和减去所述重复项的总数,得到有效业务流的数目即输出的测试用例的数目,减少了现有技术中人为主观分析造成的用例遗漏。员根据本发明的技术方案得出其它的实施方式,同样属于本发明的技术创新范明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。权利要求1、一种生成测试用例的方法,其特征在于,该方法包括以下步骤根据被测系统各功能模块间关键动作的关联性生成映射表,其中所述映射表包含存在关联性的关键动作的执行顺序;遍历所述映射表,并在遍历过程中按关键动作之间的执行顺序对存在关联性的每两个关键动作进行组合,生成包括首关键动作和尾关键动作的基础测试组以及基础业务流,其中,每个基础测试组对应一个基础业务流;确定起始测试组,按照第一测试组的尾关键动作与第二的测试组的首关键动作相同,则根据关键动作之间的执行顺序将第二测试组合并到第一测试组的原则,选择测试组与该起始测试组进行合并,并且,每次合并后都以合并后的测试组为起始测试组根据上述原则选择新的测试组进行合并,生成合并测试组以及合并业务流,其中每个合并测试组对应一个合并业务流;根据所述基础业务流和/或合并业务流为单位输出测试用例。2、如权利要求l所述的方法,其特征在于,所述输出测试用例之前还包括删减所述基础业务流和合并业务流中的重复项。3、如权利要求2所述的方法,其特征在于,还包括在生成业务流的过程中,利用计数设备对基础业务流和合并业务流以及所述重复项的数目进行统计,从而得到有效业务流的总数,即测试用例的数目,其中,通过基础业务流与合并业务流的总和减去所述重复项的总数得到有效业务流的总数。4、如权利要求1-3任一所述的方法,其特征在于,所述^:测系统包括软件系统和/或硬件系统。5、如权利要求13任一所述的方法,其特征在于,所述确定起始测试组还包括将每个测试组都作为起始测试组根据上述原则生成合并业务流。6、如权利要求13任一所述的方法,其特征在于,所述选择测试组,还包括当存在多个测试组的首关键动作与所述起始测试组的尾关键动作相同时,则所述多个测试组分别与所述起始测试组进行合并,生成多个合并测试组以及合并测试流。7、一种生成测试用例的装置,其特征在于,包括映射表生成模块,用于根据被测系统各功能模块间关键动作的关联性,生成映射表,其中所述映射表包含关键动作间的关联性以及存在关联性的关键动作的执行顺序;基础业务流生成模块,用于遍历所述映射表,并在遍历过程中按关键动作之间的执行顺序对存在关联性的每两个关键动作进行组合,生成包括首关键动作和尾关4建动作的基础测试组和勤出业务流,其中,每个基础测试组对应一个基础业务流;合并业务流生成模块,用于确定起始测试组,按照第一测试组的尾关键动作与第二的测试组的首关键动作相同,则按照关键动作之间的执行顺序将第二测试组合并到第一测试组的原则,选择测试组与该起始测试组进行合并,并且,遍历所有测试组,每次都以合并后的测试组为起点根据上述原则选择新的测试组进行合并,生成合并测试组以及合并业务流,其中每个合并测试组对应一个合并业务流;测试用例输出模块,用于以所述基础业务流和/或合并业务流为单位输出测试用例。8、如权利要求7所述的装置,其特征在于,还包括删减模块,用于在生输出测试用例之前,删减业务流中的重复项。9、如权利要求8所述的装置,其特征在于,还包括计数模块,用于统计有效业务流的数目,其中所述有效业务流的数目是基础业务流与合并业务流的总和减去所述重复项的总iL全文摘要本发明公开了一种生成测试用例的方法和装置,以解决测试用例测试不全面的问题。该方法为根据被测系统各功能模块间关键动作的关联性生成映射表;进一步,任意两个存在关联性的关键动作根据所述映射表中执行顺序进行连接生成测试组,然后以任一测试组为起始测试组选择与该起始单元具有相同关键动作的测试组连接形成业务流;最后根据所述业务流并结合所述映射表中各关键动作的连接关系,输出以业务流为单位的测试用例。根据本发明提出的方案,从多个模块间交互的角度出发进行分析,提高了测试用例的完备性。文档编号G06F11/36GK101377758SQ200810116650公开日2009年3月4日申请日期2008年7月14日优先权日2008年7月14日发明者湧王,田秀侠,郑庆达申请人:北京星网锐捷网络技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1