CN103226514B - 一种快速变更案例的软件测试方法与装置 - Google Patents
一种快速变更案例的软件测试方法与装置 Download PDFInfo
- Publication number
- CN103226514B CN103226514B CN201310157053.XA CN201310157053A CN103226514B CN 103226514 B CN103226514 B CN 103226514B CN 201310157053 A CN201310157053 A CN 201310157053A CN 103226514 B CN103226514 B CN 103226514B
- Authority
- CN
- China
- Prior art keywords
- case
- node
- chain
- case member
- unit
- 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.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种快速变更案例的软件测试方法与装置。所述软件测试装置包括案例搜索单元、案例变更单元、数据存储单元和主控调度单元,其中案例搜索单元用于根据案例变更操作涉及的源案例构件的编号,定位到案例变更需要修改的案例的集合;案例变更单元用于根据案例变更操作、源案例构件及目标案例构件,对测试案例的引用链进行批量自动变更;数据存储单元用于存储案例变更的相关信息;主控调度单元用于接收终端上送的案例变更指令,对指令进行合法性校验,然后调度其它单元执行案例变更操作,并把执行结果反馈给终端。本发明的技术方案实现了测试案例变更的批量化及自动化,有效地缩短测试过程,促进了测试效率及测试质量的提高。
Description
技术领域
本发明涉及软件测试领域,特别涉及一种快速变更案例的软件测试方法与装置。
背景技术
软件产品的测试,需要在不同的阶段和粒度,根据不同的角度和业务要求编写并执行测试案例。随着软件生命周期的推进,软件的需求及程序的实现经常会更新,因此在对测试案例进行管理的过程中,需要持续地对相关的测试案例进行同步更新,使得测试案例与待测对象保持匹配。对于规模庞大、功能繁多的软件系统,如银行计算机软件,在测试过程中需要数量众多、覆盖面全的测试案例。当软件系统的部分程序进行了修改时,相应需要变更的测试案例数量也极其巨大。
目前较为流行的软件测试理论、测试案例管理方法,对测试案例的结构要求各有不同。如“传统法”,使用自然语言对测试案例进行描述,案例内容是一段文字;又如“构件法”,该方法对某些系统组件的测试方法,重用度较高、可独立进行维护、多案例共享使用,因此可以抽象出来成为可重用的“案例构件”,当另一个系统也包含这个待测组件时,编写测试案例就可以引用这个案例构件。但无论是哪一种测试理论及案例管理方法,在案例变更管理方面都具有较多的不足,具体表现为:
1、根据修改内容定位变更的案例范围时,需要逐个地查看案例库中的所有案例,对每个案例的内容进行分析,当某个案例内容中包含需要修改的内容时,就认为这个案例需要修改。这种方法一方面由于需要分析全量案例,因此无形中需要查看大量不必修改的测试案例,分析案例的耗时甚多;另一方面,人工分析案例时的遗漏也有可能导致案例变更的不完全,从而直接降低了对修改内容进行重新测试的案例覆盖率。
2、现有的案例管理方法在对案例进行变更的时候,首先需要对案例全量内容进行遍历,找出修改点所在位置,然后对修改点进行修改,同时修改点之后的部分也需要做相应的修改。这种方法的人力投入较大,耗时较长,阻碍了测试效率的提高。
3、现有的案例管理方法,定位变更的案例集合以及对相关案例实施变更的操作都需要人工进行,缺少批量集中处理及自动执行变更的功能,阻碍了修改效率的提高。
发明内容
为了克服现有技术存在的上述缺陷,本发明提出了一种快速变更案例的软件测试方法与装置。
本发明提出的快速变更案例的软件测试装置包括案例搜索单元、案例变更单元、数据存储单元和主控调度单元,其中案例搜索单元用于根据案例变更操作涉及的源案例构件的编号,定位到案例变更需要修改的案例的集合;案例变更单元用于根据案例变更操作、源案例构件及目标案例构件,对测试案例的引用链进行批量自动变更;数据存储单元用于存储案例变更的相关信息;主控调度单元用于接收终端上送的案例变更指令,对指令进行合法性校验,然后调度其它单元执行案例变更操作,并把执行结果反馈给终端。
本发明还提供一种快速变更案例的软件测试方法,包括步骤一,主控调度单元接收终端上传的案例变更请求,进行合法性校验;步骤二,案例搜索单元根据案例变更操作涉及的源案例构件的编号启动查询需要修改的案例集合,进行案例批量搜索;步骤三,案例变更单元根据案例变更操作、源案例构件及目标案例构件,对测试案例的引用链进行批量自动变更;步骤四,主控调度单元将案例变更的结果反馈给请求终端。
本发明的快速变更案例的软件测试方法与装置引入了数据库表,记录每个案例构件被具体哪个案例引用、以及在哪一个位置引用,这样起到了索引的作用,减少了定位待变更的案例集合的耗时。该方法与传统方法逐条扫描案例来确定变更范围相比,节省了大量的时间及人力成本。另外,本方法对案例的管理,引入了“构件引用链”的结构,用于按引用次序逐个记录了测试案例引用的案例构件,对于引用链中每个节点,维护向前及向后的指针,分别指向前一节点及后一节点。在案例变更阶段,通过修改构件引用链中节点指针的指向,对构件引用链的节点进行增加、替换或删除操作。从而达到案例自动变更的目的,缩小了变更影响范围,降低了变更成本。
附图说明
图1示出了本发明快速变更案例的软件测试装置的逻辑构成图;
图2示出了本发明快速变更案例的软件测试装置中数据存储单元的数据库表结构;
图3示出了本发明快速变更案例的软件测试装置中节点数据块结构;
图4示出了本发明快速变更案例的软件测试方法的总体流程图;
图5示出了本发明快速变更案例的软件测试装置中案例搜索单元的处理流程图;
图6示出了本发明快速变更案例的软件测试装置中案例变更单元的处理流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
本发明提出一种基于构件化案例及案例引用链实现快速变更案例的测试方法与装置,适用于采取测试构件化理论对测试案例进行编写及管理的测试案例管理体系。
测试构件化的理论认为,在不同的待测对象中,可能存在相同功能或相同业务含义的组件A,例如“存款”和“取款”两个待测试的对象,其中都包含了“账号输入框”这个组件,其功能都是输入账号信息,而且两个画面上输入的账号需要满足同样的校验规则,在对“存款”和“取款”这两个对象进行测试案例编写的过程中,关于“账号输入框”这个组件就会存在相同的测试方法、测试数据。引入了测试构件化的理论之后,测试人员可以将对组件A的测试方法及测试数据,抽象成公用的“测试构件”并将其纳入管理。当需要为一个包括组件A的待测对象编写测试案例的时候,只需要在测试案例中组件A对应的步骤引用该测试构件,即可完成该部分的案例编写。因此,在测试构件化的理论中,测试案例实质上就是按照测试执行的次序,对测试构件的引用集合。测试构件化的理论及测试案例管理体系,实现了测试构件的一次编写,多次引用,从而达到节省案例编写的人力投入,提高效率的目的。
本发明的快速变更案例的软件测试方法与装置适用于采取构件化理论的案例结构管理体系,使用本发明提供的方法和装置进行软件测试时,当某些案例中的公用部分进行了修改之后,可以在海量的案例库中快速定位出需要变更的案例集合,然后批量地对相关案例进行快速的自动修改。因此,测试过程的效率和质量都得到大幅提高。
本发明引入了“构件被引用情况表”的概念,通过“构件被引用情况表”记录每个构件具体被案例引用的情况。当某一个构件发生了变更的时候,只需要查询“构件被引用情况表”,就可以快速筛选出需要修改的案例范围。当案例库存在海量案例需要筛选的情况下,与传统的手工逐个案例查找相比,筛选效率大为提高。
本发明同时引入了“构件引用链”的概念,“构件引用链”是本发明定义的一种数据结构。在构件法中,测试案例是以一定次序引用案例构件的组合,一个案例构件对应测试案例的一个步骤。相应地,“构件引用链”用于记录测试案例引用的案例构件组合,以及案例构件的先后顺序,从而记录了案例的具体组成。
“构件引用链”由多个节点组成,每一个节点都记录了其所指向的测试构件,以及该节点在引用链中的前节点及后节点。当测试案例需要修改时,只需要修改引用链中相关节点的指针,即可实现案例的快速修改。
本发明的使用,解决了传统的软件测试方法中测试案例变更能力弱,修改难度大的问题,同时实现了测试案例变更的批量化及自动化,可以有效地缩短测试过程,促进测试效率及测试质量的提高。
图1为本发明快速变更案例的软件测试装置的逻辑构成图。如图1所示,本发明的软件测试装置1包括案例搜索单元2、案例变更单元3、数据存储单元4和主控调度单元5。
案例搜索单元2用于根据变更操作涉及的“源案例构件”的编号,定位到案例变更需要修改的案例的集合。案例搜索单元2调用数据存储单元4,以传入的源案例构件C1的构件编号为条件,查询“构件被引用情况表”,得到引用了该案例构件的案例集合{C},该集合即是变更操作需要修改的所有案例集合。案例搜索单元2会获取搜索结果中的所有案例记录的案例编号及案例中引用该构件的一个位置,组成搜索结果并传递到案例变更单元3进行变更操作。
案例变更单元3用于根据案例变更操作、源案例构件C1及目标案例构件C2,对测试案例的引用链进行批量自动变更,达到测试案例快速变更的目的。测试案例的引用链,用于按引用次序逐个记录测试案例引用的案例构件,引用链中每一个节点对应测试案例中的一个步骤。当测试案例需要修改时,只需要修改引用链中相关节点的指针,即可实现案例的快速修改。案例变更单元3可识别的案例变更操作包括“新增案例操作”、“替换案例操作”及“删除案例操作”。
新增案例操作是指在源案例构件的引用后,增加一个目标案例构件的引用操作。当案例变更操作为“新增案例操作”时,案例变更单元3根据案例搜索单元2返回的案例引用链信息及引用位置,访问数据存储单元4,将案例引用链中源案例构件C1对应节点N的后指针,指向目标案例构件C2;然后将N节点的后一节点N+1的前指针,指向目标案例构件C2;最后将目标案例构件C2的前后指针,分别指向N节点及N+1节点,即完成“新增”操作。其中,N为自然数。
替换案例操作是指将源案例构件的引用替换成目标案例构件的引用。当变更操作为“替换案例操作”时,案例变更单元3根据案例搜索单元2返回的案例引用链信息及引用位置,访问数据存储单元4,将案例引用链中源案例构件C1对应节点N的前一节点N-1的后指针,指向目标案例构件C2;然后将N节点的后一节点N+1的前指针,指向目标案例构件C2;最后将目标案例构件C2的前后指针,分别指向N-1节点及N+1节点,并通知数据存储单元4回收节点N的数据块空间,即完成“替换”操作。其中,N为自然数。删除案例操作是指将源案例构件的引用删除。当变更操作为“删除案例操作”时,案例变更单元3根据案例搜索单元2返回的案例引用链信息及引用位置,访问数据存储单元4,将案例引用链中源案例构件C1对应节点N的前一节点N-1的后指针,指向N节点的后一节点N+1;然后将节点N+1的前指针,指向N-1节点;最后通知数据存储单元4回收节点N的数据块空间,即完成“删除”操作。其中,N为自然数。上文所指的“源案例构件”,是指可能被案例引用过、后续根据软件需求的变化需要进行变更的案例构件。“目标案例构件”是指因软件需求变化而引入的新案例构件。
数据存储单元4用于存储案例变更的相关信息。数据存储单元4由数据库部分及节点数据池部分组成。数据库部分以关系型数据库(如Oracle)的形式,记录案例构件的实体定义,案例的基本定义信息以及构件被案例所引用的情况。节点数据池部分,以数据块的方式保存案例引用链中的每个节点,记录节点对应的构件编号,以及节点在引用链中的前后节点信息。
图2示出了本发明软件测试装置中数据存储单元的数据库表结构。如图2所示,数据存储单元4的数据库部分,表结构如下:
A.构件实体表:用于记录可重用的案例构件的实体定义。包括“构件编号”、“构件描述”、“测试方法”、“测试数据”等四个字段。“构件编号”为主键,用作案例构件的区分标识;“构件描述”用于对测试构件进行描述说明;“测试方法”用于记录对待测对象进行测试的方法或操作;“测试数据”用于测试过程中使用的测试数据。
B.案例定义表:用于记录对待测对象进行测试的一个测试案例的基本定义,标识每个案例的构件引用链的首节点在存储介质中的位置。通过“案例定义表”及链节点数据块中保存的信息,可以根据案例编号查询遍历出该案例定义的构件引用链的组成结构,即该结构化案例中保存的测试流程与测试方法。
“案例定义表”包括“案例编号”、“案例描述”、“构件引用链首节点”等三个字段。“案例编号”为主件,用作案例的区分标识;“案例描述”用于对测试案例进行描述说明;“构件引用链首节点”用于记录该测试案例对应的构件引用链第一个节点在节点数据池中的数据块编号。
C.构件被引用情况表:用于记录案例对某一个构件的引用情况及引用的位置。一个测试案例中使用了某一测试构件,在本表中就会有唯一的一条记录与之对应,并记录了测试案例在哪一步骤对该测试构件进行了引用。案例增加一个构件引用时,需要在构件被引用情况表中新增一条对应的记录;案例取消对一个构件的引用时,需要在构件被引用情况表中删除相应的记录。
“构件被引用情况表”包括“构件编号”、“案例编号”、“引用位置”等三个字段。“构件编号”与“案例编号”一起作为主键,唯一标识一条案例对构件的引用记录;“引用位置”用于记录测试案例引用该测试构件的步骤序号,同时也记录了构件引用所对应的节点在案例的构件引用链中的位置。例如表中一条构件编号为A111、案例编号为C111、引用位置为5的记录,说明了“编号为C111的案例,在案例的第5步引用了编号为A111的构件”,同时也说明了“A111这个构件引用,在案例C111的构件引用链中是第5个节点”。
节点数据池由节点数据块的集合构成,每个节点数据块用以保存构件引用链的节点信息,在节点数据池中有唯一的位置标示。
图3示出了本发明软件测试装置中数据存储单元的的节点数据块结构。如图3所示,数据存储单元4中,一个节点数据块包括“前指针”、“后指针”、“案例构件编号”等三部分。“前指针”记录该节点在构件引用链中的前一个节点,如果该节点没有前节点,则前指针为NULL;“后指针”记录该节点在构件引用链中的后一个节点,如果该节点没有后节点,则后指针为NULL;“案例构件编号”记录该节点指向的案例构件,表示引用链对应的测试案例,在节点对应的测试步骤中引用的是哪一个测试构件。
例如,一个测试案例C1,其引用链中第5个节点N,前指针指向节点M,后指针指向节点O,记录的案例构件编号为Num,则表示:1)测试案例C1第4个节点为M,第6个节点为O;2)测试案例C1在测试的第5步,引用了编号为Num的案例构件,需要使用测试构件Num中记载的测试方法及测试数据,对待测对象或对象的部分进行测试。
主控调度单元5用于接收终端上送的案例变更指令,对指令进行合法性校验,然后调度其它单元执行案例变更操作,并把执行结果反馈给终端。
图4为本发明快速变更案例的软件测试方法的总体流程图。
参照图4,在步骤201:主控调度单元5接收终端上传的案例变更请求,进行合法性校验。所述合法性校验包括判断变更请求的语义是否正确、是否包括“变更操作”、“源案例构件”、“目标案例构件”三要素。对于本发明定义的三种案例变更操作,语义正确且要素完整的变更请求相应地包括如下三种:
1)新增案例操作。所述新增案例操作是指在‘源案例构件A1’的引用后,增加一个‘目标案例构件B1’的引用操作;三要素为:新增案例(案例变更操作)、A1(源案例构件)、B1(目标案例构件)。
2)替换案例操作。所述替换案例操作是指将‘源案例构件A1’的引用替换为‘目标案例构件B1’的引用;三要素为:新增案例(案例变更操作)、A1(源案例构件)、B1(目标案例构件)。
3)删除案例操作。所述删除案例操作是指将‘源案例构件A1’的引用删除。三要素为:新增案例(案例变更操作)、A1(源案例构件)、NULL(目标案例构件。删除操作中不需要使用,故设为NULL)。
其中,源案例构件是指被案例引用过、后续根据软件需求的变化需要进行变更的案例构件。目标案例构件是指因软件需求变化而引入的新案例构件。
步骤202:案例搜索单元2根据案例变更操作涉及的源案例构件的编号启动查询需要修改的案例集合,进行案例批量搜索。用于根据“源案例构件”的编号确定需要变更的案例范围。主控调度单元5以“源案例构件A1”为传入参数,启动案例搜索单元2。案例搜索单元2访问数据存储单元4,用数据库查询语句(如SQL语言的SELECT语句),查询“构件被引用情况表”,将“源案例构件A1”的构件编号值与“构件被引用情况表”的“构件编号”字段作对比,并筛选出两个值相等的“构件被引用情况表”,组成变更涉及修改的案例集合;然后,获取上述案例集合中的案例的编号及案例中引用该构件的一个位置,组成搜索结果并传递到案例变更单元3。
步骤203:案例变更单元3根据案例变更操作、源案例构件及目标案例构件,对源案例的引用链进行批量自动变更。测试案例的引用链,用于按照引用次序逐个记录测试案例引用的案例构件。案例变更单元3根据变更指令的要求,针对案例搜索单元2查询到的搜索结果循环进行处理。对每一个搜索结果,以案例编号为条件,调用数据存储单元4,通过查询“案例定义表”,获取案例的构件调用链信息,然后根据变更请求类型的不同,通过修改构件引用链中节点指针的指向,对构件引用链的节点进行增加、替换或删除操作,实现变更处理。当搜索结果中所有待变更案例都处理完成后,案例变更单元3将处理情况反馈主控调度单元5。
步骤204:主控调度单元5将案例变更的结果反馈给请求终端。
图5示出了案例搜索单元的处理流程图。使用案例搜索单元2查询变更涉及的案例集合(上述总体流程中“步骤202”),其详细处理流程如图5所示,具体包括如下:
步骤301:案例搜索单元2接收到主控调度单元5提交的案例查询请求。
步骤302:案例搜索单元2访问数据存储单元4,用数据库查询语句(如SQL语言的SELECT语句),查询“构件被引用情况表”,将主控调度单元5传入的“源案例构件A1”的构件编号值,与“构件被引用情况表”的“构件编号”字段作对比,当两个值相等的时候,将“构件被引用情况表”对应记录行筛选出来,放入搜索结果集中。
步骤303:对结果集的案例,逐条获取记录对应的案例编号及案例中引用该构件的一个位置,组成搜索结果集并传递到案例变更单元3,进行后续变更操作。
图6示出了案例变更单元3的处理流程图。使用案例变更单元3对案例进行变更操作(上述总体流程中“步骤203”),其详细处理流程如图6所示,具体包括如下:
步骤401:案例变更单元3接收到案例搜索单元2传递的案例变更请求,获取搜索结果集、变更操作、源案例构件、目标案例构件等参数。变更请求以XML的形式传递。例如,以下XML数据表示了“对于所有引用了‘源案例构件A1’的案例,在‘源案例构件A1’后增加‘目标案例构件B1’”的变更请求:
<xml>
<变更操作>增加</变更操作>
<搜索结果集>
<搜索结果><案例编号>123</案例编号><引用位置>6</引用位置></搜索结果>
<搜索结果><案例编号>136</案例编号><引用位置>1</引用位置></搜索结果>
</搜索结果集>
<源案例构件编号>A111</源案例构件编号>
<目标案例构件编号>B111</目标案例构件编号>
</xml>
步骤402:案例变更单元3对XML形式的变更请求进行解析,转换成多条操作指令。转换方法为:获取XML中的一个“搜索结果”节点,解析出其中的“案例编号”及“引用位置”,并与XML中的“增加”变更操作、“源案例构件编号”、“目标案例构件编号”一起拼成操作指令字符串。如步骤401示例中的XML变更请求,可以转化为如下的操作指令集合:
1)变更操作:增加;案例编号:123;引用位置:6;源案例构件编号:A111;目标案例构件编号:B111;
2)变更操作:增加;案例编号:136;引用位置:1;源案例构件编号:A111;目标案例构件编号:B111;
转换完成后,案例变更单元3在操作指令集合中取出一条,执行更新操作。
步骤403:如果“目标案例构件编号”不为空的情况下,案例变更单元3调用数据存储单元4,在数据存储单元4的数据块中新增一个构件节点M,把“目标案例构件编号”写入节点M的内容部分,然后将节点M的前后指针部分都置为NULL,表示该节点暂无前后节点。
步骤404:案例变更单元3调用数据存储单元4,以操作指令中的案例编号N为条件,查询“案例定义表”并筛选出表中案例编号字段值与案例编号N相等的记录,然后在查询结果中取出“构件引用链首节点”的值,执行后续步骤操作。本步骤操作是用数据库查询语句(如SQL语言的SELECT语句)的方式实现,以SQL语言为例,案例变更单元3拼装了如下的SELECT语句,并调用数据存储单元4进行查询:SELECT构件引用链首节点FROM案例定义表WHERE案例编号=案例编号N。
步骤404执行完成后,根据操作指令中变更操作的不同,执行不同的步骤序列:1)当变更操作为“增加”时,顺次执行步骤405、步骤406、步骤407、步骤416、步骤417;2)当变更操作为“替换”时,顺次执行步骤408、步骤409、步骤410、步骤411、步骤416、步骤417;3)当变更操作为“删除”时,顺次执行步骤412、步骤413、步骤414、步骤415、步骤416、步骤417。
步骤405:案例变更单元3访问数据存储单元4,根据“构件引用链首节点”指针找到案例引用的第一个节点的数据块,然后根据数据块中保存的节点后指针,找到案例引用的下一个节点的对应数据块。如此循环N-1次(N是操作指令中的“引用位置”值),找到案例引用链中的第N个节点。
步骤406,:案例变更单元3根据节点N的后指针找到下一个节点N+1,然后改写节点N、N+1的数据块,将节点N+1的前指针指向步骤403中创建的构件节点M,将节点N的后指针指向构件节点M。
步骤407:案例变更单元3改写节点M的数据块,分别将M节点的前指针指向节点N,将后指针指向节点N+1。
步骤408:案例变更单元3访问数据存储单元4,根据“构件引用链首节点”指针找到案例引用的第一个节点的数据块,然后根据数据块中保存的节点后指针,找到案例引用的下一个节点的对应数据块。如此循环N-1次(N是操作指令中的“引用位置”值),找到案例引用链中的第N个节点。
步骤409:根据节点N的前指针找到前一个节点N-1,然后改写节点N-1的数据块,将节点N-1的后指针指向步骤403中创建的构件节点M。
步骤410:根据节点N的后指针找到下一个节点N+1,然后改写节点N+1的数据块,将节点N+1的前指针指向步骤403中创建的构件节点M。
步骤411:案例变更单元3改写节点M的数据块,分别将M节点的前指针指向节点N-1,将后指针指向节点N+1。然后通知数据存储单元4,回收节点N的数据块。
步骤412:案例变更单元3访问数据存储单元4,根据“构件引用链首节点”指针找到案例引用的第一个节点的数据块,然后根据数据块中保存的节点后指针,找到案例引用的下一个节点的对应数据块。如此循环N-1次(N是操作指令中的“引用位置”值),找到案例引用链中的第N个节点。
步骤413:案例变更单元3根据节点N的前指针找到前一个节点N-1,根据节点N的后指针找到下一个节点N+1。
步骤414:案例变更单元3改写节点N-1的数据块,将节点N-1的后指针指向节点N+1;改写节点N+1的数据块,将节点N+1的前指针指向节点N-1;
步骤415:案例变更单元3通知数据存储单元4,回收节点N的数据块。
步骤416:案例变更单元3访问数据存储单元4,以案例编号(假设案例编号值为num)为条件,删除“构件被引用情况表”中符合条件的记录。然后,案例变更单元3根据“构件引用链首节点”指针,从案例引用的第一个节点开始,遍历案例引用链中的所有节点。对于引用链中每一个节点(假设其位置为p),案例变更单元3访问节点的数据块,取出其中保存的构件编号a,然后用案例编号(假设案例编号值为num)、构件编号(假设构件编号值为a)及“引用位置”p为条件,在数据存储单元中的“构件被引用情况表”中插入一条记录,记录的“案例编号”值为num,“构件编号”值为a,“引用位置”值为p。
步骤417:案例变更单元3判断是否还有未处理的操作指令。若还存在未处理的操作指令,则返回步骤402继续处理;若不存在未处理的操作指令,则将处理情况返回主控调度单元5。
以下通过举例的方式进一步说明应用本发明的方法进行案例变更管理。
一个使用测试构件化模式的案例数据库,应用本发明方法进行案例变更管理。案例构件A111和B111是案例库中已定义好的两个测试构件,其中构件A111用于测试“往来户冻结状态的检查功能”,构件B1用于测试“往来户销户状态的检查功能”,案例库中已有若干测试案例引用了构件A111。在最新的版本里面,要求待测系统相关功能在检查往来户冻结状态之后,增加对往来户销户状态的检查,所以需要对所有引用了构件A111的测试案例,在A111之后增加对构件B111的引用。因此根据本发明,对案例库实施变更管理的方法如下:
A.终端以指令文本的方式,上送案例变更请求。指令文本的格式如下:
变更操作:新增构件
源案例构件:A111
目标案例构件:B111
主控调度单元5接收到案例变更请求后,执行合法性校验,判断变更请求中包括了“变更操作”、“源案例构件”、“目标案例构件”等三要素,且“变更操作”的内容(新增构件)合法。
B.主控调度单元5调度案例搜索单元2,并将源案例构件编号A111作为调度参数传给案例搜索单元2。案例搜索单元2接收到案例查询请求后,依次完成以下操作:
1)案例搜索单元2生成数据库查询语句(SELECT*FROM构件被引用情况表WHERE构件编号=A111),访问数据存储单元4,并执行前述搜索语句,筛选出“构件被引用情况表”中“构件编号”字段等于A111的两条记录,放入搜索结果集中,最终形成的搜索结果集如下:
记录1
构件编号:A111
案例编号:123
引用位置:6
记录2
构件编号:A111
案例编号:136
引用位置:1
2)案例搜索单元2遍历搜索结果集,逐条获取记录的案例编号及引用位置,组成XML格式的案例变更请求数据包如下:
<xml>
<变更操作>增加</变更操作>
<搜索结果集>
<搜索结果><案例编号>123</案例编号><引用位置>6</引用位置></搜索结果>
<搜索结果><案例编号>136</案例编号><引用位置>1</引用位置></搜索结果>
</搜索结果集>
<源案例构件编号>A111</源案例构件编号>
<目标案例构件编号>B111</目标案例构件编号>
</xml>
变更请求数据包生成后,案例搜索单元2将数据包发送给案例变更单元,执行案例变更操作。
C.案例变更单元3接收到案例搜索单元2发送的XML格式的案例变更请求,然后依次完成以下操作:
1)案例变更单元3对XML形式的变更请求进行解析和转换,最终将变更请求转换成以下两条操作指令的集合:
a、变更操作:增加;案例编号:123;引用位置:6;源案例构件编号:A111;目标案例构件编号:B111;
b、变更操作:增加;案例编号:136;引用位置:1;源案例构件编号:A111;目标案例构件编号:B111;
2)案例变更单元3在操作指令集合中获取一条操作指令(以指令a为例),读入其内容。
3)案例变更单元3调用数据存储单元4,在数据存储单元4的数据块中申请新增一个构件节点M,在节点池中的位置编号为N113。然后将操作指令中的“目标案例构件编号”B111写入节点M的内容部分,然后将节点M的前后指针部分都置为NULL。
4)案例变更单元3使用操作指令中的“案例编号”123,拼装数据库查询语句:SELECT构件引用链首节点FROM案例定义表WHERE案例编号=123。然后调用数据存储单元4,执行数据库查询语句,筛选出“案例定义表”中案例编号字段值等于123的一条记录,然后获取该记录的“构件引用链首节点”的指针值为N211。
5)案例变更单元3访问数据存储单元4,在节点池中找到位置编号为N211的数据块,也就是案例引用的第一个节点的数据块。然后根据数据块中保存的节点后指针,找到案例引用的下一个节点的对应数据块。如此循环6-1=5次(6是操作指令中的“引用位置”值),找到案例引用链中的第6个节点,其位置编号为N216。
6)案例变更单元3访问位置编号为N216的数据块,获取其后节点指针,位置编号为N217。将位置编号为N216的数据块的后指针更新为N113,指向“目标案例构件编号”B111;将位置编号为N217的数据块的前指针更新为N113,指向“目标案例构件编号”B111。
7)案例变更单元3改写“目标案例构件编号”B111对应的数据块(N113),将数据块的前指针更新为N216,将后指针更新为N217。
8)案例变更单元3拼装数据库删除语句:DELETEFROM构件被引用情况表WHERE案例编号=123,然后访问数据存储单元4,执行上述语句,删除“构件被引用情况表”中案例编号为123的记录。
9)案例变更单元3根据“构件引用链首节点”指针,从案例引用的第一个节点N211开始,遍历案例引用链中的所有节点,将每一个节点的构件引用信息写入“构件被引用情况表”。以引用链中的第7个节点(其位置编号为N113)为例,案例变更单元3访问该节点的数据块,取出数据块中保存的构件编号值B111,然后在数据存储单元中的“构件被引用情况表”中插入一条记录,记录的“案例编号”值为123,“构件编号”值为B111,“引用位置”值为7。
10)重复执行上述步骤2)到9),直至集合中所有操作指令都完成变更处理后,将“处理成功”的应答返回主控调度单元5。
D.主控调度单元5将“变更操作成功”的结果反馈给请求终端。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (21)
1.一种快速变更案例的软件测试装置,包括:
案例搜索单元,用于根据案例变更操作涉及的源案例构件的编号,定位到案例变更需要修改的案例的集合;
案例变更单元,用于根据案例变更操作、源案例构件及目标案例构件,对测试案例的引用链进行批量自动变更;
数据存储单元,用于存储案例变更的相关信息;
主控调度单元,用于接收终端上送的案例变更指令,对指令进行合法性校验,然后调度其它单元执行案例变更操作,并把执行结果反馈给终端;
其中,所述源案例构件是指被案例引用过、后续根据软件需求的变化需要进行变更的案例构件;
所述目标案例构件是指因软件需求变化而引入的新案例构件;
所述测试案例的引用链,是指按照引用次序逐个记录测试案例引用的案例构件;
所述合法性校验包括判断案例变更请求的语义是否正确、是否包括案例变更操作、源案例构件、目标案例构件三要素。
2.根据权利要求1所述的装置,其中,所述案例变更操作包括新增案例操作、替换案例操作及删除案例操作。
3.根据权利要求2所述的装置,其中,所述新增案例操作是指在源案例构件的引用后,增加一个目标案例构件的引用操作,具体包括:
案例变更单元根据案例搜索单元返回的案例引用链信息及引用位置,访问数据存储单元,将案例引用链中源案例构件对应节点N的后指针,指向目标案例构件;
将N节点的后一节点N+1的前指针,指向目标案例构件;
将目标案例构件的前后指针,分别指向N节点及N+1节点;
其中,N为自然数。
4.根据权利要求2所述的装置,其中,所述替换案例操作是指将源案例构件的引用替换成目标案例构件的引用,具体包括:
案例变更单元根据案例搜索单元返回的案例引用链信息及引用位置,访问数据存储单元,将案例引用链中源案例构件对应节点N的前一节点N-1的后指针,指向目标案例构件;
将N节点的后一节点N+1的前指针,指向目标案例构件;
将目标案例构件的前后指针,分别指向N-1节点及N+1节点,并通知数据存储单元回收节点N的数据块空间;
其中,N为自然数。
5.根据权利要求2所述的装置,其中,所述删除案例操作是指将源案例构件的引用删除,具体包括:
案例变更单元根据案例搜索单元返回的案例引用链信息及引用位置,访问数据存储单元,将案例引用链中源案例构件对应节点N的前一节点N-1的后指针,指向N节点的后一节点N+1;
将节点N+1的前指针,指向N-1节点;
通知数据存储单元回收节点N的数据块空间;
其中,N为自然数。
6.根据权利要求1至5其中之一所述的装置,其中,数据存储单元由数据库部分及节点数据池部分组成。
7.根据权利要求6所述的装置,其中,所述数据库部分包括:
构件实体表,用于记录可重用的案例构件的实体定义;
案例定义表,用于记录对待测对象进行测试的一个测试案例的基本定义,标识每个案例的构件引用链的首节点在存储介质中的位置;
构件被引用情况表,用于记录案例对构件的引用情况及引用的位置。
8.根据权利要求7所述的装置,其中,所述数据库部分是Oracle形式的关系型数据库。
9.根据权利要求7或8所述的装置,其中,所述构件实体表包括:
构件编号字段,用于案例构件的区分标识;
构件描述字段,用于对测试构件进行描述说明;
测试方法字段,用于记录对待测对象进行测试的方法或操作;
测试数据字段,用于测试过程中使用的测试数据。
10.根据权利要求7或8所述的装置,其中,所述案例定义表包括:
案例编号字段,用于案例的区分标识;
案例描述字段,用于对测试案例进行描述说明;
构件引用链首节点字段,用于记录测试案例对应的构件引用链第一个节点在节点数据池中的数据块编号。
11.根据权利要求7或8所述的装置,其中,所述构件被引用情况表包括:
构件编号字段和案例编号字段,用于唯一标识一条案例对构件的引用记录;
引用位置字段,用于记录测试案例引用测试构件的步骤序号,以及构件引用所对应的节点在案例的构件引用链中的位置。
12.根据权利要求6所述的装置,其中,所述节点数据池部分以节点数据块的方式保存案例引用链中的每个节点,记录节点对应的构件编号,以及节点在引用链中的前后节点信息。
13.根据权利要求12所述的装置,其中,所述节点数据块包括:
前指针,用于记录某节点在构件引用链中的前一个节点,如果该节点没有前节点,则前指针为NULL;
后指针,用于记录某节点在构件引用链中的后一个节点,如果该节点没有后节点,则后指针为NULL;
案例构件编号,用于记录某节点指向的案例构件。
14.一种快速变更案例的软件测试方法,包括步骤:
步骤一,主控调度单元接收终端上传的案例变更请求,进行合法性校验;
步骤二,案例搜索单元根据案例变更操作涉及的源案例构件的编号启动查询需要修改的案例集合,进行案例批量搜索;
步骤三,案例变更单元根据案例变更操作、源案例构件及目标案例构件,对测试案例的引用链进行批量自动变更;
步骤四,主控调度单元将案例变更的结果反馈给请求终端;
其中,所述源案例构件是指被案例引用过、后续根据软件需求的变化需要进行变更的案例构件;
所述目标案例构件是指因软件需求变化而引入的新案例构件;
所述测试案例的引用链,是指按照引用次序逐个记录测试案例引用的案例构件;
步骤一中所述的合法性校验包括判断案例变更请求的语义是否正确、是否包括案例变更操作、源案例构件、目标案例构件三要素。
15.根据权利要求14所述的软件测试方法,其中,所述案例变更操作包括新增案例操作、替换案例操作及删除案例操作。
16.根据权利要求15所述的软件测试方法,其中,所述新增案例操作是指在源案例构件的引用后,增加一个目标案例构件的引用操作。
17.根据权利要求15所述的软件测试方法,其中,所述替换案例操作是指将源案例构件的引用替换成目标案例构件的引用。
18.根据权利要求15所述的软件测试方法,其中,所述删除案例操作是指将源案例构件的引用删除。
19.根据权利要求14至18其中之一所述的软件测试方法,其中,所述步骤二还包括如下步骤:
主控调度单元以源案例构件为传入参数,启动案例搜索单元;
案例搜索单元访问数据存储单元,用数据库查询语句查询构件被引用情况表,将源案例构件的构件编号值与构件被引用情况表中的构件编号字段作对比,并筛选出经对比后两个值相等的构件被引用情况表,组成变更涉及修改的案例集合;
获取上述案例集合中的案例的编号及案例中引用构件的一个位置,组成搜索结果集并传递到案例变更单元。
20.根据权利要求19所述的软件测试方法,其中,所述数据库查询语句是SQL语言的SELECT语句。
21.根据权利要求14至18其中之一所述的软件测试方法,其中,所述步骤三还包括如下步骤:
案例变更单元接收案例搜索单元以XML的形式传递的案例变更请求,获取搜索结果集、案例变更操作、源案例构件、目标案例构件参数;
案例变更单元对XML形式的案例变更请求进行解析,转换成操作指令;
案例变更单元根据操作指令执行更新操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310157053.XA CN103226514B (zh) | 2013-04-28 | 2013-04-28 | 一种快速变更案例的软件测试方法与装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310157053.XA CN103226514B (zh) | 2013-04-28 | 2013-04-28 | 一种快速变更案例的软件测试方法与装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103226514A CN103226514A (zh) | 2013-07-31 |
CN103226514B true CN103226514B (zh) | 2016-05-18 |
Family
ID=48836972
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310157053.XA Active CN103226514B (zh) | 2013-04-28 | 2013-04-28 | 一种快速变更案例的软件测试方法与装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103226514B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101158968A (zh) * | 2007-11-21 | 2008-04-09 | 中国工商银行股份有限公司 | 一种功能构件与数据关联运行方法及系统 |
CN101599066A (zh) * | 2008-06-03 | 2009-12-09 | 鸿富锦精密工业(深圳)有限公司 | 文档批量操作管理系统及方法 |
CN101908015A (zh) * | 2009-06-04 | 2010-12-08 | 中国工商银行股份有限公司 | 一种基于构件生成测试案例的装置及方法 |
CN102201006A (zh) * | 2011-06-10 | 2011-09-28 | 互动在线(北京)科技有限公司 | 批量更新词条页面内容块的装置和方法 |
-
2013
- 2013-04-28 CN CN201310157053.XA patent/CN103226514B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101158968A (zh) * | 2007-11-21 | 2008-04-09 | 中国工商银行股份有限公司 | 一种功能构件与数据关联运行方法及系统 |
CN101599066A (zh) * | 2008-06-03 | 2009-12-09 | 鸿富锦精密工业(深圳)有限公司 | 文档批量操作管理系统及方法 |
CN101908015A (zh) * | 2009-06-04 | 2010-12-08 | 中国工商银行股份有限公司 | 一种基于构件生成测试案例的装置及方法 |
CN102201006A (zh) * | 2011-06-10 | 2011-09-28 | 互动在线(北京)科技有限公司 | 批量更新词条页面内容块的装置和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103226514A (zh) | 2013-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7461042B2 (en) | Method, system, and program for defining and managing complex contingent rules, and exceptions thereto, in a rule-based computer system | |
US8433673B2 (en) | System and method for supporting data warehouse metadata extension using an extender | |
US8775447B2 (en) | Processing related datasets | |
US7555493B2 (en) | Apparatus, systems and methods for relational database replication and proprietary data transformation | |
US7328428B2 (en) | System and method for generating data validation rules | |
US8340995B2 (en) | Method and system of using artifacts to identify elements of a component business model | |
US20100138388A1 (en) | Mapping instances of a dataset within a data management system | |
JPH04289920A (ja) | 技術変更により影響を受けるバージョン化データオブジェクトの制御を実行する方法 | |
KR102365292B1 (ko) | 복잡한 엔지니어링 객체의 수명주기를 관리하는 방법 및 그 구현을 위한 시스템 | |
Kessentini et al. | Automated metamodel/model co-evolution using a multi-objective optimization approach | |
CN105528464A (zh) | 一种自动判断关联数据技术状态一致性的版本管理系统 | |
CN101013426B (zh) | 信息管理装置以及信息管理方法 | |
Batot et al. | Heuristic-based recommendation for metamodel—ocl coevolution | |
CN116719799A (zh) | 环保数据治理方法、装置、计算机设备和存储介质 | |
CN106371849A (zh) | 应用数据的处理方法及装置 | |
CN114386920A (zh) | 基于数据共享的信息化运行系统及方法 | |
CN103226514B (zh) | 一种快速变更案例的软件测试方法与装置 | |
CN115564373A (zh) | 项目信息数据处理方法、系统、设备及介质 | |
Li | Process mining based on object-centric behavioral constraint (ocbc) models | |
CN114880387A (zh) | 数据集成脚本生成方法及装置、存储介质及电子设备 | |
CN113504904A (zh) | 用户定义函数实现方法、装置、计算机设备和存储介质 | |
Montali et al. | From DB-nets to coloured petri nets with priorities (extended version) | |
CN111861401A (zh) | 一种行业资质管理及在线审批系统的技术方案 | |
Putzer | Data structures and data-base systems used in high energy physics: Modelling and implementation | |
US11551464B2 (en) | Line based matching of documents |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |