CN116893973A - 精准测试方法、装置、计算设备及可读存储介质 - Google Patents
精准测试方法、装置、计算设备及可读存储介质 Download PDFInfo
- Publication number
- CN116893973A CN116893973A CN202310954752.0A CN202310954752A CN116893973A CN 116893973 A CN116893973 A CN 116893973A CN 202310954752 A CN202310954752 A CN 202310954752A CN 116893973 A CN116893973 A CN 116893973A
- Authority
- CN
- China
- Prior art keywords
- coverage
- report
- coverage report
- software
- code
- 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
- 238000010998 test method Methods 0.000 title abstract description 17
- 238000012360 testing method Methods 0.000 claims abstract description 167
- 238000000034 method Methods 0.000 claims description 54
- 238000004590 computer program Methods 0.000 claims description 9
- 230000004044 response Effects 0.000 claims description 7
- 230000000977 initiatory effect Effects 0.000 claims description 2
- 239000002131 composite material Substances 0.000 claims 1
- 238000012545 processing Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 7
- 238000007726 management method Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000013522 software testing Methods 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 238000012550 audit Methods 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 230000001351 cycling effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000007596 consolidation process Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 238000013102 re-test Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000012954 risk control Methods 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
- 230000000007 visual effect Effects 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/3676—Test management for coverage analysis
-
- 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/3688—Test 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)
- Debugging And Monitoring (AREA)
Abstract
公开了一种精准测试方法、装置、计算设备及可读存储介质。精准测试方法包括:获取软件对应的多个覆盖报告,多个覆盖报告在多个回归测试中生成,多个回归测试中的每个测试软件的一个版本,并生成相应的覆盖报告,覆盖报告包含用于指示相应版本的软件中各代码部分是否被测到的标识;基于多个覆盖报告确定软件的综合覆盖率,综合覆盖率用于指示软件的各个版本中出现过的代码经过多个回归测试被测到的比例;以及,基于软件的综合覆盖率,确定是否完成测试。通过本申请,可以实现对软件的准确、高效和自动化的测试。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种精准测试方法和装置、计算设备、计算机可读存储介质及计算机程序产品。
背景技术
在软件测试过程中,通常会采用回归测试,即修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。由于修改了旧代码,且各次测试的测试用例或应用场景可能并不完全相同,导致各次测试产生的覆盖报告并不兼容。测试人员根据最新测试产生的覆盖报告很难决策是否应该终止回归测试并将软件上线,此时往往依赖于测试人员的人为感知、经验和业务熟悉度等进行决策,因此即使决定将软件上线依然存在较大风险。
例如,对第一版本的代码以1000个测试用例进行测试,测试结果显示200个测试用例报错且覆盖报告显示该测试对代码的覆盖率为70%。对部分代码进行修改后得到第二版本的代码,以300个测试用例进行测试,测试结果显示20个测试用例报错且覆盖报告显示该测试对代码的覆盖率为60%。对部分代码进行修改后得到第三版本的代码,以100个测试用例进行测试,测试结果显示没有测试用例报错且覆盖报告显示该测试对代码的覆盖率为30%。此时,是否结束回归测试,将软件进行上线,往往由测试人员基于经验决定。因为最新的测试的覆盖率仅为30%,且并不清楚这30%中是否包含修改的代码,以及其余70%是否在之前的测试中已经被测试无误,这时不得不依赖测试人员的主观经验来决策是否完成测试。以及,即使测试人员决定结束测试并上线软件,该软件依然存在不小的风险,很可能在后续的实际运行中出现错误,引发事故。
发明内容
鉴于此,本申请提供了一种精准测试方法和装置、计算设备、计算机可读存储介质及计算机程序产品,期望缓解或克服上面提到的部分或全部缺陷以及其他可能的缺陷。
根据本申请的一个方面,提供了一种精准测试方法,包括:获取软件对应的多个覆盖报告,多个覆盖报告在多个回归测试中生成,多个回归测试中的每个测试软件的一个版本,并生成相应的覆盖报告,覆盖报告包含用于指示相应版本的软件中各代码部分是否被测到的标识;基于多个覆盖报告确定软件的综合覆盖率,综合覆盖率用于指示软件的各个版本中出现过的代码经过多个回归测试被测到的比例;以及,基于软件的综合覆盖率,确定是否完成测试。
根据本申请的另一方面,提供了一种精准测试装置,包括:获取模块、第一确定模块和第二确定模块。获取模块被配置成获取软件对应的多个覆盖报告,多个覆盖报告在多个回归测试中生成,多个回归测试中的每个测试软件的一个版本,并生成相应的覆盖报告,覆盖报告包含用于指示相应版本的软件中各代码部分是否被测到的标识;第一确定模块被配置成基于多个覆盖报告确定软件的综合覆盖率,综合覆盖率用于指示软件的各个版本中出现过的代码经过多个回归测试被测到的比例;以及,第二确定模块被配置成基于软件的综合覆盖率,确定是否完成测试。
在根据本申请的一些实施例的精准测试装置中,基于多个覆盖报告确定软件的综合覆盖率包括:基于多个覆盖报告确定综合覆盖报告,综合覆盖报告中不重复地包括多个覆盖报告中所有出现过的代码部分以及用于指示代码部分是否在多个回归测试中被测到的标识;以及,确定软件的综合覆盖率,综合覆盖率等于综合覆盖报告中被测到的代码部分的数量与综合覆盖报告中所有的代码部分的数量的比值。
在根据本申请的一些实施例的精准测试装置中,基于多个覆盖报告确定综合覆盖报告包括:建立待合并集,待合并集包括多个覆盖报告;确定基准覆盖报告,基准覆盖报告包含多个覆盖报告中最晚生成的覆盖报告涉及的所有代码部分及指示其中各代码部分是否被测到的标识;将包含在待合并集中但不包含在基准覆盖报告中的代码部分和标识添加到基准覆盖报告中;以及,将基准覆盖报告确定为综合覆盖报告。
在根据本申请的一些实施例的精准测试装置中,将包含在待合并集中但不包含在基准覆盖报告中的代码部分和标识添加到基准覆盖报告中包括起始步骤和合并步骤中的一个或多个,并且从起始步骤开始。
起始步骤包括:比较待合并集中各覆盖报告与基准覆盖报告,确定各覆盖报告中是否包含基准覆盖报告未包含的代码部分或标识,响应于各覆盖报告中包含基准覆盖报告未包含的代码部分或标识,执行合并步骤。合并步骤包括:比较待合并集中各覆盖报告与基准覆盖报告,确定待合并集中与基准覆盖报告差异最大的覆盖报告,将包含在差异最大的覆盖报告中但不包含在基准覆盖报告中的代码部分和标识添加到基准覆盖报告中,将差异最大的覆盖报告从待合并集中移除,并转到起始步骤。
在根据本申请的一些实施例的精准测试装置中,起始步骤进一步包括:把待合并集中最晚生成的覆盖报告移除。
在根据本申请的一些实施例的精准测试装置中,确定待合并集中与基准覆盖报告差异最大的覆盖报告包括:确定待合并集中各覆盖报告对应的差异特征,差异特征用于表征包含在覆盖报告中但未包含在基准覆盖报告中的代码部分和标识的数量;以及,基于各覆盖报告对应的差异特征确定各覆盖报告中与基准覆盖报告差异最大的覆盖报告。
在根据本申请的一些实施例的精准测试装置中,代码部分以代码方法、代码分支、代码行进行组织;差异特征是一个三维向量,三维向量中的第一个维度的数表示包含在覆盖报告中但未包含在基准覆盖报告中的代码行的数量,三维向量中的第二个维度的数表示包含在覆盖报告中但未包含在基准覆盖报告中的代码分支的数量,三维向量中的第三个维度的数表示包含在覆盖报告中但未包含在基准覆盖报告中的代码方法的数量。
在根据本申请的一些实施例的精准测试装置中,基于各覆盖报告对应的差异特征确定各覆盖报告中与基准覆盖报告差异最大的覆盖报告包括:将各覆盖报告对应的差异特征到原点的距离确定为各覆盖报告对应的差异特征值;以及,将各差异特征值中最大的差异特征值对应的覆盖报告确定为与基准覆盖报告差异最大的覆盖报告。
在根据本申请的一些实施例的精准测试装置中,基于软件的综合覆盖率,确定是否完成测试包括:确定软件的综合覆盖率是否大于预定覆盖率阈值;以及,响应于软件的综合覆盖率大于预定覆盖率阈值,确定完成测试。
根据本申请的另一方面,提供了一种计算设备,包括:存储器,其被配置成存储计算机可执行指令;以及处理器,其被配置成当计算机可执行指令被处理器执行时执行根据本申请一些实施例的精准测试的步骤。
根据本申请的另一方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,计算机可执行指令在被执行时实现根据本申请一些实施例的精准测试的步骤。
根据本申请的另一方面,提供了一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时实现根据本申请一些实施例的精准测试方法的步骤。
在根据本申请一些实施例的精准测试方法和装置中,首先获取软件对应的多个覆盖报告。多个覆盖报告在多个回归测试中生成,多个回归测试中的每个测试软件的一个版本,并生成相应的覆盖报告。覆盖报告包含用于指示相应版本的软件中各代码部分是否被测到的标识。然后,基于多个覆盖报告确定软件的综合覆盖率,综合覆盖率用于指示软件的各个版本中出现过的代码经过多个回归测试被测到的比例。由于单个覆盖报告的内容和指示通常都不够周全,而回归测试一般是在修改软件的代码后进行的,因此多个覆盖报告所针对的软件版本不一定相同,这使得回归测试非常依赖测试人员的经验,测试结果的可靠性也具有一定的风险。例如,第一覆盖报告指示第一版本的软件的覆盖率为70%,第二覆盖报告指示第二版本的软件的覆盖率为80%,由于测试用例和软件版本都不相同,因此也不能以两次覆盖率的平均数75%来度量测试结果。为此,本申请提出了综合覆盖率,其充分考虑了多个覆盖报告中所有出现过的代码测试情况,因此避免了现有技术中只参考单个覆盖报告的困境,也避免了直接对多个覆盖报告的覆盖率求平均数却不能有效度量多轮回归测试对代码的真实覆盖的窘境。最后,基于软件的综合覆盖率,确定是否完成测试。因为综合覆盖率能够充分度量多轮回归测试对所有出现过的代码的覆盖程度,因此基于综合覆盖率来决策是否完成测试具有更高的效率和更小的风险。因此,通过本申请公开的精准测试方法和装置,可以实现对软件的准确、高效和自动化的测试。
根据下文描述的实施例,本申请的这些和其它优点将变得清楚,并且参考下文描述的实施例来阐明本申请的这些和其它优点。
附图说明
现在将更详细并且参考附图来描述本申请的实施例,其中:
图1示出了根据本申请的一些实施例的精准测试方法的示例性应用场景;
图2示出了根据本申请的一些实施例的精准测试方法的示例性流程图;
图3示出了根据本申请的一些实施例的确定综合覆盖报告的示例性流程图;
图4示出了根据本申请的一些实施例的更新基准覆盖报告的示例性流程图;
图5示出了根据本申请的一些实施例的精准测试方法的示意图;
图6示出了根据本申请的一些实施例的精准测试装置的示例性结构框图;以及,
图7示出了一个示例系统,其包括代表可以实现本文描述的各种方法的一个或多个系统和/或设备的示例计算设备。
具体实施方式
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本申请将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组件、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不必然与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的推广信息和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
应理解,虽然本文中可能使用术语第一、第二、第三等来描述各种组件,但这些组件不应受这些术语限制。这些术语乃用以区分一组件与另一组件。因此,下文论述的第一组件可称为第二组件而不偏离本申请概念的教示。如本文中所使用,术语“和/或”及类似术语包括相关联的列出项目中的任一个、多个和全部的所有组合。
本领域技术人员可以理解,附图只是示例实施例的示意图,附图中的模块或流程并不一定是实施本申请所必须的,因此不能用于限制本申请的保护范围。
在详细介绍本申请的实施例之前,首先对本申请实施例中涉及的部分用语进行说明,以便于本领域技术人员理解。
回归测试:回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。自动回归测试将大幅降低系统测试、维护升级等阶段的成本。回归测试作为软件生命周期的一个组成部分,在整个软件测试过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次回归测试。在渐进和快速迭代开发中,新版本的连续发布使回归测试进行的更加频繁,而在极端编程方法中,更是要求每天都进行若干次回归测试。因此,通过选择正确的回归测试策略来改进回归测试的效率和有效性是很有意义的。
代码覆盖:代码覆盖(Code coverage)是软件测试中的一种度量,描述程序中源代码被测试的比例和程度,所得比例称为代码覆盖率。在进行测试时,通常会生成覆盖报告,以向测试人员告知当前测试对软件中代码的覆盖情况。
图1示出了根据本申请的一些实施例的精准测试方法的示例性应用场景100。应用场景100中可以包括服务器110、终端设备120、服务器130。服务器110、终端设备120和服务器130通过网络140通信耦合在一起。网络140例如可以是广域网(WAN)、局域网(LAN)、无线网络、公用电话网、内联网以及本领域的技术人员熟知的任何其它类型的网络。
作为示例,精准测试方法可以主要在服务器110上运行。在服务器110上,首先获取软件对应的多个覆盖报告。多个覆盖报告在多个回归测试中生成。多个回归测试中的每个测试所述软件的一个版本,并生成相应的覆盖报告。覆盖报告包含用于指示相应版本的软件中各代码部分是否被测到的标识。作为示例,多个回归测试可以在服务器110上进行,也可以在终端设备120或服务器130上进行,然后通过网络140将生成的覆盖报告发送给服务器110。
然后,在服务器110上,基于多个覆盖报告确定软件的综合覆盖率。综合覆盖率用于指示软件的各个版本中出现过的代码经过多个回归测试被测到的比例。最后,在服务器110上,基于软件的综合覆盖率,确定是否完成测试。
作为示例,精准测试方法也可以主要在终端设备120或服务器130上运行。应当指出,服务器110、终端设备120以及终端设备130均可以包含能够持久存储信息的介质和/或设备,和/或有形的存储装置。因此,计算机可读存储介质是指非信号承载介质。计算机可读存储介质包括诸如易失性和非易失性、可移动和不可移动介质和/或以适用于存储信息(诸如计算机可读指令、数据结构、程序模块、逻辑元件/电路或其他数据)的方法或技术实现的存储设备之类的硬件。本领域普通技术人员所理解的,服务器110的实例可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。服务器110可以通过终端设备120将待确定的数据分配策略呈现给开发人员,并与开发人员进行交互,实现可视化确定开发策略。
终端设备120可以是任何类型的移动计算设备,包括移动计算机(例如,个人数字助理(PDA)、膝上型计算机、笔记本计算机、平板计算机、上网本等)、移动电话(例如,蜂窝电话、智能手机等)、可穿戴式计算设备(例如智能手表、头戴式设备,包括智能眼镜等)或其他类型的移动设备。在一些实施例中,终端设备120、终端设备130也可以是固定式计算设备,例如台式计算机、游戏机、智能电视等。此外,应用场景100包括多个终端设备120的情况下,该多个终端设备120可以是相同或不同类型的计算设备。
如图1所示,终端设备120可以包括显示屏以及可以经由显示屏与终端用户交互的终端应用。终端应用可以为本地应用程序、网页(Web)应用程序或者作为轻量化应用的小程序(LiteApp,例如手机小程序、微信小程序)。在终端应用为需要安装的本地应用程序的情况下,可以将终端应用安装在终端设备120中。在终端应用为Web应用程序的情况下,可以通过浏览器访问终端应用。在终端应用为小程序的情况下,可以通过搜索终端应用的相关信息(如终端应用的名称等)、扫描终端应用的图形码(如条形码、二维码等)等方式来在用户终端120上直接打开终端应用,而无需安装终端应用。
在一些实施例中,上述的应用场景100可以是由服务器130构成的分布式系统,所述分布式系统例如可以构成区块链系统。区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
区块链底层平台可以包括用户管理、基础服务、智能合约等处理模块。其中,用户管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及用户真实身份和区块链地址对应关系维护(权限管理)等,并且在授权的情况下,监管和审计某些真实身份的交易情况,提供风险控制的规则配置(风控审计);基础服务模块部署在所有区块链节点设备上,用来验证业务请求的有效性,并对有效请求完成共识后记录到存储上,对于一个新的业务请求,基础服务先对接口适配解析和鉴权处理(接口适配),然后通过共识算法将业务信息加密(共识管理),在加密之后完整一致的传输至共享账本上(网络通信),并进行记录存储;智能合约模块负责合约的注册发行以及合约触发和合约执行,开发人员可以通过某种编程语言定义合约逻辑,发布到区块链上(合约注册),根据合约条款的逻辑,调用密钥或者其它的事件触发执行,完成合约逻辑,同时还提供对合约升级注销的功能等。
平台产品服务层提供典型应用的基本能力和实现框架,开发人员可以基于这些基本能力,叠加业务的特性,完成业务逻辑的区块链实现。应用服务层提供基于区块链方案的应用服务给业务参与方进行使用。
图2示出了根据本申请的一些实施例的精准测试方法200的示例性流程图。如图2所示,方法200包括步骤S210、步骤S220和步骤S230。
在步骤S210,获取软件对应的多个覆盖报告。多个覆盖报告在多个回归测试中生成,多个回归测试中的每个测试了软件的一个版本,并生成了相应的覆盖报告。覆盖报告包含用于指示相应版本的软件中各代码部分是否被测到的标识。例如,软件经过N次回归测试,生成了N个覆盖报告。由于每次回归测试都可能是针对软件经修改的版本,所以每个覆盖报告针对软件的某一版本。例如,覆盖报告i指示版本i的软件的覆盖率为50%,覆盖报告j指示版本j的软件的覆盖率为30%。
在步骤S220,基于多个覆盖报告确定软件的综合覆盖率。综合覆盖率用于指示软件的各个版本中出现过的代码经过所述多个回归测试被测到的比例。例如,覆盖报告1中包含1000行代码,在第一轮测试中被测到的有700行;覆盖报告2中包含1100行代码,在第二轮测试中被测到的有800行;覆盖报告3中包含700行代码,在第三轮测试中被测到的有500行。通过比较覆盖报告1至覆盖报告3,确定出现过的代码总共1500行,在三轮测试的任一轮中被测到的有900行,则可以确定软件的综合覆盖率为900/1500=60%。由于综合覆盖率充分考虑了多个覆盖报告中所有出现过的代码测试情况,因此避免了现有技术中只参考单个覆盖报告的困境,也避免了直接对多个覆盖报告的覆盖率求平均数却不能有效度量多轮回归测试对代码的真实覆盖的窘境。
在步骤S230,基于所述软件的综合覆盖率,确定是否完成测试。因为综合覆盖率能够充分度量多轮回归测试对所有出现过的代码的覆盖程度,因此基于综合覆盖率来决策是否完成测试具有更高的效率和更小的风险。因此,方法200可以实现对软件的准确、高效和自动化的测试。
在一些实施例中,基于所述软件的综合覆盖率,确定是否完成测试包括:确定软件的综合覆盖率是否大于预定覆盖率阈值;以及,响应于软件的综合覆盖率大于预定覆盖率阈值,确定完成测试。例如,预定覆盖率阈值被设置为80%,当软件的综合覆盖率为85%时,则确定完成测试。在一些实施例中,响应于软件的综合覆盖率小于预定覆盖率阈值,则确定未完成测试。如果确定未完成测试,则可以继续进行回归测试,例如继续对软件代码进行修改,再进行相应测试。
在一些实施例中,基于多个覆盖报告确定所述软件的综合覆盖率包括:基于多个覆盖报告确定综合覆盖报告,综合覆盖报告中不重复地包括多个覆盖报告中所有出现过的代码部分以及用于指示代码部分是否在多个回归测试中被测到的标识;以及,确定软件的综合覆盖率,综合覆盖率等于综合覆盖报告中被测到的代码部分的数量与综合覆盖报告中所有的代码部分的数量的比值。作为示例,覆盖报告1中包含1000行代码,在第一轮测试中被测到的有700行;覆盖报告2中包含1100行代码,在第二轮测试中被测到的有800行;覆盖报告3中包含700行代码,在第三轮测试中被测到的有500行。通过比较覆盖报告1至覆盖报告3中的代码部分及相应的标识,确定综合覆盖报告。综合覆盖报告中不重复地包括覆盖报告1至覆盖报告3中所有出现过的代码部分以及用于指示代码部分是否在多个回归测试中被测到的标识,例如,综合覆盖报告包括1500行代码,其中900行代码被标识(即在三轮测试中任一轮中被测到过)。然后,确定软件的综合覆盖率,即以综合覆盖报告中被测到的代码部分的数量除以综合覆盖报告中所有的代码部分的数量,例如此处将得到900÷1500=60%。
图3示出了根据本申请的一些实施例的确定综合覆盖报告的示例性流程图。如图3所示,基于多个覆盖报告确定综合覆盖报告包括步骤S221、步骤S222、步骤S223和步骤S224。
在步骤S221,建立待合并集,待合并集包括多个覆盖报告。作为示例,待合并集包括覆盖报告1、覆盖报告2、覆盖报告3和覆盖报告4。
在步骤S222,确定基准覆盖报告,基准覆盖报告包含多个覆盖报告中最晚生成的覆盖报告涉及的所有代码部分及指示其中各代码部分是否被测到的标识。作为示例,覆盖报告4是多个覆盖报告中最晚生成的覆盖报告。则基准覆盖报告包含覆盖报告4涉及的所有代码部分及指示其中各代码部分是否被测到的标识。
在步骤S223,将包含在待合并集中但不包含在基准覆盖报告中的代码部分和标识添加到基准覆盖报告中。例如,待合并集中的覆盖报告总共包含500行未出现在基准覆盖报告中的代码,其中300行被标识。则将这500行代码及相应的标识添加到基准覆盖报告中。
在步骤S224,将基准覆盖报告确定为综合覆盖报告。
图4示出了根据本申请的一些实施例的更新基准覆盖报告的示例性流程图。在上文示出的实施例中,将包含在待合并集中但不包含在基准覆盖报告中的代码部分和标识添加到所述基准覆盖报告中可以采用图4示出的更新基准覆盖报告的步骤。如图4所示,更新基准覆盖报告的步骤包括步骤S223a-S223e,作为示例,这些步骤可以用在步骤S223中。
在步骤S223a,比较待合并集中各覆盖报告与所述基准覆盖报告,确定各覆盖报告中是否包含基准覆盖报告未包含的代码部分或标识。如果各覆盖报告中包含基准覆盖报告未包含的代码部分或标识,则转到步骤S223b;如果不包含,则转到步骤S223e,并在步骤S223e中结束更新基准覆盖报告。作为示例,待合并集包括覆盖报告1、覆盖报告2、覆盖报告3和覆盖报告4。当覆盖报告1、覆盖报告2、覆盖报告3和覆盖报告4中任一个包含基准覆盖报告未包含的代码部分或标识,则转到步骤S223b,反之则转到步骤S223e。
在步骤S223b,比较待合并集中各覆盖报告与基准覆盖报告,确定待合并集中与基准覆盖报告差异最大的覆盖报告,并转到步骤S223c。例如,确定覆盖报告2是与基准覆盖报告差异最大的覆盖报告。
在步骤S223c,将包含在差异最大的覆盖报告中但不包含在基准覆盖报告中的代码部分和标识添加到基准覆盖报告中,转到步骤S223d。例如,将包含在覆盖报告2中但不包含在基准覆盖报告中的代码部分和标识添加到基准覆盖报告中。
在步骤S223d,将差异最大的覆盖报告从待合并集中移除,并转到步骤S223a。例如,从待合并集中移除覆盖报告2。
可见,通过步骤S223a-S223e,可以实现基准覆盖报告的高效更新,从而更快速和准确地确定综合覆盖报告。
在一些实施例中,步骤S223a进一步包括:把待合并集中最晚生成的覆盖报告移除。通过不断去除待合并集中已被合并的覆盖报告,可以为后续计算减小运算量,提升迭代效率。
在一些实施例中,在步骤S223b中,确定待合并集中与基准覆盖报告差异最大的覆盖报告包括:确定待合并集中各覆盖报告对应的差异特征,差异特征用于表征包含在覆盖报告中但未包含在基准覆盖报告中的代码部分和标识的数量;以及,基于各覆盖报告对应的差异特征确定各覆盖报告中与基准覆盖报告差异最大的覆盖报告。作为示例,确定待合并集中各覆盖报告对应的差异特征可以利用现有的指令库,例如Git库的diff命令。例如,运行“diff(覆盖报告1,基准覆盖报告)”将得到覆盖报告1和基准覆盖报告中涉及的区别代码部分及相应的标识。并以此确定包含在覆盖报告中但未包含在基准覆盖报告中的代码部分和标识的数量。
在一些实施例中,代码部分以代码方法、代码分支、代码行进行组织。例如,软件包含多个代码类,每个代码类包含多个代码方法,每个代码方法包括多个代码分支,每个代码分支包含多个代码行。这些代码以上述数据结构组织成软件,以发挥出相应的功能。作为示例,差异特征可以一个三维向量,三维向量中的第一个维度的数表示包含在覆盖报告中但未包含在基准覆盖报告中的代码行的数量,三维向量中的第二个维度的数表示包含在覆盖报告中但未包含在基准覆盖报告中的代码分支的数量,三维向量中的第三个维度的数表示包含在覆盖报告中但未包含在基准覆盖报告中的代码方法的数量。例如,差异特征(300,15,2)表示:包含在覆盖报告中但未包含在基准覆盖报告中的代码行的数量是300,包含在覆盖报告中但未包含在基准覆盖报告中的代码分支的数量是15,包含在覆盖报告中但未包含在基准覆盖报告中的代码方法的数量是2。
在一些实施例中,基于各覆盖报告对应的差异特征确定各覆盖报告中与基准覆盖报告差异最大的覆盖报告包括:将各覆盖报告对应的差异特征到原点的距离确定为各覆盖报告对应的差异特征值;以及,将各差异特征值中最大的差异特征值对应的覆盖报告确定为与基准覆盖报告差异最大的覆盖报告。例如覆盖报告i对应的差异特征为(Li,Bi,Fi),则满足等式:
其中,Oi是差异特征到原点的距离。则将Oi确定为覆盖报告i的差异特征值。
图5示出了根据本申请的一些实施例的精准测试方法的示意图。如图5所示,软件Ω包含多个代码类,以800个测试用例对软件Ω进行测试,发现代码类D0存在问题,为此对代码类D0进行了n次回归测试。在回归测试中会针对代码的问题进行修改,因此得到了代码类的n个版本D1-Dn,以及它们各自对应的覆盖报告R1-Rn。然后,将最晚生成的覆盖报告(即覆盖报告Rn)作为基准覆盖报告J1。分别比较覆盖报告R1至R(n-1)中的每一个与J1,确定各个覆盖报告对应的差异特征。差异特征是三维数组,三个维度分别表示覆盖报告中包含的代码行但基准覆盖报告中不包含的代码行的数量、覆盖报告中包含的代码分支但基准覆盖报告中不包含的代码分支的数量、覆盖报告中包含的代码方法但基准覆盖报告中不包含的代码方法的数量。作为示例,可以利用Git diff语句(即Git函数库里的diff语句)来实现覆盖报告与基准覆盖报告的比较。例如,利用语句diff(R2,J1)可以得到R2与J1中区别代码的数量。但diff(R2,J1)可能得到负值,表示J1中包含但R2中不包含的代码部分,此时只需将负值置零即可得到S2。如此,将得到差异特征S1-S(n-1)。然后,计算各个差异特征到原点的距离作为差异特征的差异特征值,将最大的差异特征值对应的覆盖报告Ru(1≤u<n)作为与基准覆盖报告J1差异最大的覆盖报告。然后,合并覆盖报告Ru和基准覆盖报告J1,以组成基准覆盖报告J2。合并的方式可以是将覆盖报告Ru中包含但基准覆盖报告J1中不包含的所有代码部分(包括代码行、代码分支和代码方法)及用于指示各代码部分是否被测到过的标识添加到覆盖报告J1中,并将添加后的J1作为J2。然后,进行第二轮循环,即以覆盖报告R1、R2、……、R(u-1)、R(u+1)、……、R(n-1)与基准覆盖报告J2进行比较,以确定与基准覆盖报告J2差异最大的覆盖报告Rv,并将J2和Rv进行合并以得到基准覆盖报告J3,然后以基准覆盖报告J3为基础进行下一轮循环。如此循环迭代,直到确定基准覆盖报告Jq,使得所有覆盖报告与基准覆盖报告Jq之间的差异特征值均为0。然后,将基准覆盖报告Jq确定为综合覆盖报告。然后,确定综合覆盖报告Jq的覆盖率。综合覆盖报告Jq的覆盖率是综合覆盖报告中在多轮测试时被测到的代码的行数与综合覆盖报告中总代码的行数之间的比值。由于覆盖报告中包含用来指示代码部分是否被测到的标识,因此综合覆盖报告中在多轮测试时被测到的代码的行数可以通过综合覆盖报告中包含的标识确定。最后,基于综合覆盖报告Jq的覆盖率确定是否完成测试。例如,当综合覆盖报告Jq的覆盖率大于预定覆盖率阈值,则确定完成测试。当综合覆盖报告Jq的覆盖率小于预定覆盖率阈值,则确定未完成测试,例如修改代码部分Dn,得到代码部分D(n+1),并对其进行回归测试,得到R(n+1)。并在继续进行一定数量的回归测试之后,利用本申请的精准测试方法来确定是否完成测试。
图6示出了根据本申请的一些实施例的精准测试装置600的示例性结构框图。如图6所示,装置600包括获取模块610、第一确定模块620和第二确定模块630。
获取模块610被配置成获取软件对应的多个覆盖报告。多个覆盖报告在多个回归测试中生成,多个回归测试中的每个测试了软件的一个版本,并生成了相应的覆盖报告。覆盖报告包含用于指示相应版本的软件中各代码部分是否被测到的标识。例如,软件经过N次回归测试,生成了N个覆盖报告。由于每次回归测试都可能是针对软件经修改的版本,所以每个覆盖报告针对软件的某一版本。例如,覆盖报告i指示版本i的软件的覆盖率为50%,覆盖报告j指示版本j的软件的覆盖率为30%。
第一确定模块620被配置成基于多个覆盖报告确定软件的综合覆盖率。综合覆盖率用于指示软件的各个版本中出现过的代码经过所述多个回归测试被测到的比例。例如,覆盖报告1中包含1000行代码,在第一轮测试中被测到的有700行;覆盖报告2中包含1100行代码,在第二轮测试中被测到的有800行;覆盖报告3中包含700行代码,在第三轮测试中被测到的有500行。通过比较覆盖报告1至覆盖报告3,确定出现过的代码总共1500行,在三轮测试的任一轮中被测到的有900行,则可以确定软件的综合覆盖率为900/1500=60%。由于综合覆盖率充分考虑了多个覆盖报告中所有出现过的代码测试情况,因此避免了现有技术中只参考单个覆盖报告的困境,也避免了直接对多个覆盖报告的覆盖率求平均数却不能有效度量多轮回归测试对代码的真实覆盖的窘境。
第二确定模块630被配置成基于所述软件的综合覆盖率,确定是否完成测试。因为综合覆盖率能够充分度量多轮回归测试对所有出现过的代码的覆盖程度,因此基于综合覆盖率来决策是否完成测试具有更高的效率和更小的风险。因此,方法200可以实现对软件的准确、高效和自动化的测试。
图7图示了示例系统700,其包括代表可以实现本文描述的各种方法的一个或多个系统和/或设备的示例计算设备710。计算设备710可以是例如服务提供商的服务器、与服务器相关联的设备、片上系统、和/或任何其它合适的计算设备或计算系统。上面参照图6描述的精准测试装置600可以采取计算设备710的形式。替换地,精准测试装置600可以以应用716的形式被实现为计算机程序。
如图示的示例计算设备710包括彼此通信耦合的处理系统711、一个或多个计算机可读介质712以及一个或多个I/O接口713。尽管未示出,但是计算设备710还可以包括系统总线或其他数据和命令传送系统,其将各种组件彼此耦合。系统总线可以包括不同总线结构的任何一个或组合,总线结构诸如存储器总线或存储器控制器、外围总线、通用串行总线、和/或利用各种总线架构中的任何一种的处理器或局部总线。还构思了各种其他示例,诸如控制和数据线。
处理系统711代表使用硬件执行一个或多个操作的功能。因此,处理系统711被图示为包括可被配置成处理器、功能块等的硬件元件714。这可以包括在硬件中实现为专用集成电路或使用一个或多个半导体形成的其它逻辑器件。硬件元件714不受其形成的材料或其中采用的处理机构的限制。例如,处理器可以由(多个)半导体和/或晶体管(例如,电子集成电路(IC))组成。在这样的上下文中,处理器可执行指令可以是电子可执行指令。
计算机可读介质712被图示为包括存储器/存储装置716。存储器/存储装置716表示与一个或多个计算机可读介质相关联的存储器/存储容量。存储器/存储装置716可以包括易失性介质(诸如随机存取存储器(RAM))和/或非易失性介质(诸如只读存储器(ROM)、闪存、光盘、磁盘等)。存储器/存储装置716可以包括固定介质(例如,RAM、ROM、固定硬盘驱动器等)以及可移动介质(例如,闪存、可移动硬盘驱动器、光盘等)。计算机可读介质712可以以下面进一步描述的各种其他方式进行配置。
一个或多个I/O接口713代表允许用户使用各种输入设备向计算设备710输入命令和信息并且可选地还允许使用各种输出设备将信息呈现给用户和/或其他组件或设备的功能。输入设备的示例包括键盘、光标控制设备(例如,鼠标)、麦克风(例如,用于语音输入)、扫描仪、触摸功能(例如,被配置成检测物理触摸的容性或其他传感器)、相机(例如,可以采用可见或不可见的波长(诸如红外频率)将不涉及触摸的运动检测为手势)等等。输出设备的示例包括显示设备、扬声器、打印机、网卡、触觉响应设备等。因此,计算设备710可以以下面进一步描述的各种方式进行配置以支持用户交互。
计算设备710还包括应用716。应用716可以例如是用于精准测试装置600的软件实例,并且与计算设备710中的其他元件相组合地实现本文描述的技术。
本申请提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算设备执行上述各种可选实现方式中提供的精准测试方法。
本文可以在软件硬件元件或程序模块的一般上下文中描述各种技术。一般地,这些模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、元素、组件、数据结构等。本文所使用的术语“模块”,“功能”和“组件”一般表示软件、固件、硬件或其组合。本文描述的技术的特征是与平台无关的,意味着这些技术可以在具有各种处理器的各种计算平台上实现。
所描述的模块和技术的实现可以存储在某种形式的计算机可读介质上或者跨某种形式的计算机可读介质传输。计算机可读介质可以包括可由计算设备710访问的各种介质。作为示例而非限制,计算机可读介质可以包括“计算机可读存储介质”和“计算机可读信号介质”。
与单纯的信号传输、载波或信号本身相反,“计算机可读存储介质”是指能够持久存储信息的介质和/或设备,和/或有形的存储装置。因此,计算机可读存储介质是指非信号承载介质。计算机可读存储介质包括诸如易失性和非易失性、可移动和不可移动介质和/或以适用于存储信息(诸如计算机可读指令、数据结构、程序模块、逻辑元件/电路或其他数据)的方法或技术实现的存储设备之类的硬件。计算机可读存储介质的示例可以包括但不限于RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字通用盘(DVD)或其他光学存储装置、硬盘、盒式磁带、磁带,磁盘存储装置或其他磁存储设备,或其他存储设备、有形介质或适于存储期望信息并可以由计算机访问的制品。
“计算机可读信号介质”是指被配置成诸如经由网络将指令发送到计算设备710的硬件的信号承载介质。信号介质典型地可以将计算机可读指令、数据结构、程序模块或其他数据体现在诸如载波、数据信号或其它传输机制的调制数据信号中。信号介质还包括任何信息传递介质。术语“调制数据信号”是指这样的信号,该信号的特征中的一个或多个被设置或改变,从而将信息编码到该信号中。作为示例而非限制,通信介质包括诸如有线网络或直接连线的有线介质以及诸如声、RF、红外和其它无线介质的无线介质。
如前,硬件元件714和计算机可读介质712代表以硬件形式实现的指令、模块、可编程器件逻辑和/或固定器件逻辑,其在一些实施例中可以用于实现本文描述的技术的至少一些方面。硬件元件可以包括集成电路或片上系统、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)以及硅中的其它实现或其他硬件设备的组件。在这种上下文中,硬件元件可以作为执行由硬件元件所体现的指令、模块和/或逻辑所定义的程序任务的处理设备,以及用于存储用于执行的指令的硬件设备,例如,先前描述的计算机可读存储介质。
前述的组合也可以用于实现本文的各种技术和模块。因此,可以将软件、硬件或程序模块和其它程序模块实现为在某种形式的计算机可读存储介质上和/或由一个或多个硬件元件714体现的一个或多个指令和/或逻辑。计算设备710可以被配置成实现与软件和/或硬件模块相对应的特定指令和/或功能。因此,例如通过使用处理系统的计算机可读存储介质和/或硬件元件714,可以至少部分地以硬件来实现将模块实现为可由计算设备710作为软件执行的模块。指令和/或功能可以由一个或多个制品(例如,一个或多个计算设备710和/或处理系统711)可执行/可操作以实现本文所述的技术、模块和示例。
在各种实施方式中,计算设备710可以采用各种不同的配置。例如,计算设备710可以被实现为包括个人计算机、台式计算机、多屏幕计算机、膝上型计算机、上网本等的计算机类设备。计算设备710还可以被实现为包括诸如移动电话、便携式音乐播放器、便携式游戏设备、平板计算机、多屏幕计算机等移动设备的移动装置类设备。计算设备710还可以实现为电视类设备,其包括具有或连接到休闲观看环境中的一般地较大屏幕的设备。这些设备包括电视、机顶盒、游戏机等。
本文描述的技术可以由计算设备710的这些各种配置来支持,并且不限于本文所描述的技术的具体示例。功能还可以通过使用分布式系统、诸如通过如下所述的平台722而在“云”720上全部或部分地实现。
云720包括和/或代表用于资源724的平台722。平台722抽象云720的硬件(例如,服务器)和软件资源的底层功能。资源724可以包括在远离计算设备710的服务器上执行计算机处理时可以使用的应用和/或数据。资源724还可以包括通过因特网和/或通过诸如蜂窝或Wi-Fi网络的订户网络提供的服务。
平台722可以抽象资源和功能以将计算设备710与其他计算设备连接。平台722还可以用于抽象资源的分级以提供遇到的对于经由平台722实现的资源724的需求的相应水平的分级。因此,在互连设备实施例中,本文描述的功能的实现可以分布在整个系统700内。例如,功能可以部分地在计算设备710上以及通过抽象云720的功能的平台722来实现。
应当理解,为清楚起见,参考不同的功能单元对本申请的实施例进行了描述。然而,将明显的是,在不偏离本申请的情况下,每个功能单元的功能性可以被实施在单个单元中、实施在多个单元中或作为其它功能单元的一部分被实施。例如,被说明成由单个单元执行的功能性可以由多个不同的单元来执行。因此,对特定功能单元的参考仅被视为对用于提供所描述的功能性的适当单元的参考,而不是表明严格的逻辑或物理结构或组织。因此,本申请可以被实施在单个单元中,或者可以在物理上和功能上被分布在不同的单元和电路之间。
尽管已经结合一些实施例描述了本申请,但是其不旨在被限于在本文中所阐述的特定形式。相反,本申请的范围仅由所附权利要求来限制。附加地,尽管单独的特征可以被包括在不同的权利要求中,但是这些可以可能地被有利地组合,并且包括在不同权利要求中不暗示特征的组合不是可行的和/或有利的。特征在权利要求中的次序不暗示特征必须以其工作的任何特定次序。此外,在权利要求中,词“包括”不排除其它元件,并且术语“一”或“一个”不排除多个。权利要求中的附图标记仅作为明确的例子被提供,不应该被解释为以任何方式限制权利要求的范围。
可以理解的是,在本申请的具体实施方式中,涉及到软件的测试用例等相关的数据。当本申请以上实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
Claims (13)
1.一种精准测试方法,包括:
获取软件对应的多个覆盖报告,所述多个覆盖报告在多个回归测试中生成,所述多个回归测试中的每个测试所述软件的一个版本,并生成相应的覆盖报告,所述覆盖报告包含用于指示相应版本的软件中各代码部分是否被测到的标识;
基于所述多个覆盖报告确定所述软件的综合覆盖率,所述综合覆盖率用于指示所述软件的各个版本中出现过的代码经过所述多个回归测试被测到的比例;以及,
基于所述软件的综合覆盖率,确定是否完成测试。
2.根据权利要求1所述的方法,其中基于所述多个覆盖报告确定所述软件的综合覆盖率包括:
基于所述多个覆盖报告确定综合覆盖报告,所述综合覆盖报告中不重复地包括所述多个覆盖报告中所有出现过的代码部分以及用于指示所述代码部分是否在所述多个回归测试中被测到的标识;以及,
确定所述软件的综合覆盖率,所述综合覆盖率等于所述综合覆盖报告中被测到的代码部分的数量与所述综合覆盖报告中所有的代码部分的数量的比值。
3.根据权利要求2所述的方法,其中基于所述多个覆盖报告确定综合覆盖报告包括:
建立待合并集,所述待合并集包括所述多个覆盖报告;
确定基准覆盖报告,所述基准覆盖报告包含所述多个覆盖报告中最晚生成的覆盖报告涉及的所有代码部分及指示其中各代码部分是否被测到的标识;
将包含在所述待合并集中但不包含在所述基准覆盖报告中的代码部分和标识添加到所述基准覆盖报告中;以及,
将所述基准覆盖报告确定为综合覆盖报告。
4.根据权利要求3所述的方法,其中将包含在所述待合并集中但不包含在所述基准覆盖报告中的代码部分和标识添加到所述基准覆盖报告中包括起始步骤和合并步骤中的一个或多个,并且从起始步骤开始;
所述起始步骤包括:
比较所述待合并集中各覆盖报告与所述基准覆盖报告,确定所述各覆盖报告中是否包含所述基准覆盖报告未包含的代码部分或标识,
响应于所述各覆盖报告中包含所述基准覆盖报告未包含的代码部分或标识,执行合并步骤;
所述合并步骤包括:
比较所述待合并集中各覆盖报告与所述基准覆盖报告,确定所述待合并集中与所述基准覆盖报告差异最大的覆盖报告,
将包含在所述差异最大的覆盖报告中但不包含在所述基准覆盖报告中的代码部分和标识添加到所述基准覆盖报告中,
将所述差异最大的覆盖报告从所述待合并集中移除,并转到所述起始步骤。
5.根据权利要求4所述的方法,所述起始步骤进一步包括:把所述待合并集中最晚生成的覆盖报告移除。
6.根据权利要求4所述的方法,其中确定所述待合并集中与所述基准覆盖报告差异最大的覆盖报告包括:
确定所述待合并集中各覆盖报告对应的差异特征,所述差异特征用于表征包含在覆盖报告中但未包含在基准覆盖报告中的代码部分和标识的数量;以及,
基于所述各覆盖报告对应的差异特征确定所述各覆盖报告中与所述基准覆盖报告差异最大的覆盖报告。
7.根据权利要求5所述的方法,所述代码部分以代码方法、代码分支、代码行进行组织;所述差异特征是一个三维向量,所述三维向量中的第一个维度的数表示包含在覆盖报告中但未包含在基准覆盖报告中的代码行的数量,所述三维向量中的第二个维度的数表示包含在覆盖报告中但未包含在基准覆盖报告中的代码分支的数量,所述三维向量中的第三个维度的数表示包含在覆盖报告中但未包含在基准覆盖报告中的代码方法的数量。
8.根据权利要求6所述的方法,其中基于所述各覆盖报告对应的差异特征确定所述各覆盖报告中与所述基准覆盖报告差异最大的覆盖报告包括:
将所述各覆盖报告对应的差异特征到原点的距离确定为所述各覆盖报告对应的差异特征值;以及,
将各差异特征值中最大的差异特征值对应的覆盖报告确定为与所述基准覆盖报告差异最大的覆盖报告。
9.根据权利要求1所述的方法,其中基于所述软件的综合覆盖率,确定是否完成测试包括:
确定所述软件的综合覆盖率是否大于预定覆盖率阈值;以及,
响应于所述软件的综合覆盖率大于预定覆盖率阈值,确定完成测试。
10.一种精准测试装置,包括:
获取模块,其被配置成获取软件对应的多个覆盖报告,所述多个覆盖报告在多个回归测试中生成,所述多个回归测试中的每个测试所述软件的一个版本,并生成相应的覆盖报告,所述覆盖报告包含用于指示相应版本的软件中各代码部分是否被测到的标识;
第一确定模块,其被配置成基于所述多个覆盖报告确定所述软件的综合覆盖率,所述综合覆盖率用于指示所述软件的各个版本中出现过的代码经过所述多个回归测试被测到的比例;以及,
第二确定模块,其被配置成基于所述软件的综合覆盖率,确定是否完成测试。
11.一种计算设备,包括:
存储器,其被配置成存储计算机可执行指令;以及
处理器,其被配置成当所述计算机可执行指令被所述处理器执行时执行根据权利要求1-9中任一项所述的方法。
12.一种计算机可读存储介质,其存储有计算机可执行指令,所述计算机可执行指令在被执行时实现根据权利要求1-9中任一项所述的方法。
13.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1至9中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310954752.0A CN116893973A (zh) | 2023-07-31 | 2023-07-31 | 精准测试方法、装置、计算设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310954752.0A CN116893973A (zh) | 2023-07-31 | 2023-07-31 | 精准测试方法、装置、计算设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116893973A true CN116893973A (zh) | 2023-10-17 |
Family
ID=88310722
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310954752.0A Pending CN116893973A (zh) | 2023-07-31 | 2023-07-31 | 精准测试方法、装置、计算设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116893973A (zh) |
-
2023
- 2023-07-31 CN CN202310954752.0A patent/CN116893973A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112241506B (zh) | 用户行为的回溯方法、装置、设备及系统 | |
US11593336B2 (en) | Data pipeline branching | |
US9513997B2 (en) | Test data management | |
CN109828750B (zh) | 自动配置数据埋点的方法、装置、电子设备及存储介质 | |
CN112613288B (zh) | 结算单生成方法、装置、计算机设备和存储介质 | |
CN114372006A (zh) | 测试用例自动生成方法、系统、计算机设备和存储介质 | |
CN110990274A (zh) | 一种生成测试案例的数据处理方法、装置及系统 | |
CN111159040A (zh) | 一种测试数据生成方法、装置、设备及存储介质 | |
CN113032256B (zh) | 自动化测试方法、装置、计算机系统和可读存储介质 | |
US20230334344A1 (en) | Distributed ledger based machine-learning model management | |
US11347533B2 (en) | Enhanced virtual machine image management system | |
CN117495544A (zh) | 一种基于沙箱的风控评估方法、系统、终端及存储介质 | |
CN113157583B (zh) | 一种测试方法、装置及设备 | |
CN116893973A (zh) | 精准测试方法、装置、计算设备及可读存储介质 | |
CN114490415A (zh) | 业务测试方法、计算机设备、存储介质和计算机程序产品 | |
CN107992749A (zh) | 一种检测补丁包冲突的方法及装置 | |
US20200401507A1 (en) | Method for automatically validating cots and device for implementing the method | |
CN116467156A (zh) | 联调测试方法、装置、存储介质及电子设备 | |
US11922278B1 (en) | Distributed ledger based feature set tracking | |
CN111651429B (zh) | 一种大数据调度参数管理方法、装置及分布式平台 | |
Perez | Using open source software securely | |
Jeong et al. | Toward Providing Automatic Program Repair by Utilizing Topic-Based Code Block Similarity | |
CN116108089A (zh) | 一种大数据测试方法、计算机设备以及存储介质 | |
CN114185591A (zh) | 代码检查方法、装置、存储介质和计算机程序产品 | |
CN115129355A (zh) | 页面修复方法及其系统、计算机设备 |
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 |