CN113342651A - 一种用于测试用例缺陷与用例模糊关联关系的恢复方法 - Google Patents

一种用于测试用例缺陷与用例模糊关联关系的恢复方法 Download PDF

Info

Publication number
CN113342651A
CN113342651A CN202110609722.7A CN202110609722A CN113342651A CN 113342651 A CN113342651 A CN 113342651A CN 202110609722 A CN202110609722 A CN 202110609722A CN 113342651 A CN113342651 A CN 113342651A
Authority
CN
China
Prior art keywords
test
test case
code
defect
case
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.)
Granted
Application number
CN202110609722.7A
Other languages
English (en)
Other versions
CN113342651B (zh
Inventor
顾雪姗
张贺
刘博涵
荣国平
邵栋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing University
Original Assignee
Nanjing University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nanjing University filed Critical Nanjing University
Priority to CN202110609722.7A priority Critical patent/CN113342651B/zh
Publication of CN113342651A publication Critical patent/CN113342651A/zh
Application granted granted Critical
Publication of CN113342651B publication Critical patent/CN113342651B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3676Test management for coverage analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

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)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种用于测试用例缺陷与用例模糊关联关系的恢复方法,属于软件测试技术领域。本发明包括获取测试用例对项目的覆盖信息;获得项目在代码托管平台上的历史提交记录与代码修改记录;获得项目在构建平台上的回归测试记录;通过步骤二与步骤三中的数据获得测试用例与缺陷代码之间的关联关系和获取测试用例集的优先级排序,本发明通过利用容易获得的数据会付出缺陷代码与测试用例之间的模糊关联关系的方法,提高了度量测试用例优先级排序技术的有效性,通过对数据进行恢复,使用TCP技术对测试用例优先级排序技术进行有效性的评估,保证TCP技术更合适地应用于企业不同项目的测试过程。

Description

