CN105279084A - 软件集成测试中的缺陷定位 - Google Patents
软件集成测试中的缺陷定位 Download PDFInfo
- Publication number
- CN105279084A CN105279084A CN201510184119.3A CN201510184119A CN105279084A CN 105279084 A CN105279084 A CN 105279084A CN 201510184119 A CN201510184119 A CN 201510184119A CN 105279084 A CN105279084 A CN 105279084A
- Authority
- CN
- China
- Prior art keywords
- code
- test
- integration testing
- change
- integration
- 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 239
- 230000010354 integration Effects 0.000 title claims abstract description 95
- 230000007547 defect Effects 0.000 title claims abstract description 34
- 230000004807 localization Effects 0.000 title abstract 2
- 230000008859 change Effects 0.000 claims abstract description 61
- 238000000034 method Methods 0.000 claims description 74
- XXUZFRDUEGQHOV-UHFFFAOYSA-J strontium ranelate Chemical compound [Sr+2].[Sr+2].[O-]C(=O)CN(CC([O-])=O)C=1SC(C([O-])=O)=C(CC([O-])=O)C=1C#N XXUZFRDUEGQHOV-UHFFFAOYSA-J 0.000 claims description 40
- 230000008569 process Effects 0.000 claims description 19
- 238000012549 training Methods 0.000 claims description 17
- 238000001514 detection method Methods 0.000 claims 2
- 238000004422 calculation algorithm Methods 0.000 abstract description 5
- 238000004891 communication Methods 0.000 description 13
- 238000012545 processing Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 8
- 239000012634 fragment Substances 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000005055 memory storage Effects 0.000 description 3
- 238000012913 prioritisation Methods 0.000 description 3
- 230000009897 systematic effect Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000013011 mating Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
- 230000004083 survival effect Effects 0.000 description 1
- 238000010200 validation analysis 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/368—Test management for test version control, e.g. updating test cases to a new software version
-
- 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/3676—Test management for coverage analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
可以在集成测试中执行缺陷定位以更有效地确定最近的源代码改变是否引起缺陷。标识改变位置,其代表自最后的集成测试运行之后发生的代码改变(例如,源代码改变)。可以获得代码覆盖信息,其指示在集成测试期间实际测试的代码行。可以执行搜索以找到代码改变和实际测试的代码之间的交叉,以确定集成测试中可能引起缺陷的一个或多个候选代码改变。可以基于一个或多个不同的排名算法来对候选代码改变排名。
Description
技术领域
本发明涉及软件测试。
背景技术
在计算机编程中,单元测试(unittesting)是一种软件测试方法,通过该方法,源代码的各个单元、一个或多个计算机程序模块的集合以及相关联的控制数据、使用过程、以及操作过程被测试以确定它们是否适合使用。人们可以看到的单元作为应用的最小可测试部分。在面向过程编程中,单元可以是整个模块,但是更常见的是,它是单独的功能或过程。在面向对象编程中,单元通常是整个接口,例如类,但是也可以是单独的方法。单元测试通常是在开发过程中由程序员创建的短代码段。
集成测试是这样的软件测试:在该软件测试中,源代码的各个单元被组合并被按组进行测试。集成测试发生在单元测试之后并在验证测试(其中,执行检测以确定是否产品符合规格)之前。集成测试将已经经过单元测试的模块作为其输入,将它们分组为较大的聚合体,将在集成测试计划中定义的测试应用于这些聚合体,并传递准备进行系统测试的集成系统作为其输出。集成测试在大型系统上可能运行数小时。
在集成测试期间,当发生错误时,很难知道哪些软件改变导致错误。例如,在大型系统中,许多开发人员已经提交对不同单元的修改,并且可能非常难以确定自上次成功运行之后的许多改变中的哪些改变导致错误。开发人员需要手动检查程序轨迹以确定问题如何发生。几乎没有提供指导,而且往往凭借经验和运气来解决问题。这使得集成测试故障诊断非常昂贵,而且削弱了集成测试的投资回报。
发明内容
提供发明内容来简单地介绍概念的选择,其将在下面的具体实施方式中进一步描述。发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不是旨在被用于限制所要求保护的主题的范围。
在一个实施例中,可以在集成测试中执行缺陷定位,以更有效地确定最近的代码改变(例如,源代码改变)是否引起缺陷。标识改变位置,其代表自最后的集成测试运行之后发生的代码改变。可以获得代码覆盖信息,其指示在集成测试期间实际测试的代码行。可以执行搜索以找到代码改变和实际测试的代码之间的交叉,以确定集成测试中可能引起缺陷的一个或多个候选代码改变。
在可以补充其他实施例的另一个实施例中,候选代码改变可以基于一个或多个不同的排名算法来排名。排名算法可以基于多个测量的参数,诸如在没有通过的测试中最频繁地训练的代码改变、或者按改变的代码行测量的源代码改变的大小。可以基于这些参数来使用排名算法的不同组合。
从下面参照附图的详细描述,本发明的前述和其它的目的、特征和优点将变得更加明显。
附图说明
图1示出了可以用于在软件集成测试期间定位缺陷的系统的实施例。
图2示出了根据一个实施例的、可以与图1结合使用以定位缺陷的方法的流程图。
图3是根据另一个实施例的、多个启发式模型可以被用于生成导致缺陷的候选源代码修订的排序列表的的方法的流程图。
图4是根据另一个实施例的、用于在集成测试期间定位缺陷的流程图。
图5是根据又一个实施例的、用于在集成测试期间定位缺陷的流程图。
图6是示出用于定位缺陷的简单示例性实现的表。
图7是可以实施所描述的实施例的适合的计算环境的一般例子。
具体实施方式
图1示出了根据一个实施例的用于在软件集成测试期间定位缺陷的总体系统100。修订控制系统110可以是本领域中已知的标准修订控制系统。修订控制系统是源代码版本控制系统,其保存源代码(例如,文件)并且记录何时由谁做出了哪些改变。版本控制提供了有关在两个时间点之间哪些源文件/对象被改变(例如,诸如哪些行被改变,哪些过程被改变等)。这些“源改变”不仅包括程序的源代码,而且还包括配置文件以及可能影响程序的行为的其他因素(artifact)。源改变可以被存储在数据库111中,其在所示的实施例中被示出代码的两个版本(即,版本1和2)并且在两个版本之间存在改变。其他版本和相关联的改变也可以被存储在其中。
系统100还可以包括测试系统112,这也是本领域中已知的常用系统。测试系统112训练或运行代码(源代码和配置数据),以确定系统的正确行为。测试系统112可以针对被运行的每个测试,输出结果状态(例如,通过/没有通过)。例如,结果可以被存储在一个或多个数据库,诸如数据库114、116中。测试系统112还可以测量在测试运行中实际使用源代码的哪个部分。通常,测试系统112可以输出覆盖简档(coverageprofile)120,其指示哪个代码行被训练(即,运行)或者哪些配置参数被使用。可替代地或附加地,覆盖简档120可以指示哪些子例程或程序模块(例如,对象)(即,在逻辑上分组在一起的多行代码)被使用。
测试系统112可以接收多个输入。第一输入130可以包括测试套件,其包括两个或更多个单独测试的集合。测试系统112还可以采用要被测试的代码作为输入,所述代码是从版本控制系统110输出的。在这个例子中,代码是由编译器134编译的机器代码132的一个或多个版本。虽然未单独示出,但是编译器134也可以被集成到修订控制系统110中。另外,虽然未示出,但是修订控制系统110可以直接向要测试的测试系统112提供解释代码。
测试系统112在测试套件130中对于代码132的版本执行测试。集成测试的多次运行可以被执行。在系统100的例子中,两次独立的运行被示出,一个用于代码的第一版本,一个用于代码的第二版本。通常,代码的第二版本与第一版本相同,但是有更新。测试系统的输出包括第一运行的结果114和第二运行的结果116。结果114、116包括组成测试套件的单独测试的结果。
缺陷定位工具140可以接收包括代码的第一版本和代码的第二版本之间的改变的文件111、覆盖简档120、以及第一集成测试的结果114和第二集成测试的结果116,作为输入。根据特定应用,也可以使用其他输入。缺陷定位工具140可以包括比较引擎142,其确定来自测试套件130的单独测试中的哪个测试通过了第一运行,但是没有通过第二运行。从所述确定得到的测试的子集可以被存储在存储器位置中,如在144所示。
匹配引擎150可以从比较引擎142读取结果144。在可替换的实施例中,匹配引擎150可以直接从比较引擎读取结果。对于在144处标识的测试,匹配引擎150从数据库111获得版本1和2之间改变的代码。例如,改变的代码可以通过行号来指示。然后在第二集成测试的覆盖简档120中搜索这些代码改变。如果存在匹配,则表示代码在修订之间有改变并且被测试系统训练,这意味着执行测试系统作为测试过程的一部分运行了这些代码行。结果是文件111的子集,其中子集包括在第二集成测试期间中被测试系统训练的源代码修订。从而,子集包括多个候选错误。通常,连续的多行源代码可以被视为一组,并被共同标识为候选错误。
候选错误可以根据哪些代码改变可能导致错误的优先级,被组织成排序列表。确定优先级引擎(prioritizingengine)160可以基于多个可能的启发式模型,来按排序组织候选错误。优先级控制162可以被用于控制哪个模型被使用。通常,优先级排名基于多少单独的测试使用了与候选错误相关联的代码或者代码的大小。不同模型的详细例子将参照图3在下面进一步说明。确定优先级的结果可以被输出为导致错误的候选代码改变170的排序列表。
图2示出了根据一个实施例的、可以与图1结合使用的流程图200。在过程块210中,可以在源代码和/或配置数据的第一时段期间执行第一集成测试,所述源代码和/或配置数据一起形成代码的版本1。例如,再次参考图1,修订控制系统110可以要么提供被编译的机器代码132,要么提供可以被测试系统112解释的代码。然后,测试系统112可以使用测试套件130执行第一集成测试,以运行多个单独的测试。测试的结果可以存储在数据库114中。结果通常包括测试套件130中的每个单独的测试是通过测试还是未通过测试。在过程块220中,可以接收对源代码和/或配置数据的修订。例如,开发人员可以将更新插入到修订控制系统110,以生成代码的新版本(在这个例子中被称为版本2)。修订控制系统可以自动追踪这些更新,并提供显示改变的输出文件111。代码的新版本可以以类似于版本1的方式,被再次传递到测试系统112。
在过程块230,可以对代码的版本2执行第二集成测试。像第一集成测试一样,第二集成测试可以由测试系统112执行。通常,测试系统使用与用于版本1测试相同的测试套件130。第二集成测试的结果可以存储在数据库116中,并且可以包括针对测试套件中的每个单独的测试的结果,其包括每个单独测试是通过还是未通过。第二集成测试在第二时段T2运行,而且第一集成测试在早于T2的第一时段T1运行。在这两个时段之间,针对代码的软件修订发生。通常,软件修订本身可以引起导致单独测试没有通过的新的错误。
在过程块240中,将第一集成测试与第二集成测试进行比较。在执行比较时,比较测试套件中的每个单独的测试的结果,以查看哪些单独的测试先前通过,但是现在没有通过。在T1和T2之间做出改变的源代码导致错误发生的概率很高。这个比较可以通过比较引擎142执行,其读取第一集成测试结果114和第二集成测试结果116并生成输出144,其指示单独的测试的子集初次通过了但是现在没有通过。
在过程块250中,可以获得覆盖简档。例如,覆盖简档通常包括指示在第二集成测试期间被运行的特定例程或代码行的信息。为了获得覆盖简档,匹配引擎150可以直接从测试系统112读取覆盖简档,或者从数据库读取覆盖简档。在一些实施例中,覆盖简档可以被存储在链接到集成测试结果的数据库116中。在过程块260中,可以获得位置信息,其指示由于修订而改变的源代码和/或配置。例如,匹配引擎150可以直接读取修订控制系统110以获得位置信息,或者它可以读取数据库111。在过程块270中,修订的位置信息可以匹配到与覆盖简档相关联的位置信息。例如,可以在覆盖简档中搜索与代码相关联的行号。对于连续源代码行的组,通常针对覆盖简档搜索组中的第一行号。如果存在匹配,则确定源代码改变已经被测试系统训练。因此,源代码改变可以被认为是在集成测试中引起错误的候选源代码改变。多个源代码改变可以被确定并被包括为附加候选错误。
图3是用于针对由匹配引擎150找到的候选错误确定优先级的方法的流程图300。流程图300可以通过确定优先级引擎160来执行,以生成包括源代码改变和/或配置改变的候选代码改变的排序列表。在过程块310中,可以接收匹配信息,以用于匹配在集成测试中导致错误的候选源代码或配置数据改变。例如,匹配信息可以从匹配引擎150接收。在过程块320中,可以读取优先级控制文件162。基于优先级控制文件中的配置数据,确定优先级引擎160可以采用由不同的过程块330、340、350和360所指示的多个路径中的一个。这些不同的路径中的每一个按照导致错误或缺陷的候选源代码修订的优先级排序输出列表(过程块370)。
在过程块330中,基于训练被修订的源代码和/或配置数据的没有通过的单独测试的数目来生成优先级排序列表。在这个过程中,对于每个源代码改变,对于来自测试套件130的在集成测试1期间通过而在集成测试2期间没有通过的单独测试做出标识(以被下称为“红色测试”)。通过集成测试1和集成测试2的任何单独测试被认为是“绿色测试”。然后计算训练每个源代码改变的红色测试的数目的计数。最高数目的计数被认为是最有可能的原因,而且在优先级列表的顶部。后续候选错误根据它们相关联的计数按排序被添加到列表。
在过程块340中,可以使用训练被修订的源代码和/或配置数据的通过和没有通过的比率来生成优先级排序列表。因此,可以计算训练候选代码的红色测试和绿色测试的计数。可以通过红色/绿色测试的比率来定义排名。具有最高比率的代码改变是缺陷的最有可能的原因。后续候选错误根据它们相关联的比率被添加到列表。
在过程块350中,可以使用源代码和/或配置数据中改变的大小来生成优先级排序列表。例如,可以使用改变的行数、改变的项目、改变的过程等来确定优先级排序。最大改变可以被认为是缺陷的最有可能的原因。后续候选错误也可以基于大小来排序。
在过程块360中,可以使用修改的源代码和/或配置改变的大小和训练的所有源代码和/或配置数据的大小来生成优先级排序列表。因此,例如,每个没有通过的测试中的多个代码改变可以通过测试中被训练的代码(即,被覆盖的代码)的总大小来划分。小代码覆盖简档中的代码改变与非常大的代码覆盖简档中的代码改变相比,具有更高的影响概率。
可以使用除了330、340、350和360外的其它过程或它们的组合。尽管如此,无论哪个被使用,都可以按照引起缺陷的候补代码修订的优先级排序输出列表(过程块370)。
图4是可用于在集成测试中定位缺陷的方法的流程图400。在过程块410中,可以使用测试套件在第一时间点(T1)执行第一集成测试。如前所述,测试系统112可以读取测试套件,并使用测试套件中的单独的测试来测试代码的第一版本。在过程块420中,接收对代码的改变以及与这些改变相关联的位置(被称为第一代码)。例如,开发人员可以更新代码以包括新的功能或对现有功能进行改善或修复。捕获与改变相关联的数据是可用的修订控制系统的标准输出,如在110所示。在处理块430中,第二集成测试可以在第二时间点(T2)执行。第二集成测试使用与第一集成测试相同的测试套件,但是训练代码的第二版本,其包括来自过程块420的改变。在过程块440中,对于先通过然后没有通过的测试,接收由测试训练的第二代码位置。应当认识到,第一代码位置可以是诸如源代码中的行号的位置,而第二代码位置可以是诸如目标代码中的行号的位置。然而,第一位置和第二位置二者都可以对应于代码的相同部分。因此,与源代码相关联的行号可以对应于目标代码中的行号,因为两者是相同内容的不同表示。在过程块450中,可以在包含第二代码位置的文件中搜索第一代码位置,以找到匹配位置。在一个例子中,可以在覆盖简档中搜索与源代码修订相关联的行号以便找到匹配位置数据,其指示由第二集成测试训练的源代码。
图5是根据另一实施例的用于在集成测试期间定位缺陷的流程图500。在过程块510中,可以接收与分别对代码的第一版本和第二版本进行的第一和第二集成测试有关的结果。通常,对代码的第一版本进行更新以获得代码的第二版本。第一版本和第二版本可以是代码的任何版本,但第一和第二是指一个在另一个之前开发的时间序列。
在过程块520中,将第一集成测试结果与第二集成测试结果进行比较,以确定在通过第一集成测试之后在第二集成测试中没有通过的单独的测试。在过程块530中,接收覆盖数据,其指示代码的第二版本的哪些位置在第二集成测试运行期间被运行。在过程块540中,标识代码改变位置,其指示第一集成测试和第二集成测试之间增加的新的代码改变。代码改变位置可以从修订控制系统来获得。在过程块550,可以将改变位置与覆盖数据进行比较,以确定哪些改变的代码也在第二集成测试运行期间被测试。只需要改变的代码和测试的代码之间的交叉来将改变的代码标识为代码的候选错误。
图6是示出如何可以识别候选代码段并且为其确定优先级的例子。具体地,在600中示出了包括多排的代码覆盖表,每排包括源代码行。在这个例子中,两个文件F1和F2被改变。如在610所示,F1中的行10-12被改变。如在620所示,F1的行18-20被改变。最后,在630,F2的行30-34被改变。为了便于说明,只有三个代码改变被示出,但是在典型的设计环境中,存在成百上千的改变。集成测试被执行两次,并且包括6个单独的测试T1-T6。可以使用任何数目的测试。在排640中,示出了对于两个测试运行的测试结果。测试T1、T2、T3和T5通过第一集成测试和第二集成测试。然而,T4和T6被示为通过第一集成测试(由更深色的框指示通过)但是未能通过第二集成测试。排610、620和630中的每一个示出了哪些源代码改变被由X指定的单独测试训练。代码覆盖表600示出,T4训练了源代码段610和630二者,但是没有训练620。因此,源代码段620不可能在T4导致错误。其他没有通过的测试,T6,只训练了源代码段630。因此,源代码段610和630二者被认为是可能导致缺陷的候选。与此相比,源代码段620未被T4或T6训练,并且不能成为候选。
可以执行候选源代码段610、630的排名。在一个示例的排名中(上面与图3的330有关的描述),由于两个没有通过的测试T4、T6训练源代码630并且只有T4训练610,因此代码630将是排名最高的候选。因此,在630处所指示的改变是没有通过测试T4、T6的最有可能的原因。
在另一个实施例中,可以执行下面的步骤。
1.在第一阶段中,单独的测试被分组到一起批处理运行的测试套件中。
2.测试套件被运行,而且每个单独的测试的结果被存储在数据库中,以使得测试结果的历史是可访问的。
3.在时间T1,给定的测试套件TS1具有成功/绿色测试的集合=绿色(TS1,T1),而且也可能具有没有通过/红色测试的集合=红色(TS1,T1)。只有绿色测试被认为用于进一步分析。
4.在测试套件TS1的另一次运行之前,源改变SC1的集合被提交到修订控制系统,从而进入测试系统。这些改变将影响后续测试运行。
5.在稍后的时间点T2>T1,测试套件TS1再次被运行。步骤4中的改变影响T1和T2之间的测试运行。
6.在T2运行的测试TS1的结果被考虑,尤其是最新没有通过的测试(NewlyFailedTests)NFT(TS1,T2,T1)的子集=红色(绿色(TS1,T1),T2),它是在T1先前运行中为绿色但是现在在T2已经变成红色(=没有通过)的测试的集合。这个信息可以从测试结果的历史获得。
7.考虑NFT(T2)的代码覆盖简档,即,尤其是哪些源改变被这些测试使用。源改变SC1的集合与NFT(T2)的代码覆盖简档交叉,以便得到SC1的子集。这个交叉被称为SC1_failed(SC1_没有通过),而且它定义了可能是这个运行中测试没有通过的原因的改变的集合。因此,任何测试没有“使用”的改变将不会在SC1_failed中。
8.在第二阶段(它可以在一些实施方案中实现)中,通过若干启发式模型来排名SC1_failed中的改变,以确定一个或多个没有通过测试的最有可能的原因(=源改变)。这将产生例如列表,其中,最可能的原因是被列在列表的顶部。所使用的启发式模型如下:
a.对于SC1_failed中的每个源改变,对这个源(代码,配置等)所训练/使用的“红色测试”的数目进行计数。具有最高数目的一个是最有可能的原因。
b.对于SC1_failed中的每个源改变,不仅对这个源所使用的红色测试进行计数,而且还对这个源所使用的绿色测试进行计数。通过红色/绿色测试的比率来定义排名。具有最高比率的源改变是最有可能的原因。
c.考虑源改变的大小,例如改变的行/项目的数目。“最大改变”是最有可能的原因。
d.考虑每个没有通过的测试中的源改变的数目,并且通过测试中使用的(=覆盖的)代码的总大小来对所述源改变进行划分。小代码覆盖简档中的源改变与非常大的代码覆盖简档中的源改变相比,具有更高的影响概率。
这些启发式模型可以以不同的方式进行组合,并且附加的启发式模式是可能的。
综上所述,这个算法产生导致测试没有通过的最可能的原因的排序列表,以使得缺陷分析可以集中在这些原因并且更加高效。
参考图7,计算环境700包括一个或多个处理单元710、715,以及存储器720、725。在图7中,这种基本配置730被包括在虚线内。处理单元710、715执行计算机可执行指令。处理单元可以是通用中央处理单元(CPU)、专用集成电路(ASIC)中的处理器或任何其它类型的处理器。在多处理系统中,多个处理单元执行计算机可执行指令以提高处理能力。例如,图7示出了中央处理单元710、以及图形处理单元或协作处理单元715。有形存储器720、725可以是可由(多个)处理单元访问的易失性存储器(例如,寄存器、高速缓存、RAM)、非易失性存储器(例如,ROM、EEPROM、闪存等)、或两者的一些组合。存储器720、725以适合由(多个)处理单元执行的计算机可执行指令的形式存储实施本文所描述的一个或多个创新的软件780。例如,软件780可以包括缺陷定位工具140。
计算系统可以具有附加功能。例如,计算环境700包括存储装置740、一个或多个输入设备750、一个或多个输出设备760、以及一个或多个通信连接770。互连机制(未示出),诸如总线、控制器或网络,互连计算环境700的组件。通常,操作系统软件(未示出)为在计算环境700中执行的其他软件提供操作环境,并协调计算环境700的组件的活动。
有形存储装置740可以是可移除的或不可移除的,并且包括磁盘、磁带或磁带盒、CD-ROM、DVD、或可用于以非临时性方式存储信息并且可以在计算环境700内的访问的任何其他介质。存储装置740存储用于实施本文所描述的一个或多个创新的软件780的指令。
(多个)输入设备750可以是诸如键盘、鼠标、笔、或轨迹球的触摸输入设备、语音输入设备、扫描设备、或向计算环境700提供输入的其他设备。(多个)输出设备760可以是显示器、打印机、扬声器、CD刻录机、或从计算环境700提供输出的其它设备。
(多个)通信连接770使能通过通信介质与其他计算实体进行通信。通信介质传递信息,诸如计算机可执行指令、音频或视频输入或输出、或调制的数据信号中的其它数据。调制的数据信号是这样的信号,该信号以将信息编码到信号中的方式来设置或改变它的特性中的一个或多个。以举例的方式,而非限制的方式,通信介质可以使用电、光、RF或其它载体。
虽然为了便于呈现,所公开的方法的一些操作以特定的、顺序的排序描述,但是应当理解的是,这种方式的描述包括重新排列,除非特定的排序是由如下阐述的特定语言所要求的。例如,在某些情况下,顺序描述的操作可以重新排列或同时执行。此外,为了简单起见,附图可能没有示出所公开的方法可以与其它方法结合使用的各种方法。
所公开的任何方法可以被实现为存储在一个或多个计算机可读存储介质(例如,一个或多个光学媒体光盘、易失性存储器组件(例如DRAM或SRAM)、或非易失性存储器组件(如闪存或硬盘驱动器))并且运行在计算机(例如任何市售的计算机,包括智能电话或包括计算硬件的其他移动设备)上的计算机可执行指令。术语计算机可读存储介质不包括通信连接,诸如信号和载波。用于实现所公开的技术的任何计算机可执行指令以及在执行所公开的实施例的过程中创建和使用的任何数据可以被存储在一个或多个计算机可读存储介质中。计算机可执行指令可以是例如,专用软件应用或者经由网络浏览器或其它软件应用(诸如远程计算应用)访问或下载的软件应用的一部分。这样的软件可以,例如,在单个本地计算机(例如,任何合适的市售计算机)上、或在使用一个或多个网络服务器的网络环境(例如,经由因特网、广域网、局域网、客户端-计算机网络(例如云计算网络)、或其它这样的网络)中执行。
为了清楚起见,描述了基于软件的实现方式的某些选定方面。本领域中公知的其它细节在此省略。例如,应该理解的是,所公开的技术不限于任何特定的计算机语言或程序。例如,所公开的技术可以通过以C++、Java、Perl、JavaScript、AdobeFlash或任何其他合适的编程语言编写的软件来实现。同样地,所公开的技术不限于任何特定的计算机或硬件的类型。合适的计算机和硬件的某些细节是公知的,并且不需要在本公开中详细地阐述。
还应该充分理解,在此描述的任何功能可以至少部分地由一个或多个硬件逻辑组件,而不是软件,来执行。例如,但不限于,可以使用的示例类型的硬件逻辑元件包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑器件(CPLD)等。
此外,任何基于软件的实施例(包括,例如,用于使计算机执行任何所公开的方法的计算机可执行指令)可以被上传、下载、或通过合适的通信手段来远程访问。这样的合适的通信手段包括,例如,因特网、万维网、内联网、软件应用、电缆(包括光纤电缆)、磁通信、电磁通信(包括射频、微波和红外线通信)、电子通信、或其它这样的通信手段。
所公开的方法、装置和系统不应该以任何方式被解释为限制。相反,本公开涉及所公开的各种实施例(单独以及彼此之间进行各种组合和子组合)的所有新颖的和非显而易见的特征。所公开的方法、装置和系统不限于任何特定的方面或特征或其组合,而且所公开的实施例也不要求存在一个或多个特定优点中的任何优点、或者使问题得到解决。
由于所公开的发明的原理可以应用于许多可能的实施例,因此应当认识到,所示实施例仅是本发明的优选的实施例,而不应被视为限制本发明的范围。相反,本发明的范围由所附的权利要求限定。因此,我们声明本发明全部落入这些权利要求的范围之内。
Claims (20)
1.一种在与系统的代码相关联的集成测试期间检测软件缺陷的方法,该方法包括:
在第一时段期间,使用包括多个单独的测试的测试套件对代码执行第一集成测试,其中,至少一部分单独的测试通过第一集成测试;
接收对代码的改变,以生成代码的更新的版本和标识改变的代码的部分的第一代码位置;
在稍后的第二时段期间,使用测试套件对代码的更新的版本执行第二集成测试,其中,至少一些单独的测试没有通过第二集成测试;
对于在第一时段期间通过但是在第二时段期间没有通过的单独的测试,接收由所述单独的测试训练的第二代码位置;以及
将在第一时段之后改变的第一代码位置与在第二集成测试期间训练的第二代码位置进行匹配,以检测代码的候选缺陷。
2.如权利要求1所述的方法,还包括基于最有可能的候选缺陷,按优先级排序来排名候选缺陷。
3.如权利要求2所述的方法,其中,通过对于改变的代码的每个部分,对训练了代码的所述部分并且没有通过的单独的测试的数目进行计数,来确定所述排名。
4.如权利要求2所述的方法,其中,通过对于改变的代码的每个部分,对训练了代码的所述部分并且没有通过的单独的测试的第一数目以及对训练了代码的所述部分并且通过的单独的测试的第二数目进行计数,并且通过计算第一数目和第二数目的比率,来确定所述排名。
5.如权利要求2所述的方法,其中,基于没有通过的代码的改变部分的大小来确定排名。
6.如权利要求2所述的方法,其中,基于在没有通过的测试中改变的代码的部分的大小来确定排名。
7.如权利要求1所述的方法,其中,所述代码包括源代码和目标代码,而且第一代码位置在源代码中以及第二代码位置在目标代码中,而且其中,第一代码位置和第二代码位置对应代码的相同部分。
8.如权利要求1所述的方法,其中,所述代码包括源代码和与源代码相关联的配置文件。
9.如权利要求1所述的方法,其中,执行第一集成测试和第二集成测试包括使用测试套件作为输入来运行测试系统。
10.如权利要求1所述的方法,其中,接收对代码的改变包括从修订控制系统读取输出文件。
11.一种其中编码有计算机可执行的指令的计算机可读储存装置,所述指令用于使由此被编程的计算系统执行方法,该方法包括:
接收第一集成测试运行和第二集成测试运行的第一集成测试结果和第二集成测试结果,每个集成测试分别对代码的第一版本和第二版本使用单独的测试的套件;
比较第一集成测试结果和第二集成测试结果,以确定通过一个但是没有通过另一个的单独的测试的集合;
对于所确定的单独的测试的集合,接收覆盖数据,其指示代码的第二版本的哪些位置在第二集成测试运行期间被执行;
标识指示对代码的第一版本的更新的改变位置;以及
比较改变位置和覆盖数据,以确定哪些更新也在第二集成测试运行期间被测试。
12.如权利要求11所述的计算机可读储存装置,其中,所述更新发生在第一集成测试运行和第二集成测试运行之间。
13.如权利要求11所述的计算机可读储存装置,还包括执行第一集成测试运行和第二集成测试运行,包括将单独的测试分组为用于在测试系统中使用的单独的测试的套件。
14.如权利要求11所述的计算机可读储存装置,其中,比较第一集成测试结果和第二集成测试结果包括确定单独测试的哪个套件通过第一集成测试运行然后没有通过第二集成测试运行。
15.如权利要求11所述的计算机可读储存装置,其中,比较改变位置和覆盖数据包括将与改变位置相关联的行或过程映射到与覆盖数据中的相同的行或过程。
16.如权利要求11所述的计算机可读储存装置,还包括生成导致至少一个单独的测试没有通过的错误的最有可能的改变位置的列表。
17.如权利要求16所述的计算机可读储存装置,其中,所述列表是基于一个或多个启发式模型排名的,包括基于改变位置与覆盖数据不匹配的数目来对每个改变位置排名。
18.一种在集成测试中检测代码缺陷的系统,包括:
修订控制系统,其追踪源代码改变;
测试系统,其耦接到修订控制系统以用于接收要测试的代码;
至少一个数据库,其耦接到测试系统,存储至少第一集成测试和第二集成测试的结果;以及
缺陷定位工具,其耦接到所述至少一个数据库和修订控制系统,用于将与在第一集成测试之后修订的源代码和/或配置数据相关联的位置信息与在第二集成测试期间训练的源代码和/或配置数据的位置信息进行匹配。
19.如权利要求18所述的系统,其中,所述缺陷定位工具生成源代码和/或配置数据的候选版本的优先级列表。
20.如权利要求19所述的系统,其中,所述缺陷定位工具被耦接到存储器,用于读取控制如何计算优先级的优先级控制文档。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/313,029 | 2014-06-24 | ||
US14/313,029 US20150370685A1 (en) | 2014-06-24 | 2014-06-24 | Defect localization in software integration tests |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105279084A true CN105279084A (zh) | 2016-01-27 |
Family
ID=53442436
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510184119.3A Pending CN105279084A (zh) | 2014-06-24 | 2015-04-17 | 软件集成测试中的缺陷定位 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20150370685A1 (zh) |
EP (1) | EP2960799A1 (zh) |
CN (1) | CN105279084A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107436827A (zh) * | 2016-05-27 | 2017-12-05 | 纬创资通股份有限公司 | 电子装置的检测方法 |
CN110196803A (zh) * | 2018-02-27 | 2019-09-03 | 北京京东尚科信息技术有限公司 | 一种软件缺陷培训方法和系统 |
CN112596760A (zh) * | 2020-12-09 | 2021-04-02 | 武汉联影医疗科技有限公司 | 软件维护方法、装置和设备 |
CN112703486A (zh) * | 2018-09-12 | 2021-04-23 | 微软技术许可有限责任公司 | 经由对跨内部验证环的遥测数据的分析来检测代码缺陷 |
CN112771505A (zh) * | 2018-09-28 | 2021-05-07 | 微软技术许可有限责任公司 | 通过不一致处置检测的软件测试保证 |
CN113220560A (zh) * | 2020-01-21 | 2021-08-06 | 百度在线网络技术(北京)有限公司 | 一种代码测试方法、装置、电子设备及存储介质 |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10185640B2 (en) * | 2015-04-08 | 2019-01-22 | Avaya Inc. | Method to provide an optimized user interface for presentation of application service impacting errors |
US10282283B2 (en) * | 2016-01-28 | 2019-05-07 | Accenture Global Solutions Limited | Orchestrating and providing a regression test |
US10289535B2 (en) * | 2016-05-31 | 2019-05-14 | Accenture Global Solutions Limited | Software testing integration |
US9916235B2 (en) | 2016-08-09 | 2018-03-13 | Seagate Technology Llc | Code failure locator |
US20180060221A1 (en) * | 2016-08-24 | 2018-03-01 | Google Inc. | Multi-layer test suite generation |
US10572245B1 (en) * | 2016-08-30 | 2020-02-25 | Amazon Technologies, Inc. | Identifying versions of running programs using signatures derived from object files |
US9983989B1 (en) | 2017-02-13 | 2018-05-29 | International Business Machines Corporation | Suspect code detection in software regression |
CN107247662B (zh) * | 2017-05-10 | 2019-10-18 | 中国电子产品可靠性与环境试验研究所 | 软件缺陷检测方法及装置 |
SE1751166A1 (en) * | 2017-09-20 | 2019-03-21 | Empear Ab | Ranking of software code parts |
US11531531B1 (en) | 2018-03-08 | 2022-12-20 | Amazon Technologies, Inc. | Non-disruptive introduction of live update functionality into long-running applications |
US10936471B2 (en) * | 2018-12-14 | 2021-03-02 | Cerner Innovation, Inc. | Dynamic integration testing |
EP3686748B1 (en) * | 2019-01-22 | 2022-05-04 | PRMA Consulting Limited | Synchronizing content blocks between multiple electronic documents |
CN110309054B (zh) * | 2019-05-22 | 2021-08-31 | 平安科技(深圳)有限公司 | 代码有效性测试方法、计算设备及存储介质 |
US10846210B1 (en) * | 2019-10-31 | 2020-11-24 | Capital One Services, Llc | Automation of platform release |
WO2021124464A1 (ja) * | 2019-12-17 | 2021-06-24 | 三菱電機株式会社 | 経路決定装置及び経路決定プログラム |
CN116841886B (zh) * | 2023-07-03 | 2023-11-17 | 中国人民解放军国防科技大学 | 一种面向配置缺陷的定向模糊测试方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103678110B (zh) * | 2012-09-26 | 2016-03-30 | 国际商业机器公司 | 提供修改相关信息的方法和装置 |
-
2014
- 2014-06-24 US US14/313,029 patent/US20150370685A1/en not_active Abandoned
-
2015
- 2015-04-17 CN CN201510184119.3A patent/CN105279084A/zh active Pending
- 2015-06-11 EP EP15001735.8A patent/EP2960799A1/en not_active Withdrawn
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107436827A (zh) * | 2016-05-27 | 2017-12-05 | 纬创资通股份有限公司 | 电子装置的检测方法 |
CN110196803A (zh) * | 2018-02-27 | 2019-09-03 | 北京京东尚科信息技术有限公司 | 一种软件缺陷培训方法和系统 |
CN110196803B (zh) * | 2018-02-27 | 2024-04-16 | 北京京东尚科信息技术有限公司 | 一种软件缺陷培训方法和系统 |
CN112703486A (zh) * | 2018-09-12 | 2021-04-23 | 微软技术许可有限责任公司 | 经由对跨内部验证环的遥测数据的分析来检测代码缺陷 |
CN112771505A (zh) * | 2018-09-28 | 2021-05-07 | 微软技术许可有限责任公司 | 通过不一致处置检测的软件测试保证 |
CN113220560A (zh) * | 2020-01-21 | 2021-08-06 | 百度在线网络技术(北京)有限公司 | 一种代码测试方法、装置、电子设备及存储介质 |
CN112596760A (zh) * | 2020-12-09 | 2021-04-02 | 武汉联影医疗科技有限公司 | 软件维护方法、装置和设备 |
Also Published As
Publication number | Publication date |
---|---|
EP2960799A1 (en) | 2015-12-30 |
US20150370685A1 (en) | 2015-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105279084A (zh) | 软件集成测试中的缺陷定位 | |
US10949338B1 (en) | Automated software bug discovery and assessment | |
Krüger et al. | Where is my feature and what is it about? a case study on recovering feature facets | |
CN101369249B (zh) | 标识软件的gui部件的方法和装置 | |
CN103678110B (zh) | 提供修改相关信息的方法和装置 | |
US10437702B2 (en) | Data-augmented software diagnosis method and a diagnoser therefor | |
US20190034323A1 (en) | System and method for generating regression test suite | |
CN104239158A (zh) | 用于自动分析和链接错误日志的分析引擎 | |
CN105608011A (zh) | 代码测试覆盖率统计结果的确定方法及装置 | |
CN108009080B (zh) | 一种代码扫描工具的评估方法及装置 | |
CN105446874A (zh) | 一种资源配置文件的检测方法和装置 | |
US10902130B2 (en) | Guiding automated testing of binary programs | |
US20090204703A1 (en) | Automated document classifier tuning | |
CN103646090A (zh) | 应用程序推荐方法、程序启动速度的优化方法和装置 | |
US11513944B1 (en) | Ranking tests based on code change and coverage | |
CN108268373A (zh) | 自动化测试用例管理方法、装置、设备及存储介质 | |
US11163560B1 (en) | Methods and arrangements to process comments | |
CN109032850B (zh) | 现场装置调试系统和现场装置调试方法 | |
CN105190334A (zh) | 使用多条处理路径进行器件测试的方法和装置 | |
CN111858959A (zh) | 组件关系图谱的生成方法、装置、计算机设备及存储介质 | |
CN103365772B (zh) | 软件测试自动评价装置以及方法 | |
US10152407B1 (en) | Optimization of analysis of automated test results | |
US20220206773A1 (en) | Systems and methods for building and deploying machine learning applications | |
Sulaiman et al. | Classification Trends Taxonomy of Model-based Testing for Software Product Line: A Systematic Literature Review | |
Geraldi et al. | Checklist-based Inspection of SMarty Variability Models |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20160127 |