CN110413506B - 测试用例推荐方法、装置、设备及存储介质 - Google Patents
测试用例推荐方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN110413506B CN110413506B CN201910541819.1A CN201910541819A CN110413506B CN 110413506 B CN110413506 B CN 110413506B CN 201910541819 A CN201910541819 A CN 201910541819A CN 110413506 B CN110413506 B CN 110413506B
- Authority
- CN
- China
- Prior art keywords
- code
- test case
- version
- target
- recommended
- 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.)
- Active
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/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/368—Test management for test version control, e.g. updating test cases to a new software version
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
技术领域
本发明涉及软件测试技术领域,尤其涉及一种测试用例推荐方法、装置、设备及存储介质。
背景技术
随着计算机软件技术测试的飞速发展,软件测试涉及的对象越来越多,对应的测试用例以及测试工具也越来越丰富。通常情况下,开发人员会根据实际的业务需求对被测系统的源代码进行增删改等更新操作(例如在函数中添加行、修改行或删除行,或者在类中增加函数或删除函数),当代码变动较小时,先前使用的测试用例往往能继续使用;但当代码变动过大时,若仍然通过当前使用的测试用例对更新后的系统进行测试,可能会导致测试结果不准确。
针对上述情况,大多是通过执行整个源代码对应的测试用例然后根据用例执行后的代码覆盖情况判定当前使用的测试用例能否继续使用,由于测试过程本身的工作量较大,所以执行整个源代码对应的测试用例将导致测试效率降低,并且现有的这种方式缺乏针对性,不能准确地获知当前使用的测试用例对变更代码的覆盖情况。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供了一种测试用例推荐方法、装置、设备及存储介质,旨在解决现有技术中当系统源代码发生变更后,无法准确判断当前使用的测试用例是否满足实际测试需求的技术问题。
为实现上述目的,本发明提供了一种测试用例推荐方法,所述方法包括以下步骤:
读取待测应用程序对应的当前版本代码以及上一版本代码,通过预置版本对比工具获取所述当前版本代码与所述上一版本代码之间的变更代码;
执行目标测试用例,并获取所述目标测试用例执行过程中所述当前版本代码的运行信息;
从所述运行信息中读取所述目标测试用例对所述变更代码的代码覆盖信息,并根据所述代码覆盖信息判断所述目标测试用例是否作为推荐测试用例。
优选地,
所述获取所述上一版本代码对应的版本编号,根据所述版本编号获取目标测试用例的步骤,包括:
获取所述上一版本代码对应的版本编号,所述版本编号包括第一类型编号和第二类型编号;
在预先构建的映射关系中查找所述第一类型编号对应的测试用例集,并根据所述第二类型编号从所述测试用例集中筛选出目标测试用例。
优选地,所述从所述运行信息中读取所述目标测试用例对所述变更代码的代码覆盖信息,根据所述代码覆盖信息判断所述目标测试用例是否作为推荐测试用例的步骤,包括:
从所述运行信息中读取所述目标测试用例对所述变更代码的代码覆盖信息,所述代码覆盖信息包括代码覆盖率;
检测所述代码覆盖率是否高于预设阈值;
若高于,则将所述目标测试用例作为推荐测试用例,若低于,则将所述目标测试用例作为非推荐测试用例。
优选地,所述将所述目标测试用例作为非推荐测试用例的步骤之后,所述方法还包括:
将所述非推荐测试用例从所述测试用例集中删除,以获得备选测试用例集;
执行所述备选测试用例集所包含的备选测试用例,并获取各备选测试用例在执行过程中对所述变更代码的代码覆盖率;
根据获取到的代码覆盖率从所述备选测试用例集中筛选出推荐测试用例。
优选地,所述根据获取到的代码覆盖率从所述备选测试用例集中筛选出推荐测试用例的步骤,包括:
对获取到的代码覆盖率按照从高到低的顺序进行排序,根据排序结果将排序第一的代码覆盖率作为目标覆盖率;
将所述目标覆盖率对应的备选测试用例作为推荐测试用例。
优选地,所述根据所述代码覆盖信息判断所述目标测试用例是否作为推荐测试用例的步骤之后,所述方法还包括:
从所述运行信息中读取所述变更代码对应的方法执行链路,根据所述方法执行链路确定所述变更代码对应的关联代码;
根据预先构建的代码和测试用例之间的关联映射中查找所述关联代码对应的关联测试用例;
将所述关联测试用例和所述推荐测试用例作为所述当前版本代码对应的标准测试用例进行推荐。
优选地,所述从所述运行信息中读取所述变更代码对应的方法执行链路,根据所述方法执行链路确定所述变更代码对应的关联代码的步骤,包括:
从所述运行信息中读取所述变更代码对应的方法执行链路;
根据所述方法执行链路确定所述变更代码所属的当前链路节点,以及所述当前链路节点的上游节点和下游节点;
分别获取所述上游节点对应的代码标识以及所述下游节点对应的代码标识;
根据获取到的代码标识从数据库中查找对应的代码文件,并将查找到的代码文件作为所述变更代码对应的关联代码。
此外,为实现上述目的,本发明还提出一种测试用例推荐装置,所述装置包括:
代码比对模块,用于读取待测应用程序对应的当前版本代码以及上一版本代码,通过预置版本对比工具获取所述当前版本代码与所述上一版本代码之间的变更代码;
用例执行模块,用于获取所述上一版本代码对应的版本编号,根据所述版本编号获取目标测试用例,并执行所述目标测试用例以获取所述目标测试用例执行过程中所述当前版本代码的运行信息;
用例推荐模块,用于从所述运行信息中读取所述目标测试用例对所述变更代码的代码覆盖信息,并根据所述代码覆盖信息判断所述目标测试用例是否作为推荐测试用例。
此外,为实现上述目的,本发明还提出一种测试用例推荐设备,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的测试用例推荐程序,所述测试用例推荐程序配置为实现如上文所述的测试用例推荐方法的步骤。
此外,为实现上述目的,本发明还提出一种存储介质,所述存储介质上存储有测试用例推荐程序,所述测试用例推荐程序被处理器执行时实现如上文所述的测试用例推荐方法的步骤。
本发明通过读取待测应用程序对应的当前版本代码以及上一版本代码,通过预置版本对比工具获取所述当前版本代码与上一版本代码之间的变更代码;获取所述上一版本代码对应的版本编号,根据版本编号获取目标测试用例,执行目标测试用例并获取目标测试用例执行过程中当前版本代码的运行信息;从运行信息中读取目标测试用例对变更代码的代码覆盖信息,并根据代码覆盖信息判断目标测试用例是否作为推荐测试用例,由于是通过版本对比工具先确定变更代码,然后通过上一版本代码对应的目标测试用例对变更代码进行代码覆盖率检测,再根据检测结果确定目标测试用例是否能够被作为推荐测试用例,从而能够在系统源代码发生变更后,准确地判断当前使用的测试用例是否满足实际测试需求,降低了开发测试人员的工作量。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的测试用例推荐设备的结构示意图;
图2为本发明测试用例推荐方法第一实施例的流程示意图;
图3为本发明测试用例推荐方法第二实施例的流程示意图;
图4为本发明测试用例推荐方法第三实施例的流程示意图;
图5为本发明测试用例推荐装置第一实施例的结构框图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的测试用例推荐设备结构示意图。
如图1所示,该测试用例推荐设备可以包括:处理器1001,例如中央处理器(Central Processing Unit,CPU),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(WIreless-FIdelity,WI-FI)接口)。存储器1005可以是高速的随机存取存储器(RandomAccess Memory,RAM)存储器,也可以是稳定的非易失性存储器(Non-Volatile Memory,NVM),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的结构并不构成对测试用例推荐设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、数据存储模块、网络通信模块、用户接口模块以及测试用例推荐程序。
在图1所示的测试用例推荐设备中,网络接口1004主要用于与网络服务器进行数据通信;用户接口1003主要用于与用户进行数据交互;本发明测试用例推荐设备中的处理器1001、存储器1005可以设置在测试用例推荐设备中,所述测试用例推荐设备通过处理器1001调用存储器1005中存储的测试用例推荐程序,并执行本发明实施例提供的测试用例推荐方法。
本发明实施例提供了一种测试用例推荐方法,参照图2,图2为本发明测试用例推荐方法第一实施例的流程示意图。
本实施例中,所述测试用例推荐方法包括以下步骤:
步骤S10:读取待测应用程序对应的当前版本代码以及上一版本代码,通过预置版本对比工具获取所述当前版本代码与所述上一版本代码之间的变更代码;
需要说明的是,本实施例方法的执行主体可以是具有数据处理、程序运行以及网络通信功能的,如个人电脑、笔记本电脑等能够用于软件测试的计算服务设备(以下简称测试主机)。所述预置版本对比工具,即git版本对比工具(一种开源的分布式版本控制工具),本实施例中所述git版本对比工具可进行不同版本的代码比对,并对存在差异的地方进行标记或标注,例如,git版本对比工具可以给出每次增删改的代码行数和具体信息。
在具体实现中,测试主机可获取待测应用程序对应的当前版本代码以及上一版本代码,然后调用预置git版本对比工具对所述当前版本代码和上一版本代码进行比对,从而根据比对结果确定出不同版本的代码之间发生变更的那一部分变更代码。
步骤S20:获取所述上一版本代码对应的版本编号,根据所述版本编号获取目标测试用例,并执行所述目标测试用例,以并获取所述目标测试用例执行过程中所述当前版本代码的运行信息;
应理解的是,在软件项目开发中,项目的开发经常是迭代开发,开发人员经常需要查看以前版本的代码。为了便于开发人员快速识别不同版本的代码文件,通常需要对不同版本的软件代码配置对应的软件版本号。一般情况下,软件版本号由四部分组成,第一部分为主版本号,第二部分为次版本号,第三部分为修订版本号,第四部分为日期版本号加希腊字母版本号。以版本号“1.1.1.20180808_beta”为例,“其中,1.1.1”从左往右分别为“主版本号.次版本号.修订版本号”,“20180808”为日期版本号,“beta”为希腊字母版本号。
可理解的是,一个软件项目的测试通常拥有无数个测试环境,每个测试环境所使用的测试用例以及针对的软件版本都不相同。为保证测试效率本实施例中可将待测应用程序的软件版本号与对应的测试用例进行关联,以便测试主机后续能够快速的获取当前代码版本对应的目标测试用例。具体的,可将软件版本号中的“主版本号.次版本号.修订版本号”作为第一类型编号,然后建立该第一类型编号与测试用例集之间的映射关系;将“日期版本号和/或希腊字母版本号”作为从测试用例集中筛选目标测试用例的关键字符,以实现对目标测试用例的精准获取。
需要说明的是,为了检测代码变更后上一版本代码对应的测试用例是否仍能够顺利地对当前版本代码进行测试(即具有较高的代码覆盖率),在执行本步骤之前,测试主机还将获取所述上一版本代码对应的版本编号(所述版本编号包括第一类型编号和第二类型编号),然后在预先构建的映射关系中查找所述第一类型编号对应的测试用例集,并根据所述第二类型编号从所述测试用例集中筛选出目标测试用例。
在具体实现中,测试主机在获取到上一版本代码对应的版本编号后,可根据所述版本编号获取目标测试用例,然后执行所述目标测试用例,并获取所述目标测试用例执行过程中所述当前版本代码的运行信息。
步骤S30:从所述运行信息中读取所述目标测试用例对所述变更代码的代码覆盖信息,并根据所述代码覆盖信息判断所述目标测试用例是否作为推荐测试用例。
需要说明的是,本实施例中测试主机在执行目标测试用例过程中还可以调用开源的Java代码覆盖率工具“jacoco”来实时地标注被测试用例覆盖的代码情况,以及调用jvm监控工具来对当前版本代码的运行情况进行实时的监控和记录,以获取当前版本代码对应的运行信息。
在具体实现中,测试主机在获取到目标测试用例执行过程中当前版本代码的运行信息后,可从运行信息中读取目标测试用例对变更代码的代码覆盖信息(主要是代码覆盖率),并根据代码覆盖信息判断目标测试用例是否作为推荐测试用例。其中,所述推荐测试用例,即所述目标测试用例能否继续被作为当前版本代码对应的用例使用,若能则属于推荐测试用例,若不能则属于非推荐测试用例。
本实施例通过读取待测应用程序对应的当前版本代码以及上一版本代码,通过预置版本对比工具获取所述当前版本代码与上一版本代码之间的变更代码;获取所述上一版本代码对应的版本编号,根据版本编号获取目标测试用例,执行目标测试用例并获取目标测试用例执行过程中当前版本代码的运行信息;从运行信息中读取目标测试用例对变更代码的代码覆盖信息,并根据代码覆盖信息判断目标测试用例是否作为推荐测试用例,由于是通过版本对比工具先确定变更代码,然后通过上一版本代码对应的目标测试用例对变更代码进行代码覆盖率检测,再根据检测结果确定目标测试用例是否能够被作为推荐测试用例,从而能够在系统源代码发生变更后,准确地判断当前使用的测试用例是否满足实际测试需求,降低了开发测试人员的工作量。
参考图3,图3为本发明测试用例推荐方法第二实施例的流程示意图。
基于上述第一实施例,在本实施例中,所述步骤S30包括:
步骤S301:从所述运行信息中读取所述目标测试用例对所述变更代码的代码覆盖信息,所述代码覆盖信息包括代码覆盖率;
需要说明的是,本实施例中所述代码覆盖信息主要包括代码覆盖率,所谓代码覆盖率也称代码覆盖(Code coverage),它是软件测试中的一种度量,描述程序中源代码被测试的比例和程度。代码覆盖率高,不代表没有风险;但是如果代码覆盖率低,则表明测试的充分度不够,客观地存在较大风险,代码覆盖率有待提高。
在具体实现中,测试主机在获取到上述运行信息后,即可从运行信息中读取目标测试用例对变更代码的代码覆盖信息,从而确定出相应的代码覆盖率。
步骤S302:检测所述代码覆盖率是否高于预设阈值;
在具体实现中,为保证最终测试用例推荐结果的准确性,开发人员可根据实际情况设定一个用于检测目标测试用例是否可以作为推荐测试用例的评判标准,例如设定一个预设阈值(一般取80%,数值可调),然后检测所述代码覆盖率是否高于该预设阈值。
步骤S303:若高于,则将所述目标测试用例作为推荐测试用例,若低于,则将所述目标测试用例作为非推荐测试用例。
在具体实现中,测试主机可检测读取到的代码覆盖率是否高于80%,若高于,则表明当前执行的目标测试用例对所述变更代码的覆盖程度较高,可以作为推荐测试用例;若低于,则表明当前执行的目标测试用例对所述变更代码的覆盖程度过低,需要从测试用例集中另外选取或补充编写新的测试用例以提高代码覆盖率。
进一步地,本实施例测试主机在获知所述目标测试用例不能作为推荐测试用例后,还可将所述非推荐测试用例从所述测试用例集中删除,以获得备选测试用例集;然后执行所述备选测试用例集所包含的备选测试用例,并获取各备选测试用例在执行过程中对所述变更代码的代码覆盖率;再根据获取到的代码覆盖率从所述备选测试用例集中筛选出推荐测试用例。
进一步地,为保证筛选出的推荐测试用例具有较高的代码覆盖率,本实施例中,测试主机还将对获取到的代码覆盖率按照从高到低的顺序进行排序,根据排序结果将排序第一的代码覆盖率作为目标覆盖率;然后将所述目标覆盖率对应的备选测试用例作为推荐测试用例。
本实施例通过从运行信息中读取目标测试用例对变更代码的代码覆盖信息(包括代码覆盖率),然后检测代码覆盖率是否高于预设阈值;若高于,则将目标测试用例作为推荐测试用例,若低于,则将目标测试用例作为非推荐测试用例,从而实现了对目标测试用例是否满足测试需求的准确判定,保证了测试用例推荐结果的可靠性。
参考图4,图4为本发明测试用例推荐方法第三实施例的流程示意图。
基于上述各实施例,在本实施例中,所述步骤S30之后,所述方法还包括:
步骤S40:从所述运行信息中读取所述变更代码对应的方法执行链路,根据所述方法执行链路确定所述变更代码对应的关联代码;
需要说明的是,测试主机在通过jvm监控工具来对当前版本代码的运行情况进行实时的监控和记录时,还将对测试用例运行时的方法执行链路进行监控,进行链路分析。
应理解的是,在实际应用中,通过对方法执行链路进行分析可以知道代码逻辑实现。本实施例中所述链路分析,是指分析变更代码与哪些原有代码或新增代码存在关联关系,从而能分析出哪些测试用例之间存在关联,如果某一代码变更了,不止测试用例要覆盖到变更的代码,还需覆盖到与之链路相关的代码,例如:待测试应用程序中的用户签到功能对应的代码发生变化,而通过分析方法执行链路“登录-签到-积分”即可推断出积分功能显示对应的代码也会发生变化,因此此时不仅要测试签到功能,还要验证与之有关积分功能。
在具体实现中,测试主机可从所述运行信息中读取所述变更代码对应的方法执行链路;然后根据所述方法执行链路确定所述变更代码所属的当前链路节点(例如“签到”),以及所述当前链路节点的上游节点“登录”和下游节点“积分”;再分别获取所述上游节点对应的代码标识以及所述下游节点对应的代码标识;最后根据获取到的代码标识从数据库中查找对应的代码文件,并将查找到的代码文件作为所述变更代码对应的关联代码。
步骤S50:根据预先构建的代码和测试用例之间的关联映射中查找所述关联代码对应的关联测试用例;
需要说明的是,在执行本步骤之前,开发人员可预先构建一个代码和测试用例之间的关联映射,该关联映射可通过键值对的方式来实现,例如“key=value”,其中“key”可以是代码(或代码对应的标识),“value”则可以是测试用例(或测试用例对应的名称标识)。
本实施例中,在查找到与变更代码对应的关联代码后,测试主机即可根据预先构建的代码和测试用例之间的关联映射中查找所述关联代码对应的关联测试用例,从而获取受所述变更代码影响的所有关联测试用例。
步骤S60:将所述关联测试用例和所述推荐测试用例作为所述当前版本代码对应的标准测试用例进行推荐。
在具体实现中,测试主机在查找到受所述变更代码影响的所有关联测试用例后,即可将所述关联测试用例和所述推荐测试用例作为所述当前版本代码对应的标准测试用例推荐或推送给开发人员。
本实施例通过从运行信息中读取变更代码对应的方法执行链路,根据方法执行链路确定变更代码对应的关联代码;根据预先构建的代码和测试用例之间的关联映射中查找关联代码对应的关联测试用例;将关联测试用例和推荐测试用例作为当前版本代码对应的标准测试用例进行推荐,从而能够帮助测试人员有效定位回归测试范围,并帮助开发人员理解和查找变更代码涉及的影响点,进而减少代码漏洞(bug)的产生。
此外,本发明实施例还提出一种存储介质,所述存储介质上存储有测试用例推荐程序,所述测试用例推荐程序被处理器执行时实现如上文所述的测试用例推荐方法的步骤。
参照图5,图5为本发明测试用例推荐装置第一实施例的结构框图。
如图5所示,本发明实施例提出的测试用例推荐装置包括:
代码比对模块501,用于读取待测应用程序对应的当前版本代码以及上一版本代码,通过预置版本对比工具获取所述当前版本代码与所述上一版本代码之间的变更代码;
用例执行模块502,用于获取所述上一版本代码对应的版本编号,根据所述版本编号获取目标测试用例,并执行所述目标测试用例,以并获取所述目标测试用例执行过程中所述当前版本代码的运行信息;
用例推荐模块503,用于从所述运行信息中读取所述目标测试用例对所述变更代码的代码覆盖信息,并根据所述代码覆盖信息判断所述目标测试用例是否作为推荐测试用例。
本实施例通过读取待测应用程序对应的当前版本代码以及上一版本代码,通过预置版本对比工具获取所述当前版本代码与上一版本代码之间的变更代码;获取所述上一版本代码对应的版本编号,根据版本编号获取目标测试用例,执行目标测试用例并获取目标测试用例执行过程中当前版本代码的运行信息;从运行信息中读取目标测试用例对变更代码的代码覆盖信息,并根据代码覆盖信息判断目标测试用例是否作为推荐测试用例,由于是通过版本对比工具先确定变更代码,然后通过上一版本代码对应的目标测试用例对变更代码进行代码覆盖率检测,再根据检测结果确定目标测试用例是否能够被作为推荐测试用例,从而能够在系统源代码发生变更后,准确地判断当前使用的测试用例是否满足实际测试需求,降低了开发测试人员的工作量。
基于本发明上述测试用例推荐装置第一实施例,提出本发明测试用例推荐装置的第二实施例。
在本实施例中,所述用例执行模块502,还用于获取所述上一版本代码对应的版本编号,所述版本编号包括第一类型编号和第二类型编号;在预先构建的映射关系中查找所述第一类型编号对应的测试用例集,并根据所述第二类型编号从所述测试用例集中筛选出目标测试用例。
进一步地,所述用例推荐模块503,还用于从所述运行信息中读取所述目标测试用例对所述变更代码的代码覆盖信息,所述代码覆盖信息包括代码覆盖率;检测所述代码覆盖率是否高于预设阈值;若高于,则将所述目标测试用例作为推荐测试用例,若低于,则将所述目标测试用例作为非推荐测试用例。
进一步地,所述用例推荐模块503,还用于将所述非推荐测试用例从所述测试用例集中删除,以获得备选测试用例集;执行所述备选测试用例集所包含的备选测试用例,并获取各备选测试用例在执行过程中对所述变更代码的代码覆盖率;根据获取到的代码覆盖率从所述备选测试用例集中筛选出推荐测试用例。
进一步地,所述用例推荐模块503,还用于对获取到的代码覆盖率按照从高到低的顺序进行排序,根据排序结果将排序第一的代码覆盖率作为目标覆盖率;将所述目标覆盖率对应的备选测试用例作为推荐测试用例。
进一步地,所述用例推荐模块503,还用于从所述运行信息中读取所述变更代码对应的方法执行链路,根据所述方法执行链路确定所述变更代码对应的关联代码;根据预先构建的代码和测试用例之间的关联映射中查找所述关联代码对应的关联测试用例;将所述关联测试用例和所述推荐测试用例作为所述当前版本代码对应的标准测试用例进行推荐。
进一步地,所述用例推荐模块503,还用于从所述运行信息中读取所述变更代码对应的方法执行链路;根据所述方法执行链路确定所述变更代码所属的当前链路节点,以及所述当前链路节点的上游节点和下游节点;分别获取所述上游节点对应的代码标识以及所述下游节点对应的代码标识;根据获取到的代码标识从数据库中查找对应的代码文件,并将查找到的代码文件作为所述变更代码对应的关联代码。
本发明测试用例推荐装置的其他实施例或具体实现方式可参照上述各方法实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器/随机存取存储器、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (8)
1.一种测试用例推荐方法,其特征在于,所述方法包括:
读取待测应用程序对应的当前版本代码以及上一版本代码,通过预置版本对比工具获取所述当前版本代码与所述上一版本代码之间的变更代码;
获取所述上一版本代码对应的版本编号,根据所述版本编号获取目标测试用例,并执行所述目标测试用例以获取所述目标测试用例执行过程中所述当前版本代码的运行信息;
从所述运行信息中读取所述变更代码对应的方法执行链路,根据所述方法执行链路确定所述变更代码的当前链路节点以及所述当前链路节点的上游节点和下游节点;
根据所述上游节点对应的代码标识以及所述下游节点对应的代码标识从数据库中查找对应的代码文件,并将查找到的代码文件作为所述变更代码对应的关联代码;
根据预先构建的代码和测试用例之间的关联映射中查找所述关联代码对应的关联测试用例;
将所述关联测试用例和推荐测试用例作为所述当前版本代码对应的标准测试用例进行推荐;
所述获取所述上一版本代码对应的版本编号,根据所述版本编号获取目标测试用例的步骤,包括:
获取所述上一版本代码对应的版本编号,所述版本编号包括第一类型编号和第二类型编号,所述第一类型编号包括主版本号、次版本号、修订版本号;
在预先构建的映射关系中查找所述第一类型编号对应的测试用例集,并根据所述第二类型编号从所述测试用例集中筛选出目标测试用例。
2.如权利要求1所述的方法,其特征在于,所述从所述运行信息中读取所述目标测试用例对所述变更代码的代码覆盖信息,根据所述代码覆盖信息判断所述目标测试用例是否作为推荐测试用例的步骤,包括:
从所述运行信息中读取所述目标测试用例对所述变更代码的代码覆盖信息,所述代码覆盖信息包括代码覆盖率;
检测所述代码覆盖率是否高于预设阈值;
若高于,则将所述目标测试用例作为推荐测试用例,若低于,则将所述目标测试用例作为非推荐测试用例。
3.如权利要求2所述的方法,其特征在于,所述将所述目标测试用例作为非推荐测试用例的步骤之后,所述方法还包括:
将所述非推荐测试用例从所述测试用例集中删除,以获得备选测试用例集;
执行所述备选测试用例集所包含的备选测试用例,并获取各备选测试用例在执行过程中对所述变更代码的代码覆盖率;
根据获取到的代码覆盖率从所述备选测试用例集中筛选出推荐测试用例。
4.如权利要求3所述的方法,其特征在于,所述根据获取到的代码覆盖率从所述备选测试用例集中筛选出推荐测试用例的步骤,包括:
对获取到的代码覆盖率按照从高到低的顺序进行排序,根据排序结果将排序第一的代码覆盖率作为目标覆盖率;
将所述目标覆盖率对应的备选测试用例作为推荐测试用例。
5.如权利要求1所述的方法,其特征在于,所述从所述运行信息中读取所述变更代码对应的方法执行链路,根据所述方法执行链路确定所述变更代码对应的关联代码的步骤,包括:
从所述运行信息中读取所述变更代码对应的方法执行链路;
根据所述方法执行链路确定所述变更代码所属的当前链路节点,以及所述当前链路节点的上游节点和下游节点;
分别获取所述上游节点对应的代码标识以及所述下游节点对应的代码标识;
根据获取到的代码标识从数据库中查找对应的代码文件,并将查找到的代码文件作为所述变更代码对应的关联代码。
6.一种测试用例推荐装置,其特征在于,所述装置包括:
代码比对模块,用于读取待测应用程序对应的当前版本代码以及上一版本代码,通过预置版本对比工具获取所述当前版本代码与所述上一版本代码之间的变更代码;
用例执行模块,用于获取所述上一版本代码对应的版本编号,根据所述版本编号获取目标测试用例,并执行所述目标测试用例以获取所述目标测试用例执行过程中所述当前版本代码的运行信息;
用例推荐模块,用于从所述运行信息中读取所述变更代码对应的方法执行链路,根据所述方法执行链路确定所述变更代码的当前链路节点以及所述当前链路节点的上游节点和下游节点;根据所述上游节点对应的代码标识以及所述下游节点对应的代码标识从数据库中查找对应的代码文件,并将查找到的代码文件作为所述变更代码对应的关联代码;根据预先构建的代码和测试用例之间的关联映射中查找所述关联代码对应的关联测试用例;将所述关联测试用例和推荐测试用例作为所述当前版本代码对应的标准测试用例进行推荐;
所述用例执行模块,还用于获取所述上一版本代码对应的版本编号,所述版本编号包括第一类型编号和第二类型编号,所述第一类型编号包括主版本号、次版本号、修订版本号;
所述用例执行模块,还用于在预先构建的映射关系中查找所述第一类型编号对应的测试用例集,并根据所述第二类型编号从所述测试用例集中筛选出目标测试用例。
7.一种测试用例推荐设备,其特征在于,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的测试用例推荐程序,所述测试用例推荐程序配置为实现如权利要求1至5中任一项所述的测试用例推荐方法的步骤。
8.一种存储介质,其特征在于,所述存储介质上存储有测试用例推荐程序,所述测试用例推荐程序被处理器执行时实现如权利要求1至5任一项所述的测试用例推荐方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910541819.1A CN110413506B (zh) | 2019-06-19 | 2019-06-19 | 测试用例推荐方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910541819.1A CN110413506B (zh) | 2019-06-19 | 2019-06-19 | 测试用例推荐方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110413506A CN110413506A (zh) | 2019-11-05 |
CN110413506B true CN110413506B (zh) | 2023-02-03 |
Family
ID=68359588
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910541819.1A Active CN110413506B (zh) | 2019-06-19 | 2019-06-19 | 测试用例推荐方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110413506B (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108427637B (zh) * | 2018-01-18 | 2021-05-25 | 平安科技(深圳)有限公司 | 测试案例推荐方法、电子装置及可读存储介质 |
CN110928786B (zh) * | 2019-11-20 | 2024-04-02 | 中国工商银行股份有限公司 | 针对财务程序的测试方法和装置 |
CN112835779A (zh) * | 2019-11-25 | 2021-05-25 | 上海哔哩哔哩科技有限公司 | 测试用例确定方法、装置、计算机设备 |
CN111026665B (zh) * | 2019-12-09 | 2023-02-28 | 建信金融科技有限责任公司 | 测试范围分析方法、装置及设备 |
CN111045944B (zh) * | 2019-12-11 | 2023-06-13 | 广州品唯软件有限公司 | 回归测试方法、装置、系统及计算机可读存储介质 |
CN111008151B (zh) * | 2019-12-20 | 2023-06-13 | 上海品顺信息科技有限公司 | 程序扫描方法、终端设备及计算机可读存储介质 |
CN111400164B (zh) * | 2020-02-07 | 2023-05-26 | 浙江口碑网络技术有限公司 | 一种软件测试方法及装置 |
CN111666206B (zh) * | 2020-04-30 | 2023-12-22 | 北京百度网讯科技有限公司 | 变更代码的影响范围的获取方法、装置、设备及存储介质 |
US11119898B1 (en) | 2020-05-07 | 2021-09-14 | International Business Machines Corporation | Automatic code coverage file recommendation |
CN111858301B (zh) * | 2020-06-05 | 2022-10-11 | 中国船舶重工集团公司第七0九研究所 | 基于变更历史的组合服务测试用例集约简方法及装置 |
CN111782516A (zh) * | 2020-06-24 | 2020-10-16 | Oppo广东移动通信有限公司 | 一种代码测试方法及装置、存储介质 |
CN112199276B (zh) * | 2020-09-24 | 2023-05-30 | 建信金融科技有限责任公司 | 微服务架构的变更检测方法、装置、服务器及存储介质 |
CN116097227A (zh) * | 2020-09-25 | 2023-05-09 | 西门子股份公司 | 基于变更相关性分析的测试用例选择方法及装置 |
CN113127357B (zh) * | 2021-04-21 | 2023-10-03 | 北京百度网讯科技有限公司 | 单元测试方法、装置、设备、存储介质及程序产品 |
CN113190442A (zh) * | 2021-04-27 | 2021-07-30 | 上海安畅网络科技股份有限公司 | 一种测试范围度量及测试覆盖检查的方法及系统 |
CN113590496B (zh) * | 2021-09-01 | 2023-06-02 | 建信金融科技有限责任公司 | 自动化测试方法及装置 |
CN113760769B (zh) * | 2021-09-13 | 2023-11-07 | 北京百度网讯科技有限公司 | 测试用例处理方法、装置、电子设备以及存储介质 |
CN113722234A (zh) * | 2021-09-14 | 2021-11-30 | 京东科技控股股份有限公司 | 测试用例的筛选方法、装置、电子设备及存储介质 |
CN113778890B (zh) * | 2021-09-16 | 2023-06-30 | 平安银行股份有限公司 | 代码测试方法、装置、电子设备及存储介质 |
CN115905031B (zh) * | 2023-03-14 | 2023-06-23 | 云筑信息科技(成都)有限公司 | 一种基于精准质量保障系统的测试用例推荐方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140245264A1 (en) * | 2013-02-28 | 2014-08-28 | International Business Machines Corporation | Identifying Test Cases Based on Changed Test Code |
US20150026664A1 (en) * | 2013-07-17 | 2015-01-22 | International Business Machines Corporation | Method and system for automated test case selection |
CN106557413A (zh) * | 2015-09-25 | 2017-04-05 | 伊姆西公司 | 基于代码覆盖率获取测试用例的方法和设备 |
CN107515826B (zh) * | 2017-08-28 | 2020-12-01 | 阿里巴巴(中国)有限公司 | 测试用例精准推荐方法、装置、系统、设备及存储介质 |
CN108491321B (zh) * | 2018-03-06 | 2021-05-25 | 平安科技(深圳)有限公司 | 测试用例范围确定方法、装置及存储介质 |
CN108829575B (zh) * | 2018-04-17 | 2021-08-24 | 平安科技(深圳)有限公司 | 测试案例推荐方法、电子装置及可读存储介质 |
CN109144878A (zh) * | 2018-08-31 | 2019-01-04 | 重庆富民银行股份有限公司 | 基于路径差异的代码测试方法 |
-
2019
- 2019-06-19 CN CN201910541819.1A patent/CN110413506B/zh active Active
Non-Patent Citations (1)
Title |
---|
TRILL技术测试方案的设计与实现;孙小林;《中国优秀硕士学位论文全文数据库信息科技辑》;20170315(第03期);I137-39 * |
Also Published As
Publication number | Publication date |
---|---|
CN110413506A (zh) | 2019-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110413506B (zh) | 测试用例推荐方法、装置、设备及存储介质 | |
US20190220389A1 (en) | Orchestrating and providing a regression test | |
US8719799B2 (en) | Measuring coupling between coverage tasks and use thereof | |
KR101588027B1 (ko) | 소프트웨어 현지화를 위한 테스트 케이스 생성 장치 및 방법 | |
CN110362479B (zh) | 系统升级测试方法和系统 | |
CN113900962B (zh) | 代码差异检测方法及装置 | |
US20180293160A1 (en) | Comparing software projects having been analyzed using different criteria | |
CN105468508A (zh) | 代码检测方法及装置 | |
CN113377431A (zh) | 一种代码处理方法、装置、设备及介质 | |
CN112069073A (zh) | 测试用例的管理方法、终端和存储介质 | |
CN112685312A (zh) | 一种未覆盖代码的测试用例推荐方法及装置 | |
CN112612756A (zh) | 异常文件的修复方法、装置、设备及存储介质 | |
US9298584B2 (en) | Artifact selection using textual reports | |
CN117493188A (zh) | 接口测试方法及装置、电子设备及存储介质 | |
CN113342692A (zh) | 测试用例自动生成方法、装置、电子设备及存储介质 | |
CN112988578A (zh) | 一种自动化测试方法和装置 | |
CN109542496B (zh) | 增量代码确定方法、装置及系统 | |
Marinho et al. | Evaluating testing strategies for resource related failures in mobile applications | |
CN115599683A (zh) | 自动化测试方法、装置、设备及存储介质 | |
CN114238110A (zh) | 软件应用测试方法、装置、设备及存储介质 | |
CN113656318A (zh) | 软件版本测试方法、装置及计算机设备 | |
CN108777648B (zh) | 一种网络设备测试方法及装置 | |
CN113297092A (zh) | 软件的缺陷预测方法及相关设备 | |
TWI735511B (zh) | 代碼提交方法和設備 | |
Parthy et al. | Using machine learning to recommend correctness checks for geographic map data |
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 |