一种用于测试用例缺陷与用例模糊关联关系的恢复方法
技术领域
本发明涉及软件测试技术领域,具体为一种用于测试用例缺陷与用例模糊关联关系的恢复方法。
背景技术
随着信息产业的发展,学术界与工业界的软件系统规模逐渐增大,持续迭代过程越来越敏捷,随着测试用例集的不断增大,单次测试的耗时越来越长,因此,测试的时间及资源的消耗问题更为凸显,已经成为缩短交付周期的主要瓶颈。
现有的测试用例缺陷与用例模糊关联关系的恢复方法的测试效率和准确率较低,使得在测试过程中需要进行多次测试,降低了工作人员的工作效率,以及为了将TCP技术更合适地应用于企业不同项目的测试过程,需要评价不同测试用例序列检测到代码缺陷的效率,进而对不同优先级排序技术进行评估,但这一数据在企业中一般是没有记录的,使得目前并没有有效的方法,使用已有的数据,对测试用例优先级排序技术的有效性进行评价,以及无法通过测试用例代码、项目的代码提交记录等数据设计策略,恢复出缺陷与测试用例之间的模糊关联关系。
所以,人们需要一种用于测试用例缺陷与用例模糊关联关系的恢复方法来解决上述问题。
发明内容
本发明的目的在于提供一种用于测试用例缺陷与用例模糊关联关系的恢复方法,以解决上述背景技术中提出的问题。
为了解决上述技术问题,本发明提供如下技术方案:包括
步骤一:获取测试用例对项目的覆盖信息;
步骤二:获得项目在代码托管平台上的历史提交记录与代码修改记录;
步骤三:获得项目在构建平台上的回归测试记录;
步骤四:通过步骤二与步骤三中的数据获得测试用例与缺陷代码之间的关联关系;
步骤五:获取测试用例集的优先级排序。
进一步的,所述获取测试用例对项目的覆盖信息的具体方法为:
Step1:获取项目的源代码与测试用例集,将测试用例集记为T;
Step2:获得项目一次成功执行全量测试用例的构建,将构建的项目代码版本记为A;
Step3:通过测试工具获得每个测试用例对项目的覆盖信息;
Step4:将每个测试用例对项目的覆盖信息用由整数0、1组成的数组表示,位置i为0表示没有覆盖到该项目中的第i行,位置i为1表示覆盖到该项目中的第i行。
进一步的,所述获得项目在代码托管平台上的历史提交记录与代码修改记录的具体方法为:
Step1:获得项目在A版本中一次成功执行全量测试用例的构建,将本次构建的代码版本记为B,A、B之间的时间间隔应视情况而定,如一个平均每天回归测试五次、其中失败两次、每次失败的测试用例个数占测试用例总数0.5%的项目,取五天为一个时间段较为合适,即每次实验中执行失败的测试用例占总数的5%左右;
Step2:统计以B版本为基准,A版本项目代码中所有修改记录的并集,将并集记为SM,用代码全集减SM得到未修改过的代码集,将得到的未修改过的代码集记为SF
进一步的,所述获得项目在构建平台上的回归测试记录的具体步骤包括:
Step1:通过构建平台系统提供的接口获取A、B版本间隔时间内的所有回归测试记录,在构建平台后台数据库可直接访问的情况下也可直接从该数据库中获取A、B版本间隔时间内的所有回归测试记录,获取的回归测试记录中应包含每个测试用例是否成功执行的信息;
Step2:统计A、B版本中所有回归测试记录中至少执行失败过一次的测试用例的并集,将并集记为T1,其中每个测试用例的覆盖信息记为Si,测试用例全集减T1即为执行成功的测试用例集,执行成功的测试用例集记为T2。
进一步的,所述通过步骤二与步骤三中的数据获得测试用例与缺陷代码之间的关联关系的具体步骤包括:
Step1:统计A、B版本之间所有回归测试均成功执行的测试用例对A版本代码的覆盖全集,将全集记为S,全部执行成功的测试用例覆盖到的代码行是不会产生代码缺陷的,因此可以将这些代码行从缺陷集排除;
Step2:将T1中第i行测试用例对源代码的覆盖信息记为Si,迭代地每个Si减S,即将全部执行成功得测试用例覆盖到的代码行从可能的缺陷集中排除,得到每个测试用例覆盖到的信息中,可能是缺陷代码的记为S′i,其中S′i=Si-S;
Step3:没有修改的代码行识没有缺陷的位置,对每个S′i减SF得S″i,将未修改过的代码行从可能的缺陷集中排除,其中S′i=Si-SF
Step4:度量Step3得到的,两用例间覆盖信息S″i的包含关系,若符合某种条件(如测试用例T1与测试用例T2之间,并集行数占T1与T2中总覆盖行数少的那个的比例达到一定的阈值),说明二者并集的代码行是一个缺陷点,否则,两个测试用例覆盖的代码行代表两个不同的缺陷点;
Step5:取Step4得到的缺陷点并集作为A版本中的缺陷代码集,则T1中的测试用例对缺陷代码集中代码行的覆盖情况即为测试用例与缺陷代码之间的关联关系。
进一步的,所述度量两两用例间覆盖信息S′i的包含关系的具体方法为:
Step1:设S″i<S″j
Step2:根据公式
Figure BDA0003095197190000031
计算α值的大小;
Step3:比较α和δ值的大小,若α<δ,则两个缺陷集之间关联性较小,认为他们发现的是不同的缺陷点,记录测试用例i对应的缺陷点为S′i,否则,则视为发现相同缺陷点,记录测试用例i与j对应的缺陷点为S′i与S′j的交集,其中,δ为自定义的阈值,需要根据实际情况进行调整,当一个测试用例普遍值对应一个缺陷点时,δ取0.5可能是合理的,当一个测试用例普遍对应10个缺陷点时,δ取0.1可能较为合适;
其中δ为自定义的阈值,需要根据实际情况进行调整。
进一步的,所述获取测试用例集的优先级排序的方法为:
Step1:获得项目源代码、测试用例代码、测试用例的覆盖信息,首先在代码仓获得项目代码、测试用例代码,在本地执行测试用例通过测试工具获得测试用例的覆盖信息,具体实施为:在项目的根目录下,循环执行每个测试用例,通过测试工具获取一个测试用例对所属项目的覆盖信息,获取的覆盖信息为包含路径、文件、代码行数的文本信息,记录项目提交信息的代码仓为Git平台;循环统计项目中所有测试用例覆盖到的行信息集合的具体做法是:循环识别每个测试用例输出的覆盖信息文本文件,将覆盖到的代码行加到集合中,最后将行信息集合以有序且不重复的字符串列表的形式作为项目中所有被覆盖到的代码行集合记录,将该集合作为该项目的一个属性存储,以下称作L,有序地保存覆盖信息保证了对项目中每个测试用例来说,用整数数组表示覆盖信息时,同样位序的数组表示的覆盖信息是一样的;最后对项目中的每一个测试用例,分别判断该测试用例对L中每条信息的覆盖情况,若该测试用例覆盖了L中第i条记录,则数组的第i位就用1表示,否则为0,可以得到每个测试用例对项目的行覆盖数组;
Step2:根据测试用例的属性信息,利用某一测试用例优先级排序技术对测试用例集进行排序,使用基于覆盖信息的多个测试用例优先级排序技术对同一项目、统一版本代码的测试用例集排序,如基本思想为尽早覆盖到所有待覆盖信息的附加贪婪算法、基本思想为尽可能执行覆盖信息与已执行的测试用例覆盖信息集交集少的最远优先顺序算法等,TCP技术的输入为步骤一的输出,输出为有序的测试用例集合;
Step3:恢复缺陷与测试用例之间的关联关系,将由若干相关的代码行或方法引起缺陷的代码块称为缺陷点,(引起一个缺陷的代码块)缺陷点可能是一行代码、一个方法,甚至是跨包的若干代码行的集合,一个缺陷的发生往往是一个缺陷点出现了bug;首先从一段时间内每次构建的日志中解析出构建的执行时间、触发构建的版本号,从回归测试的记录结果中解析出每个测试用例的执行时间与执行结果,以一次构建为单位,分别存储执行成功与失败的测试用例列表;
Step4:使用百分比的加权平均值指标,基于步骤四输出数据与历史执行记录,对测试用例序列检测到缺陷的效率进行评估;
Step5:测试用例序列检测缺陷的效率直观地反应了输出该序列的测试用例排序技术的有效性,通过计算并比较两种TCP技术输出序列多次实验的APFD值的平均值,对TCP技术的有效性进行评估,进而可以为特定的项目选择更适合的TCP技术。
进一步的,利用已获得的数据获得可能的缺陷代码行集合,具体步骤如下:
Step1:假设A版本中有m个测试用例失败,n个成功,从B版本获得全部测试用例的覆盖信息;
Step2:获得n个成功的测试用例的覆盖信息全集S;
Step3:设m个至少执行失败一次的测试用例的覆盖信息集分别为S1~Sm,其中规定全部执行成功的测试用例覆盖到的代码行是没有bug的位置,因此将这些代码行从缺陷集排除;
Step4:Diff A、B两个版本获得以B为基准A版本上未修改的代码行信息SF,我们认为未修改的代码行是没有bug的位置,因此将这些代码行从缺陷集排除;
Step5:度量两两集合的包含关系。
进一步的,在测试用例执行期间使用已检测到的错误的百分比的加权平均值作为对排序后的测试用例序列检测错误的速度的度量指标,APFD值的范围从0%到100%,无限趋紧且不为两边界值,高APFD值意味着更快(更好)的故障检出率,APFD的计算公式为:
Figure BDA0003095197190000051
其中,T为包含n个测试用例的测试集合,F为T测试出的m个故障的集合,若Ti为排序后的测试用例序列,TFi为Ti中第一个测试出第i个故障的测试用例,在使用APFD验证的过程中,需要的输入有:一个有序的测试用例序列(步骤三的输出),测试用例集能检测到的缺陷的集合(步骤四的输出),测试用例与缺陷之间的对应关系(对应关系应该是多对多的)(步骤四的输出),输出为代表缺陷被检测的快慢的一个百分数。
与现有技术相比,本发明所达到的有益效果是:
1.本发明通过利用容易获得的数据会付出缺陷代码与测试用例之间的模糊关联关系的方法,提高了度量测试用例优先级排序技术的有效性。
2.本发明通过对数据进行恢复,使用TCP技术对测试用例优先级排序技术进行有效性的评估,保证TCP技术更合适地应用于企业不同项目的测试过程。
3.本发明通过容易获得的数据,获取测试用例代码、项目的代码提交记录等数据,并设计策略恢复出缺陷与测试用例之间的模糊关联关系。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1是本发明一种用于测试用例缺陷与用例模糊关联关系的恢复方法的流程图;
图2是本发明一种用于测试用例缺陷与用例模糊关联关系的恢复方法的使用易获得的数据对测试用例优先级排序技术评估的流程图;
图3是本发明一种用于测试用例缺陷与用例模糊关联关系的根据项目的提交记录统计未修改的代码行集合的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1-3,本发明提供技术方案:包括
步骤一:获取测试用例对项目的覆盖信息,获取测试用例对项目的覆盖信息的具体方法为:
Step1:获取项目的源代码与测试用例集,将测试用例集记为T;
Step2:获得项目一次成功执行全量测试用例的构建,将构建的项目代码版本记为A;
Step3:通过测试工具获得每个测试用例对项目的覆盖信息;
Step4:将每个测试用例对项目的覆盖信息用由整数0、1组成的数组表示,位置i为0表示没有覆盖到该项目中的第i行,位置i为1表示覆盖到该项目中的第i行。
步骤二:获得项目在代码托管平台上的历史提交记录与代码修改记录,获得项目在代码托管平台上的历史提交记录与代码修改记录的具体方法为:
Step1:获得项目在A版本中一次成功执行全量测试用例的构建,将本次构建的代码版本记为B,A、B之间的时间间隔应视情况而定,如一个平均每天回归测试五次、其中失败两次、每次失败的测试用例个数占测试用例总数0.5%的项目,取五天为一个时间段较为合适,即每次实验中执行失败的测试用例占总数的5%左右;
Step2:统计以B版本为基准,A版本项目代码中所有修改记录的并集,将并集记为SM,用代码全集减SM得到未修改过的代码集,将得到的未修改过的代码集记为SF
步骤三:获得项目在构建平台上的回归测试记录,所述获得项目在构建平台上的回归测试记录的具体步骤包括:
Step1:通过构建平台系统提供的接口获取A、B版本间隔时间内的所有回归测试记录,在构建平台后台数据库可直接访问的情况下也可直接从该数据库中获取A、B版本间隔时间内的所有回归测试记录,获取的回归测试记录中应包含每个测试用例是否成功执行的信息;
Step2:统计A、B版本中所有回归测试记录中至少执行失败过一次的测试用例的并集,将并集记为T1,其中每个测试用例的覆盖信息记为Si,测试用例全集减T1即为执行成功的测试用例集,执行成功的测试用例集记为T2。
步骤四:通过步骤二与步骤三中的数据获得测试用例与缺陷代码之间的关联关系,所述通过步骤二与步骤三中的数据获得测试用例与缺陷代码之间的关联关系的具体步骤包括:
Step1:统计A、B版本之间所有回归测试均成功执行的测试用例对A版本代码的覆盖全集,将全集记为S,全部执行成功的测试用例覆盖到的代码行是不会产生代码缺陷的,因此可以将这些代码行从缺陷集排除;
Step2:将T1中第i行测试用例对源代码的覆盖信息记为Si,迭代地每个Si减S,即将全部执行成功得测试用例覆盖到的代码行从可能的缺陷集中排除,得到每个测试用例覆盖到的信息中,可能是缺陷代码的记为S′i,其中S′i=Si-S;
Step3:没有修改的代码行识没有缺陷的位置,对每个S′i减SF得S″i,将未修改过的代码行从可能的缺陷集中排除,其中S′i=Si-SF
Step4:度量Step3得到的,两用例间覆盖信息S″i的包含关系,若符合某种条件(如测试用例T1与测试用例T2之间,并集行数占T1与T2中总覆盖行数少的那个的比例达到一定的阈值),说明二者并集的代码行是一个缺陷点,否则,两个测试用例覆盖的代码行代表两个不同的缺陷点,度量两两用例间覆盖信息S′i的包含关系的具体方法为:
Step1:设S″i<S″j
Step2:根据公式
Figure BDA0003095197190000071
计算α值的大小;
Step3:比较α和δ值的大小,若α<δ,则两个缺陷集之间关联性较小,认为他们发现的是不同的缺陷点,记录测试用例i对应的缺陷点为S′i,否则,则视为发现相同缺陷点,记录测试用例i与j对应的缺陷点为S′i与S′j的交集。其中,δ为自定义的阈值,需要根据实际情况进行调整,当一个测试用例普遍值对应一个缺陷点时,δ取0.5可能是合理的,当一个测试用例普遍对应10个缺陷点时,δ取0.1可能较为合适;
其中δ为自定义的阈值,需要根据实际情况进行调整;
Step5:取Step4得到的缺陷点并集作为A版本中的缺陷代码集,则T1中的测试用例对缺陷代码集中代码行的覆盖情况即为测试用例与缺陷代码之间的关联关系,利用已获得的数据获得可能的缺陷代码行集合,具体步骤如下:
Step1:假设A版本中有m个测试用例失败,n个成功,从B版本获得全部测试用例的覆盖信息;
Step2:获得n个成功的测试用例的覆盖信息全集S;
Step3:设m个至少执行失败一次的测试用例的覆盖信息集分别为S1~Sm,其中规定全部执行成功的测试用例覆盖到的代码行是没有bug的位置,因此将这些代码行从缺陷集排除;
Step4:Diff A、B两个版本获得以B为基准A版本上未修改的代码行信息SF,我们认为未修改的代码行是没有bug的位置,因此将这些代码行从缺陷集排除;
Step5:度量两两集合的包含关系。
步骤五:获取测试用例集的优先级排序,获取测试用例集的优先级排序的方法为:
Step1:获得项目源代码、测试用例代码、测试用例的覆盖信息,首先在代码仓获得项目代码、测试用例代码,在本地执行测试用例通过测试工具获得测试用例的覆盖信息,具体实施为:在项目的根目录下,循环执行每个测试用例,通过测试工具获取一个测试用例对所属项目的覆盖信息,获取的覆盖信息为包含路径、文件、代码行数的文本信息,记录项目提交信息的代码仓为Git平台;循环统计项目中所有测试用例覆盖到的行信息集合的具体做法是:循环识别每个测试用例输出的覆盖信息文本文件,将覆盖到的代码行加到集合中,最后将行信息集合以有序且不重复的字符串列表的形式作为项目中所有被覆盖到的代码行集合记录,将该集合作为该项目的一个属性存储,以下称作L,有序地保存覆盖信息保证了对项目中每个测试用例来说,用整数数组表示覆盖信息时,同样位序的数组表示的覆盖信息是一样的;最后对项目中的每一个测试用例,分别判断该测试用例对L中每条信息的覆盖情况,若该测试用例覆盖了L中第i条记录,则数组的第i位就用1表示,否则为0,可以得到每个测试用例对项目的行覆盖数组,Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理;
Step2:根据测试用例的属性信息,利用某一测试用例优先级排序技术对测试用例集进行排序,使用基于覆盖信息的多个测试用例优先级排序技术对同一项目、统一版本代码的测试用例集排序,如基本思想为尽早覆盖到所有待覆盖信息的附加贪婪算法、基本思想为尽可能执行覆盖信息与已执行的测试用例覆盖信息集交集少的最远优先顺序算法等,TCP技术的输入为步骤一的输出,输出为有序的测试用例集合,贪婪算法是指在对问题求解时总是做出在当前看来是最好的选择,TCP是指能够在多个不同网络间实现信息传输的协议簇;
Step3:恢复缺陷与测试用例之间的关联关系,将由若干相关的代码行或方法引起缺陷的代码块称为缺陷点,(引起一个缺陷的代码块)缺陷点可能是一行代码、一个方法,甚至是跨包的若干代码行的集合,一个缺陷的发生往往是一个缺陷点出现了bug;首先从一段时间内每次构建的日志中解析出构建的执行时间、触发构建的版本号,从回归测试的记录结果中解析出每个测试用例的执行时间与执行结果,以一次构建为单位,分别存储执行成功与失败的测试用例列表;
本发明使用的记录项目提交信息的代码仓为Git平台,使用Git提供的方法为:
①.通过git.diff().setoldTree().setnewTree().call()获得A、B两个版本之间修改的详细信息List<DiffEntry>,其中,DiffEntry是一个包含了文件旧版本与新版本状态的数据结构,一个DiffEntry代表一个文件的修改记录;
②.通过获取DiffEntry的输入流,转化为文本,通过文本类比找到代码修改的三种类型的文本输出规律,一个DiffEntry中要么包含一个新增文件的记录,要么包含一个删除文件的记录,要么包含一个修改文件的多个修改段落的记录,代码的修改分为三种类型,新增文件,删除文件,修改文件;三种类型的文本输出规律如下:新增文件:第一行开始为“---/dev/null”,下一行开头为“+++”且不为“+++/dev/null”,接下来为以“+”开头的代码,通过计算代码行数获得新增的文件的行数;删除文件:第一行开始为“---”且不为“---/dev/null”,下一行开头为“+++/dev/null”,接下来为以“-”开头的代码,通过计算代码行数获得被删除的文件的行数;修改文件:第一行开始为“---”且不为“---/dev/null”,下一行开头为“+++”且不为“+++/dev/null”;
③.获取新增、删除的行号和行数,例如有一行文本形如“@@-a,n+b,m@@”,“@@”后面的两个数字:“-a,n”,表示文件中第a行开始的后面n行,“+b,m”表示以下数据是文件中第b行开始后的后面m行,其中“-”表示原文件,“+”表示新文件,下一行用“-”号开头的表示原文件变成新文件的时候,这一行被删除,用“+”开头的则表示原文件变成新文件的时候,这一行被加入,没有正负号开头的部分则表示没有进行修改;
④.整合以上所有修改获得版本之间修改的代码行记录;
Step4:使用百分比的加权平均值指标,基于步骤四输出数据与历史执行记录,对测试用例序列检测到缺陷的效率进行评估;
Step5:测试用例序列检测缺陷的效率直观地反应了输出该序列的测试用例排序技术的有效性,通过计算并比较两种TCP技术输出序列多次实验的APFD值的平均值,对TCP技术的有效性进行评估,进而可以为特定的项目选择更适合的TCP技术,在测试用例执行期间使用已检测到的错误的百分比的加权平均值作为对排序后的测试用例序列检测错误的速度的度量指标,APFD值的范围从0%到100%,无限趋紧且不为两边界值,高APFD值意味着更快(更好)的故障检出率,APFD的计算公式为:
Figure BDA0003095197190000101
其中,T为包含n个测试用例的测试集合,F为T测试出的m个故障的集合,若Ti为排序后的测试用例序列,TFi为Ti中第一个测试出第i个故障的测试用例,在使用APFD验证的过程中,需要的输入有:一个有序的测试用例序列(步骤三的输出),测试用例集能检测到的缺陷的集合(步骤四的输出),测试用例与缺陷之间的对应关系(对应关系应该是多对多的)(步骤四的输出),输出为代表缺陷被检测的快慢的一个百分数,APFD为使用百分比的加权平均值指标。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (9)

