CN103123607B - 一种基于形式概念分析的软件回归测试方法 - Google Patents
一种基于形式概念分析的软件回归测试方法 Download PDFInfo
- Publication number
- CN103123607B CN103123607B CN201310074962.7A CN201310074962A CN103123607B CN 103123607 B CN103123607 B CN 103123607B CN 201310074962 A CN201310074962 A CN 201310074962A CN 103123607 B CN103123607 B CN 103123607B
- Authority
- CN
- China
- Prior art keywords
- test
- test case
- concept
- regression
- lattice
- 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.)
- Expired - Fee Related
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明是提供一种基于形式概念分析的软件回归测试方法,充分利用形式概念分析技术有效地进行回归测试,能够将测试用例的选择、约减、以及排序等技术有效地结合起来,直接生成一种高质量、高效的软件回归测试用例集。该技术在实际应用中不受程序语言约束,可以应用于各种编程语言程序中,提高了该技术可应用的范围。即测试用例选择、约减以及排序,其所产生的测试用例集结果更加高效,可以直接进行回归测试,使得软件维护变得更加容易。
Description
技术领域
本发明提出了一种新型的软件回归测试方法,主要是利用形式概念分析技术来有效地进行回归测试用例的选择、约减、以及排序等,属于软件回归测试领域。背景技术
软件维护活动的核心是进行软件修改,而修改肯定会对软件的其他部分造成一些潜在影响,从而带来软件的不一致性。因此,在每次修改之后,需要对***重新进行一系列的测试以确定修改阶段没有引入新的错误,以及按照什么样的测试方法进行测试等等。而在软件维护阶段对修改后软件进行再测试的过程称为回归测试。回归测试是软件维护中最耗费成本的阶段,如何有效地生成回归测试用例是一项重要的研究任务。回归测试是软件演化过程中保证软件演化质量的有效方法之一,它需要从两方面测试软件是否存在故障:(1)软件修改部分与没有修改部分能够保持一致性;(2)没有修改的部分依然没有受到影响,能够与修改前的状态保持一致。到目前为止,出现了许多有效的回归测试技术,如测试用例选择、测试用例约减、以及测试用例排序等。测试用例选择主要用于从已有的测试集里面选择有效的用于测试新版本的测试用例,从而有效地减少测试成本;而测试用例约减技术主要用于有效减少测试成本,减少测试用例的冗余,在不影响测试效果的前提下,希望用更少的测试用例进行回归测试;另外,回归测试用例排序是用于对新的测试用例集进行排序,以更早地发现新版本中存在的故障。
当前研究人员在回归测试领域做了大量的研究,这些研究包含了回归测试用例的选择、排序、约减等技术。测试用例选择技术用于从原测试用例集中选择一部分测试用例去测试程序中的修改部分以及受这些修改影响的元素,一个简单的测试用例选择策略就是将整个原来测试用例集包含进来,这是一个安全的测试用例选择技术,但是该技术比较低效;另外,还有一些基于程序切片以及基于防火墙的回归测试用例选择技术。测试用例集约减技术旨在用最少的测试用例去测试程序中的修改部分和影响部分,目前这方面主要有启发式的方法进行回归测试用例的约减。测试用例排序技术希望的是更早地发现缺陷或者更多的缺陷,目前这方面主要有基于覆盖的测试用例排序技术、基于搜索的测试用例排序技术,等。尽管每一个回归测试技术都有相关的技术来支撑,但是大部分技术都是单独地进行研究,如单纯地进行测试用例的选择或者单纯地对测试用例集进行排序,或者给定一个测试用例集,研究对这个用例集进行约减。而实际中回归测试用例选择、排序以及约减技术通常是紧密联系的,即在实际应用过程中我们需要使用排序好的测试用例集,然后通过该测试用例集尽快发现新版本程序中存在的故障。这里,我们将采用形式概念分析技术有效地将回归测试用例选择、约减与排序组合在一起进行,从而得到约减后的排序好的测试用例集,以便尽早地发现软件故障。形式概念分析以数学化的概念和概念层次为人们提供了一种应用数学理论来处理现实世界中形式对象与形式属性之间这种二元关系的方法。形式概念分析技术经过几十年的发展,到目前已经比较成熟,目前在软件工程中主要是应用在程序分析和理解方面。这里,我们将其成功地应用在回归测试领域中,有效地支持测试用例的选择、约减以及排序。
发明内容
技术问题:本发明的目的是提供一种基于形式概念分析的软件回归测试方法,充分利用形式概念分析技术有效地进行回归测试,能够将测试用例的选择、约减、以及排序等技术有效地结合起来,直接生成一种高质量、高效的软件回归测试用例集。该技术在实际应用中不受程序语言约束,可以应用于各种编程语言程序中,提高了该技术可应用的范围。
技术方案:本发明的一种基于形式概念分析的软件回归测试方法具体如下:
步骤1:根据原测试用例集以及修改后的程序元素,收集测试覆盖情况;根据测试用例覆盖信息构造二维表,表中行表示测试用例运行情况,列表示程序元素,某个列的程序元素被某一行的测试用例覆盖,我们就对其进行标记,再以该二维表为输入,利用形式概念分析技术构造概念格,(形式概念分析是一种从形式背景(这里表示测试用例覆盖表)进行数据分析和规则提取的强有力工具,)形式概念分析建立在数学基础之上,对组成概念的对象、属性以及关系等用形式化的语境表述出来,然后根据语境,利用概念格的生成算法自动构造出概念格,概念格上的节点表示概念,而一个概念是由外延和内涵组成,分别表示某个节点的测试用例和程序元素;
步骤2:进行修改分析,计算得到修改集CS和影响集IS,这两者的并集为CI=CS∪IS;然后在概念格上找出概念格节点内涵中包含CI中元素的概念节点,然后把这些概念节点中包含的测试用例选择出来,假设为T’,即为测试用例选择过程的结果;
步骤3:进行测试用例的约减,对于测试用例集T’中任意测试用例t1,t2∈T’,如果在概念格上,t1是t2的下确界,即t1所标记的概念格节点层次低于t2,则选择t1,将t2从T’中删除,最终得到T’’;另外,如果T’’中有多个测试用例由同一概念节点标记,由于这些测试用例都具有相同的覆盖特征,因此只需选择其中一个测试用例就可,这一步结束之后就产生了新的约减后的测试用例集T’’;
步骤4:对T’’进行测试用例排序,根据测试用例包含CI元素的个数进行排序,称这样的排序度量方法为测试用例的包含度Inclusiveness={|e||e∈Int(t)∧t∈T’’∧e∈CI},其中,Int(t)表示测试用例t所标记的概念格元素的内涵,计算T’’中的每一个测试用例的包含度Inclusiveness,然后测试用例的排序就是根据包含度Inclusiveness结果进行排序这一步结束之后就得到排序后的测试用例集LT’’;
到这里,整个回归测试过程结束,其输出是一个排序后的测试用例集LT’’,它将测试用例的选择、约减以及排序整合到一起。
有益效果:本发明提出了一种基于形式概念分析技术来支撑软件回归测试中涉及的各种技术,即测试用例选择、约减以及排序,其所产生的测试用例集结果更加高效,可以直接进行回归测试,使得软件维护变得更加容易。主要有以下一些优点:
(1)目前的回归测试技术很多,如测试用例选择、约减以及排序,但是它们都是单独进行研究,而本发明提出利用形式概念分析技术将这些技术整合在一起,为当前回归测试各种技术组合的可能性提供了一种借鉴。
(2)该发明基于形式概念分析进行回归测试,它将测试用例的选择、约减以及排序有效地组合在一起,简化了回归测试的过程,提高了回归测试的效率。
(3)该发明所提出的测试用例的选择、约减以及排序技术只要一种中间转化表示即可,即通过形式概念分析得到概念格,然后基于概念格直接计算得到约减以及排序后可直接使用的新的测试用例集,因此,该方法实施比较容易。
(4)本发明提供了可选的软件回归测试的粒度层次。本发明中的程序元素粒度可以是类、方法、也可以是语句层次,因此,在实际回归测试中,可以根据成本分析等现实情况,选择相应的粒度层次进行测试用例的选择,为实际回归测试提供了灵活的选择框架。
附图说明
图1是形式概念分析技术应用于软件回归测试的基本流程图,从上到下分别是形式背景约定,概念格生成,以及概念格应用。
图2是本发明所使用的基于形式概念分析的软件回归测试框架图。
图3是测试用例选择过程。
图4是修改影响分析过程。
图5是回归测试中生成的概念格。
具体实施方式
本发明利用形式概念分析技术来有效地进行回归测试用例的选择、约减以及排序。图2是利用形式概念分析技术进行软件回归测试的体系结构图,该体系结构包括这样几种活动:测试覆盖分析,形式概念分析,回归测试。具体地讲:测试覆盖分析帮助我们收集测试用例对程序元素的覆盖情况,如果我们的程序元素是语句,那么就要对相应的语句进行覆盖分析;如果程序元素是方法或者类,那么就需要对测试用例在相应的方法或者类层次上进行覆盖分析,这样就产生了回归测试的粒度层次问题。其次是形式概念分析,图1是形式概念分析技术应用于回归测试的过程,形式概念分析技术的实际应用都需经过这些步骤:首先,约定形式背景中的形式属性与形式对象;然后通过形式概念分析,自动生成概念格;再根据概念格的特性利用概念格去辅助应用。这里的形式背景就是前面的覆盖信息,然后使用形式概念分析这样一种成熟的技术进行概念格的自动生成;最后,回归测试就是基于概念格的特性(层次特性)进行回归测试用例的选择、约减以及排序。下面我们描述本发明中这几个技术是如何实现的。
1回归测试用例选择
图3给出了回归测试选择的过程示意图。这里的回归测试选择主要由两部分组成:修改分析和测试覆盖分析。修改分析首先识别出原程序和修改后程序中的修改点,再根据这些修改点分析程序中受这些修改点影响的部分,即修改影响分析。修改影响分析过程如图4所示,其输入为修改集,它是通过原程序和修改后的程序比较进行差异分析得到的;然后基于修改影响分析技术,计算得到影响集。本发明中,程序修改集信息及其影响集信息作为已知条件,而在实际软件维护中,修改信息可以通过版本控制等手段获知的,而影响集信息可以通过程序依赖分析得到。测试用例选择过程的第二步就是测试覆盖分析,它考虑如何对程序修改集及其影响集进行覆盖分析,而测试用例的选择则是将那些能够覆盖修改集和影响集的测试用例选择出来。
2回归测试用例约减
在回归测试用例选择之后,则进行测试用例的约减。本发明的测试用例约减是根据概念格的层次特性进行的,对于第一步所选择出来的测试用例,我们根据它们在概念格上的层次特性进行测试用例的约减,按照这样的方法进行:对于任意两个测试用例,选择那些具有较大下确界(概念格上处于较低层次)的测试用例到最终的测试用例集中,而另外一个测试用例被认为是冗余的测试用例,从测试用例集中删除,这样,我们就有效地缩小了测试用例集的规模。
3回归测试用例排序
对于约减后的测试用例集,我们对它们进行排序,这里我们主要依据这些测试用例能够覆盖的修改集和影响集元素的规模进行排序。首先,计算这些测试用例所标记的概念格的内涵,而内涵即为这些测试用例所覆盖的程序元素;然后,再根据这些程序元素中包含的修改集和影响集的元素个数进行测试用例的排序。
因此,本发明主要利用形式概念分析技术来进行回归测试用例的选择、约减以及排序,它将这三种技术组合在一起进行,能够直接生成可用的、高效的测试用例集。具体技术方案如下:
步骤1:根据原测试用例集以及修改后的程序元素,收集测试覆盖情况。根据测试用例覆盖信息构造二维表,表中行表示测试用例运行情况,列表示程序元素,某个列的程序元素被某一行的测试用例覆盖,我们就对其进行标记。再以该二维表为输入,利用形式概念分析技术构造概念格,概念格上的节点表示概念,而一个概念是由外延和内涵组成,分别表示某个节点的测试用例和程序元素。
步骤2:进行修改分析,计算得到修改集CS和影响集IS,这两者的并集为CI=CS∪IS。然后在概念格上找出概念格节点内涵中包含CI中元素的概念节点。然后把这些概念节点中包含的测试用例选择出来,假设为T’,即为测试用例选择过程的结果。
步骤3:进行测试用例的约减。对于测试用例集T’中任意测试用例t1,t2∈T’,如果在概念格上,t1是t2的下确界,即t1所标记的概念格节点层次低于t2,我们则选择t1,将t2从T’中删除,最终得到T’’;另外,如果T’’中有多个测试用例由同一概念节点标记,由于这些测试用例都具有相同的覆盖特征,因此只需选择其中一个测试用例就可,这一步结束之后就产生了新的约减后的测试用例集T’’。
步骤4:对T’’进行测试用例排序,我们根据测试用例包含的CI元素的个数进行排序,我们称这样的排序度量方法为测试用例的包含度(Inclusiveness)。Inclusiveness={|e||e∈Int(t)∧t∈T’’∧e∈CI},其中,Int(t)表示测试用例t所标记的概念格元素的内涵。我们计算T’’中的每一个测试用例的包含度,然后测试用例的排序就是根据包含度Inclusiveness结果进行排序这一步结束之后就得到排序后的测试用例集LT’’。
到这里,整个回归测试过程结束,其输出是一个排序后的测试用例集LT’’,它将测试用例的选择、约减以及排序整合到一起,比较简单、高效。
为方便描述,假定有如下简化的应用实例:
假设对于某个原程序P以及测试用例集T,包含t1-t8共八个测试用例,程序P经过修改后得到新的程序P’,P’中有方法m1-m14,现在我们按照如下步骤对该修改后的程序P’进行回归测试用例的生产:
(1)进行测试覆盖分析,假设测试覆盖表如下表所示,然后我们根据该表输入,进行形式概念分析,生成概念格,如图5所示,概念格由节点和边组成,每一个节点表示一个概念,由外延和内涵标记组成;而边表示节点之间的层次关系,即概念与概念之间的包含关系。
(2)进行修改分析,假设得到的修改集和影响集的并集CI为{m6,m7,m8,m10,m11}。然后我们找到这些方法在概念格上所标记的概念格节点,分别为{co4,co2,co6,co1,co3},然后我们选择能够覆盖这些方法的测试用例得到新的测试用例集T’,T’={t1,t2,t3,t4,t5,t7,t8}.
(3)我们比较T’中各个测试用例的层次特性,选择概念格上具有较低层次的概念格节点所标记的测试用例,删除其余的测试用例,最后得到约减后的测试用例集T’’,T’’={t1,t4},其中由于t1,t2有都由同一概念格节点标记,所以只需选择一个测试用例,这里选择t1。
(4)我们计算T’’每条测试用例的包含度Inclusiveness结果,得到下表结果。根据这些结果的大小进行排序,则排序后的测试用例为t4,t1。
测试用例 | t1 | t4 |
包含度 | 1 | 3 |
到此,整个回归测试过程结束,我们直接计算得到了选择、约减以及排序后的测试用例集。
Claims (1)
1.一种基于形式概念分析的软件回归测试方法,其特征在于该回归测试方法具体如下:
步骤1:根据原测试用例集以及修改后的程序元素,收集测试覆盖情况;根据测试用例覆盖信息构造二维表,表中行表示测试用例运行情况,列表示程序元素,某个列的程序元素被某一行的测试用例覆盖,对其进行标记,再以该二维表为输入,利用形式概念分析技术构造概念格,然后根据语境,利用概念格的生成算法自动构造出概念格;概念格上的节点表示概念,而一个概念是由外延和内涵组成,分别表示某个节点的测试用例和程序元素;
步骤2:进行修改分析,计算得到修改集CS和影响集IS,这两者的并集为CI=CS∪IS;然后在概念格上找出概念格节点内涵中包含CI中元素的概念节点,然后把这些概念节点中包含的测试用例选择出来,假设为T’,即为测试用例选择过程的结果;
步骤3:进行测试用例的约减,对于测试用例集T’中任意测试用例t1,t2∈T’,如果在概念格上,t1是t2的下确界,即t1所标记的概念格节点层次低于t2,则选择t1,将t2从T’中删除,最终得到T”;另外,如果T”中有多个测试用例由同一概念节点标记,由于这些测试用例都具有相同的覆盖特征,因此只需选择其中一个测试用例就可,这一步结束之后就产生了新的约减后的测试用例集T”;
步骤4:对T”进行测试用例排序,根据测试用例包含的CI元素的个数进行排序,称这样的排序度量方法为测试用例的包含度Inclusiveness={|e||e∈Int(t)∧t∈T”∧e∈CI},其中,Int(t)表示测试用例t所标记的概念格元素的内涵,计算T”中的每一个测试用例的包含度Inclusiveness,然后测试用例的排序就是根据包含度Inclusiveness结果进行排序这一步结束之后就得到排序后的测试用例集LT”;
整个回归测试过程结束,其输出是一个排序后的测试用例集LT”,它将测试用例的选择、约减以及排序整合到一起。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310074962.7A CN103123607B (zh) | 2013-03-08 | 2013-03-08 | 一种基于形式概念分析的软件回归测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310074962.7A CN103123607B (zh) | 2013-03-08 | 2013-03-08 | 一种基于形式概念分析的软件回归测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103123607A CN103123607A (zh) | 2013-05-29 |
CN103123607B true CN103123607B (zh) | 2015-07-15 |
Family
ID=48454592
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310074962.7A Expired - Fee Related CN103123607B (zh) | 2013-03-08 | 2013-03-08 | 一种基于形式概念分析的软件回归测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103123607B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104915352B (zh) * | 2014-03-12 | 2018-10-02 | 阿里巴巴集团控股有限公司 | 一种验证MapReduce环境下处理数据正确性的方法和装置 |
WO2016043846A2 (en) * | 2014-07-23 | 2016-03-24 | Hrl Laboratories Llc | A general formal concept analysis (fca) framework for classification |
WO2018083515A1 (en) * | 2016-11-02 | 2018-05-11 | Hitachi Automotive Systems, Ltd. | Computer system, test method, and recording medium |
CN107085655B (zh) * | 2017-04-07 | 2020-11-24 | 江西中医药大学 | 基于属性的约束概念格的中医数据处理方法及*** |
CN107544905B (zh) * | 2017-08-22 | 2021-02-05 | 中国农业银行股份有限公司 | 回归测试用例集的优化方法和*** |
CN108470242B (zh) * | 2018-03-08 | 2022-03-22 | 创新先进技术有限公司 | 风险管控方法、装置、及服务器 |
CN109783358B (zh) * | 2018-12-14 | 2022-05-27 | 南瑞集团有限公司 | 一种回归测试驱动的软件版本管理方法、***及存储介质 |
CN112099880B (zh) * | 2020-08-12 | 2021-07-30 | 北京大学 | 场景驱动的应用程序约减方法和*** |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102508767A (zh) * | 2011-09-30 | 2012-06-20 | 东南大学 | 一种基于形式概念分析的软件维护方法 |
CN102831056A (zh) * | 2012-07-31 | 2012-12-19 | 东南大学 | 一种基于修改影响分析的回归测试用例生成方法 |
CN102831060A (zh) * | 2012-08-24 | 2012-12-19 | 东南大学 | 一种基于修改影响分析的部件软件回归测试用例更新方法 |
-
2013
- 2013-03-08 CN CN201310074962.7A patent/CN103123607B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102508767A (zh) * | 2011-09-30 | 2012-06-20 | 东南大学 | 一种基于形式概念分析的软件维护方法 |
CN102831056A (zh) * | 2012-07-31 | 2012-12-19 | 东南大学 | 一种基于修改影响分析的回归测试用例生成方法 |
CN102831060A (zh) * | 2012-08-24 | 2012-12-19 | 东南大学 | 一种基于修改影响分析的部件软件回归测试用例更新方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103123607A (zh) | 2013-05-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103123607B (zh) | 一种基于形式概念分析的软件回归测试方法 | |
CN102831056B (zh) | 一种基于修改影响分析的回归测试用例生成方法 | |
CN104536896A (zh) | 面向函数调用路径的回归测试用例选择与排序方法及*** | |
CN109388566A (zh) | 一种代码覆盖率分析方法、装置、设备及存储介质 | |
CN102508767B (zh) | 一种基于形式概念分析的软件维护方法 | |
CN106126413A (zh) | 基于两阶段包裹式特征选择的软件缺陷预测方法 | |
CN108804304B (zh) | 测试用例生成方法及装置、存储介质、电子设备 | |
CN105335246B (zh) | 一种基于问答网站分析的程序崩溃缺陷自动修复方法 | |
CN103914379B (zh) | 故障自动注入与故障检测的方法及其*** | |
CN103559129A (zh) | 基于遗传算法的统计回归测试数据生成方法 | |
CN105930257A (zh) | 一种确定目标测试用例的方法及装置 | |
CN104239219A (zh) | 一种基于覆盖的软件缺陷定位技术的在线评测与实验平台及方法 | |
Nagwani et al. | Predicting expert developers for newly reported bugs using frequent terms similarities of bug attributes | |
CN105701013A (zh) | 基于互信息的软件缺陷数据特征选择方法 | |
CN105183824B (zh) | 数据整合方法及装置 | |
Ridzuan et al. | Reinvestigating the presence of environmental kuznets curve in Malaysia: The role of foreign direct investment | |
CN102156645B (zh) | 一种报表生成***及方法 | |
US20110061040A1 (en) | Association rule mining to predict co-varying software metrics | |
Nathaniel et al. | Quantile estimation of ecological footprint and economic complexity in emerging economies: The moderating role of increasing energy consumption | |
US10733075B2 (en) | Data-driven synthesis of fix patterns | |
CN102495796A (zh) | 一种基于单元测试的软件脆弱性测试方法 | |
CN104536880B (zh) | 基于符号执行的gui程序测试用例扩增方法 | |
CN102521130A (zh) | 一种基于聚类不变式分析的错误定位方法 | |
CN116089504B (zh) | 一种关系型表格数据生成方法和*** | |
CN106250390B (zh) | 一种分步自动生成sql语言的方法及装置 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150715 Termination date: 20180308 |