专利名称:通过波动分析辅助测试用例升级的方法
技术领域:
本发明涉及镜像测试工具(又称白盒测试工具),具体涉及一种通过波动分析辅助测试用例升级的方法。
背景技术:
在目前的测试系统,特别是镜像测试系统中,版本升级后,原来的测试方案和测试用例的设计需要修改以适应新版本,集成测试和单元测试人员将直接面对代码的变化,所以在作测试设计和测试用例时,测试人员不仅需要关心设计文档,还要关心相应的被测试代码。当测试人员面对两个版本的被测试代码时,就需要找出其中的差异,然后根据这些差异,给出测试设计和测试用例的升级方案,并作相应的修改。
在现有技术中,这些工作都是依靠人工来完成,在版本更改量小的情况下,人工的消耗还是可以忍受的。但是当更改量达到一定数量级别的时候,测试人员就需要很多的工作量来维护这些测试设计和测试用例,而且人为因素也避免不了出现这样那样的问题,其中最容易出现的问题是遗漏,另外还可能受到测试人员的自身技能的限制、导致的理解不一致和错误。
发明内容
本发明提供一种更优的差异分析方案,通过自动生成测试用例升级报告辅助测试用例的升级,以解决现有技术中因完全靠人工操作而引起的遗漏问题。
为解决上述问题,本发明提供一种测试用例升级的方法,包括以下步骤(1)对测试用例中的测试脚本进行分析,得出测试用例与实体之间的依赖关系;(2)输入在先版本和升级版本的源文件,对两个版本的源文件进行波动分析,找出其中的被修改实体、新增实体、被删除实体、以及被修改数据类型,并生成相应的差异分析报告;(3)根据步骤(1)和步骤(2)中的结果,生成相应的测试用例升级报告;(4)根据所述测试用例升级报告升级测试用例。
在本发明所述方法的步骤(1)中,先从测试用例信息中提取出实体引用信息,再对测试用例中的测试脚本进行语法分析,分析出实体变化时会影响到的测试用例,从而得到测试用例与实体之间的依赖关系,并生成以实体名称作为索引的{实体测试用例}集合。所述步骤(1)中还包括根据镜像测试工具对在先版本的测试,从所获得的实体信息中提取出数据类型变化时会直接或间接影响到的实体,并生成以数据类型作为索引的{数据类型影响实体}集合的步骤。
在本发明所述方法的步骤(2)中,对在先版本和升级版本的源文件进行比较,根据比较结果将文件分为被修改文件、新增文件和被删除文件三类;再从这三类文件中提取出被修改实体、新增实体和被删除实体,并将被修改的数据类型名及修改信息记入到数据类型差异集合中;将各个实体集合进行合并,得到合并后的被修改实体集合、新增实体集合及被删除实体集合,再将被修改的数据类型名及修改信息进行合并,得到数据类型差异集合,最后根据合并的结果,生成差异分析报告。
在本发明所述方法的步骤(3)中,根据所述{数据类型影响实体}集合以及所述差异分析报告中的数据类型差异集合,生成{实体名称类型变化信息}集合;再根据所述{实体名称类型变化信息}集合,以及所述差异分析报告中的实体差异集合,生成{实体名称实体差异信息}集合;再根据所述{实体测试用例}集合以及所述{实体名称实体差异信息}集合,生成相应的{实体名(测试用例集合,实体差异信息)}集合;然后对所述{实体名(测试用例集合,实体差异信息)}集合进行转换,从以实体名称为索引转为以测试用例作为索引,生成相应的{测试用例实体差异信息集合}集合;然后结合实体差异级别定义,生成新的{测试用例测试用例升级指导建议}集合,最后根据该集合,生成预定格式的波动分析测试用例升级报告。
上述本发明技术方案中的各个步骤可写成计算机程序,由计算机自动执行,从而根据在先版本和升级版本的源文件之间的差异,生成相应的测试用例升级报告,从而让用户可根据所述测试用例升级报告,自行升级测试用例。与现有技术相比,可大大减少测试人工方式时所需的工作量,以及人工方式所带来的人为差错。
下面将结合附图和实施例对本发明作进一步阐述,附图中图1是本发明方法的三大主要步骤的示意图;图2是本发明方法中波动分析的流程图。
具体实施例方式
在镜像测试工具中,测试用例与代码相关的部分就是实体的引用,因此,当对在先版本与升级版本进行比较时,只需要关心实体的定义和实体引用发生的变化。
其中,测试用例包含测试用例描述、测试I/O(输入/输出)、测试驱动和测试桩。在镜像测试工具中,已经实现了全程脚本化,也就是说,测试驱动和测试桩也是脚本,我们称为测试脚本。在脚本中引用的实体可通过镜像技术与被测试系统中的全局变量和函数一一对应,并且实现了完全对等的操作,操作实体即等同于操作全局变量和函数,这方面的内容可参见申请号为02128390.0、专利申请名称为‘镜像测试方法’的专利。本发明中,与升级相关的部分包括输出引用的实体,以及测试脚本引用的实体,其中的实体又分为全局变量实体和全局函数实体。
如图1所示为本发明方法的三大主要步骤的示意图。
一、准备阶段先从测试用例信息中提取出实体引用信息,再对测试用例中的测试脚本进行语法分析,分析出实体变化时会影响到的测试用例,从而得到测试用例与实体之间的依赖关系,并生成以实体名称作为索引的{实体测试用例}集合。另一方面,在使用镜像测试工具对在先版本测试中,已经获取了实体的信息,从所获得的实体信息中,可提取出数据类型变化时会直接或间接影响到的实体,并生成以数据类型作为索引的{数据类型影响实体}集合。
二、波动分析阶段本发明中,波动分析的流程如图2所示,具体包括以下步骤输入两个版本的源文件后,先对在先版本和升级版本的源文件进行比较,根据比较结果将文件分为被修改文件、新增文件和被删除文件三类;对于其中的被修改文件,先对在先版本和升级版本的源文件进行语法分析,根据比较分析后的语法树提取实体信息,再根据实体定义将实体分为被修改实体、新增实体和被删除实体三类,并将三类实体分别记入到相应的被修改实体集合、新增实体集合或被删除实体集合中,再将被修改的数据类型名及修改信息记入到数据类型差异集合中;对于新增文件,则通过对其进行语法分析,提取其实体信息并记入到新增实体集合中;对于被删除文件,则从在先版本中提取被删除文件的实体信息,并记入被删除实体集合中;然后,按实体名称比较新增文件的新增实体集合和被删除文件的被删除实体集合中的各个实体,如果两者中的某一实体名称相同,则表示在被删除文件和新增文件中都有该实体,相当于对该实体进行了修改,此时将该实体视记入到被修改实体集合中;根据前述步骤的结果,将各个实体集合进行合并,得到合并后的被修改实体集合、新增实体集合及被删除实体集合,再将被修改的数据类型名及修改信息进行合并,得到数据类型差异集合,最后根据合并的结果,生成差异分析报告。
三、生成测试用例升级报告阶段这个阶段的输入是上两个阶段的输出,即包括第一阶段输出的两个集合{实体测试用例}集合、{数据类型影响实体}集合;第二阶段输出四个集合被修改实体集合、新增实体集合、被删除实体集合及数据类型差异集合,以及一个差异分析报告。具体流程包括以下步骤先根据以数据类型作为索引的{数据类型影响实体}集合,以及差异分析报告中的数据类型差异集合,分析出数据类型发生了变化的实体名称,生成{实体名称类型变化信息}集合;再根据上述{实体名称类型变化信息}集合,以及前述差异分析报告中的实体差异集合(实体差异集合=被修改实体集合+新增实体集合+被删除实体集合),合并生成{实体名称实体差异信息}集合,该集合是两个版本中发生了任何变化的实体的集合,这些变化包含类型变化、增加、删除、被修改。
再根据以实体名称作为索引的{实体测试用例}集合,以及上述{实体名称实体差异信息}集合,综合生成相应的{实体名(测试用例集合,实体差异信息)}集合;这里是将两个集合通过索引简单相加,将相同索引的内容合并,这样,查询该集合就可以从实体名称得到实体影响的测试用例和实体的变化信息。
再对所述{实体名(测试用例集合,实体差异信息)}集合进行转换,从以实体名称为索引转为以测试用例作为索引,分析出测试用例相关的变化信息,生成相应的{测试用例实体差异信息集合}集合;这个集合包含了测试用例的相关的变化信息,根据此信息,可以知道该测试用例应该怎样修改。
最后,根据所述{测试用例实体差异信息集合},结合实体差异级别定义,结合测试标准和测试经验,给出测试用例升级建议,生成新的{测试用例测试用例升级指导建议}集合,该集合给出了哪些测试用例需要修改,以及需要作怎样的修改;然后再根据该集合,生成预定格式的波动分析测试用例升级报告。
其中,实体差异级别可按以下方式进行定义第一级别,实体有增加或者减少,此时需要增加相应的测试用例或者修改、减少测试用例;第二级别,因数据类型变化引起了实体的变化,此时测试用例中的输入输出发生变化,测试脚本中对实体的引用需要作相应的修改;第三级别,函数实体定义中引用的实体的数量发生变化,此时相应测试用例中的输入输出发生变化,需按不同情况修改脚本;第四级别,函数中引用的实体的引用关系发生变化,例如原来的左引用变成了现在的右引用,此时测试用例的输入输出发生改变,需按不同情况修改脚本;
第五级别,函数实体定义中的执行语句发生变化,此时输入输出可能发生变化,需要测试人员关注;第六级别,无任何变化,不需要升级。
由上述实施例可以看出,本发明通过波动分析辅助测试用例升级的方法,根据在先版本和升级版本的源文件之间的差异,可自动生成相应的测试用例升级报告,从而让用户可根据所述测试用例升级报告,自行升级测试用例。与现有技术相比,可大大减少测试人工方式时所需的工作量,以及人工方式所带来的人为差错。
权利要求
1.一种测试用例升级的方法,其特征在于,包括以下步骤(1)对测试用例中的测试脚本进行分析,得出测试用例与实体之间的依赖关系;(2)输入在先版本和升级版本的源文件,对两个版本的源文件进行波动分析,找出其中的被修改实体、新增实体、被删除实体、以及被修改数据类型,并生成相应的差异分析报告;(3)根据步骤(1)和步骤(2)中的结果,生成相应的测试用例升级报告;(4)根据所述测试用例升级报告升级测试用例。
2.根据权利要求1所述的方法,其特征在于,在所述步骤(1)中,先从测试用例信息中提取出实体引用信息,再对测试用例中的测试脚本进行语法分析,分析出实体变化时会影响到的测试用例,从而得到测试用例与实体之间的依赖关系,并生成以实体名称作为索引的{实体测试用例}集合。
3.根据权利要求2所述的方法,其特征在于,在所述步骤(1)中,还包括根据镜像测试工具对在先版本的测试,从所获得的实体信息中提取出数据类型变化时会直接或间接影响到的实体,并生成以数据类型作为索引的{数据类型影响实体}集合的步骤。
4.根据权利要求3所述的方法,其特征在于,在所述步骤(2)中,具体包括以下步骤(2-1)对在先版本和升级版本的源文件进行比较,根据比较结果将文件分为被修改文件、新增文件和被删除文件三类;(2-2)对于被修改文件,先对在先版本和升级版本的源文件进行语法分析,根据比较分析后的语法树提取实体信息,再根据实体定义将实体分为被修改实体、新增实体和被删除实体三类,并将三类实体分别记入到相应的被修改实体集合、新增实体集合或被删除实体集合中,再将被修改的数据类型名及修改信息记入到数据类型差异集合中;(2-3)对新增文件进行语法分析,提取其实体信息并记入到新增实体集合中;(2-4)从在先版本中提取被删除文件的实体信息,并记入被删除实体集合中;(2-5)根据步骤(2-3)和(2-4)的结果,按实体名称比较新增文件的新增实体集合和被删除文件的被删除实体集合中的各个实体,如果实体名称相同,则将该实体记入到被修改实体集合中;(2-6)根据步骤(2-2)、(2-3)、(2-4)和(2-5)的结果,将各个实体集合进行合并,得到合并后的被修改实体集合、新增实体集合及被删除实体集合,再将被修改的数据类型名称及修改信息进行合并,得到数据类型差异集合,最后根据合并的结果,生成差异分析报告。
5.根据权利要求4所述的方法,其特征在于,在所述步骤(3)中,具体包括以下步骤(3-1)根据以数据类型作为索引的{数据类型影响实体}集合,以及所述差异分析报告中的数据类型差异集合,分析出数据类型发生了变化的实体名称,生成{实体名称类型变化信息}集合;(3-2)根据所述{实体名称类型变化信息}集合,以及所述差异分析报告中的实体差异集合,分析出实体差异信息,生成{实体名称实体差异信息}集合;(3-3)根据所述以实体名称作为索引的{实体测试用例}集合,以及所述{实体名称实体差异信息}集合,得到实体综合信息,生成相应的{实体名(测试用例集合,实体差异信息)}集合;(3-4)对所述{实体名(测试用例集合,实体差异信息)}集合进行转换,从以实体名称为索引转为以测试用例作为索引,分析出测试用例所包含的变化信息,生成相应的{测试用例实体差异信息集合}集合;(3-5)根据所述{测试用例实体差异信息集合},结合实体差异级别定义,给出每个测试用例的修改建议,生成新的{测试用例测试用例升级指导建议}集合,再根据该集合,生成预定格式的波动分析测试用例升级报告。
6.根据权利要求5所述的方法,其特征在于,所述步骤(3-5)中的所述实体差异级别定义包括第一级别,实体有增加或者减少,此时需要增加相应的测试用例或者修改、减少测试用例;第二级别,因数据类型变化引起了实体的变化,此时测试用例中的输入输出发生变化,测试脚本中对实体的引用需要作相应的修改;第三级别,函数实体定义中引用的实体的数量发生变化,此时相应测试用例中的输入输出发生变化,需按不同情况修改脚本;第四级别,函数中引用的实体的引用关系发生变化,此时测试用例的输入输出发生改变,需按不同情况修改脚本;第五级别,函数实体定义中的执行语句发生变化,此时输入输出可能发生变化,需要测试人员关注;第六级别,无任何变化,不需要升级。
全文摘要
本发明涉及一种通过波动分析辅助测试用例升级的方法,其中包括以下步骤先对测试用例中的测试脚本进行分析,得出测试用例与实体之间的依赖关系;然后对在先版本和升级版本的源文件进行波动分析,找出其中的被修改实体、新增实体、被删除实体、以及被修改数据类型,并生成相应的差异分析报告;再根据前述结果,生成相应的测试用例升级报告;最后根据所述测试用例升级报告,用户可自行升级测试用例。本发明的方法可自动生成相应的测试用例升级报告,从而可用于辅助测试用例的升级。与现有技术相比,可大大减少测试人工方式时所需的工作量,以及人工方式所带来的人为差错。
文档编号H04B17/00GK1536789SQ0311003
公开日2004年10月13日 申请日期2003年4月9日 优先权日2003年4月9日
发明者袁长洋, 程强 申请人:华为技术有限公司