1.一种用于测试用例缺陷与用例模糊关联关系的恢复方法,其特征在于:包括
步骤一:获取测试用例对项目的覆盖信息;
步骤二:获得项目在代码托管平台上的历史提交记录与代码修改记录;
步骤三:获得项目在构建平台上的回归测试记录;
步骤四:通过步骤二与步骤三中的数据获得测试用例与缺陷代码之间的关联关系;
步骤五:获取测试用例集的优先级排序。
2.根据权利要求1所述的一种用于测试用例缺陷与用例模糊关联关系的恢复方法,其特征在于:所述获取测试用例对项目的覆盖信息的具体方法为:
Step1:获取项目的源代码与测试用例集,将测试用例集记为T;
Step2:获得项目一次成功执行全量测试用例的构建,将构建的项目代码版本记为A;
Step3:通过测试工具获得每个测试用例对项目的覆盖信息;
Step4:将每个测试用例对项目的覆盖信息用由整数0、1组成的数组表示,位置i为0表示没有覆盖到该项目中的第i行,位置i为1表示覆盖到该项目中的第i行。
3.根据权利要求2所述的一种用于测试用例缺陷与用例模糊关联关系的恢复方法,其特征在于:所述获得项目在代码托管平台上的历史提交记录与代码修改记录的具体方法为:
Step1:获得项目在A版本中一次成功执行全量测试用例的构建,将本次构建的代码版本记为B,A、B之间的时间间隔应视情况而定;
Step2:统计以B版本为基准A版本项目代码中所有修改记录的并集,将并集记为SM,用代码全集减SM得到未修改过的代码集,将得到的未修改过的代码集记为SF
4.根据权利要求1所述的一种用于测试用例缺陷与用例模糊关联关系的恢复方法,其特征在于:所述获得项目在构建平台上的回归测试记录的具体步骤包括:
Step1:通过构建平台系统提供的接口获取A、B版本间隔时间内的所有回归测试记录,获取的回归测试记录中应包含每个测试用例是否成功执行的信息;
Step2:统计A、B版本中所有回归测试记录中至少执行失败过一次的测试用例的并集,将并集记为T1,其中每个测试用例的覆盖信息记为Si,测试用例全集减T1即为执行成功的测试用例集,执行成功的测试用例集记为T2。
5.根据权利要求3所述的一种用于测试用例缺陷与用例模糊关联关系的恢复方法,其特征在于:所述通过步骤二与步骤三中的数据获得测试用例与缺陷代码之间的关联关系的具体步骤包括:
Step1:统计A、B版本之间所有回归测试均成功执行的测试用例对A版本代码的覆盖全集,将全集记为S;
Step2:将T1中第i行测试用例对源代码的覆盖信息记为Si,迭代地每个Si减S,得到每个测试用例覆盖到的信息中,可能是缺陷代码的记为S′i,其中S′i=Si-S;
Step3:对每个S′i减SF得S″i,将未修改过的代码行从可能的缺陷集中排除,其中S′i=Si-SF
Step4:度量Step3得到的,两用例间覆盖信息S″i的包含关系,若符合某种条件,说明二者并集的代码行是一个缺陷点,否则,两个测试用例覆盖的代码行代表两个不同的缺陷点;
Step5:取Step4得到的缺陷点并集作为A版本中的缺陷代码集,则T1中的测试用例对缺陷代码集中代码行的覆盖情况即为测试用例与缺陷代码之间的关联关系。
6.根据权利要求5所述的一种用于测试用例缺陷与用例模糊关联关系的恢复方法,其特征在于:所述度量两两用例间覆盖信息S′i的包含关系的具体方法为:
Step1:设S″i<S″j
Step2:根据公式
Figure FDA0003095197180000021
计算α值的大小;
Step3:比较α和δ值的大小;
其中δ为自定义的阈值,需要根据实际情况进行调整。
7.根据权利要求1所述的一种用于测试用例缺陷与用例模糊关联关系的恢复方法,其特征在于:所述获取测试用例集的优先级排序的方法为:
Step1:获得项目源代码、测试用例代码、测试用例的覆盖信息;
Step2:根据测试用例的属性信息,利用某一测试用例优先级排序技术对测试用例集进行排序;
Step3:恢复缺陷与测试用例之间的关联关系;
Step4:使用百分比的加权平均值指标,基于步骤四输出数据与历史执行记录,对测试用例序列检测到缺陷的效率进行评估;
Step5:测试用例序列检测缺陷的效率直观地反应了输出该序列的测试用例排序技术的有效性。
8.根据权利要求5所述的一种用于测试用例缺陷与用例模糊关联关系的恢复方法,其特征在于:利用已获得的数据获得可能的缺陷代码行集合,具体步骤如下:
Step1:假设A版本中有m个测试用例失败,n个成功,从B版本获得全部测试用例的覆盖信息;
Step2:获得n个成功的测试用例的覆盖信息全集S;
Step3:设m个至少执行失败一次的测试用例的覆盖信息集分别为S1~Sm,其中规定全部执行成功的测试用例覆盖到的代码行是没有bug的位置,因此将这些代码行从缺陷集排除;
Step4:Diff A、B两个版本获得以B为基准A版本上未修改的代码行信息SF,我们认为未修改的代码行是没有bug的位置,因此将这些代码行从缺陷集排除;
Step5:度量两两集合的包含关系。
9.根据权利要求7所述的一种用于测试用例缺陷与用例模糊关联关系的恢复方法,其特征在于:在测试用例执行期间使用已检测到错误的百分比的加权平均值作为对排序后的测试用例序列检测错误的速度的度量指标,APFD值的范围从0%到100%,无限趋紧且不为两边界值,高APFD值意味着更快的故障检出率,APFD的计算公式为:
Figure FDA0003095197180000031
其中,T为包含n个测试用例的测试集合,F为T测试出的m个故障的集合,若Ti为排序后的测试用例序列,TFi为Ti中第一个测试出第i个故障的测试用例,在使用APFD验证的过程中,需要的输入有:一个有序的测试用例序列,测试用例集能检测到的缺陷的集合,测试用例与缺陷之间的对应关系,输出为代表缺陷被检测的快慢的一个百分数。
CN202110609722.7A 2021-06-01 2021-06-01 一种用于测试用例缺陷与用例模糊关联关系的恢复方法 Active CN113342651B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110609722.7A CN113342651B (zh) 2021-06-01 2021-06-01 一种用于测试用例缺陷与用例模糊关联关系的恢复方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110609722.7A CN113342651B (zh) 2021-06-01 2021-06-01 一种用于测试用例缺陷与用例模糊关联关系的恢复方法

