CN116909874A - 一种基于模型的软件回归测试方法 - Google Patents
一种基于模型的软件回归测试方法 Download PDFInfo
- Publication number
- CN116909874A CN116909874A CN202310645054.2A CN202310645054A CN116909874A CN 116909874 A CN116909874 A CN 116909874A CN 202310645054 A CN202310645054 A CN 202310645054A CN 116909874 A CN116909874 A CN 116909874A
- Authority
- CN
- China
- Prior art keywords
- model
- test case
- regression
- elements
- test
- 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.)
- Pending
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 359
- 230000008859 change Effects 0.000 claims abstract description 97
- 238000013507 mapping Methods 0.000 claims abstract description 35
- 238000012216 screening Methods 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 35
- 238000000034 method Methods 0.000 description 22
- 230000008569 process Effects 0.000 description 20
- 238000012546 transfer Methods 0.000 description 17
- 238000012986 modification Methods 0.000 description 10
- 230000004048 modification Effects 0.000 description 10
- 230000007704 transition Effects 0.000 description 10
- 230000009471 action Effects 0.000 description 7
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 230000009191 jumping Effects 0.000 description 2
- 230000003134 recirculating effect Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000013102 re-test Methods 0.000 description 1
- 238000013522 software testing Methods 0.000 description 1
Classifications
-
- 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/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- 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/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种基于模型的软件回归测试方法,包括:根据变动前的旧模型生成第一测试用例集,根据变动后的新模型生成第二测试用例集;建立旧模型中各模型元素与第一测试用例集中各测试用例之间的映射关系、新模型中各模型元素与第二测试用例集中各测试用例之间的映射关系;对旧模型和新模型进行模型变化分析,识别受到模型变化影响的模型元素,并对受影响的模型元素进行分类;根据覆盖准则从受影响的模型元素中确定回归测试需要覆盖的目标;选择覆盖特定目标的回归测试用例作为最终回归测试用例集;基于最终回归测试用例集完成软件回归测试。本发明能够解决现有技术中人工进行测试用例集的选取存在用例冗余、覆盖性和有效性不足的技术问题。
Description
技术领域
本发明涉及软件测试技术领域,尤其涉及一种基于模型的软件回归测试方法。
背景技术
软件开发往往呈现出周期性、增量式的迭代演化特征。在演化过程的每个阶段,新的功能模块会被加入到已有系统中。同时,己存在的功能模块也会由于需求设计变更或修正错误等原因而被修改。在此情况下,回归测试作为一种重要手段来确保一个演化阶段对软件所作的修改没有引入新的错误。目前,测试人员在进行回归测试的过程中,对回归测试用例的选取通常关注前一个演化阶段对软件所作的修改,从测试用例集合中选取出与修改部分影响相关的测试用例或者重新设计新增功能测试用例进行重新测试。人工进行的用例选取通常繁琐而复杂,效率低下,并且无法保证选取的用例的覆盖性与充分性。
发明内容
本发明旨在至少解决现有技术中存在的技术问题之一。
本发明提供了一种基于模型的软件回归测试方法,该基于模型的软件回归测试方法包括:根据变动前的旧模型生成第一测试用例集,根据变动后的新模型生成第二测试用例集;根据旧模型建立旧模型中各模型元素与第一测试用例集中各测试用例之间的映射关系,根据新模型建立新模型中各模型元素与第二测试用例集中各测试用例之间的映射关系;对旧模型和新模型进行模型变化分析,识别受到模型变化影响的模型元素,并对受影响的模型元素进行分类;根据覆盖准则从受影响的模型元素中确定回归测试需要覆盖的目标;基于模型元素与测试用例之间的映射关系,结合回归测试需要覆盖的目标选择覆盖特定目标的回归测试用例作为最终回归测试用例集;基于最终回归测试用例集完成基于模型的软件回归测试。
进一步地,模型元素包括边、节点和边上的条件。
进一步地,受影响的模型元素分为删除模型元素、新增模型元素和更新模型元素。
进一步地,模型变化分析以模型元素的ID标识为基础进行比对分析。
进一步地,对于新增节点元素和更新节点元素的识别具体包括:从新模型的每个节点出发,判断新模型各节点元素的ID是否在旧模型的节点元素列表中,如果不在,说明新模型中的该节点元素是新增的;如果在,则继续判断该节点的信息是否发生变化,如果发生了变化,则说明该节点元素是受模型变化影响的节点,属于修改了的节点,如果没有发生变化,则说明该节点元素是未受模型变化影响的节点。
进一步地,对于新增边元素和更新边元素的识别具体包括:从新模型的每个边出发,判断新模型各边元素的ID是否在旧模型的边元素列表中,如果不在,说明该边是新增的;如果在,则继续判断该边的首尾节点元素是否发生变化,如果发生了变化,则说明该边元素发生了变化,如果首尾节点没有发生变化,则说明该边元素没有发生变化,然后继续通过字符串比对判断边上的条件。
进一步地,通过字符串比对判断边上的条件具体包括:首先对条件按照关系符限定的符号进行切分,比较变化前后条件所切分出来的命题集合,判断是否存在命题变化;如果存在命题变化,则需要覆盖新条件下的所有子条件;如果没有发生命题变化,则比对关系符号是否发生变化;如果有关系符号的变化,则生成新旧条件下的所有子条件,然后比对两个子条件集合,从新条件下子条件集合中去除新条件下子条件集合与旧条件下子条件集合相同的元素,而新条件下子条件集合中剩余的子条件是回归测试需要覆盖到的子条件。
进一步地,选择覆盖特定目标的回归测试用例作为最终回归测试用例集具体包括:基于旧模型中各模型元素与第一测试用例集中各测试用例之间的映射关系,结合根据删除模型元素确定的回归测试需要覆盖的目标,获取第一回归测试用例集;基于新模型中各模型元素与第二测试用例集中各测试用例之间的映射关系,结合根据新增模型元素和更新模型元素确定的回归测试需要覆盖的目标,获取第二回归测试用例集;第一回归测试用例集与第二回归测试用例集的并集作为最终回归测试用例集。
进一步地,第一回归测试用例集的获取步骤包括:从旧模型生成的所有测试用例中筛选出删除模型元素对应的各个测试用例,作为候选的回归测试用例集;然后统计各个测试用例覆盖回归测试目标中元素的个数,选择覆盖元素最多的一条测试用例;选择之后,将该测试用例放入第一回归测试用例集中,并将其从候选的测试用例集中删除,同时从回归测试覆盖目标中删除已经覆盖到的目标元素,然后重新循环统计候选的测试用例,直至所有的回归测试覆盖目标完全覆盖到为止;
进一步地,第二回归测试用例集的获取步骤包括:从新模型生成的所有测试用例中筛选出新增模型元素和更新模型元素对应的各个测试用例,作为候选的回归测试用例集;然后统计各个测试用例覆盖回归测试目标中元素的个数,选择覆盖元素最多的一条测试用例;选择之后,将该测试用例放入第二回归测试用例集中,并将其从候选的测试用例集中删除,同时从回归测试覆盖目标中删除已经覆盖到的目标元素,然后重新循环统计候选的测试用例,直至所有的回归测试覆盖目标完全覆盖到为止。
应用本发明的技术方案,提供了一种基于模型的软件回归测试方法,该基于模型的软件回归测试方法通过建立模型元素与测试用例之间的映射关系,比较不同软件模型来发现模型中受变化影响的元素,然后基于模型元素与测试用例之间的关联关系,结合回归测试需要覆盖的目标甄别获取了模型变化部分的测试用例集。本发明能够有效的提高测试用例集的覆盖性和充分性,提高了回归测试的效率。与现有技术相比,本发明的技术方案能够解决现有技术中人工进行测试用例集的选取存在用例冗余、覆盖性和有效性不足的技术问题。
附图说明
所包括的附图用来提供对本发明实施例的进一步的理解,其构成了说明书的一部分,用于例示本发明的实施例,并与文字描述一起来阐释本发明的原理。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了根据本发明的具体实施例提供的基于模型的软件回归测试方法的流程示意图;
图2示出了根据本发明的具体实施例提供的模型变动前的状态图;
图3示出了根据本发明的具体实施例提供的模型变动后的状态图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
如图1所示,根据本发明的具体实施例提供了一种基于模型的软件回归测试方法,该基于模型的软件回归测试方法包括:
根据变动前的旧模型生成第一测试用例集,根据变动后的新模型生成第二测试用例集;
根据所述旧模型建立旧模型中各模型元素与所述第一测试用例集中各测试用例之间的映射关系,根据所述新模型建立新模型中各模型元素与所述第二测试用例集中各测试用例之间的映射关系;
对所述旧模型和所述新模型进行模型变化分析,识别受到模型变化影响的模型元素,并对受影响的模型元素进行分类;
根据覆盖准则从受影响的模型元素中确定回归测试需要覆盖的目标;
基于模型元素与测试用例之间的映射关系,结合回归测试需要覆盖的目标选择覆盖特定目标的回归测试用例作为最终回归测试用例集;
基于最终回归测试用例集完成基于模型的软件回归测试。
应用此种配置方式,提供了一种基于模型的软件回归测试方法,该基于模型的软件回归测试方法通过建立模型元素与测试用例之间的映射关系,比较不同软件模型来发现模型中受变化影响的元素,然后基于模型元素与测试用例之间的关联关系,结合回归测试需要覆盖的目标甄别获取了模型变化部分的测试用例集。本发明能够有效的提高测试用例集的覆盖性和充分性,提高了回归测试的效率。
进一步地,在本发明中,首先根据变动前的旧模型生成第一测试用例集,根据变动后的新模型生成第二测试用例集;根据旧模型建立旧模型中各模型元素与第一测试用例集中各测试用例之间的映射关系,根据新模型建立新模型中各模型元素与第二测试用例集中各测试用例之间的映射关系。
测试路径描述了从模型节点到结束节点的一条路径,测试用例则是一条测试路径的一次执行过程,因此,一条测试用例由模型的元素所构成。模型元素-测试用例映射关系的建立主要是建立构成各个测试用例的模型元素与测试用例之间的对应关系。该对应关系是对模型进行变动分析以及回归测试用例选择的基础,它可以有效缩小测试用例选择过程中搜索范围,提高测试用例选择的效率。
进一步地,在建立模型元素与测试用例之间的映射关系后,对变动前的旧模型和变动后的新模型进行模型变化分析,识别受到模型变化影响的模型元素,并对受影响的模型元素进行分类。
本发明中,模型的变化分析是以变动前的旧模型和变动后的新模型为输入,以模型中元素的ID标识为基础,比较分析模型之间的差异性,识别模型中变化部分所涉及的模型元素。
本发明中模型元素主要包括边、节点和条件。模型的变化主要分为以下三种:(1)边的变化,包括边的前后连接点变化、边的新增和边的删除;(2)节点的变化,包括节点的新增、节点的动作变化和节点的删除;(3)条件的变化,主要为条件内容发生变化。
作为本发明的一个具体实施例,可将受影响的模型元素分为:删除元素、新增模型元素和更新模型元素。模型变化分析主要包括两个方面:
(1)删除元素的识别:从旧模型出发,识别在模型变化过程中,被删除的模型元素,主要包括模型中的节点元素和边元素。
(2)新增模型元素和更新模型元素的识别:从新模型出发,识别在模型变化过程中,新增的模型元素和更新的模型元素。
下面以新增模型元素和更新模型元素的识别为例,具体的模型变化分析过程如下:
(1)对于节点的变化,从新模型的每个节点出发,由于每个元素的ID是唯一的,首先判断新模型各元素的ID是否在旧模型的节点元素列表中,如果不在,说明新模型中的该节点元素是新增的,如果在,则继续判断该节点的动作等信息是否发生变化,如果发生了变化,则说明该节点元素是受模型变化影响的,属于修改了的节点,如果没有发生变化,则说明该节点是未受影响的节点。
(2)对于边的变化,从新模型的每个边出发,同样根据ID,判断该边在旧模型的边的列表中是否存在,如果不在,说明该边是新增的,如果在,则继续判断该边的首尾节点元素是否发生变化,如果发生了变化,则说明该边元素发生了变化,如果首尾节点没有发生变化,则说明该边元素没有发生变化,然后继续通过字符串比对判断边上的条件,如果边上的条件发生了变化,则记录该边的条件发生了变化,否则不记录该边的条件发生变化。
(3)对于边上条件的变化可以通过如下步分析:首先对条件按照关系符(&,or)等限定的符号进行切分,比较变化前后条件所切分出来的命题集合,判断是否存在命题变化;如果存在命题变化,则需要覆盖新条件下的所有子条件;如果没有发生命题变化,则比对关系符号是否发生变化;如果有关系符号的变化,则生成新旧条件下的所有子条件,然后比对两个子条件集合,从新条件下子条件集合中去除新条件下子条件集合与旧条件下子条件集合相同的元素,而新条件下子条件集合中剩余的子条件是回归测试需要覆盖到的子条件。
进一步地,在对受到模型变化影响的模型元素识别分类后,根据覆盖准则从受到模型变化影响的模型元素中确定回归测试需要覆盖的目标。
实际在由模型生成测试用例的过程中,人们通常会基于某种覆盖准则来生成测试用例。在这种情况下,当人们在进行回归测试时,也希望所选择的用于回归测试的测试用例也是满足相应的覆盖准则的。因此,在由识别出的模型变化来选择回归测试用例时,首先应确定回归测试需要覆盖的目标。
作为本发明的一个具体实施例,对于状态图的状态覆盖准则而言,所选择的回归测试用例应该覆盖到所有受模型变化影响的状态节点;对于转移覆盖准则而言,所选择的回归测试用例应该覆盖到所有受影响的转移;对于转移对覆盖准则而言,所选择的回归测试用例应该覆盖到所有受影响的转移对。
进一步地,在确定回归测试需要覆盖的目标后,基于模型元素与测试用例之间的映射关系,结合回归测试需要覆盖的目标选择覆盖特定目标的回归测试用例作为最终回归测试用例集;基于最终回归测试用例集完成基于模型的软件回归测试。
最终回归测试用例选择以需要覆盖到回归测试目标为输入,基于模型元素与测试用例之间的映射关系,选择覆盖特定目标的回归测试用例。其基本思路是基于贪心策略,逐步选择能够覆盖到覆盖目标的最小测试用例集。
作为本发明的一个具体实施例,选择覆盖特定目标的回归测试用例作为最终回归测试用例集具体包括:基于旧模型中各模型元素与第一测试用例集中各测试用例之间的映射关系,结合根据删除模型元素确定的回归测试需要覆盖的目标,获取第一回归测试用例集;基于新模型中各模型元素与第二测试用例集中各测试用例之间的映射关系,结合根据新增模型元素和更新模型元素确定的回归测试需要覆盖的目标,获取第二回归测试用例集;第一回归测试用例集与第二回归测试用例集的并集作为最终回归测试用例集。
进一步地,第一回归测试用例集的获取步骤包括:从旧模型生成的所有测试用例中筛选出删除模型元素对应的各个测试用例,作为候选的回归测试用例集;然后统计各个测试用例覆盖回归测试目标中元素的个数,选择覆盖元素最多的一条测试用例;选择之后,将该测试用例放入第一回归测试用例集中,并将其从候选的测试用例集中删除,同时从回归测试覆盖目标中删除已经覆盖到的目标元素,然后重新循环统计候选的测试用例,直至所有的回归测试覆盖目标完全覆盖到为止;
进一步地,第二回归测试用例集的获取步骤包括:从新模型生成的所有测试用例中筛选出新增模型元素和更新模型元素对应的各个测试用例,作为候选的回归测试用例集;然后统计各个测试用例覆盖回归测试目标中元素的个数,选择覆盖元素最多的一条测试用例;选择之后,将该测试用例放入第二回归测试用例集中,并将其从候选的测试用例集中删除,同时从回归测试覆盖目标中删除已经覆盖到的目标元素,然后重新循环统计候选的测试用例,直至所有的回归测试覆盖目标完全覆盖到为止。
本发明的采用基于模型的软件回归测试方法开展回归测试,通过对比软件修改前后模型的变化,自动进行影响分析从而自动生成测试用例集,能够有效的提高测试用例集的覆盖性和充分性,同时避免了传统人工进行筛选用例时造成的用例冗余、缺失等覆盖性和有效性不足的问题,另外也大大提高了回归测试的效率。
下面以活动图、控制流图以及状态图为对象,对本发明的基于模型的软件回归测试方法进行详细说明。
步骤一,建立状态图模型元素与测试用例之间的映射关系。
针对状态图模型,模型元素与测试用例之间映射关系的建立主要是建立各个测试用例与其所覆盖的状态、转移、事件、条件等之间的对应关系。图2为一个模型变动前的状态图示例。下面将以该状态图为例,具体说明状态图测试用例与模型元素映射关系的建立过程。
(1)获取由状态图生成的各个测试用例及其覆盖的模型元素
以节点覆盖为例,根据状态图中条件分支,由图2所示状态图,假设可以生成如表1所示的3条测试用例。每条测试用例所涵盖的模型元素也如表1所示。虽然状态图包含了开始节点、终止节点、状态节点、转移、条件、事件等模型元素,但是实际上对测试用例生成具有影响的主要包括如下两类元素:
1)节点元素:包括开始节点、终止节点以及状态节点在内的节点元素,用字母n表示;
2)边元素:包括转移以及转移上的条件在内的元素,用字母e表示。
因此,在建立状态图的模型元素与测试用例之间的映射关系时,我们主要关注测试用例所覆盖的各种节点以及边。其中,节点元素具有节点名称、节点类型、以及进入动作、离开动作等属性,而边元素包括了边的起始节点、尾结点、条件等属性。
如表1所示,我们从图2的状态图可得3条测试用例:t1、t2、t3。其中t1覆盖了节点s1、s2、s3、以及边e2、e3、e4;t2覆盖了节点s1、s3、以及边e1、e4;t3覆盖了节点s1、s4、以及边e3、e4。
表1状态图测试用例覆盖的各个模型元素
测试用例 | 覆盖的模型元素 |
t1 | s1、e2、s2、e3、s3、e4 |
t2 | s1、e1、s3、e4 |
t3 | s1、e3、s4、e4 |
(2)建立状态图模型元素与测试用例之间的映射关系
基于表1所示的各个测试用例所覆盖的模型元素,我们可以建立模型元素与测试用例之间的映射关系,具体如表2所示。从表2我们可以看出,节点s1关联到了测试用例t1、t2、t3,节点s2关联到了测试用例t1,节点s3关联到了测试用例t1、t2,节点s4关联到了测试用例t3,边e1关联到了测试用例t2,边e2关联到了测试用例t1,边e3关联到了测试用例t1、t3,边e4关联到了测试用例t1、t2、t3。
表2状态图模型元素与测试用例之间的映射关系
节点元素 | 测试用例 | 边元素 | 测试用例 |
s1 | t1,t2,t3 | e1 | t2 |
s2 | t1 | e2 | t1 |
s3 | t1,t2 | e3 | t1,t3 |
s4 | t3 | e4 | t1,t2,t3 |
步骤二,分析状态图模型变化。
状态图的变化分析是以状态图中的状态、转移、条件等模型元素的ID为基础,通过比较模型元素在变动前面模型中的变化,来对变动后的模型中的元素进行分类。具体来说,状态图的测试用例覆盖的元素分为:(1)节点元素、(2)边元素两类。其中,节点元素包括了开始节点、终止状态节点、状态节点等,这些节点元素具有名称、进入动作、离开动作、do动作等属性。而边元素包括了状态之间的转移元素,具有起始状态节点、尾状态节点、条件等属性。
因此,在通过ID来标识状态图模型元素的变化时,主要通过比较元素可编辑属性的内容是否发生变化来判断元素是否发生变化。具体而言,基于状态图的各个模型元素在测试用例生成过程中的作用,需要监测的各个模型元素的变化如表3所示。
表3需要监测的状态图模型元素的变化
需要说明的是,实际中由于模型中各种元素之间的依赖关系,一个元素的变化,则可能随之导致其他依赖元素的变化,比如新增一个状态节点,则会导致相应的边元素的变化。
下面以图2和图3所示状态图为例,说明状态图变动分析过程。图3为图2对应的模型变动后的状态图,相较于变动更新之前,图3所示的状态图的主要变化如下:
a.增加了节点s5、s6;
b.增加了一个状态转移e5、e6;
c.与此同时,节点s5、s6的新增也导致了原有状态转移e4首节点发生了变化,这也导致了状态转移e4发生了变化。
因此,通过比较变化前和变化后模型的差异,模型变化过程所影响的模型元素如表4所示。从变化分析结果可以看出,节点s5、s6和边e5、e6被分类为新增元素,状态转移e4被分类为更新元素。
表4变化分析所识别出的模型变化
变化的模型元素 | 变化类型 |
s5、s6、e5、e6 | 新增的模型元素 |
e4 | 更新的模型元素 |
步骤三,确定状态图的回归测试需要覆盖的目标。
虽然在模型变化分析过程中,已经识别出了变化的模型元素,但进一步还希望所选择的用于回归测试的测试用例是满足测试用例生成过程中所使用的覆盖准则的。因此,生成测试覆盖目标是要在变化的模型元素的基础上,筛选出特定覆盖准则下的变化的模型元素。
以表4所示的变化的模型元素为例,如果以状态覆盖为准则,那么此时满足该准则的回归测试覆盖目标只包含节点元素,也即s5和s6;如果以转移覆盖为准则,此时的回归测试覆盖目标则包括了两条变化过程中受影响的边元素e4、e5和e6;如果以转移对覆盖为准则,则此时回归测试覆盖目标则包括了两个转移对,e1:e6、e2:e6。
表5满足状态图各覆盖准则的覆盖目标
覆盖准则 | 回归测试覆盖目标的构成 |
状态覆盖 | s5、s6 |
转移覆盖 | e4、e5、e6 |
转移对覆盖 | e5:e4、e5:e6、e6:e4 |
步骤四,选择覆盖特定目标的回归测试用例作为回归测试用例集,基于选择的回归测试用例集完成基于模型的软件回归测试。
状态图的回归测试用例选择是在状态图模型变化分析的基础上,以贪心的方式选择能够覆盖回归测试覆盖目标的最小测试用例集。具体来说,首先从模型生成的所有测试用例中筛选出受模型变化影响的各个测试用例,作为候选的回归测试用例集;然后统计各个测试用例覆盖回归测试目标中元素的个数,选择覆盖元素最多的一条测试用例;选择之后,将其从候选的测试用例集中删除,并从回归测试覆盖目标中删除已经覆盖到的目标元素,然后重新循环统计候选的测试用例,直至所有的回归测试覆盖目标完全覆盖到为止。
仍然以图2和图3所示的状态图模型变化为例,以表2所示的模型元素-测试用例映射关系和表5所示的回归测试覆盖目标为输入,获得表6显示的选择用于回归测试的各个测试用例。从表6可以看出,对于图2和图3所示的模型变化,在满足状态覆盖、转移覆盖和转移对覆盖三种准则下,均可以选择一条t1所示的测试用例来作为回归测试用例。
表6满足各回归测试覆盖目标的所选择的测试用例
为了对本发明有进一步地了解,下面提供一个具体实施例对本发明的最终回归测试用例集的选择算法进行详细说明。
输入:
V0:变化前的旧模型
V1:变化后的新模型
输出:
覆盖变化的模型元素的最小测试用例集
Begin:
第一阶段:
1.由旧模型V0基于设定的覆盖准则,生成所有的测试用例集T1,并建立各个模型元素与测试用例之间的映射关系;
2.通过遍历并比对模型元素的方式,识别出旧模型V0中存在但在新模型V1中没有模型元素,包括图中的节点和边,并将这些在模型变化过程中删除的模型元素放入一个集合R1中;
3.根据设定的覆盖准则,生成与集合R1中元素相关、且回归测试需要覆盖的各个元素对象集合R1’(比如,如果是节点覆盖,那集合R1’中只包含模型变化过程中删除的节点,如果是转移覆盖,则R1’中只包含模型变化过程中删除的边,如果是转移对覆盖,则R1’中包括与删除的边相关的所有转移对);
4.根据R1集合元素,从测试用例集合T1中找出受影响的测试用例,并放入集合T2中;
5.初始化一个被选择的测试用例集合X1;
6.统计测试用例集合T2中每个测试用例覆盖集合R1’中元素的个数;
7.选择覆盖集合R1’中元素最多的一条测试用例(如果覆盖元素最多的测试用例有多条,则随机选择其中的一条),将其放入集合X1中,将其从T2中删除,并从集合R1’中删除该测试用例所覆盖到的元素;
8.跳回到当前阶段的第6步循环执行,直到集合R1’中元素为空为止。
第二阶段:
1.由新模型V1基于设定的覆盖准则,生成所有的测试用例T3,并建立模型元素与各个测试用例之间的映射关系;
2.通过遍历并比对模型元素的方式,识别出新模型V1相对于旧模型V0做出的修改,主要包括了新增和修改的节点、边以及条件,并将这些在模型变化过程中发生变化的模型元素放入一个集合R2中;
3.根据设定的覆盖准则,生成与集合R2中元素相关、且回归测试需要覆盖的各个元素对象集合R2’(比如,如果是节点覆盖,那集合R2’中只包含模型变化过程中新增或修改的节点,如果是转移覆盖,则R2’中只包含模型变化过程中新增或修改的边,如果是转移对覆盖,则R2’中包括与新增或修改的边相关的所有转移对);
4.根据R2集合元素,从测试用例集合T3中找出受影响的测试用例,并放入集合T4中;
5.初始化一个被选择的测试用例集合X2;
6.统计测试T4中每个测试用例覆盖集合R2’中元素的个数;
7.选择覆盖集合R2’中元素最多的一条测试用例(如果覆盖元素最多的测试用例有多条,则随机选择其中的一条),将其放入集合X2中,将其从T4中删除,并从集合R2’中删除该测试用例所覆盖到的元素;
8.跳回到当前阶段的第6步循环执行,直到集合R2’中元素为空为止。
第三阶段:
输出选择的测试用例集合X1∪X2。
End。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于模型的软件回归测试方法,其特征在于,所述基于模型的软件回归测试方法包括:
根据变动前的旧模型生成第一测试用例集,根据变动后的新模型生成第二测试用例集;
根据所述旧模型建立旧模型中各模型元素与所述第一测试用例集中各测试用例之间的映射关系,根据所述新模型建立新模型中各模型元素与所述第二测试用例集中各测试用例之间的映射关系;
对所述旧模型和所述新模型进行模型变化分析,识别受到模型变化影响的模型元素,并对受影响的模型元素进行分类;
根据覆盖准则从受影响的模型元素中确定回归测试需要覆盖的目标;
基于模型元素与测试用例之间的映射关系,结合回归测试需要覆盖的目标选择覆盖特定目标的回归测试用例作为最终回归测试用例集;
基于最终回归测试用例集完成基于模型的软件回归测试。
2.根据权利要求1所述的基于模型的软件回归测试方法,其特征在于,所述模型元素包括边、节点和边上的条件。
3.根据权利要求1所述的基于模型的软件回归测试方法,其特征在于,所述受影响的模型元素分为删除模型元素、新增模型元素和更新模型元素。
4.根据权利要求3所述的基于模型的软件回归测试方法,其特征在于,所述模型变化分析以模型元素的ID标识为基础进行比对分析。
5.根据权利要求1至4中任一项所述的基于模型的软件回归测试方法,其特征在于,对于新增节点元素和更新节点元素的识别具体包括:从新模型的每个节点出发,判断新模型各节点元素的ID是否在旧模型的节点元素列表中,如果不在,说明新模型中的该节点元素是新增的;如果在,则继续判断该节点的信息是否发生变化,如果发生了变化,则说明该节点元素是受模型变化影响的节点,属于修改了的节点,如果没有发生变化,则说明该节点元素是未受模型变化影响的节点。
6.根据权利要求3所述的基于模型的软件回归测试方法,其特征在于,对于新增边元素和更新边元素的识别具体包括:从新模型的每个边出发,判断新模型各边元素的ID是否在旧模型的边元素列表中,如果不在,说明该边是新增的;如果在,则继续判断该边的首尾节点元素是否发生变化,如果发生了变化,则说明该边元素发生了变化,如果首尾节点没有发生变化,则说明该边元素没有发生变化,然后继续通过字符串比对判断边上的条件。
7.根据权利要求6所述的基于模型的软件回归测试方法,其特征在于,通过字符串比对判断边上的条件具体包括:首先对条件按照关系符限定的符号进行切分,比较变化前后条件所切分出来的命题集合,判断是否存在命题变化;如果存在命题变化,则需要覆盖新条件下的所有子条件;如果没有发生命题变化,则比对关系符号是否发生变化;如果有关系符号的变化,则生成新旧条件下的所有子条件,然后比对两个子条件集合,从新条件下子条件集合中去除新条件下子条件集合与旧条件下子条件集合相同的元素,而新条件下子条件集合中剩余的子条件是回归测试需要覆盖到的子条件。
8.根据权利要求1所述的基于模型的软件回归测试方法,其特征在于,选择覆盖特定目标的回归测试用例作为最终回归测试用例集具体包括:
基于旧模型中各模型元素与第一测试用例集中各测试用例之间的映射关系,结合根据删除模型元素确定的回归测试需要覆盖的目标,获取第一回归测试用例集;
基于新模型中各模型元素与第二测试用例集中各测试用例之间的映射关系,结合根据新增模型元素和更新模型元素确定的回归测试需要覆盖的目标,获取第二回归测试用例集;
所述第一回归测试用例集与所述第二回归测试用例集的并集作为最终回归测试用例集。
9.根据权利要求8所述的基于模型的软件回归测试方法,其特征在于,所述第一回归测试用例集的获取步骤包括:从所述旧模型生成的所有测试用例中筛选出删除模型元素对应的各个测试用例,作为候选的回归测试用例集;然后统计各个测试用例覆盖回归测试目标中元素的个数,选择覆盖元素最多的一条测试用例;选择之后,将该测试用例放入第一回归测试用例集中,并将其从候选的测试用例集中删除,同时从回归测试覆盖目标中删除已经覆盖到的目标元素,然后重新循环统计候选的测试用例,直至所有的回归测试覆盖目标完全覆盖到为止。
10.根据权利要求8所述的基于模型的软件回归测试方法,其特征在于,所述第二回归测试用例集的获取步骤包括:从所述新模型生成的所有测试用例中筛选出新增模型元素和更新模型元素对应的各个测试用例,作为候选的回归测试用例集;然后统计各个测试用例覆盖回归测试目标中元素的个数,选择覆盖元素最多的一条测试用例;选择之后,将该测试用例放入第二回归测试用例集中,并将其从候选的测试用例集中删除,同时从回归测试覆盖目标中删除已经覆盖到的目标元素,然后重新循环统计候选的测试用例,直至所有的回归测试覆盖目标完全覆盖到为止。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310645054.2A CN116909874A (zh) | 2023-06-02 | 2023-06-02 | 一种基于模型的软件回归测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310645054.2A CN116909874A (zh) | 2023-06-02 | 2023-06-02 | 一种基于模型的软件回归测试方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116909874A true CN116909874A (zh) | 2023-10-20 |
Family
ID=88359028
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310645054.2A Pending CN116909874A (zh) | 2023-06-02 | 2023-06-02 | 一种基于模型的软件回归测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116909874A (zh) |
-
2023
- 2023-06-02 CN CN202310645054.2A patent/CN116909874A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106033436B (zh) | 一种数据库的合并方法 | |
CN110399286B (zh) | 一种基于独立路径的测试数据自动生成方法 | |
JPH1063707A (ja) | 論理回路検証装置および論理回路検証方法 | |
US11481440B2 (en) | System and method for processing metadata to determine an object sequence | |
US11593336B2 (en) | Data pipeline branching | |
US20210334292A1 (en) | System and method for reconciliation of data in multiple systems using permutation matching | |
CN106951963B (zh) | 一种知识精炼的方法以及装置 | |
CN109408385B (zh) | 一种基于缺陷规则和分类反馈的缺陷发现方法 | |
JP2014059775A (ja) | プログラム構造評価システム、プログラム | |
Alshanqiti et al. | Learning minimal and maximal rules from observations of graph transformations | |
CN107038084B (zh) | 一种程序检测方法及装置 | |
CN116909874A (zh) | 一种基于模型的软件回归测试方法 | |
CN112860736A (zh) | 大数据查询优化方法、设备及可读存储介质 | |
CN112434831A (zh) | 故障排查方法、装置、存储介质及计算机设备 | |
CN106844218B (zh) | 一种基于演化切片的演化影响集预测方法 | |
CN110705889A (zh) | 一种企业筛选方法、装置、设备及存储介质 | |
CN114139636B (zh) | 异常作业处理方法及装置 | |
CN112199287B (zh) | 基于强化混合专家模型的跨项目软件缺陷预测方法 | |
CN114791865A (zh) | 一种基于关系图的配置项自洽性检测方法、系统和介质 | |
CN109033110B (zh) | 知识库中的扩展问质量测试方法和装置 | |
CN112882887B (zh) | 一种云计算环境下服务故障模型动态建立方法 | |
US20230169052A1 (en) | Methods, systems, and computer readable media for utilizing machine learning for merging duplicate data records | |
JP3104586B2 (ja) | 設計支援方法 | |
JP6664201B2 (ja) | 突合処理装置及び突合処理方法並びに突合処理プログラム | |
CN117473510B (zh) | 一种基于图神经网络和漏洞补丁关系的自动化漏洞挖掘技术 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |