CN101582048A - 一种用于缺陷管理的方法和系统 - Google Patents
一种用于缺陷管理的方法和系统 Download PDFInfo
- Publication number
- CN101582048A CN101582048A CNA2008100965555A CN200810096555A CN101582048A CN 101582048 A CN101582048 A CN 101582048A CN A2008100965555 A CNA2008100965555 A CN A2008100965555A CN 200810096555 A CN200810096555 A CN 200810096555A CN 101582048 A CN101582048 A CN 101582048A
- Authority
- CN
- China
- Prior art keywords
- call stack
- defective
- call
- information
- node
- 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
Images
Abstract
本发明提供了一种用于缺陷管理的方法和系统。所述方法包括:以结构化的方式存储用于描述缺陷的调用栈和所述调用栈的元素之间的调用关系;响应于在测试期间出现错误,基于所述元素之间的调用关系,比较与所述错误对应的调用栈中的各个元素和已存储的调用栈中的各个元素;以及利用所述比较的结果确定所述错误是否由已有缺陷引起。通过本发明,可以容易地进行调用栈比较,从而使测试人员从繁琐的手动搜索过程中解脱出来,并显著降低了出错的概率。并且由于采用了结构化的存储方式,所以使得信息统计变得非常容易,进而为测试人员和开发人员提供了可用于后续工作的大量准确且有用的信息。
Description
技术领域
本发明涉及软件测试技术,更具体地,本发明涉及一种用于缺陷管理的方法和系统。
背景技术
软件测试是软件应用开发过程中的一个必不可少的过程,其目的是利用精心设计的测试方案尽可能地找出软件应用中的存在的缺陷。为了便于缺陷管理,通常将缺陷存储在缺陷库中。在现有技术中,存在许多可以存储缺陷的解决方案,其实例有:配置管理版本控制(CMVC)系统、ClearCase、Lotus Notes Database等。
在现有的解决方案中,使用缺陷注释字段来描述缺陷,并且用于描述缺陷的信息大多以文本方式存储在缺陷库中,例如在CMVC中主要使用的是“备注”字段,在ClearCase中使用的是“描述”字段,在Lotus Notes Database中使用的是“描述”部分。描述缺陷的信息通常包括出现错误时的调用栈。这是因为,错误的出现与在一系列的函数执行期间的异常抛出密切相关,所以错误出现时的调用栈,即异常抛出时所产生的格式化的函数调用序列,对于描述该缺陷非常关键。因而,可以记录错误出现时的调用栈,并使用该调用栈来描述缺陷。
在软件测试中,通常会找到许多不同的错误。而实际上,这些错误与缺陷之间并非是一一对应的关系。通常的情况是,已找到的错误中的很多不同错误都是由相同缺陷引起的。因此,在出现了错误时,就需要判断该错误是否是由已开立的缺陷而引起的,从而确定是否要开立这个缺陷。
当前,为了确定是否要开立缺陷所需的搜索和分析工作都是由测试人员手动完成的。因此,在出现新的错误时,就需要测试人员将与新错误对应的调用栈(即,出现该错误时的调用栈)和缺陷库中已存储的用以描述缺陷的调用栈进行比较,以确定缺陷库中是否存在相同或者相似的调用栈。如果不存在,则认为该错误是由新的缺陷引起,需要开立新缺陷。否则,就需要测试人员利用其他与缺陷相关的辅助信息来判定该错误是否由新的缺陷引起。如果虽然存在相同或者相似的调用栈,但经分析确定该错误并非由已有缺陷引起,则仍需要开立新缺陷。如果经分析判断该错误是由已有缺陷引起,则不需开立缺陷,仅报告该错误即可。
在目前的缺陷管理方案中,该搜索和分析工作非常耗时,易于出错,并且还不便于信息统计。首先,在缺陷库中存储有数千条缺陷信息,要在这样的庞大缺陷库中进行搜索并不是容易的事情。要想增加搜索效率,就必须选择适当的关键字。而关键字的选择通常需要大量的专业知识和丰富的经验,这对于缺乏经验的新手来讲非常困难。其次,文本形式的调用栈信息不便于阅读。以人工方式一步一步地比较两个调用栈信息非常麻烦,且容易出错。再者,利用现有技术中的这种存储方式,难以进行根据调用栈信息对缺陷情况的统计。而诸如每个组件的缺陷数量、涉及最多缺陷的函数等的统计信息对于测试人员和开发人员来讲都是非常需要也非常有用的。然而,对于现有技术中以文本方式存储的这种缺陷管理方案,这样的统计难以实现。
因此,基于上述问题,在软件测试领域,越来越需要一种改进的缺陷管理方法和系统。
发明内容
为此,本发明提供了一种改进的缺陷管理方式。该方式能够使测试人员从繁琐的搜索和比较过程中解脱出来。
在本发明的一个方面中,提供了一种用于缺陷管理的方法,所述方法包括:以结构化的方式存储用于描述缺陷的调用栈和所述调用栈的元素之间的调用关系;响应于在测试期间出现错误,基于所述元素之间的调用关系,比较与所述错误对应的调用栈中的各个元素和已存储的调用栈中的各个元素;以及利用所述比较的结果确定所述错误是否由已有缺陷引起。
根据本发明的一个实施例,所述方法进一步包括:在确定所述错误并非由已有缺陷引起时,通过以所述结构化的方式存储与所述错误对应的调用栈和所述调用栈的元素之间的调用关系,来开立新缺陷。
根据本发明的另一实施例,所述方法进一步包括:在所述比较期间,记录适于开立新缺陷的位置。
根据本发明的又一实施例,所述以结构化的方式存储进一步包括:提取所述调用栈的元素中能表示所述元素的主要信息;以及存储所述主要信息和所述元素之间的关系。
根据本发明的再一实施例,所述比较的结果包括与已存储的调用栈的匹配度,该匹配度与匹配元素的数目相关,或者与匹配元素的数目和所述调用栈的匹配权重相关。
根据本发明的又一实施例,所述结构化的方式包括树结构,该树结构的非根节点表示调用栈的各个元素,非根节点之间的关系表示元素之间的调用关系,该树结构的分支表示缺陷。
在本发明的第二方面中,提供了一种用于缺陷管理的系统,包括:调用栈存储装置,该装置以结构化的方式存储用于描述缺陷的调用栈和所述调用栈的元素之间的关系;调用栈比较装置,该装置响应于在测试期间出现错误,基于所述元素之间的调用关系,比较与所述错误对应的调用栈中的各个元素和已存储的调用栈中的各个元素;以及缺陷确定装置,该装置利用所述比较的结果确定所述错误是否由已有缺陷引起。
通过本发明,可以容易地进行调用栈比较,从而使测试人员从繁琐的手动搜索过程中解脱出来,并显著降低了出错的概率。并且由于采用了结构化的存储方式,所以使得信息统计变得非常容易,进而为测试人员和开发人员提供了可用于后续工作的大量准确且有用的信息。
附图说明
通过对结合附图所示出的实施方式进行详细说明,本发明的上述以及其他特征将更加明显,本发明附图中相同的标号表示相同或相似的部件。在附图中,
图1示意性地示出了根据本发明一个实施例用于缺陷管理的方法的流程图;
图2示意性地示出了调用栈的一个实例;
图3示意性地示出了通过调用栈描述的若干缺陷的实例;
图4示意性地示出了根据本发明一个实施例用于存储图3所示缺陷的树结构;
图5示意性地示出了根据本发明的一个实施例用于比较与所述错误对应的调用栈中的各个元素和已存储的调用栈中的各个元素的方法的流程图;
图6示意性地示出了用于在图4所示的树结构中开立缺陷的图示;
图7示意性地示出了根据本发明另一实施例用于存储缺陷的图结构;
图8示意性地示出了根据本发明另一实施例用于在图7所示图结构中开立缺陷的图示;
图9示意性地示出了根据本发明一个实施例用于缺陷管理的系统的方框图;以及
图10示意性地示出了可以实现根据本发明的实施例的计算设备的结构方框图。
具体实施方式
在下文中,将参考附图通过实施例对本发明提供的用于缺陷管理的方法和系统进行详细的描述。
首先,将参考图1至图8描述根据本发明用于提供缺陷管理的方法。
参考图1,在步骤101,以结构化的方式存储用于描述缺陷的调用栈和所述调用栈的元素之间的调用关系。此处提及的调用栈,即函数调用栈,是异常抛出时所产生的格式化的函数调用序列。在图2中,示出了i5/OS内垂直特许内部码日志(VLOG)中的用于描述缺陷的调用栈的实例,i5/OS是国际商业机器公司(IBM)的操作系统产品。
参考图2,图中示出的调用栈描述了一个已开立的缺陷。传统上,以文本形式将如图2所示的整个调用栈信息复制到用于描述缺陷的注释字段中,正如前面所讨论的,这引起了上述诸多问题。但是,从图2可以看出,在本发明中,将该调用栈化分成了7个结构类似的信息段。在本发明中,该信息段被称为元素,每个元素描述与一个被调用函数相关的信息,换句话讲,元素1至元素7分别对应于被调用的函数1至函数7。并且,在该调用栈中,元素1是栈底元素,其表示在该调用栈中最先被调用的函数;元素7是栈顶元素,其表示在该调用栈中最后被调用的函数,即抛出异常处的函数;并且在该调用栈中,越靠近栈底的元素表示在时间上越早被调用的函数。该图中示出的调用栈表示在与元素1对应的函数1的调用期间,调用了与元素2对应的函数2,在函数2的调用期间,调用了与元素3对应的函数3,依此类推。
需要说明的是,图2示出的调用栈是机器码级别的调用栈,因此该结构对于相同的系统平台而言都是相同的,并不会因编程语言的不同而改变。但是应当理解,也可以使用更高级别的调用栈来描述缺陷,诸如,JAVA调用栈和lotus notes调用栈。此类更高级别的调用栈虽然与图2所示的调用栈具有不同的结构,但是仍可以基于本发明的思想而化分成若干元素。
在如上对调用栈进行划分后,就能够以与传统方式不同的结构化方式存储用以描述缺陷的调用栈。换句话讲,可以通过以结构化的方式存储调用栈的各个元素和各个元素之间的调用关系来存储缺陷。
接着,将参考图3和图4来描述根据本发明的缺陷存储方式的实例。
参考图3,图3示出了通过调用栈所描述的若干缺陷的实例。在图3中,有7个缺陷,即缺陷1至缺陷7。在每个调用栈中,最左侧的元素表示栈底元素,而最右侧元素表示栈顶元素。其中,缺陷1由序列(E1,E2,E3,E4,E5)来描述;缺陷2由序列(E1,E6,E7,E8)来描述;缺陷3由序列(E9,E10,E11,E12)来描述;缺陷4由序列(E9,E10、E11,E13)来描述;缺陷5由序列(E9,E10,E14)来描述;缺陷6由序列(E15,E2,E3)来描述;缺陷7由序列(E1,E2,E3)来描述。
参考图4,图4示意性地示出了根据本发明一个实施例用于存储图3所示缺陷的树结构。在该树结构中,根节点是一个虚拟节点,用于将森林(即,该根节点的互不相交的子树的集合)组合成树。非根节点2-15,包括叶节点(没有子节点的节点)和内部节点(即,除根节点之外拥有子节点的节点),表示调用栈的各个元素,诸如节点1表示图3中的元素1,节点2表示元素2等。非根节点之间的父子关系表示调用栈中的元素之间的调用关系,尤其是与元素对应的函数之间的调用关系,例如节点2是节点1的子节点,则表示在执行与元素1对应的函数期间,调用了与元素2对应的函数。该树结构的分支表示缺陷,诸如可以利用由节点1->节点2->节点3->节点4->节点5组成的分支来表示缺陷1。
在图4所示的树结构中,非根节点可以包括:对应的元素信息,即与该节点对应的元素信息;缺陷识别信息,通过该信息可以识别缺陷,即识别描述该缺陷的调用栈;子节点列表,其是属于该非根节点的子节点的列表。但是,每个节点并非必须包括所有这些信息。例如,对于树结构中的叶节点,其对应于调用栈中的栈顶元素,它可以包括对应的元素信息以及缺陷识别信息,例如以斜线示出的节点5、8、12、13、14和最右侧分支中以斜线示出的节点3。内部节点中与栈顶元素对应的节点可以包括对应的元素信息以及缺陷识别信息,并且另外包括子节点列表,例如最左侧分支中以反斜线示出的节点3。而内部节点中的其他节点则可以包括对应的元素信息和子节点列表,例如节点1、2、4、6、7、8、9、10、11和15。
对应的元素信息可以包括如图2所示的元素1至7的完整信息。缺陷识别信息可以包括缺陷编号和回溯步长,缺陷编号用于区分缺陷,而回溯步长则用于找到描述该缺陷的调用栈。例如,对于以反斜线示出的节点3,缺陷识别信息包括:“D:7”,其表示该缺陷的编号为7;和回溯步长“S:3”,其表示自该节点起(包括节点3在内)回溯3三个节点所得到的分支即为描述该缺陷7的调用栈。子节点列表用以表示树结构中的节点之间的父子关系,该父子关系代表与节点对应的调用栈元素之间的调用关系。
应当注意的是,图4示出的根据本发明用于存储缺陷的树结构能够以多种不同的方式来实现。在本发明的另一实施例中,节点信息可以包括其父节点,而不是子节点列表。因此,以上的描述只是出于说明的目的而提供的,而不应将其理解为对于本发明的限制。
在下文中,将参考图4对由若干已有缺陷生成树结构的一种示例性方法进行描述。但应该理解的是,用于存储缺陷的树结构并非必然由若干个已有缺陷生成,而是还可以在测试过程中通过开立新缺陷而逐渐生成。在下文中,将以缺陷1-9的顺序来描述该树结构的生成,但是本发明并不仅限于此。
首先,可以建立虚拟的根节点。由于现在该树只有根节点,所以对于缺陷1,可以根据该调用栈中元素的调用关系,将与该调用栈中的元素对应的节点1、2、3、4和5作为根节点的分支与根节点连接,并对与栈顶元素对应的叶节点5添加缺陷识别信息“D:1;S:5”,如图4所示。然后,对于缺陷2,由于树中已经存在表示E1的节点1,因此可以根据该调用栈中元素的调用关系,将与其余元素对应的节点6、7和8作为节点1的分支与节点1连接,并与缺陷1类似地为节点8添加缺陷识别信息“D:2;S:4”,如图4所示。接着,与缺陷1类似地存储缺陷3;与缺陷2类似地存储缺陷4和缺陷5,与缺陷1类似地存储缺陷6。对于缺陷7,由于在树结构中包括与调用栈的所有元素对应的节点,所以只需为与栈顶元素对应的节点3添加缺陷识别信息“D:7;S:3”,如图4所示。这样,就根据图3示出的缺陷1-7得到了图4所示的缺陷树,从而将已有的缺陷1-7以结构化的方式存储到树结构中。改进了现有的缺陷存储方式后,就可以容易地进行缺陷比较。
在图4示出的树结构中,非根节点中包括的对应的元素信息可以包括如图2所示的元素1至7的完整信息。但是,本发明并不仅限于此,在另一实施例中,上述的存储步骤进一步包括:提取所述调用栈的元素中能表示所述元素的主要信息;以及存储所述主要信息和所述元素之间的关系。该提取的步骤可以利用本领域技术人员熟知的语法和词法分析方法来实现。在该实施例中,该主要信息例如可以包括:模块信息(例如图2中的“MODULE”的值)和函数信息(例如图2中示出的“ENTRY”的值)。通过上述提取,使得存储在缺陷库中的信息总量得以降低,同时又足以描述缺陷,从而节省了存储空间,并且还降低了随后进行缺陷比较的工作量。
现在返回图1,接着,在步骤102,响应于在测试期间出现错误,基于所述元素之间的调用关系,比较与所述错误对应的调用栈中的各个元素和已存储的调用栈中的各个元素。
下面,将参考图5来描述根据本发明一个实施例的调用栈比较方法,用于比较与所述错误对应的调用栈中的各个元素和已存储的调用栈中的各个元素。
如图5所示,在步骤501,首先获取与出现的错误对应的新调用栈,即错误出现时的调用栈。该新调用栈是如图2所示由多个元素组成的调用栈。
接着在步骤502,对如图4所示的树结构进行遍历,以找到与新调用栈的元素所构成的序列匹配的分支。在获取了新调用栈的元素之后,在用于存储调用栈的树结构中查找是否存在与新调用栈的元素所构成的序列匹配的分支,从而确定在树结构中是否存与其完全或者部分地匹配的调用栈。新调用栈的元素所构成的序列可以包括由调用栈的所有元素和部分元素按照调用关系构成的序列。
然后,在步骤503,在进行遍历的同时,记录适合于开立新缺陷的位置。对于图4所示的结构,当未找到任何匹配的分支时,根节点就是适合于记录新缺陷的位置,例如对于新调用栈:E16,E17,E18。当找到了部分匹配的分支,但该分支不包括与新缺陷的栈底元素对应的节点时,根节点是适合的位置,例如对于新调用栈:E13,E9,E10,E11。当找到了部分匹配的分支且该分支包括与新缺陷的栈底元素对应的节点时,匹配节点中最远离根节点的节点是适合的位置,例如对于新调用栈(E1,E2,E3,E9)或者新调用栈(E2,E3,E4)。当找到了完全匹配的分支时,即在树结构中存在与新调用栈完全相同的调用栈,与栈顶元素对应的节点是适合的位置,例如对于调用栈(E1,E2,E3)。
通过该记录的步骤,就可以在比较过程中收集到可用于随后树结构的更新和插入操作(用于开立新缺陷)的有用信息,但本发明并非仅限于此。在本发明的另一实施例中,在比较的过程中并未记录该适合的位置,而是可以在确定需要开立缺陷时,才查找适于开立新缺陷的位置。
接着,还可以在步骤504,进一步提供比较结果。在该比较结果中,可以包括匹配度,即与错误对应的新调用栈和与已存储缺陷对应的调用栈的匹配程度。可以使用该匹配度来确定比较结果中每条信息显示的先后顺序,以便直观地为测试人员提供匹配程度相关的信息。
在一个实施例中,匹配度可以包括匹配的元素数目。例如,对于新调用栈(E9,E10,E11,E12),作为实例,可以提供如下的表格作为比较结果。
表-1 提供给测试人员的比较结果的实例
匹配元素数目 | 匹配的缺陷 |
4 | 缺陷3 |
3 | 缺陷4 |
2 | 缺陷5 |
在另一实施例中,除了匹配的元素数目之外,匹配度还可以包括调用栈的匹配权重。在由新调用栈的元素构成的序列中,包括有栈顶元素的序列是较重要的,这是因为与栈顶元素对应的函数是异常抛出的位置,其描述了与错误相关的更多细节。因此,在新调用栈和已存储调用栈的栈顶元素得到匹配的情况,或者在包括栈顶元素的序列得到匹配的情况下,可以赋予其较高的权重。可以首先依据匹配的节点数目的大小顺序为用户提供比较结果,而在匹配的节点数目相同时,依照匹配的权重为用户提供比较结果。例如,对于新调用栈(E1,E2,E3),作为实例,可以提供如下的表格作为比较结果。
表-2 提供给测试人员的比较结果的实例
匹配元素数目 | 匹配的缺陷 |
3 | 缺陷7 |
3 | 缺陷1 |
2 | 缺陷6 |
这样,就得到了调用栈比较的结果,从而提供了可用于缺陷分析的可靠且有用的信息。
现在,返回图1。在步骤103,利用所述比较的结果确定所述错误是否由已有缺陷引起,即确定是否需要开立新缺陷。利用该比较结果,并在需要时借助于其他辅助信息,就可以确定与错误对应的缺陷是否是新缺陷。新缺陷的确定对于本领域技术人员来讲都是公知的,此处不再赘述。
在步骤103的缺陷确定之后,还可以进一步地利用本发明提供的缺陷存储方式来开立新缺陷。
一方面,如果确定该错误并非由已有缺陷引起,即,需要开立新缺陷,则在步骤104开立与该错误对应的新缺陷。当已经在调用栈比较期间记录了适合于开立新缺陷的位置时,可以直接以结构化的方式将与该新缺陷对应的调用栈和该调用的元素之间的关系存储在缺陷库中,以便开立新缺陷。例如,对于新调用栈(E1,E6,E7,E16),已记录的适合开立新缺陷的位置是节点7,则将剩余的节点16作为节点7的分支与其连接,并为节点16添加缺陷识别信息(D:8;S:4)。图6示意性地示出了开立该新缺陷后得到的树结构。其中的带点的节点16即为新增的节点。
在另一实施例中,在比较期间并未记录适合开立新缺陷的位置。因此,在需要开立缺陷时,可以首先在树结构中查找适合于开立新缺陷的位置。查找该适合位置的基本原理与在比较期间进行记录的基本原理相同,具体情况可参见以上关于步骤503的描述。
另一方面,如果确定该错误是由已有的缺陷而引起,则不需要开立新缺陷,则在步骤105报告开发人员该错误是由已有缺陷引起。
从上述描述可以看出,通过本发明,可以容易地进行调用栈比较,从而使测试人员从繁琐的手动搜索过程中解脱出来,并显著降低了出错的概率。并且,由于采用了结构化的存储方式,所以使得信息统计变得非常容易,进而为测试人员和开发人员提供了可用于后续工作的大量准确且有用的信息。
在上文中,以树结构为实例对本发明用于管理缺陷的方式进行了描述,但是本发明并不仅限于此,也可以使用适合于以结构化方式存储缺陷的任何其他结构。下面,将参考图7和图8来描述在本发明中用于存储缺陷的另一种方式。
图7示意性地示出了根据本发明另一实施例的用于存储缺陷的图结构。该图结构是一个有向图。其中设定了一个节点(也称作顶点)作为根节点。非根节点表示调用栈的各个元素。两个节点之间的边表示与这两个节点对应的元素之间的调用关系。并利用图中的路径来表示缺陷。节点可以包括有对应的元素信息、缺陷识别信息和相邻节点列表。对应的元素信息和相邻节点信息分别类似于树结构中的对应的元素信息和子结点列表。而缺陷识别信息与树结构中的不同,可以包括缺陷编号和标志序列。为此,在该图中为边增加了标志“1”和“2”,如图7所示,以便边帮助识别与缺陷对应的调用栈。例如,对于与栈顶元素对应的节点3,缺陷识别信息可以包括“D:11”:其表示该缺陷的编号为11;和“TS:1,1”,即标记序列{1,1},其表示自该节点沿着两条标记为1边回溯,得到的路径即是描述该缺陷的调用栈。
在出现新调用栈时,对图进行遍历,以找到与由新调用栈的元素构成的序列匹配的路径,以用于缺陷分析。可以优选地记录适合于开立新缺陷的位置。另外,可以进一步地利用比较结果来进行缺陷分析,以确定是否开立新缺陷。在不需要进行缺陷开立时,则仅仅向测试人员报告该错误是有已有的缺陷引起。在需要开立新缺陷时,在适于开立新缺陷的位置存储与该缺陷对应的调用栈。此外,使用有向图的优势在于,减少了重复的节点数目,并可以通过为已有的节点添加边来开立新缺陷,而不需向树结构那样增加新分支。
图8示意性地示出了在图7所示图结构中开立缺陷的图示。例如,对于与缺陷51对应的新调用栈(E5,E7,E8),则可以如图8所示,通过在节点7和8之间增加标记为2的边来开立新缺陷,标记序列为{2,1}。另外,还可以在标记序列中引入符号来进一步降低重复节点的数目。例如对于与缺陷61对应的新调用栈(E6,E2,E5),可以通过为与栈底元素对应的节点6添加缺陷编号以及标记序列{-1,-2}来开立该新缺陷。其中,负号表示:描述缺陷的调用栈与根据该序列得到的路径对应的调用栈顺序正相反。通过这种方式,可以进一步减少重复节点的数目。
下面,将参考图9对本发明提供的用于缺陷管理的系统进行详细的描述。
参考图9,图9示意性地示出了根据本发明一个实施例用于缺陷管理的系统的方框图。如图9所示,缺陷管理的系统900包括:调用栈存储装置901,该装置以结构化的方式存储用于描述缺陷的调用栈和所述调用栈的元素之间的关系;以及调用栈比较装置902,该装置响应于在测试期间出现错误,基于所述元素之间的调用关系,比较与所述错误对应的调用栈中的各个元素和已存储的调用栈中的各个元素;以及缺陷确定装置903,该装置利用所述比较的结果确定所述错误是否由已有缺陷引起。关于调用栈存储装置901、调用栈比较装置902和缺陷确定装置903的具体操作可以参看上文中与步骤101、102和103相关的描述。
在图9所示的缺陷管理的系统900中,所述调用栈存储装置901进一步配置用于在确定所述错误并非由已有缺陷引起时,通过以所述结构化的方式存储与所述错误对应的调用栈和所述调用栈的元素之间的调用关系,来开立新缺陷。
需要说明的是图9示出的是本发明的一个优选的实施例,本发明并不因此而受到限制。
在本发明的另一实施例中,所述调用栈比较装置902可以进一步在所述比较期间记录适于开立新缺陷的位置,以供随后开立缺陷时使用。
在本发明的另一实施例中,所述调用栈存储装置901可以进一步提取所述调用栈的元素中能表示所述元素的主要信息,以及存储所述主要信息以及所述元素之间的关系。这样,就可以节约存储空间,并降低调用栈比较的工作量。
在本发明的另一实施例中,所述比较的结果包括与已存储的调用栈的匹配度,该匹配度与匹配元素的数目相关,或者与匹配元素的数目和调用栈的匹配权重相关。可以通过该匹配度确定为用户提供的比较结果中各条信息的顺序,以直观地为测试人员提供的比较结果。
在本发明的另一实施例中,所述结构化的方式包括树结构,该树结构的非根节点表示调用栈的各元素,非根节点之间的关系表示所述元素之间的调用关系,该树结构的分支表示缺陷。优选地,所述非根节点可以包括与该节点对应的元素的信息,以及其子节点列表和/或缺陷识别信息。优选地,所述与该节点对应的元素信息可以包括模块信息和函数信息。优选地,所述缺陷识别信息可以包括缺陷编号和回溯步长。在本发明的一个实施例中,所述调用栈比较装置进一步配置用于对所述树结构进行遍历,以找到与由所述调用栈的各个元素构成的序列匹配的分支来作为比较的结果。
在本发明的缺陷管理系统中,调用栈存储装置901以结构化的方式存储调用栈,因此使得调用栈比较装置902可以基于调用栈的元素之间的调用关系进行比较,从而使测试人员从繁琐的手动搜索过程中解脱出来,并显著降低了出错的概率。并且,由于调用栈存储装置901采用了结构化的方式进行存储,所以使得信息统计变得非常容易,进而为测试人员和开发人员提供了可用于后续工作的大量准确且有用的信息。
下面,将参考图10来描述可以实现本发明的计算机设备。图10示意性示出了可以实现根据本发明的实施例的计算设备的结构方框图。
图10中所示的计算机系统包括CPU(中央处理单元)1001、RAM(随机存取存储器)1002、ROM(只读存储器)1003、系统总线1004、硬盘控制器1005、键盘控制器1006、串行接口控制器1007、并行接口控制器1008、显示器控制器1009、硬盘1010、键盘1011、串行外部设备1012、并行外部设备1013和显示器1014。
在这些部件中,与系统总线1004相连的有CPU 1001、RAM1002、ROM 1003、硬盘控制器1005、键盘控制器1006、串行接口控制器1007、并行接口控制器1008和显示器控制器1009。硬盘1010与硬盘控制器1005相连,键盘1011与键盘控制器1006相连,串行外部设备1012与串行接口控制器1007相连,并行外部设备1013与并行接口控制器1008相连,以及显示器1014与显示器控制器1009相连。
图10所述的结构方框图仅仅为了示例的目的而示出的,并非是对本发明的限制。在一些情况下,可以根据需要添加或者减少其中的一些设备。
此外,本发明的实施例可以以软件、硬件或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。
虽然已经参考目前考虑到的实施例描述了本发明,但是应该理解本发明不限于所公开的实施例。相反,本发明旨在涵盖所附权利要求的精神和范围之内所包括的各种修改和等同布置。以下权利要求的范围符合最广泛解释,以便包含所有这样的修改及等同结构和功能。
Claims (20)
1.一种用于缺陷管理的方法,包括:
以结构化的方式存储用于描述缺陷的调用栈和所述调用栈的元素之间的调用关系;
响应于在测试期间出现错误,基于所述元素之间的调用关系,比较与所述错误对应的调用栈中的各个元素和已存储的调用栈中的各个元素;以及
利用所述比较的结果确定所述错误是否由已有缺陷引起。
2.根据权利要求1所述的方法,进一步包括:
在确定所述错误并非由已有缺陷引起时,通过以所述结构化的方式存储与所述错误对应的调用栈和所述调用栈的元素之间的调用关系,来开立新缺陷。
3.根据权利要求2所述的方法,进一步包括:在所述比较期间,记录适于开立新缺陷的位置。
4.根据权利要求1所述的方法,所述以结构化的方式存储进一步包括:
提取所述调用栈的元素中能表示所述元素的主要信息;以及
存储所述主要信息和所述元素之间的关系。
5.根据权利要求1所述的方法,其中,所述比较的结果包括与已存储的调用栈的匹配度,该匹配度与匹配元素的数目相关,或者与匹配元素的数目和调用栈的匹配权重相关。
6.根据权利要求1至5任一项所述的方法,其中,所述结构化的方式包括树结构,该树结构的非根节点表示调用栈的各个元素,非根节点之间的关系表示元素之间的调用关系,该树结构的分支表示缺陷。
7.根据权利要求6所述的方法,其中,所述非根节点包括与该节点对应的元素的信息,以及其子节点列表和/或缺陷识别信息。
8.根据权利要求7所述的方法,其中,所述与该节点对应的元素信息包括模块信息和函数信息。
9.根据权利要求7所述的方法,其中,所述缺陷识别信息包括缺陷编号和回溯步长。
10.根据权利要求6所述的方法,其中,所述比较包括对所述树结构进行遍历,以找到与由所述调用栈的各个元素构成的序列匹配的分支来作为比较的结果。
11.一种用于缺陷管理的系统,包括:
调用栈存储装置,该装置以结构化的方式存储用于描述缺陷的调用栈和所述调用栈的元素之间的关系;
调用栈比较装置,该装置响应于在测试期间出现错误,基于所述元素之间的调用关系,比较与所述错误对应的调用栈中的各个元素和已存储的调用栈中的各个元素;以及
缺陷确定装置,该装置利用所述比较的结果确定所述错误是否由已有缺陷引起。
12.根据权利要求11所述的系统,其中,所述调用栈存储装置进一步配置用于在确定所述错误并非由已有缺陷引起时,通过以所述结构化的方式存储与所述错误对应的调用栈和所述调用栈的元素之间的调用关系,来开立新缺陷。
13.根据权利要求12所述的系统,所述调用栈比较装置进一步配置用于在所述比较期间,记录适于开立新缺陷的位置。
14.根据权利要求11所述的系统,所述调用栈存储装置进一步配置用于:
提取所述调用栈的元素中能表示所述元素的主要信息;以及
存储所述主要信息和所述元素之间的关系。
15.根据权利要求11所述的系统,其中,所述比较的结果包括与已存储的调用栈的匹配度,该匹配度与匹配元素的数目相关,或者与匹配元素的数目和调用栈的匹配权重相关。
16.根据权利要求11至15任一项所述的系统,其中,所述结构化的方式包括树结构,该树结构的非根节点表示调用栈的各元素,非根节点之间的关系表示所述元素之间的调用关系,该树结构的分支表示缺陷。
17.根据权利要求16所述的系统,其中,所述非根节点包括与该节点对应的元素的信息,以及其子节点列表和/或缺陷识别信息。
18.根据权利要求17所述的系统,其中,所述与该节点对应的元素信息包括模块信息和函数信息。
19.根据权利要求17所述的系统,其中,所述缺陷识别信息包括缺陷编号和回溯步长。
20.根据权利要求16所述的系统,其中,所述调用栈比较装置进一步配置用于对所述树结构进行遍历,以找到与由所述调用栈的各个元素构成的序列匹配的分支来作为比较的结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008100965555A CN101582048A (zh) | 2008-05-16 | 2008-05-16 | 一种用于缺陷管理的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008100965555A CN101582048A (zh) | 2008-05-16 | 2008-05-16 | 一种用于缺陷管理的方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101582048A true CN101582048A (zh) | 2009-11-18 |
Family
ID=41364202
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2008100965555A Pending CN101582048A (zh) | 2008-05-16 | 2008-05-16 | 一种用于缺陷管理的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101582048A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102262527A (zh) * | 2010-05-31 | 2011-11-30 | 国际商业机器公司 | 生成网络服务的方法和系统 |
CN102385552A (zh) * | 2010-08-25 | 2012-03-21 | 微软公司 | 样本剖析报告的动态计算 |
CN105512299A (zh) * | 2015-12-10 | 2016-04-20 | 广东蓄能发电有限公司 | 一种重复缺陷综合查找方法 |
CN107077341A (zh) * | 2014-10-24 | 2017-08-18 | 谷歌公司 | 用于基于软件执行跟踪自动加标签的方法和系统 |
CN108228171A (zh) * | 2017-12-29 | 2018-06-29 | 武汉益模科技股份有限公司 | 一种基于树形结构的项目树查询和显示方法 |
US10346222B2 (en) | 2010-11-30 | 2019-07-09 | Microsoft Technology Licensing, Llc | Adaptive tree structure for visualizing data |
CN110543427A (zh) * | 2019-09-06 | 2019-12-06 | 五八有限公司 | 测试用例存储方法、装置、电子设备及存储介质 |
US11102094B2 (en) | 2015-08-25 | 2021-08-24 | Google Llc | Systems and methods for configuring a resource for network traffic analysis |
-
2008
- 2008-05-16 CN CNA2008100965555A patent/CN101582048A/zh active Pending
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102262527A (zh) * | 2010-05-31 | 2011-11-30 | 国际商业机器公司 | 生成网络服务的方法和系统 |
US8973020B2 (en) | 2010-05-31 | 2015-03-03 | International Business Machines Corporation | Generating a web service |
CN102262527B (zh) * | 2010-05-31 | 2015-12-09 | 国际商业机器公司 | 生成网络服务的方法和系统 |
CN102385552A (zh) * | 2010-08-25 | 2012-03-21 | 微软公司 | 样本剖析报告的动态计算 |
CN102385552B (zh) * | 2010-08-25 | 2016-04-20 | 微软技术许可有限责任公司 | 样本剖析报告的动态计算 |
US10346222B2 (en) | 2010-11-30 | 2019-07-09 | Microsoft Technology Licensing, Llc | Adaptive tree structure for visualizing data |
CN107077341A (zh) * | 2014-10-24 | 2017-08-18 | 谷歌公司 | 用于基于软件执行跟踪自动加标签的方法和系统 |
CN107077341B (zh) * | 2014-10-24 | 2020-07-14 | 谷歌有限责任公司 | 用于基于软件执行跟踪自动加标签的方法和系统 |
US10977561B2 (en) | 2014-10-24 | 2021-04-13 | Google Llc | Methods and systems for processing software traces |
US11379734B2 (en) | 2014-10-24 | 2022-07-05 | Google Llc | Methods and systems for processing software traces |
US11102094B2 (en) | 2015-08-25 | 2021-08-24 | Google Llc | Systems and methods for configuring a resource for network traffic analysis |
US11444856B2 (en) | 2015-08-25 | 2022-09-13 | Google Llc | Systems and methods for configuring a resource for network traffic analysis |
CN105512299A (zh) * | 2015-12-10 | 2016-04-20 | 广东蓄能发电有限公司 | 一种重复缺陷综合查找方法 |
CN108228171A (zh) * | 2017-12-29 | 2018-06-29 | 武汉益模科技股份有限公司 | 一种基于树形结构的项目树查询和显示方法 |
CN110543427A (zh) * | 2019-09-06 | 2019-12-06 | 五八有限公司 | 测试用例存储方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101582048A (zh) | 一种用于缺陷管理的方法和系统 | |
US10289541B2 (en) | Source code flow analysis using information retrieval | |
US8359339B2 (en) | Graphical user interface for configuration of an algorithm for the matching of data records | |
CN109726105A (zh) | 测试数据构造方法、装置、设备及存储介质 | |
US20140006010A1 (en) | Parsing rules for data | |
US11163560B1 (en) | Methods and arrangements to process comments | |
US20070136220A1 (en) | Apparatus for learning classification model and method and program thereof | |
JP5682448B2 (ja) | 因果単語対抽出装置、因果単語対抽出方法および因果単語対抽出用プログラム | |
CN111309586A (zh) | 一种命令测试方法、装置及其存储介质 | |
JP2005301859A (ja) | コード検索プログラム及びコード検索装置 | |
Roux de Bézieux et al. | CALDERA: finding all significant de Bruijn subgraphs for bacterial GWAS | |
CN113220578A (zh) | 一种功能测试用例的生成方法 | |
Imran | Design smell detection and analysis for open source java software | |
Wang et al. | Measuring robustness of feature selection techniques on software engineering datasets | |
CN110378569A (zh) | 产业关系链构建方法、装置、设备及存储介质 | |
JP4003499B2 (ja) | 見積評価支援プログラムおよび見積評価支援システム | |
CN106776704A (zh) | 统计信息收集方法和装置 | |
CN113705201A (zh) | 基于文本的事件概率预测评估算法、电子设备及存储介质 | |
CN111352824B (zh) | 测试方法、装置及计算机设备 | |
JP5332918B2 (ja) | 区分データレコメンド方法、プログラム、及び装置 | |
Wang et al. | Extracting user-reported mobile application defects from online reviews | |
Wang et al. | Edcleaner: Data cleaning for entity information in social network | |
CN111352818A (zh) | 应用程序性能分析方法、装置、存储介质及电子设备 | |
CN115470865A (zh) | 一种失效分析标准流程调整方法及系统 | |
CN108304430B (zh) | 一种修改数据库的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
AD01 | Patent right deemed abandoned |
Effective date of abandoning: 20091118 |
|
C20 | Patent right or utility model deemed to be abandoned or is abandoned |