Publications (2)

Publication Number Publication Date
CN113342651A true CN113342651A (zh) 2021-09-03
CN113342651B CN113342651B (zh) 2023-11-03

Family

ID=77474234

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110609722.7A Active CN113342651B (zh) 2021-06-01 2021-06-01 一种用于测试用例缺陷与用例模糊关联关系的恢复方法

Country Status (1)

Country Link
CN (1) CN113342651B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116561016A (zh) * 2023-07-11 2023-08-08 北京云枢创新软件技术有限公司 一种基于行覆盖数据的测试用例筛选系统
CN117421200A (zh) * 2022-07-11 2024-01-19 格兰菲智能科技有限公司 代码回归测试方法、装置、计算机设备、存储介质

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103309811A (zh) * 2013-06-27 2013-09-18 南京大学 一种基于测试执行记录快速定位软件代码缺陷的方法
US20150186251A1 (en) * 2013-12-27 2015-07-02 International Business Machines Corporation Control flow error localization
CN107766245A (zh) * 2017-10-18 2018-03-06 浙江理工大学 基于ott策略的可变力度组合测试用例优先级在线排序方法
CN109710514A (zh) * 2018-12-10 2019-05-03 江苏大学 测试用例优先级排序中的tie-breaking的解决方法及系统
CN109783349A (zh) * 2018-12-10 2019-05-21 江苏大学 一种基于动态反馈权重的测试用例优先级排序方法及系统
CN109947656A (zh) * 2019-03-29 2019-06-28 北京奇艺世纪科技有限公司 一种测试用例管理方法及装置
CN110502447A (zh) * 2019-08-30 2019-11-26 西安邮电大学 一种基于图的回归测试用例优先排序方法
CN110515843A (zh) * 2019-08-13 2019-11-29 成都飞机工业(集团)有限责任公司 基于缺陷集合与倒排索引的测试用例优先排序方法
CN111427802A (zh) * 2020-06-09 2020-07-17 南京大学 利用集成学习进行测试用例优先级排序的测试方法和系统
CN112463584A (zh) * 2020-10-28 2021-03-09 苏州浪潮智能科技有限公司 一种基于缺陷分析的精准测试分析方法、装置

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103309811A (zh) * 2013-06-27 2013-09-18 南京大学 一种基于测试执行记录快速定位软件代码缺陷的方法
US20150186251A1 (en) * 2013-12-27 2015-07-02 International Business Machines Corporation Control flow error localization
CN107766245A (zh) * 2017-10-18 2018-03-06 浙江理工大学 基于ott策略的可变力度组合测试用例优先级在线排序方法
CN109710514A (zh) * 2018-12-10 2019-05-03 江苏大学 测试用例优先级排序中的tie-breaking的解决方法及系统
CN109783349A (zh) * 2018-12-10 2019-05-21 江苏大学 一种基于动态反馈权重的测试用例优先级排序方法及系统
CN109947656A (zh) * 2019-03-29 2019-06-28 北京奇艺世纪科技有限公司 一种测试用例管理方法及装置
CN110515843A (zh) * 2019-08-13 2019-11-29 成都飞机工业(集团)有限责任公司 基于缺陷集合与倒排索引的测试用例优先排序方法
CN110502447A (zh) * 2019-08-30 2019-11-26 西安邮电大学 一种基于图的回归测试用例优先排序方法
CN111427802A (zh) * 2020-06-09 2020-07-17 南京大学 利用集成学习进行测试用例优先级排序的测试方法和系统
CN112463584A (zh) * 2020-10-28 2021-03-09 苏州浪潮智能科技有限公司 一种基于缺陷分析的精准测试分析方法、装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
CHITTINENI ARUNA: "Metamorphic relations to improve the test accuracy of Multi Precision Arithmetic software applications", 《2014 INTERNATIONAL CONFERENCE ON ADVANCES IN COMPUTING, COMMUNICATIONS AND INFORMATICS (ICACCI)》, pages 2244 *
周明泉: "软件多缺陷定位技术研究", 《CNKI优秀硕士学位论文全文库 信息科技辑》, no. 02, pages 138 - 799 *
黄璜: "自动化工具对中国DevOps实践的影响", 《软件学报》, no. 10, pages 3056 - 3070 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117421200A (zh) * 2022-07-11 2024-01-19 格兰菲智能科技有限公司 代码回归测试方法、装置、计算机设备、存储介质
CN117421200B (zh) * 2022-07-11 2024-09-06 格兰菲智能科技股份有限公司 代码回归测试方法、装置、计算机设备、存储介质
CN116561016A (zh) * 2023-07-11 2023-08-08 北京云枢创新软件技术有限公司 一种基于行覆盖数据的测试用例筛选系统
CN116561016B (zh) * 2023-07-11 2023-11-03 北京云枢创新软件技术有限公司 一种基于行覆盖数据的测试用例筛选系统

