CN116610552A - 测试用例推荐方法、装置、存储介质和电子设备 - Google Patents
测试用例推荐方法、装置、存储介质和电子设备 Download PDFInfo
- Publication number
- CN116610552A CN116610552A CN202210122936.6A CN202210122936A CN116610552A CN 116610552 A CN116610552 A CN 116610552A CN 202210122936 A CN202210122936 A CN 202210122936A CN 116610552 A CN116610552 A CN 116610552A
- Authority
- CN
- China
- Prior art keywords
- test
- test case
- function
- code
- 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.)
- Pending
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 405
- 238000000034 method Methods 0.000 title claims abstract description 65
- 230000006870 function Effects 0.000 claims description 174
- 230000008569 process Effects 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 16
- 238000004891 communication Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 8
- 238000013522 software testing Methods 0.000 description 6
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 239000000523 sample Substances 0.000 description 4
- 238000012795 verification Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 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/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/3676—Test management for coverage analysis
-
- 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
技术领域
本发明涉及软件测试领域,尤其是涉及一种测试用例推荐方法、装置、存储介质和电子设备。
背景技术
软件测试是指在规定的条件下对应用程序进行操作,以发现程序错误,衡量应用质量,对其是否能满足设计要求进行评估的过程。测试用例(Test Case)是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。
现有技术通常根据该测试用例与测试代码的代码覆盖率来选取测试用例,选取的测试用例不够准确,影响软件测试效果。
发明内容
本申请实施例提供了一种测试用例推荐方法、装置、存储介质和电子设备,能够准确地推荐测试用例,提高软件测试的准确性。所述技术方案如下:
第一方面,本申请实施例提供了一种测试用例推荐方法,包括以下步骤:
获取第一测试代码编译过程中各函数的被调用次数;
根据预设的被调用次数与热度等级之间的对应关系,获取各函数的热度等级信息;
利用预设的测试用例集对所述第一测试代码进行测试,获取所述测试用例集中的各测试用例在所述各函数的代码覆盖信息;
根据预设的代码覆盖信息与关联等级的对应关系,获取各测试用例与所述各函数之间的关联等级信息;
获取待测试的第二测试代码,获取所述第二测试代码中各函数的热度等级信息及所述第二测试代码中各函数与所述测试用例集中各测试用例的关联等级信息;其中,所述第二测试代码与所述第一测试代码对应;
响应于输入的推荐请求,根据所述推荐请求获取第二测试代码的推荐测试用例;其中,所述推荐请求包括推荐测试用例的热度等级信息和关联等级信息;
将所述推荐测试用例推送至测试客户端。
第二方面,本申请实施例提供了一种测试用例推荐装置,包括:
调用次数获取模块,用于获取第一测试代码编译过程中各函数的被调用次数;
热度等级获取模块,用于根据预设的被调用次数与热度等级之间的对应关系,获取各函数的热度等级信息;
代码覆盖信息获取模块,用于利用测试用例集对所述第一测试代码进行测试,获取所述测试用例集中的各测试用例在所述各函数的代码覆盖信息;
关联等级获取模块,用于根据预设的代码覆盖信息与关联等级的对应关系,获取各测试用例与所述各函数之间的关联等级信息;
第二测试代码获取模块,用于获取待测试的第二测试代码,获取所述第二测试代码中各函数的热度等级信息及所述第二测试代码中各函数与所述测试用例集中各测试用例的关联等级信息;其中,所述第二测试代码与所述第一测试代码对应;
推荐测试用例获取模块,用于响应于输入的推荐请求,根据所述推荐请求获取第二测试代码的推荐测试用例;其中,所述推荐请求包括推荐测试用例的热度等级信息和关联等级信息;
推荐模块,用于将所述推荐测试用例推送至测试客户端。
第三方面,本申请实施例提供了一种计算机可读存储介质,其上储存有计算机程序,该计算机程序被处理器执行时实现如上述任意一项所述的测试用例推荐方法的步骤。
第四方面,本申请实施例提供了一种电子设备,包括存储器、处理器以及存储在所述存储器中并可被所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如上述任意一项所述的测试用例推荐方法的步骤。
在本申请实施例中,根据第一测试代码中各函数的被调用次数划分各函数的热度等级,根据各测试用例与各函数之间的代码覆盖信息确定各测试用例与各函数的关联等级,再根据第二测试代码中各函数的热度等级信息、关联等级信息以及输入的推荐测试用例的热度等级信息和关联等级信息,自动生成最符合用户测试需求的推荐测试用例并推送至测试用户端,可以有效提高软件测试效率。
为了更好地理解和实施,下面结合附图详细说明本发明。
附图说明
图1为本发明一个实施例一种测试用例推荐方法的应用场景示意图;
图2为本发明一个实施例一种测试用例推荐方法的流程图;
图3为本发明一个实施例一种测试用例推荐界面的示意图;
图4为本发明一个实施例一种测试用例推荐装置的结构示意图;
图5为本发明一个实施例一种电子设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施例方式作进一步地详细描述。
应当明确,所描述的实施例仅仅是本申请实施例一部分实施例,而不是全部的实施例。基于本申请实施例中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本申请实施例保护的范围。
在本申请实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请实施例。在本申请实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。在本申请的描述中,需要理解的是,术语“第一”、“第二”、“第三”等仅用于区别类似的对象,而不必用于描述特定的顺序或先后次序,也不能理解为指示或暗示相对重要性。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本申请中的具体含义。
此外,在本申请的描述中,除非另有说明,“若干个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
本领域技术人员可以理解,本申请所使用的“客户端”、“终端”、“终端设备”既包括无线信号接收器的设备,其仅具备无发射能力的无线信号接收器的设备,又包括接收和发射硬件的设备,其具有能够在双向通信链路上,进行双向通信的接收和发射硬件的设备。这种设备可以包括:蜂窝或其他诸如个人计算机、平板电脑之类的通信设备,其具有单线路显示器或多线路显示器或没有多线路显示器的蜂窝或其他通信设备;PCS(PersonalCommunications Service,个人通信系统),其可以组合语音、数据处理、传真和/或数据通信能力;PDA(Personal Digital Assistant,个人数字助理),其可以包括射频接收器、寻呼机、互联网/内联网访问、网络浏览器、记事本、日历和/或GPS(GlobalPositioningSystem,全球定位系统)接收器;常规膝上型和/或掌上型计算机或其他设备,其具有和/或包括射频接收器的常规膝上型和/或掌上型计算机或其他设备。这里所使用的“客户端”、“终端”、“终端设备”可以是便携式、可运输、安装在交通工具(航空、海运和/或陆地)中的,或者适合于和/或配置为在本地运行,和/或以分布形式,运行在地球和/或空间的任何其他位置运行。这里所使用的“客户端”、“终端”、“终端设备”还可以是通信终端、上网终端、音乐/视频播放终端,例如可以是PDA、MID(Mobile Internet Device,移动互联网设备)和/或具有音乐/视频播放功能的移动电话,也可以是智能电视、机顶盒等设备。
本申请所称的“服务器”、“客户端”、“服务节点”等名称所指向的硬件,本质上是具备个人计算机等效能力的电子设备,为具有中央处理器(包括运算器和控制器)、存储器、输入设备以及输出设备等冯诺依曼原理所揭示的必要构件的硬件装置,计算机程序存储于其存储器中,中央处理器将存储在外存中的程序调入内存中运行,执行程序中的指令,与输入输出设备交互,借此完成特定的功能。
需要指出的是,本申请所称的“服务器”这一概念,同理也可扩展到适用于服务器机群的情况。依据本领域技术人员所理解的网络部署原理,所述各服务器应是逻辑上的划分,在物理空间上,这些服务器既可以是互相独立但可通过接口调用的,也可以是集成到一台物理计算机或一套计算机机群的。本领域技术人员应当理解这一变通,而不应以此约束本申请的网络部署方式的实施方式。
请参阅图1,图1为本申请一个实施例提供的一种测试用例推荐方法的应用场景示意图,该应用场景包括本申请实施例提供的服务器10和测试用户端20;其中,服务器10和测试用户端20可以通过有线通信链路、无线通信链路或者光纤电缆进行数据交互。
服务器10可以是提供各种服务的服务器,例如分析第一测试代码各函数及测试用例集之间的关系并存储,接收测试用户端发送的推荐请求并进行分析处理,获取对应的推荐测试用例并推送至测试用户端20。
测试用户端20可以是软件测试用户所在的一端,测试用户端20可以是具有显示屏的各种电子设备,包括但不限于智能手机、智能交互平板和个人计算机等。
在一个实施例中,本申请实施例提供的一种测试用例推荐方法可以在服务器10中执行。
现有的测试用例推荐方法通常是通过代码覆盖率关联测试用例,或者通过语义分析的方式来推荐,但是,上述方式推荐的测试用例往往不够准确,而若为了提升测试准确率推荐多余的测试用例,则会影响软件测试的效率。
因此,针对上述问题,如图1所示,本申请实施例提供了一种测试用例推荐方法,包括以下步骤:
S101:获取第一测试代码编译过程中各函数的被调用次数;
函数指的是第一测试代码中用于执行相应功能的函数代码,测试用例可以用于检测函数的功能的正确性。
具体地,可以对第一测试代码进行结构解析,从而获取第一测试代码中的各函数所在位置的位置信息,根据各函数所在位置的位置信息对各函数进行插桩,记录各函数执行过程中的被调用次数等函数执行信息。
其中,位置信息可用于插入调用检测工具,各函数所在位置的位置信息可以通过分析第一测试代码中的字节码,识别第一测试代码包含的各函数得到。
调用检测工具用于获取该函数在编译过程中的被调用次数,函数的被调用次数可以根据各函数所在位置的位置信息,在每一个函数所在位置插入被调用次数获取工具,获取该函数在编译过程中的被调用次数。
在一个实施例中,可以利用Jacoco工具对第一测试代码进行代码插桩,利用ASM分析第一测试代码对应的字节码,插入用于获取被调用次数的代码到各函数中,实现函数调用跟踪,从而得到第一测试代码中各函数的被调用次数。
其中,Jacoco工具是一个开源的覆盖率工具,其包含多种尺度的覆盖率计数器,包括指令级覆盖(Instructions,C0coverage),分支(Branches,C1coverage)、圈复杂度(CyclomaticComplexity)、行覆盖(Lines)、方法覆盖(non-abstract methods)、类覆盖(classes)等。Jacoco工具通过agent在字节码中插入boolean[]数组,来标记每句可执行代码,只要执行过相应语句,boolean[]数组会产生相应标记(True or False),这个boolean数组连同产生的标记称之为探针(Probe)。
ASM是一个功能比较齐全的java字节码操作与分析框架,通过ASM框架,可以动态的生成类或者增强已有类的功能。在本申请实施例中,基于ASM框架分析第一测试代码对应的字节码,并插入用于获取被调用次数的代码到各函数中,实现函数调用跟踪,从而得到第一测试代码中各函数的被调用次数。
或者,在另一个实施例中,也可以通过在函数体定义一个静态变量或者计数器记录调用函数的次数,当对应的函数被调用时,自动对该静态变量或者计数器进行赋值(例如增加1),通过读取该静态变量或者计数器的具体数值,得到函数的被调用次数。
S102:根据预设的被调用次数与热度等级之间的对应关系,获取各函数的热度等级信息;
可以根据被调用次数的大小来确定某个函数是否为测试代码执行对应业务功能的必要函数,在选取测试用例时,优选与测试代码所要实现的业务功能对应的必要函数具有较高的相关性的测试用例,以提高测试的准确性。
在本申请实施例中,利用热度等级来划分各函数在执行对应业务功能的重要性。对于被调用次数越多的函数,其对应的热度等级越高。其中,被调用次数与热度等级之间的对应关系可以根据用户的实际需求进行设置。
可选的,可以先对各函数的被调用次数按照从大至小进行排序,将被调用次数大于或等于预设次数阈值的函数确定为热点函数,将被调用次数小于预设次数阈值的函数确定为沉默函数,以此来确定各函数的热度等级信息。其中,预设次数阈值可以根据第一测试代码的实际执行情况进行具体设置。
应用程序中往往包含一些与其执行的业务功能无关的函数,例如日志函数、埋点函数等,对于与业务功能无关的函数无需对其进行测试,以降低测试数据量。因此,优选地,本申请实施例在获取各函数的热度等级信息之前,还包括以下步骤:
若函数的被调用次数小于预设阈值,确定该函数为非业务函数,去除所述非业务函数;
对于编译过程中被调用次数小于预设阈值,例如零调用的函数,可以视其与业务功能无关的非业务函数进行去除,无需推荐与其相关的测试用例,提高测试用例推荐效率和推荐准确性。
S103:利用预设的测试用例集对所述第一测试代码进行测试,获取所述测试用例集中的各测试用例在所述各函数的代码覆盖信息;
代码覆盖信息可用于确定测试过程中各测试用例与各函数的匹配情况,例如,可以确定该测试用例执行时是匹配到某个函数的头部、所有行或者是该函数的所有分支,根据测试用例与函数的匹配结果,确定各测试用例与各函数的关联性。
其中,代码覆盖信息可以包括行覆盖率、分支覆盖率等信息;其中,行覆盖率越高,分支覆盖率越高,表示其测试用例与该函数的关联性越高。
具体地,在利用预设的测试用例集对所述第一测试代码进行测试的步骤之前,还包括:在所述第一测试代码进行插入代码覆盖信息获取工具;
获取所述测试用例集中的各测试用例在所述各函数的代码覆盖信息的步骤包括:
读取所述代码覆盖信息获取工具记录的代码覆盖信息。
代码覆盖信息获取工具可以是Jacoco、Emma、Cobertura等覆盖信息获取工具,利用代码覆盖信息工具对第一测试代码进行代码插桩,收集测试过程中各测试用例与各函数的代码覆盖信息。
优选地,在本申请实施例中,利用Jacoco工具进行代码插桩,Jacoco工具是一个开源的覆盖率工具,其包含多种尺度的覆盖率计数器,包括指令级覆盖(Instructions,C0coverage),分支(Branches,C1coverage)、圈复杂度(CyclomaticComplexity)、行覆盖(Lines)、方法覆盖(non-abstract methods)、类覆盖(classes)等。Jacoco工具通过agent在字节码中插入boolean[]数组,来标记每句可执行代码,只要执行过相应语句,boolean[]数组会产生相应标记(True or False),这个boolean数组连同产生的标记称之为探针(Probe)。
S104:根据预设的代码覆盖信息与关联等级的对应关系,获取各测试用例与所述各函数之间的关联等级信息;
关联等级用于确定各测试用例与各函数的相关性,其中,当各测试用例与各函数的相关性越高,其对应的关联等级越高。
例如,当该测试用例执行时匹配到某个函数的头部,确定其与该函数的关联等级为简单关联,当测试用例执行时匹配到某个函数的所有行,确定其与该函数的关联等级为紧密关联,当测试用例执行时匹配到某个函数所有分支,确定其与该函数的关联等级为完全关联等等。
S105:获取待测试的第二测试代码,获取所述第二测试代码中各函数的热度等级信息及所述第二测试代码中各函数与所述测试用例集中各测试用例的关联等级信息;
其中,所述第二测试代码与所述第一测试代码对应;第二测试代码可以与第一测试代码相同或部分相同,或者,第二测试代码也可以为第一测试代码中用于执行某个业务功能的代码。
第二测试代码中各函数的热度等级信息以及与各测试用例的关联等级信息可以通过直接读取数据库中存储的第一测试代码的对应函数的热度等级信息以及关联等级信息得到。
S106:响应于输入的推荐请求,根据所述推荐请求获取第二测试代码的推荐测试用例;
推荐请求用于确定推荐测试用例,其中,所述推荐请求可以包括推荐测试用例的热度等级信息和关联等级信息,用户可以根据实际测试需求输入对应的热度等级及关联等级,例如,可以设置推荐测试用例为与热点函数紧密关联的测试用例,或者,设置推荐测试用例为与热点函数具有关联关系(包括简单关联、紧密关联、关键关联和完全关联)的测试用例,获取与用户输入的热度等级及关联等级对应的测试用例,作为本申请所要推送的推荐测试用例,上述方式可以形成最符合用户需求的推荐用例集,提高推荐测试用例的准确性和测试效率。
优选地,在数据库中预先存储有多种推荐策略,每一种推荐策略具有对应的推荐测试用例的热度等级信息和关联等级信息,在接收到用户输入的推荐请求时,通过读取数据库中预存的与该推荐请求对应的推荐策略,获取推荐测试用例的热度等级信息和关联等级信息,根据热度等级信息和关联等级信息自动生成最合适用户需求的推荐测试用例集合。
具体地,在一个实施例中,所述推荐请求包括最低热度等级阈值和最低关联等级阈值;
根据所述推荐请求获取第二测试代码的推荐测试用例的步骤具体包括:
将热度等级大于所述最低热度等级阈值且关联等级大于所述最低关联等级阈值的测试用例作为推荐测试用例。
其中,最低热度等级阈值和最低关联等级阈值可以根据用户的实际测试需求进行设置。
在获取各函数的热度等级信息以及获取各测试用例与所述各函数之间的关联等级信息之后,还包括以下步骤:
在另一个实施例中,当与用户输入的热度等级及关联等级对应的测试用例较多时,还可以根据每一个测试用例的热度等级以及关联等级对每一个测试用例进行评分,从中选取评分最高的测试用例作为推荐测试用例,以降低测试的数据运算量,提高测试效率。
具体地,所述推荐请求包括每一个热度等级对应的权重以及每一个关联等级对应的权重;
根据所述推荐请求获取第二测试代码的推荐测试用例的步骤具体包括:
根据所述第二测试代码中各函数的热度等级、热度等级对应的权重、关联等级和关联等级对应的权重获取每个测试用例的推荐度,将推荐度最高的前N个测试用例作为推荐测试用例;其中,N≥1。
每一个热度等级对应的权重可以根据用户的测试需求进行赋值,例如,可以赋值为0或1。
每一个关联等级对应的权重可以根据用户的测试需求进行赋值,例如,可以赋值为0或1。
推荐度可以是热度等级与热度等级对应的权重的乘积与关联等级和关联等级对应的权重的乘积之和,具体地,在本申请实施例中,每个测试用例的推荐度可以为热度等级对应的权重与关联等级对应的权重的乘积。
S107:将所述推荐测试用例推送至测试客户端。
推荐测试用例可以按照预设的显示方式显示在测试客户端的显示屏上,以供用户对上述推荐测试用例进行确认、选取等操作,其中,推荐测试用例在测试客户端的显示屏的显示方式可以根据用户的实际需求进行设置。
在本申请实施例中,根据第一测试代码中各函数的被调用次数划分各函数的热度等级,根据各测试用例与各函数之间的代码覆盖信息确定各测试用例与各函数的关联等级,再根据第二测试代码中各函数的热度等级信息、关联等级信息以及输入的推荐测试用例的热度等级信息和关联等级信息,自动生成最符合用户测试需求的推荐测试用例并推送至测试用户端,可以有效提高软件测试效率。
在一个实施例中,在利用预设的测试用例集对所述第一测试代码进行测试的步骤之后,还包括:
获取各测试用例集中的各测试用例在所述各函数的BUG信息;
根据测试用例集中的各测试用例在所述各函数的代码覆盖信息及BUG信息,根据预设的代码覆盖信息、BUG信息与关联等级的对应关系,获取各测试用例与所述各函数之间的关联等级信息。
具体地,关联等级可以包括简单关联、紧密关联、完全关联和关键关联,当该测试用例执行时匹配到某个函数的头部,确定其与该函数的关联等级为简单关联,当测试用例执行时匹配到某个函数的所有行,确定其与该函数的关联等级为紧密关联,当测试用例执行时匹配到某个函数所有分支,确定其与该函数的关联等级为完全关联,当测试用例执行时匹配到某个函数且发现bug的,确定其与该函数的关联等级为关键关联。
结合各测试用例在所述各函数的代码覆盖信息及BUG信息确定各测试用例与各函数之间的关联等级,对于发现bug的测试用例可以优先推荐,使得推荐测试用例更适配测试代码,提升软件测试准确性。
以下以一个具体的实施例对本申请的测试用例推荐方法进行具体说明:
在软件编译过程中,读取软件的全部代码,利用Jacoco等插件对函数代码进行代码插桩,利用ASM分析字节码,使用ASM实现一个调用链跟踪,分析得出的函数被调用次数进行排行,去除其中与业务功能无关的函数,根据函数的被调用次数进行热度等级划分:将被调用次数大于或等于预设次数阈值的函数确定为热点函数,将被调用次数小于预设次数阈值的函数确定为沉默函数,保存各个函数的热度等级信息至预设的数据库。
利用预设的测试用例集对软件的全部代码进行测试,每测试一条测试用例收集其代码覆盖率及BUG信息,获取各测试用例与各函数之间的关联等级信息:当该测试用例执行时匹配到某个函数的头部,确定其与该函数的关联等级为简单关联,当测试用例执行时匹配到某个函数的所有行,确定其与该函数的关联等级为紧密关联,当测试用例执行时匹配到某个函数所有分支,确定其与该函数的关联等级为完全关联,当测试用例执行时匹配到某个函数且发现bug的,确定其与该函数的关联等级为关键关联。
获取待测试的第二测试代码以及用户输入的推荐策略,从数据库中读取与用户输入的推荐策略对应的热度等级信息和关联等级信息,获取对应的测试用例作为推荐测试用例并推送至测试客户端。
如图3所示,在一个实施例中,在将所述推荐测试用例推送至测试客户端之后,还包括以下步骤:
在所述测试客户端显示测试用例推荐界面;其中,所述测试用例推荐界面包括所述推荐测试用例。
如图3所示,测试用例推荐界面显示有推荐测试用例的用例编号和用例名称;其中,推荐测试用例的用例名称可以根据每一个推荐测试用例校验的功能进行命名(例如用户名称可以为标签搜索框展示界面验证、标签搜索框搜索功能校验等),以便于用户及时了解推荐测试用例校验的功能。
其中,每一个推荐测试用例分别设有对应的选取控件305,用户可以根据需求勾选各推荐测试用例对应的选取控件305,选取其中的部分推荐测试用例或者全部推荐测试用例进行软件测试,提高软件测试效率。
优选地,在所述测试客户端显示测试用例推荐界面之后,还包括以下步骤:
响应于测试客户端对所述推荐测试用例的调整信息,调整所述测试用例推荐界面显示的推荐测试用例。
用户可以根据需求对推荐测试用例进行确认、删除、修改、重新排列或重新获取上述推荐测试用例,并重新生成和显示测试用例推荐界面。如图3所示,测试用例推荐界面还包括:批量修改控件301、重新推荐控件302、正序排列控件303和用例查询控件304;
其中,批量修改控件301可用于批量增加或删除测试用例推荐界面上显示的推荐测试用例。用户可以通过触发批量修改控件301,并通过勾选对应推荐测试用例的选取控件305,实现批量推荐测试用例的增加或删除。
重新推荐控件302可用于重新获取推荐测试用例,用户触发重新推荐控件302之后,重新执行本申请的步骤S106,得到推荐测试用例。
正序排列控件303可用于对显示的多个推荐测试用例进行排序,其中,排序方式可以是根据时间、名称、功能或其它用户预先设置的排序方式进行排序,当用户触发正序排列控件303时,对测试用例推荐界面上显示的推荐测试用例进行排序,显示排序后的推荐测试用例。
用例查询控件304可用于从多个推荐测试用例快速获取一个或多个推荐测试用例,用户可以通过触发用例查询控件304,输入查询信息(例如推荐测试用例的用例编号、用例名称、功能等),以快速获取满足用户需求的推荐测试用例。
本申请实施例的测试用例推荐方法可以自动生成与用户测试需求相关的最小用例集,降低无效或冗余测试用例的推荐,提高测试用例推荐的准确性,提高软件测试效率。
如图4所示,本申请实施例还提供了一种测试用例推荐装置,该装置可以通过软件、硬件或两者的结合实现成为电子设备的全部或一部分。该装置包括:
调用次数获取模块401,用于获取第一测试代码编译过程中各函数的被调用次数;
热度等级获取模块402,用于根据预设的被调用次数与热度等级之间的对应关系,获取各函数的热度等级信息;
代码覆盖信息获取模块403,用于利用测试用例集对所述第一测试代码进行测试,获取所述测试用例集中的各测试用例在所述各函数的代码覆盖信息;
关联等级获取模块404,用于根据预设的代码覆盖信息与关联等级的对应关系,获取各测试用例与所述各函数之间的关联等级信息;
第二测试代码获取模块405,用于获取待测试的第二测试代码,获取所述第二测试代码中各函数的热度等级信息及所述第二测试代码中各函数与所述测试用例集中各测试用例的关联等级信息;其中,所述第二测试代码与所述第一测试代码对应;
推荐测试用例获取模块406,用于响应于输入的推荐请求,根据所述推荐请求获取所述第二测试代码的推荐测试用例;其中,所述推荐请求包括推荐测试用例的热度等级信息和关联等级信息;
推荐模块407,用于将所述推荐测试用例推送至测试客户端。
需要说明的是,上述实施例提供的测试用例推荐装置在执行测试用例推荐方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分为不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的测试用例推荐装置与测试用例推荐方法属于同一构思,其体现实现过程详见方法实施例,这里不再赘述。
本实施例提供一种电子设备,可以用于执行本申请实施例的测试用例推荐方法的全部或部分步骤。对于本实施例中未披露的细节,请参照本申请的方法实施例。
请参阅图5,图5为本申请实施例提供的电子设备的结构示意图。所述电子设备500可以但不限于是各种服务器、个人计算机、笔记本电脑、智能手机、平板电脑等设备的一个或多个的组合。
在本申请较佳实施例中,所述电子设备500包括存储器501、至少一个处理器502、至少一条通信总线503及收发器504。
本领域技术人员应该了解,图4示出的电子设备的结构并不构成本申请实施例的限定,既可以是总线型结构,也可以是星形结构,所述电子设备500还可以包括比图示更多或更少的其他硬件或者软件,或者不同的部件布置。
在一些实施例中,所述电子设备500是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路、可编程门阵列、数字处理器及嵌入式设备等。所述电子设备500还可包括客户设备,所述客户设备包括但不限于任何一种可与客户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互的电子产品,例如,个人计算机、平板电脑、智能手机、数码相机等。
需要说明的是,所述电子设备500仅为举例,其他现有的或今后可能出现的电子产品如可适应于本申请,也应包含在本申请的保护范围以内,并以引用方式包含于此。
在一些实施例中,所述存储器501中存储有计算机程序,所述计算机程序被所述至少一个处理器502执行时实现如所述实施例的测试用例推荐方法中的全部或者部分步骤。所述存储器501包括只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable Read-Only Memory,PROM)、可擦除可编程只读存储器(ErasableProgrammable Read-Only Memory,EPROM)、一次可编程只读存储器(One-timeProgrammable Read-Only Memory,OTPROM)、电子擦除式可复写只读存储器(Electrically-Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(CompactDisc Read-Only Memory,CD-ROM)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其他介质。
在一些实施例中,所述至少一个处理器502是所述电子设备500的控制核心(Control Unit),利用各种接口和线路连接整个电子设备500的各个部件,通过运行或执行存储在所述存储器501内的程序或者模块,以及调用存储在所述存储器501内的数据,以执行电子设备500的各种功能和处理数据。例如,所述至少一个处理器502执行所述存储器中存储的计算机程序时实现本申请实施例中所述的测试用例推荐方法的全部或者部分步骤;或者实现测试用例推荐装置的全部或者部分功能。所述至少一个处理器502可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(CentralProcessing unit,CPU)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。
在一些实施例中,所述至少一条通信总线503被设置为实现所述存储器501以及所述至少一个处理器502等之间的连接通信。
所述电子设备500还可以包括多种传感器、蓝牙模块、Wi-Fi模块等,在此不再赘述。
本实施例提供一种计算机可读存储介质,其上储存有计算机程序,所述指令适于由处理器加载并执行本申请实施例的测试用例推荐方法,具体执行过程可以参见方法实施例的具体说明,在此不进行赘述。
对于设备实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的设备实施例仅仅是示意性的,其中所述作为分离部件说明的组件可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (11)
1.一种测试用例推荐方法,其特征在于,包括以下步骤:
获取第一测试代码编译过程中各函数的被调用次数;
根据预设的被调用次数与热度等级之间的对应关系,获取各函数的热度等级信息;
利用预设的测试用例集对所述第一测试代码进行测试,获取所述测试用例集中的各测试用例在所述各函数的代码覆盖信息;
根据预设的代码覆盖信息与关联等级的对应关系,获取各测试用例与所述各函数之间的关联等级信息;
获取待测试的第二测试代码,获取所述第二测试代码中各函数的热度等级信息及所述第二测试代码中各函数与所述测试用例集中各测试用例的关联等级信息;其中,所述第二测试代码与所述第一测试代码对应;
响应于输入的推荐请求,根据所述推荐请求获取第二测试代码的推荐测试用例;其中,所述推荐请求包括推荐测试用例的热度等级信息和关联等级信息;
将所述推荐测试用例推送至测试客户端。
2.根据权利要求1所述的测试用例推荐方法,其特征在于,在利用预设的测试用例集对所述第一测试代码进行测试的步骤之前,还包括:
在所述第一测试代码进行插入代码覆盖信息获取工具;其中,所述代码覆盖信息获取工具用于记录测试过程中各测试用例在所述各函数的代码覆盖信息;
获取所述测试用例集中的各测试用例在所述各函数的代码覆盖信息的步骤包括:
读取所述代码覆盖信息获取工具记录的代码覆盖信息。
3.根据权利要求2所述的测试用例推荐方法,其特征在于,在利用预设的测试用例集对所述第一测试代码进行测试的步骤之后,还包括:
获取各测试用例集中的各测试用例在所述各函数的BUG信息;
根据测试用例集中的各测试用例在所述各函数的代码覆盖信息及BUG信息,根据预设的代码覆盖信息、BUG信息与关联等级的对应关系,获取各测试用例与所述各函数之间的关联等级信息。
4.根据权利要求1所述的测试用例推荐方法,其特征在于,所述推荐请求包括每一个热度等级对应的权重以及每一个关联等级对应的权重;
根据所述推荐请求获取第二测试代码的推荐测试用例的步骤具体包括:
根据所述第二测试代码中各函数的热度等级、热度等级对应的权重、关联等级和关联等级对应的权重获取每个测试用例的推荐度,将推荐度最高的前N个测试用例作为推荐测试用例;其中,N≥1。
5.根据权利要求4所述的测试用例推荐方法,其特征在于,所述每个测试用例的推荐度为所述热度等级对应的权重与所述关联等级对应的权重的乘积。
6.根据权利要求1所述的测试用例推荐方法,其特征在于,所述推荐请求包括最低热度等级阈值和最低关联等级阈值;
根据所述推荐请求获取第二测试代码的推荐测试用例的步骤具体包括:
将热度等级大于所述最低热度等级阈值且关联等级大于所述最低关联等级阈值的测试用例作为推荐测试用例。
7.根据权利要求1所述的测试用例推荐方法,其特征在于,在获取各函数的热度等级信息之前,还包括以下步骤:
若函数的被调用次数小于预设阈值,确定该函数为非业务函数,去除所述非业务函数。
8.根据权利要求1所述的测试用例推荐方法,其特征在于,将所述推荐测试用例推送至测试客户端之后,还包括以下步骤:
在所述测试客户端显示测试用例推荐界面;其中,所述测试用例推荐界面包括所述推荐测试用例;
响应于测试客户端对所述推荐测试用例的调整信息,调整所述测试用例推荐界面显示的推荐测试用例。
9.一种测试用例推荐装置,其特征在于,包括:
调用次数获取模块,用于获取第一测试代码编译过程中各函数的被调用次数;
热度等级获取模块,用于根据预设的被调用次数与热度等级之间的对应关系,获取各函数的热度等级信息;
代码覆盖信息获取模块,用于利用测试用例集对所述第一测试代码进行测试,获取所述测试用例集中的各测试用例在所述各函数的代码覆盖信息;
关联等级获取模块,用于根据预设的代码覆盖信息与关联等级的对应关系,获取各测试用例与所述各函数之间的关联等级信息;
第二测试代码获取模块,用于获取待测试的第二测试代码,获取所述第二测试代码中各函数的热度等级信息及所述第二测试代码中各函数与所述测试用例集中各测试用例的关联等级信息;其中,所述第二测试代码与所述第一测试代码对应;
推荐测试用例获取模块,用于响应于输入的推荐请求,根据所述推荐请求获取第二测试代码的推荐测试用例;其中,所述推荐请求包括推荐测试用例的热度等级信息和关联等级信息;
推荐模块,用于将所述推荐测试用例推送至测试客户端。
10.一种计算机可读存储介质,其上储存有计算机程序,其特征在于:该计算机程序被处理器执行时实现如权利要求1-8任意一项所述的测试用例推荐方法的步骤。
11.一种电子设备,其特征在于:包括存储器、处理器以及存储在所述存储器中并可被所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1-8中任意一项所述的测试用例推荐方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210122936.6A CN116610552A (zh) | 2022-02-09 | 2022-02-09 | 测试用例推荐方法、装置、存储介质和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210122936.6A CN116610552A (zh) | 2022-02-09 | 2022-02-09 | 测试用例推荐方法、装置、存储介质和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116610552A true CN116610552A (zh) | 2023-08-18 |
Family
ID=87682383
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210122936.6A Pending CN116610552A (zh) | 2022-02-09 | 2022-02-09 | 测试用例推荐方法、装置、存储介质和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116610552A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117667750A (zh) * | 2024-01-31 | 2024-03-08 | 北京纷扬科技有限责任公司 | 测试用例生成、测试方法、装置、计算机设备及存储介质 |
-
2022
- 2022-02-09 CN CN202210122936.6A patent/CN116610552A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117667750A (zh) * | 2024-01-31 | 2024-03-08 | 北京纷扬科技有限责任公司 | 测试用例生成、测试方法、装置、计算机设备及存储介质 |
CN117667750B (zh) * | 2024-01-31 | 2024-05-14 | 北京纷扬科技有限责任公司 | 测试用例生成、测试方法、装置、计算机设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10789304B2 (en) | Method and system for measuring user engagement with content items | |
CN105283866B (zh) | 包括使用相似频率的优化分析的应用跟踪方法和系统 | |
US20230041467A1 (en) | Method and system for measuring user engagement with content items | |
US20210279164A1 (en) | Real Time Application Error Identification and Mitigation | |
US20090281819A1 (en) | Data driven component reputation | |
CN110546619B (zh) | 自动确定检测到的问题是否是bug的方法、系统和介质 | |
US20100100512A1 (en) | Method and arrangement for ranking of live web applications | |
CN105283851A (zh) | 用于选择跟踪目标的成本分析 | |
CN105122212A (zh) | 自动化跟踪系统中的周期性优化 | |
CN105283848A (zh) | 用分布式目标来进行应用跟踪 | |
CA2428404A1 (en) | Information provider | |
CN105122234A (zh) | 使用成本分析来部署跟踪目标 | |
CN102402479B (zh) | 用于静态分析的中间表示结构 | |
US20080307387A1 (en) | Software development apparatus and method for providing performance prediction | |
CN110362479B (zh) | 系统升级测试方法和系统 | |
CN105577472A (zh) | 一种数据采集测试方法和装置 | |
CN111897723A (zh) | 一种测试应用的方法及装置 | |
CN116610552A (zh) | 测试用例推荐方法、装置、存储介质和电子设备 | |
CN110781052A (zh) | 离线监控方法、装置、计算机设备及存储介质 | |
KR20230079292A (ko) | 빅데이터 기반의 사용성 테스트 방법 및 장치 | |
CN110347577B (zh) | 一种页面测试方法、装置及其设备 | |
CN112882937A (zh) | 测试用例的处理方法、装置、计算机设备及存储介质 | |
CN105391602A (zh) | 一种数据采集测试方法和装置 | |
CN116701164B (zh) | 测试方法及电子设备 | |
US20050015400A1 (en) | Existing content utilization support method, information processing device, program, and recording medium |
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 |