CN116257422A - 自测用例生成方法、装置及电子设备 - Google Patents
自测用例生成方法、装置及电子设备 Download PDFInfo
- Publication number
- CN116257422A CN116257422A CN202111501165.3A CN202111501165A CN116257422A CN 116257422 A CN116257422 A CN 116257422A CN 202111501165 A CN202111501165 A CN 202111501165A CN 116257422 A CN116257422 A CN 116257422A
- Authority
- CN
- China
- Prior art keywords
- code
- target
- test case
- priority
- coefficient
- 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
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/3684—Test management for test design, e.g. generating new test cases
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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
技术领域
本公开涉及测试领域,尤其涉及一种自测用例生成的方法、装置及电子设备。
背景技术
随着计算机相关技术的发展,各种各样的计算机应用得到广泛应用,在软件产品发布之前,研发人员会对软件产品进行软件功能测试。在软件产品开发的整个生命周期内,研发人员需要根据测试用例进行自测,自测通过后再提交给测试人员进行完整的测试工作。但是由于时间和精力成本,研发人员无法完整的执行全部测试用例,因此,如何在全部测试用例中挑选出优先级最高的部分自测用例,是一项重要的研究工作。
目前,自测用例的选择方法主要是通过人工主观判断实现的,主要是根据功能点的重要性主观判断测试用例的优先级。这种自测用例的挑选方法完全依赖个人经验和主观意识,不能科学系统的判断每条测试用例的重要性,容易造成误判和漏判,同时,产品开发过程中的需求变更也为后续测试工作带来了很多不确定因素,影响了测试的效率,耗时耗力,从而导致产品质量下降。
发明内容
为了解决上述技术问题,保障测试工作的质量,减少人工挑选自测用例带来的不确定因素。本公开实施方式的目的在于提供一种自测用例生成方法、装置、电子设备及存储介质。
根据本公开第一方面,本公开的实施例提供了一种自测用例生成方法,包括:
确定目标测试用例所属的目标单元代码模块;属于所述目标单元代码模块的测试用例,包括所述目标测试用例,用于触发应用程序运行所述目标单元代码模块对应的功能以实现所述目标单元代码的测试;
基于属于所述目标单元代码模块的测试用例的数量,确定所述目标测试用例的第一优先级系数;
基于所述目标单元代码模块的代码行数,确定所述目标测试用例的第二优先级系数;
基于所述目标测试用例所占代码行数,确定所述目标测试用例的第三优先级系数;
至少根据所述第一优先级系数、第二优先级系数和第三优先级系数计算所述目标测试用例的综合优先级;
若所述目标测试用例的综合优先级在固定阈值以上,选取所述目标测试用例用于对所述程序进行测试。
进一步的,所述确定目标测试用例所属的目标单元代码模块,包括:
获取每一条目标测试用例对应的目标单元代码;
提取所述目标单元代码中的测试用例标识;
通过所述测试用例标识将所述目标测试用例与目标单元代码模块进行绑定;
根据所述测试用例标识建立所述目标测试用例与所述目标单元代码模块的映射关系;
其中,所述目标单元代码为软件程序中最小的代码测试单元,为至少一个函数、至少一个类和/或至少一个子进程的集合。
进一步的,所述基于属于所述目标单元代码模块的测试用例的数量,确定所述目标测试用例的第一优先级系数,包括:
获取所述目标测试用例所属的目标单元代码模块;
计算所述目标单元代码模块对应测试用例的数量;
通过所述测试用例的数量除以所有测试用例的数量计算所述目标单元代码模块的用例优先级系数,作为第一优先级系数。
进一步的,所述基于所述目标单元代码模块的代码行数,确定所述目标测试用例的第二优先级系数,包括:
获取所述目标单元代码模块的第一代码行数;
通过所述目标单元代码模块的第一代码行数与需求总代码行数的比值计算所述目标单元代码模块的代码行数相关的优先级系数,作为第二优先级系数。
进一步的,所述基于所述目标测试用例所占代码行数,确定所述目标测试用例的第三优先级系数,包括:
获取目标测试用例的第二代码行数;
获取所述目标测试用例对应的目标单元代码的第一代码行数;
通过所述第二代码行数与所述第一代码行数的比值计算单条测试用例所占代码行数的优先级系数,作为第三优先级系数。
进一步的,所述方法还包括:
计算因开发期间需求变更导致的代码变更系数;具体包括:
检测开发过程中产生的需求变更;
根据所述需求变更对所述目标代码单元进行代码变更;
获取所述目标代码变更的第三代码行数;
通过所述第三代码行数与需求总代码行数的比值计算代码变更系数。
进一步的,所述方法还包括:
计算旧代码复用关联度系数;具体包括:
获取所述目标代码单元中复用旧代码的第四代码行数;
通过所述第四代码行数与需求总代码行数的比值计算旧代码复用关联度系数。
进一步的,所述至少根据所述第一优先级系数、第二优先级系数和第三优先级系数计算所述目标测试用例的综合优先级,包括:
将所述第一优先级系数、第二优先级系数、第三优先级系数、代码变更系数和关联度系数代入综合优先级表达式,计算目标测试用例的综合优先级;
其中,所述综合优先级表达式为:
Pk=F1(Num_Unit)+F2(Code_Unit)+F3(Code_Case)+w1*F4(Code_Fix)+w2*F5(Code_Old);
式中,P表示单条目标测试用例的综合优先级,k为目标测试用例的编号,Pk表示的是第k条目标测试用例的综合优先级,F1(Num_Unit)为所述第一优先级系数,F2(Code_Unit)为所述第二优先级系数,F3(Code_Case)为所述第三优先级系数,F4(Code_Fix)为所述代码变更系数,F5(Code_Old)为旧代码复用关联度系数,w1和w2为代码变更系数和旧代码复用关联度系数对应的权重系数,w1和w2的取值为0或1。
进一步的,所述方法进一步包括:
检测所述目标测试用例所属的目标单元代码模块中的代码变更情况;
当所述目标测试用例所属的目标单元代码模块中无代码变更情况时,w1取0;
当所述目标测试用例所属的目标单元代码模块中有代码变更情况时,w1取1;
检测所述目标测试用例所属的目标单元代码模块是否存在复用旧代码;
当所述目标测试用例所属的目标单元代码模块中不存在复用旧代码时,w1取0;
当所述目标测试用例所属的目标单元代码模块中存在复用旧代码情况时,w1取1。
进一步的,所述若所述目标测试用例的综合优先级在固定阈值以上,选取所述目标测试用例用于对所述程序进行测试,包括:
预设置一综合优先级的固定阈值;
选取所述综合优先级在所述固定阈值以上的目标测试用例生成自测用例。
第二方面,本公开另一实施例提供了一种自测用例生成装置,包括:
目标所属确定模块,用于确定目标测试用例所属的目标单元代码模块;属于所述目标单元代码模块的测试用例,包括所述目标测试用例,用于触发应用程序运行所述目标单元代码模块对应的功能以实现所述目标单元代码的测试;
第一优先级确定模块,用于基于属于所述目标单元代码模块的测试用例的数量,确定所述目标测试用例的第一优先级系数;
第二优先级确定模块,用于基于所述目标单元代码模块的代码行数,确定所述目标测试用例的第二优先级系数;
第三优先级确定模块,用于基于所述目标测试用例所占代码行数,确定所述目标测试用例的第三优先级系数;
计算模块,用于至少根据所述第一优先级系数、第二优先级系数和第三优先级系数计算所述目标测试用例的综合优先级;
选取模块,用于若所述目标测试用例的综合优先级在固定阈值以上,选取所述目标测试用例用于对所述程序进行测试获取所述目标代码单元中复用旧代码的第四代码行数。
第三方面,本公开另一实施例提供一种电子设备,包括:
存储器,用于存储计算机可读指令;以及
处理器,用于运行所述计算机可读指令,使得所述电子设备实现上述第一方面中任意一项所述的方法。
第四方面,本公开另一实施例提供一种非暂态计算机可读存储介质,用于存储计算机可读指令,当所述计算机可读指令由计算机执行时,使得所述计算机实现上述第一方面中任意一项所述的方法。
本公开实施例公开了一种自测用例生成方法、装置、电子设备和计算机可读存储介质,所述方法包括:确定目标测试用例所属的目标单元代码模块;属于所述目标单元代码模块的测试用例,包括所述目标测试用例,用于触发应用程序运行所述目标单元代码模块对应的功能以实现所述目标单元代码的测试;基于属于所述目标单元代码模块的测试用例的数量,确定所述目标测试用例的第一优先级系数;基于所述目标单元代码模块的代码行数,确定所述目标测试用例的第二优先级系数;基于所述目标测试用例所占代码行数,确定所述目标测试用例的第三优先级系数;至少根据所述第一优先级系数、第二优先级系数和第三优先级系数计算所述目标测试用例的综合优先级;若所述目标测试用例的综合优先级在固定阈值以上,选取所述目标测试用例用于对所述程序进行测试。生成的自测用例具有一定的代表性和说服力,研发人员可以通过自测用例进行自测,自测通过后再提交给测试人员进行后续测试工作,解决了人工挑选自测用例的弊端,既提高了提测前的产品质量,又提高了测试人员的工作效率。
上述说明仅是本公开技术方案的概述,为了能更清楚了解本公开的技术手段,而可依照说明书的内容予以实施,并且为让本公开的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
附图说明
图1为本公开一实施例提供的自测用例生成方法流程示意图;
图2为本公开一实施例提供的测试用例与单元代码模块的映射关系图;
图3为本公开一实施例提供的自测用例综合优先级计算示意图;
图4为本公开另一实施例提供的自测用例生成装置示意图;
图5为本公开另一实施例提供的电子设备的结构示意图。
具体实施方式
为了能够更清楚地描述本公开的技术内容,下面结合具体实施例来进行进一步的描述。
以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。下面参考附图详细描述公开的各实施方式。
在软件产品开发的整个生命周期内,软件产品质量保障的重要手段包含测试左移和测试右移,其中,研发自测是测试左移保障的重要一环。即在需求提测前,研发人员需要根据测试用例进行自测,自测通过后再提交给测试人员进行完整的测试工作。
测试左移以及测试右移,能够让测试拥有更多的主动权,有更充足的时间进行测试,同时不会像之前因为质量差风险高每次都延期上线,并且产品的线上质量也能有保证。测试左移的思想,本质是越早的发现不合理的地方出问题的几率就越低。测试左移的原则支持测试团队在软件开发周期早期和所有干系人合作。因此他们能清晰地理解需求以及设计测试用例去帮助软件“快速失败”,促使团队更早的修改所有的bug。左移是往测试之前的开发阶段移,右移是往发布之后移,也就是产品上线了之后也可以进行一些测试活动。当然在生产环境直接做测试是不推荐的,但是我们可以在生产环境做监控,监控线上性能和可用率,一旦线上发生任何问题,尽快反应,提前反应,给用户良好的体验。测试右移其实还可以理解为如果线上发生任何问题,我们有没有能力第一时间发现问题并解决问题,并保证线上数据的一致性或尽可能少的影响线上用户,以及并且实时获取用户反馈。不管是测试左移还是测试右移,都是为产品质量服务。不要把提测认为是测试活动的开始,上线是测试活动的结束,更不要认为质量只是测试人员需要关注的。
为了保障测试左移工作的质量,减少人工挑选自测用例带来的不确定因素,本发明提出了一种自测用例的计算与生成方法,考虑软件开发过程的多个影响因素,科学的计算出每条测试用例的优先级。综合考虑了各个需求模块的重要性、代码情况、重复测试、需求变更等因素。通过对各个影响因素的计算得到目标测试用例的优先级系数,再综合计算得到每条测试用例的优先级,经过此筛选方法生成自测用例。生成的自测用例具有一定的代表性和说服力,研发人员可以通过自测用例进行自测,自测通过后再提交给测试人员进行后续测试工作,解决了人工挑选自测用例的弊端,既提高了提测前的产品质量,又提高了测试人员的工作效率。
图1为本公开实施例提供的自测用例生成方法的流程示意图,本实施例提供的自测用例生成方法可以由一自测用例生成装置来执行,该装置可以实现为软件,或者实现为软件和硬件的组合,该装置可以集成设置在电子设备中,通过电子设备的处理器来实现。处理如图1所示,该方法包括如下步骤:
步骤S101:确定目标测试用例所属的目标单元代码模块;属于所述目标单元代码模块的测试用例,包括所述目标测试用例,用于触发应用程序运行所述目标单元代码模块对应的功能以实现所述目标单元代码的测试。
在步骤S101中,本公开中,系统需要在所有测试用例中按照优先级自动选择合适的生成自测用例。根据软件产品的功能对应有多个测试用例,首先将所有测试用例与目标单元代码模块进行绑定,确定两者的关联关系,关联二者,每一条测试用例都有对应所属的单元代码。其中,所述单元代码指的是软件中最小的可测试单元,可以是一个函数、一个类或者一个子进程,也可以是多个函数、类和子进程的集合。假设某需求的测试用例为200条,分别为C1、C2、C3...C200,此时需计算出测试用例C1的优先级。
进一步的,目标单元代码模块中表达某测试用例功能的部分代码行叫做代码模块,每条测试用例对应的代码模块是指此部分代码可以代表此测试用例表达的功能。因此,目标单元代码可能包含某一条测试用例对应的代码模块,也可能包含好几条测试用例对应的代码模块。
结合附图2,图2示出了本公开一实施例提供的测试用例与单元代码模块的映射关系图,如图所示,将所有的目标测试用例,如图中的测试用例1、测试用例2、测试用例3、……、测试用例m、测试用例n分别与代码模块1、代码模块2、代码模块3、……、代码模块m、代码模块n进行绑定,建立两者的映射关系,其中m、n为自然数。单元代码包括至少一个代码模块,为代码模块的集合,图中单元代码1包括代码模块1、代码模块2、代码模块3、……,……,单元代码x包括代码模块m、代码模块n。
具体的,所述确定目标测试用例所属的目标单元代码模块,包括:获取每一条目标测试用例对应的目标单元代码;提取所述目标单元代码中的测试用例标识;通过所述测试用例标识将所述目标测试用例与目标单元代码模块进行绑定;根据所述测试用例标识建立所述目标测试用例与所述目标单元代码模块的映射关系;其中,所述目标单元代码为软件程序中最小的代码测试单元,为至少一个函数、至少一个类和/或至少一个子进程的集合。
步骤S102:基于属于所述目标单元代码模块的测试用例的数量,确定所述目标测试用例的第一优先级系数。
在步骤S102中,本公开得到最终的自测用例,需要计算多个优先级系数以及其它相关系数。首先,计算单元代码模块的用例优先级系数,记为第一优先级系数。每个单元代码模块中所包含的测试用例数量可以表现出此单元代码模块的重要性,某一单元代码模块的测试用例数越高,说明此单元代码模块的优先级越高。因此,用单元代码模块所包含的测试用例数量除以所有测试用例的数量来表示单元代码模块的用例优先级系数。
进一步的,所述步骤S102中的目标单元代码模块的第一优先级系数,即用例优先级系数F1(Num_Unit)函数表达式为:
F1(Num_Unit)=Num_Unit/Num_Total(1)
其中,F1(Num_Unit)为目标单元代码模块的用例优先级系数,Num_Unit为目标单元代码模块所包含的测试用例数量,Num_Total为需求所有的测试用例数量。
例如,计算目标单元代码模块的用例优先级系数F1(Num_Unit),设测试用例C1所属的目标单元代码模块涉及的测试用例数量为10条,本需求包含的所有测试用例为200条,则该目标单元代码模块的用例优先级系数为0.05。
具体的,所述计算所述目标测试用例所属的目标单元代码模块的用例数量相关的第一优先级系数,包括:获取所述目标测试用例所属的目标单元代码模块;计算所述目标单元代码模块对应测试用例的数量;通过所述测试用例的数量除以所有测试用例的数量计算所述单元代码模块的用例优先级系数,作为第一优先级系数。
步骤S103:基于所述目标单元代码模块的代码行数,确定所述目标测试用例的第二优先级系数。
在步骤S103中,本公开得到最终的自测用例,其次,计算目标单元代码模块行数优先级系数,记为第二优先级系数。目标单元代码模块的代码行数代表了此单元的复杂程度和重要性,一般来说,目标单元代码模块行数越多,表示此目标单元代码模块的测试优先级越高。因此,用目标单元代码模块所占的代码行数与需求的总代码行数的比值来表示目标单元代码行数的优先级系数。
进一步的,所述步骤S103中的目标单元代码模块行数优先级系数F2(Code_Unit)函数表达式为:
F2(Code_Unit)=Code_Unit/Code_Total (2)
其中,F2(Code_Unit)为第二优先级系数,即目标单元代码模块行数优先级系数,Code_Unit为目标单元代码模块所占的代码行数,Code_Total为需求所有的代码行数。
例如,计算目标单元代码模块行数优先级系数F2(Code_Unit),设测试用例C1所属的目标单元代码模块所占的代码行数为200行,需求所有的代码行数为5000行,则目标单元代码行数优先级系数为0.04。
具体的,所述基于所述目标单元代码模块的代码行数,确定所述目标测试用例的第二优先级系数,包括:获取所述目标单元代码模块的第一代码行数;通过所述目标单元代码模块的第一代码行数与需求总代码行数的比值计算所述目标单元代码模块的代码行数相关的优先级系数,作为第二优先级系数。
步骤S104:基于所述目标测试用例所占代码行数,确定所述目标测试用例的第三优先级系数。
在步骤S104中,本公开得到最终的自测用例,再次,计算目标测试用例所占代码行数优先级系数。一个单元代码模块可能包含多条测试用例,每条测试用例占单元代码模块中的代码行数不同。利用不同代码行数可区分测试用例优先级,用单条测试用例所占代码行数与此用例所在单元代码模块的代码行数的比值,表示单条测试用例所占代码行数的优先级系数。
进一步的,所述步骤S104中的第三优先级系数,即目标测试用例所占代码行数优先级系数F3(Code_Case)函数表达式为:
F3(Code_Case)=Code_Case/Code_UnitCase (3)
例如,计算目标测试用例所占代码行数优先级系数F3(Code_Case),设测试用例C1占有的代码行数为20行,测试用例C1所属的目标单元代码模块所占的代码行数为200行,则测试用例C1所占代码行数优先级系数为0.1。
其中,F3(Code_Case)为第三优先级系数,即目标测试用例所占代码行数优先级系数,Code_Case为目标测试用例所占代码行数,Code_UnitCase为此用例所在目标单元代码模块的代码行数。
具体的,所述基于所述目标测试用例所占代码行数,确定所述目标测试用例的第三优先级系数,包括:获取目标测试用例的第二代码行数;获取所述目标测试用例对应的单元代码的第一代码行数;通过所述第二代码行数与所述第一代码行数的比值计算目标测试用例所占代码行数的优先级系数,作为第三优先级系数。
进一步的,所述自测用例生成方法,进一步包括:计算因开发期间需求变更导致的代码变更系数。
本公开得到最终的自测用例,然后,计算因开发期间需求变更导致的代码变更系数。需求开发过程,容易出现因不可避免因素产生的需求变更情况,此时相应模块代码需要进行改动,容易产生缺陷。需求变更导致的代码变更系数可以用变更的代码行数与需求代码总行数的比值进行表示。
该步骤中的代码变更系数F4(Code_Fix)函数表达式为:
F4(Code_Fix)=Code_Fix/Code_Total (4)
其中,F4(Code_Fix)为需求变更导致的代码变更系数,Code_Fix为变更的代码行数,Code_Total为需求所有的代码行数。
例如,计算代码变更系数F4(Code_Fix),设测试用例C1所属的目标单元模块变更的代码行数为50行,需求所有的代码行数为5000行,则代码变更系数为0.001。
具体的,所述计算因开发期间需求变更导致的代码变更系数,具体包括:检测开发过程中产生的需求变更;根据所述需求变更对所述目标代码单元进行代码变更;获取所述代码变更的第三代码行数;通过所述第三代码行数与需求总代码行数的比值计算代码变更系数。
进一步的,所述自测用例生成方法,进一步包括:计算旧代码复用关联度系数。
本公开中,本公开得到最终的自测用例,再然后,计算旧代码复用关联度系数。复用旧代码容易造成代码兼容等未知问题,从而产生缺陷,复用旧代码越多,越容易产生缺陷。可以利用复用旧代码的行数与需求代码总行数的比值表示旧代码复用关联度系数。
该步骤中的旧代码复用关联度系数F5(Code_Old)函数表达式为:
F5(Code_Old)=Code_Old/Code_Total (5)
其中,F5(Code_Old)为旧代码复用关联度系数,Code_Old为复用旧代码的行数,Code_Total为需求所有的代码行数。
具体的,所述计算旧代码复用关联度系数,包括:获取所述目标代码单元中复用旧代码的第四代码行数;通过所述第四代码行数与需求总代码行数的比值计算旧代码复用关联度系数。
步骤S105:至少根据所述第一优先级系数、第二优先级系数和第三优先级系数计算所述目标测试用例的综合优先级。
在步骤S105中,本公开中,本公开得到最终的自测用例,然后进行综合,将上述步骤中各个优先级系数代入自测用例综合优先级表达式,计算出目标测试用例的综合优先级。选取固定阈值优先级以上的测试用例作为自测用例。
具体的,所述根据所述第一优先级系数F1(Num_Unit)、第二优先级系数F2(Code_Unit)、第三优先级系数F3(Code_Case)、代码变更系数F4(Code_Fix)和关联度系数F5(Code_Old)综合计算目标测试用例的综合优先级,包括:将所述第一优先级系数、第二优先级系数、第三优先级系数、代码变更系数和关联度系数代入自测用例的综合优先级表达式,计算目标测试用例的综合优先级;结合图3,将第一优先级系数F1(Num_Unit)、第二优先级系数F2(Code_Unit)、第三优先级系数F3(Code_Case)、代码变更系数F4(Code_Fix)和关联度系数F5(Code_Old)进行按系数求和,得到目标测试用例的综合优先级Pk。
具体的,所述自测用例的综合优先级表达式为:
Pk=F1(Num_Unit)+F2(Code_Unit)+F3(Code_Case)+w1*F4(Code_Fix)+w2*F5(Code_Old);
式中,P表示目标测试用例的综合优先级,k为目标测试用例的编号,Pk表示的是第k条目标测试用例的综合优先级,F1(Num_Unit)为所述第一优先级系数,F2(Code_Unit)为所述第二优先级系数,F3(Code_Case)为所述第三优先级系数,F4(Code_Fix)为所述代码变更系数,F5(Code_Old)为旧代码复用关联度系数,w1和w2为代码变更系数和旧代码复用关联度系数对应的权重系数,w1和w2的取值为0或1。
进一步的,关于w1的取值,所述方法进一步包括:检测所述目标测试用例所属的目标单元代码模块中的代码变更情况;当所述目标测试用例所属的目标单元代码模块中无代码变更情况时,w1取0;当所述目标测试用例所属的目标单元代码模块中有代码变更情况时,w1取1;检测所述目标测试用例所属的目标单元代码模块是否存在复用旧代码;当所述目标测试用例所属的目标单元代码模块中不存在复用旧代码时,w1取0;当所述目标测试用例所属的目标单元代码模块中存在复用旧代码情况时,w1取1。
例如,将上述计算的结果代入自测用例综合优先级表达式,计算出测试用例C1的自测用例优先级系数P1=0.211。
步骤S106:若所述目标测试用例的综合优先级在固定阈值以上,选取所述目标测试用例用于对所述程序进行测试。
在步骤S106中,本公开中,本公开得到最终的自测用例,根据以上步骤计算的目标测试用例的综合优先级,选取所述综合优先级在固定阈值以上的目标测试用例生成自测用例。
具体的,所述若所述目标测试用例的综合优先级在固定阈值以上,选取所述目标测试用例用于对所述程序进行测试,包括:预设置一综合优先级的固定阈值;选取所述综合优先级在所述固定阈值以上的目标测试用例生成自测用例。
例如,通过上述步骤计算出每条测试用例的优先级系数Pk,设置自测用例优先级阈值为0.2,则Pk>=0.2的测试用例为自测用例。
图4示出了本公开另一实施例提供的日志处理装置示意图。该装置包括:目标所属确定模块401、第一优先级确定模块402、第二优先级确定模块403、第三优先级确定模块404、计算模块405以及选取模块406。其中:
目标所属确定模块401,用于确定目标测试用例所属的目标单元代码模块;属于所述目标单元代码模块的测试用例,包括所述目标测试用例,用于触发应用程序运行所述目标单元代码模块对应的功能以实现所述目标单元代码的测试。
在本公开中,系统需要在所有测试用例中按照优先级自动选择合适的生成自测用例。根据软件产品的功能对应有多个测试用例,首先将所有测试用例与代码模块进行绑定,确定两者的关联关系,关联二者,每一条测试用例都有对应所属的单元代码。其中,所述单元代码指的是软件中最小的可测试单元,可以是一个函数、一个类或者一个子进程,也可以是多个函数、类和子进程的集合。假设某需求的测试用例为200条,分别为C1、C2、C3...C200,此时需计算出测试用例C1的优先级。
进一步的,单元代码模块中表达某测试用例功能的部分代码行叫做代码模块,每条测试用例对应的代码模块是指此部分代码可以代表此测试用例表达的功能。因此,单元代码可能包含某一条测试用例对应的代码模块,也可能包含好几条测试用例对应的代码模块。
所述目标所属确定模块,具体用于:获取每一条目标测试用例对应的目标单元代码;提取所述目标单元代码中的测试用例标识;通过所述测试用例标识将所述目标测试用例与目标单元代码模块进行绑定;根据所述测试用例标识建立所述目标测试用例与所述目标单元代码模块的映射关系;其中,所述目标单元代码为软件程序中最小的代码测试单元,为至少一个函数、至少一个类和/或至少一个子进程的集合。
所述第一优先级确定模块402,用于基于属于所述目标单元代码模块的测试用例的数量,确定所述目标测试用例的第一优先级系数。
本公开得到最终的自测用例,需要计算多个优先级系数以及其它相关系数。首先,计算目标单元代码模块的用例优先级系数,记为第一优先级系数。每个单元代码模块中所包含的测试用例数量可以表现出此单元代码模块的重要性,某一单元代码模块的测试用例数越高,说明此单元代码模块的优先级越高。因此,用目标单元代码模块所包含的测试用例数量除以所有测试用例的数量来表示目标单元代码模块的用例优先级系数。
进一步的,所述目标单元代码模块的第一优先级系数,即用例优先级系数F1(Num_Unit)函数表达式为:
F1(Num_Unit)=Num_Unit/Num_Total (1)
其中,F1(Num_Unit)为目标单元代码模块的用例优先级系数,Num_Unit为目标单元代码模块所包含的测试用例数量,Num_Total为需求所有的测试用例数量。
所述第一优先级确定模块,具体用于:获取所述目标测试用例所属的目标单元代码模块;计算所述目标单元代码模块对应测试用例的数量;通过所述测试用例的数量除以所有测试用例的数量计算所述目标单元代码模块的用例优先级系数,作为第一优先级系数。
所述第二优先级确定模块403,用于基于所述目标单元代码模块的代码行数,确定所述目标测试用例的第二优先级系数。
本公开得到最终的自测用例,其次,计算目标单元代码模块行数优先级系数,记为第二优先级系数。每个单元代码模块的代码行数代表了此单元的复杂程度和重要性,一般来说,目标单元代码模块行数越多,表示此目标单元代码模块的测试优先级越高。因此,用目标单元代码模块所占的代码行数与需求的总代码行数的比值来表示单元代码行数的优先级系数。
进一步的,所述目标单元代码模块行数优先级系数F2(Code_Unit)函数表达式为:
F2(Code_Unit)=Code_Unit/Code_Total (2)
其中,F2(Code_Unit)为第二优先级系数,即目标单元代码模块行数优先级系数,Code_Unit为目标单元代码模块所占的代码行数,Code_Tota l为需求所有的代码行数。
所述第二优先级确定模块,具体用于:获取所述目标单元代码模块的第一代码行数;通过所述目标单元代码模块的第一代码行数与需求总代码行数的比值计算所述单元代码模块的代码行数相关的优先级系数,作为第二优先级系数。
所述第三优先级确定模块404,用于基于所述目标测试用例所占代码行数,确定所述目标测试用例的第三优先级系数。
本公开得到最终的自测用例,再次,计算目标测试用例所占代码行数优先级系数。一个单元代码模块可能包含多条测试用例,每条测试用例占单元代码模块中的代码行数不同。利用不同代码行数可区分测试用例优先级,用单条测试用例所占代码行数与此用例所在单元代码模块的代码行数的比值,表示目标测试用例所占代码行数的优先级系数。
进一步的,所述第三优先级系数,即目标测试用例所占代码行数优先级系数F3(Code_Case)函数表达式为:
F3(Code_Case)=Code_Case/Code_UnitCase (3)
其中,F3(Code_Case)为第三优先级系数,即目标测试用例所占代码行数优先级系数,Code_Case为目标测试用例所占代码行数,Code_UnitCase为此用例所在目标单元代码的代码行数。
第三优先级确定模块,具体用于:获取目标测试用例的第二代码行数;获取所述目标测试用例对应的目标单元代码的第一代码行数;通过所述第二代码行数与所述第一代码行数的比值计算目标测试用例所占代码行数的优先级系数,作为第三优先级系数。
进一步的,所述自测用例生成装置还包括:变更系数计算模块,用于计算因开发期间需求变更导致的代码变更系数。
本公开得到最终的自测用例,然后,计算因开发期间需求变更导致的代码变更系数。需求开发过程,容易出现因不可避免因素产生的需求变更情况,此时相应模块代码需要进行改动,容易产生缺陷。需求变更导致的代码变更系数可以用变更的代码行数与需求代码总行数的比值进行表示。
进一步的,所述代码变更系数F4(Code_Fix)函数表达式为:
F4(Code_Fix)=Code_Fix/Code_Total (4)
其中,F4(Code_Fix)为需求变更导致的代码变更系数,Code_Fix为变更的代码行数,Code_Total为需求所有的代码行数。
所述变更系数计算模块,具体用于:检测开发过程中产生的需求变更;根据所述需求变更对所述代码单元进行代码变更;获取所述代码变更的第三代码行数;通过所述第三代码行数与需求总代码行数的比值计算代码变更系数。
进一步的,所述自测用例生成装置还包括:关联度系数计算模块,用于计算旧代码复用关联度系数。
本公开中,本公开得到最终的自测用例,再然后,计算旧代码复用关联度系数。复用旧代码容易造成代码兼容等未知问题,从而产生缺陷,复用旧代码越多,越容易产生缺陷。可以利用复用旧代码的行数与需求代码总行数的比值表示旧代码复用关联度系数。
进一步的,旧代码复用关联度系数F5(Code_Old)函数表达式为:
F5(Code_Old)=Code_Old/Code_Total (5)
其中,F5(Code_Old)为旧代码复用关联度系数,Code_Old为复用旧代码的行数,Code_Total为需求所有的代码行数。
所述关联度系数计算模块,具体用于:获取所述目标代码单元中复用旧代码的第四代码行数;通过所述第四代码行数与需求总代码行数的比值计算旧代码复用关联度系数。
所述计算模块405,用于至少根据所述第一优先级系数、第二优先级系数和第三优先级系数计算所述目标测试用例的综合优先级。
本公开中,本公开得到最终的自测用例,然后进行综合,将上述各个优先级系数代入自测用例综合优先级表达式,计算出目标测试用例的综合优先级。选取固定阈值优先级以上的测试用例作为自测用例。
所述计算模块,具体用于:将所述第一优先级系数F1(Num_Unit)、第二优先级系数F2(Code_Unit)、第三优先级系数F3(Code_Case)、代码变更系数F4(Code_Fix)和关联度系数F5(Code_Old)代入自测用例的综合优先级表达式,计算目标测试用例的综合优先级;结合图3,将第一优先级系数F1(Num_Unit)、第二优先级系数F2(Code_Unit)、第三优先级系数F3(Code_Case)、代码变更系数F4(Code_Fix)和关联度系数F5(Code_Old)进行按系数求和,得到目标测试用例的综合优先级Pk。
具体的,所述自测用例的综合优先级表达式为:
Pk=F1(Num_Unit)+F2(Code_Unit)+F3(Code_Case)+w1*F4(Code_Fix)+w2*F5(Code_Old);
式中,P表示目标测试用例的综合优先级,k为目标测试用例的编号,Pk表示的是第k条目标测试用例的综合优先级,F1(Num_Unit)为所述第一优先级系数,F2(Code_Unit)为所述第二优先级系数,F3(Code_Case)为所述第三优先级系数,F4(Code_Fix)为所述代码变更系数,F5(Code_Old)为旧代码复用关联度系数,w1和w2为代码变更系数和旧代码复用关联度系数对应的权重系数,w1和w2的取值为0或1。
进一步的,关于w1的取值,所述综合计算模块,进一步用于:检测所述目标测试用例所属的目标单元代码模块中的代码变更情况;当所述目标测试用例所属的目标单元代码模块中无代码变更情况时,w1取0;当所述目标测试用例所属的目标单元代码模块中有代码变更情况时,w1取1;检测所述目标测试用例所属的目标单元代码模块是否存在复用旧代码;当所述目标测试用例所属的目标单元代码模块中不存在复用旧代码时,w1取0;当所述目标测试用例所属的目标单元代码模块中存在复用旧代码情况时,w1取1。
所述选取模块406,用于若所述目标测试用例的综合优先级在固定阈值以上,选取所述目标测试用例用于对所述程序进行测试。
本公开得到最终的自测用例,根据以上步骤计算的测试用例的综合优先级,选取所述综合优先级在固定阈值以上的目标测试用例生成自测用例。
所述选取模块,具体用于:预设置一综合优先级的固定阈值;选取所述综合优先级在所述固定阈值以上的测试用例生成自测用例。
图4所示装置可以执行图1所示实施例的方法,本实施例未详细描述的部分,可参考对图1所示实施例的相关说明。该技术方案的执行过程和技术效果参见图1所示实施例中的描述,在此不再赘述。
下面参考图5示出了适于用来实现本公开另一实施例的电子设备500的结构示意图。本公开实施例中的终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图5示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图5所示,电子设备500可以包括处理装置(例如中央处理器、图形处理器等)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储装置508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM 503中,还存储有电子设备500操作所需的各种程序和数据。处理装置501、ROM 502以及RAM 503通过通信线路504彼此相连。输入/输出(I/O)接口505也连接至通信线路504。
通常,以下装置可以连接至I/O接口505:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置506;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置507;包括例如磁带、硬盘等的存储装置508;以及通信装置509。通信装置509可以允许电子设备500与其他设备进行无线或有线通信以交换数据。虽然图5示出了具有各种装置的电子设备500,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置509从网络上被下载和安装,或者从存储装置508被安装,或者从ROM 502被安装。在该计算机程序被处理装置501执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
在一些实施方式中,客户端、服务器可以利用诸如HTTP(HyperText TransferProtocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:执行上述实施例中的交互方法。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
根据本公开的一个或多个实施例,提供了一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有能被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行前述第一方面中的任一所述方法。
根据本公开的一个或多个实施例,提供了一种非暂态计算机可读存储介质,其特征在于,该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行前述第一方面中的任一所述方法。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (12)
1.一种自测用例生成方法,其特征在于,包括:
确定目标测试用例所属的目标单元代码模块;属于所述目标单元代码模块的测试用例,包括所述目标测试用例,用于触发应用程序运行所述目标单元代码模块对应的功能以实现所述目标单元代码的测试;
基于属于所述目标单元代码模块的测试用例的数量,确定所述目标测试用例的第一优先级系数;
基于所述目标单元代码模块的代码行数,确定所述目标测试用例的第二优先级系数;
基于所述目标测试用例所占代码行数,确定所述目标测试用例的第三优先级系数;
至少根据所述第一优先级系数、第二优先级系数和第三优先级系数计算所述目标测试用例的综合优先级;
若所述目标测试用例的综合优先级在固定阈值以上,选取所述目标测试用例用于对所述程序进行测试。
2.根据权利要求1所述的方法,其特征在于,所述确定目标测试用例所属的目标单元代码模块,包括:
获取每一条目标测试用例对应的目标单元代码;
提取所述目标单元代码中的测试用例标识;
通过所述测试用例标识将所述目标测试用例与目标单元代码模块进行绑定;
根据所述测试用例标识建立所述目标测试用例与所述目标单元代码模块的映射关系;
其中,所述目标单元代码为软件程序中最小的代码测试单元,为至少一个函数、至少一个类和/或至少一个子进程的集合。
3.根据权利要求1所述的方法,其特征在于,所述基于属于所述目标单元代码模块的测试用例的数量,确定所述目标测试用例的第一优先级系数,包括:
获取所述目标测试用例所属的目标单元代码模块;
计算所述目标单元代码模块对应测试用例的数量;
通过所述测试用例的数量除以所有测试用例的数量计算所述目标单元代码模块的用例优先级系数,作为第一优先级系数。
4.根据权利要求1所述的方法,其特征在于,所述基于所述目标单元代码模块的代码行数,确定所述目标测试用例的第二优先级系数,包括:
获取所述目标单元代码模块的第一代码行数;
通过所述目标单元代码模块的第一代码行数与需求总代码行数的比值计算所述目标单元代码模块的代码行数相关的优先级系数,作为第二优先级系数。
5.根据权利要求1所述的方法,其特征在于,所述基于所述目标测试用例所占代码行数,确定所述目标测试用例的第三优先级系数,包括:
获取目标测试用例的第二代码行数;
获取所述目标测试用例对应的目标单元代码的第一代码行数;
通过所述第二代码行数与所述第一代码行数的比值计算单条测试用例所占代码行数的优先级系数,作为第三优先级系数。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
计算因开发期间需求变更导致的代码变更系数;具体包括:
检测开发过程中产生的需求变更;
根据所述需求变更对所述目标代码单元进行代码变更;
获取所述目标代码变更的第三代码行数;
通过所述第三代码行数与需求总代码行数的比值计算代码变更系数。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
计算旧代码复用关联度系数;具体包括:
获取所述目标代码单元中复用旧代码的第四代码行数;
通过所述第四代码行数与需求总代码行数的比值计算旧代码复用关联度系数。
8.根据权利要求7所述的方法,其特征在于,所述至少根据所述第一优先级系数、第二优先级系数和第三优先级系数计算所述目标测试用例的综合优先级,包括:
将所述第一优先级系数、第二优先级系数、第三优先级系数、代码变更系数和关联度系数代入综合优先级表达式,计算目标测试用例的综合优先级;
其中,所述综合优先级表达式为:
Pk=F1(Num_Unit)+F2(Code_Unit)+F3(Code_Case)+w1*F4(Code_Fix)+w2*F5(Code_Old);
式中,P表示单条目标测试用例的综合优先级,k为目标测试用例的编号,Pk表示的是第k条目标测试用例的综合优先级,F1(Num_Unit)为所述第一优先级系数,F2(Code_Unit)为所述第二优先级系数,F3(Code_Case)为所述第三优先级系数,F4(Code_Fix)为所述代码变更系数,F5(Code_Old)为旧代码复用关联度系数,w1和w2为代码变更系数和旧代码复用关联度系数对应的权重系数,w1和w2的取值为0或1。
9.根据权利要求8所述的方法,其特征在于,所述方法进一步包括:
检测所述目标测试用例所属的目标单元代码模块中的代码变更情况;
当所述目标测试用例所属的目标单元代码模块中无代码变更情况时,w1取0;
当所述目标测试用例所属的目标单元代码模块中有代码变更情况时,w1取1;
检测所述目标测试用例所属的目标单元代码模块是否存在复用旧代码;
当所述目标测试用例所属的目标单元代码模块中不存在复用旧代码时,w1取0;
当所述目标测试用例所属的目标单元代码模块中存在复用旧代码情况时,w1取1。
10.根据权利要求1所述的方法,其特征在于,所述若所述目标测试用例的综合优先级在固定阈值以上,选取所述目标测试用例用于对所述程序进行测试,包括:
预设置一综合优先级的固定阈值;
选取所述综合优先级在所述固定阈值以上的目标测试用例生成自测用例。
11.一种自测用例生成装置,其特征在于,包括:
目标所属确定模块,用于确定目标测试用例所属的目标单元代码模块;属于所述目标单元代码模块的测试用例,包括所述目标测试用例,用于触发应用程序运行所述目标单元代码模块对应的功能以实现所述目标单元代码的测试;
第一优先级确定模块,用于基于属于所述目标单元代码模块的测试用例的数量,确定所述目标测试用例的第一优先级系数;
第二优先级确定模块,用于基于所述目标单元代码模块的代码行数,确定所述目标测试用例的第二优先级系数;
第三优先级确定模块,用于基于所述目标测试用例所占代码行数,确定所述目标测试用例的第三优先级系数;
计算模块,用于至少根据所述第一优先级系数、第二优先级系数和第三优先级系数计算所述目标测试用例的综合优先级;
选取模块,用于若所述目标测试用例的综合优先级在固定阈值以上,选取所述目标测试用例用于对所述程序进行测试。
12.一种电子设备,包括:
存储器,用于存储计算机可读指令;以及
处理器,用于运行所述计算机可读指令,使得所述电子设备实现根据权利要求1-10中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111501165.3A CN116257422A (zh) | 2021-12-09 | 2021-12-09 | 自测用例生成方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111501165.3A CN116257422A (zh) | 2021-12-09 | 2021-12-09 | 自测用例生成方法、装置及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116257422A true CN116257422A (zh) | 2023-06-13 |
Family
ID=86679766
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111501165.3A Pending CN116257422A (zh) | 2021-12-09 | 2021-12-09 | 自测用例生成方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116257422A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116501653A (zh) * | 2023-06-30 | 2023-07-28 | 卡斯柯信号(北京)有限公司 | 一种软件回归测试方法及装置 |
-
2021
- 2021-12-09 CN CN202111501165.3A patent/CN116257422A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116501653A (zh) * | 2023-06-30 | 2023-07-28 | 卡斯柯信号(北京)有限公司 | 一种软件回归测试方法及装置 |
CN116501653B (zh) * | 2023-06-30 | 2023-10-03 | 卡斯柯信号(北京)有限公司 | 一种软件回归测试方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109302522B (zh) | 测试方法、装置以及计算机系统和介质 | |
US8381184B2 (en) | Dynamic test coverage | |
CN106294120B (zh) | 测试代码的方法、设备和计算机程序产品 | |
US9465724B2 (en) | Method, program, and system for generating test cases | |
CN111625473B (zh) | 接口测试用例生成方法、装置、存储介质和电子设备 | |
CN104838405B (zh) | 用于应用程序的测试框架的方法和系统 | |
CN110674047B (zh) | 软件测试方法、装置及电子设备 | |
CN110750458A (zh) | 大数据平台测试方法、装置、可读存储介质及电子设备 | |
CN115277261B (zh) | 基于工控网络病毒的异常机器智能识别方法、装置、设备 | |
CN112395188B (zh) | 一种面向测试的软件项目开发方法、装置、电子设备及存储介质 | |
CN113806212A (zh) | 应用程序异常定位方法、装置以及电子设备 | |
CN111752834A (zh) | 自动化测试方法和装置 | |
CN116257422A (zh) | 自测用例生成方法、装置及电子设备 | |
CN112596738B (zh) | 待测试前端页面的确定方法、装置、存储介质及电子设备 | |
CN113144620A (zh) | 帧同步游戏的检测方法、装置、平台、可读介质和设备 | |
CN112291121A (zh) | 一种数据处理方法及相关设备 | |
CN116450511A (zh) | 信息更新方法、装置、电子设备和计算机可读介质 | |
CN110609786A (zh) | 软件测试方法、装置、计算机设备和存储介质 | |
CN112379967B (zh) | 模拟器检测方法、装置、设备及介质 | |
CN112286808B (zh) | 应用程序的测试方法、装置、电子设备及介质 | |
CN113849416A (zh) | 测试方法、装置、存储介质及电子设备 | |
CN114116480A (zh) | 应用程序测试覆盖率的确定方法、装置、介质及设备 | |
CN110084298B (zh) | 用于检测图像相似度的方法及装置 | |
CN113626301A (zh) | 生成测试脚本的方法和装置 | |
CN110489341B (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 |