Also Published As

Publication number Publication date
CN113342651B (zh) 2023-11-03

Similar Documents

Publication Publication Date Title
JP7158586B2 (ja) ハードディスク故障発生時期の予測方法、装置及び記憶媒体
Schroeder et al. Flash reliability in production: The expected and the unexpected
US8266592B2 (en) Ranking and optimizing automated test scripts
CN110491441B (zh) 一种模拟人群背景信息的基因测序数据仿真系统及方法
Fu et al. Execution anomaly detection in distributed systems through unstructured log analysis
US8161458B2 (en) Method and apparatus to increase efficiency of automatic regression in “two dimensions”
US8230259B2 (en) Automatic analysis of log entries through use of clustering
EP1899876B1 (en) System and method for using model analysis to generate directed test vectors
CN110008129B (zh) 一种存储定时快照的可靠性测试方法、装置及设备
CN113342651A (zh) 一种用于测试用例缺陷与用例模糊关联关系的恢复方法
GB2493828A (en) Linking a test case error to a code segment to re-execute the test when the code segment is modified
CN105468517B (zh) 一种基于黑盒测试用例约简的统计错误定位方法
US20090292956A1 (en) Trend based test failure prioritization
CN113010389A (zh) 一种训练方法、故障预测方法、相关装置及设备
CN113946499A (zh) 一种微服务链路跟踪及性能分析方法、系统、设备及应用
CN115114064B (zh) 一种微服务故障分析方法、系统、设备及存储介质
CN103440460A (zh) 一种应用系统变更验证方法及验证系统
Nayak et al. Effectiveness of prioritization of test cases based on faults
CN111459797A (zh) 开源社区中开发者行为的异常检测方法、系统及介质
US7356443B2 (en) Systems and methods for analyzing the selection of measurements of a communication network
CN114706871B (zh) 一种基于综合监控管理的数据监控方法及系统
CN115587333A (zh) 一种基于多分类模型的失效分析故障点预测方法及系统
WO2020199789A1 (zh) 一种信息处理方法及装置
CN113626248A (zh) 一种raid中条带数据不一致的修复方法和系统
Ostrand et al. Predicting bugs in large industrial software systems

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant