CN111309635B - 测试用例生成方法、装置、服务器及存储介质 - Google Patents

测试用例生成方法、装置、服务器及存储介质 Download PDF

Info

Publication number
CN111309635B
CN111309635B CN202010223571.7A CN202010223571A CN111309635B CN 111309635 B CN111309635 B CN 111309635B CN 202010223571 A CN202010223571 A CN 202010223571A CN 111309635 B CN111309635 B CN 111309635B
Authority
CN
China
Prior art keywords
request
code
online
test
execution path
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
Application number
CN202010223571.7A
Other languages
English (en)
Other versions
CN111309635A (zh
Inventor
苏慧
张蕾
张帆
刘东飞
邰云剑
白凤伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing QIYI Century Science and Technology Co Ltd
Original Assignee
Beijing QIYI Century Science and Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing QIYI Century Science and Technology Co Ltd filed Critical Beijing QIYI Century Science and Technology Co Ltd
Priority to CN202010223571.7A priority Critical patent/CN111309635B/zh
Publication of CN111309635A publication Critical patent/CN111309635A/zh
Application granted granted Critical
Publication of CN111309635B publication Critical patent/CN111309635B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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

测试用例生成方法、装置、服务器及存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种测试用例生成方法、装置、服务器及存储介质。
背景技术
测试用例,可以简单的认为是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,用于核实是否满足某个特定软件需求。为了衡量测试用例的设计完善程度,提升回归测试对线上真实场景的覆盖率,可以借助代码覆盖率工具,将一段时间内所有线上请求(即用户真实请求)的代码执行路径与所有测试用例对应的测试请求的代码执行路径进行对比,从而计算未被测试请求覆盖的代码,并据此完善和补充测试用例。
目前虽然可以借助代码覆盖率工具,将一段时间内所有线上请求的代码执行路径与所有测试请求的代码执行路径进行对比,从而计算未被测试请求覆盖的代码,并据此完善和补充测试用例,但是这样仅仅可以计算出未被测试请求覆盖的代码,针对未被测试请求覆盖的代码完善和补充测试用例,其中涉及到的相关参数(例如URL、输入参数)并未示出,造成完善和补充测试用例困难,测试效率较低。
发明内容
本发明实施例的目的在于提供一种测试用例生成方法、装置、服务器及存储介质,以实现降低完善和补充测试用例的困难程度,提高测试效率的有益效果。具体技术方案如下:
在本发明实施例的第一方面,首先提供了一种测试用例生成方法,所述方法包括:
从线上代理端获取第一代码覆盖率信息,以及从测试代理端获取第二代码覆盖率信息;
从线上代理端获取第一代码覆盖率信息,以及从测试代理端获取第二代码覆盖率信息;
解析所述第一代码覆盖率信息中每个线上请求对应的代码执行路径以及相关参数,解析所述第二代码覆盖率信息中每个测试请求对应的代码执行路径;
若存在所述线上请求对应的代码执行路径与任一测试请求对应的代码执行路径不一致,则确定所述线上请求对应的相关参数为生成测试用例的目标参数,并根据所述目标参数生成测试用例。
在一个可选的实施方式中,所述确定所述线上请求对应的相关参数为生成测试用例的目标参数,包括:
判断处理所述线上请求的服务是否满足预设要求;
若处理所述线上请求的服务满足预设要求,则确定所述线上请求对应的相关参数为生成测试用例的目标参数。
在一个可选的实施方式中,所述方法还包括:
若处理所述线上请求的服务未满足预设要求,计算所述线上请求对应的代码执行路径与任一测试请求对应的代码执行路径的相似度;
基于所述相似度从任一测试请求对应的代码执行路径中,选取目标测试请求对应的目标代码执行路径;
基于所述线上请求对应的代码执行路径以及所述目标测试请求对应的目标代码执行路径计算差异代码,并生成差异代码报告。
在一个可选的实施方式中,所述计算所述线上请求对应的代码执行路径与任一测试请求对应的代码执行路径的相似度,包括:
利用Jaccard系数计算所述线上请求对应的代码执行路径与任一测试请求对应的代码执行路径的相似度。
在一个可选的实施方式中,所述基于所述相似度从任一测试请求对应的代码执行路径中,选取目标测试请求对应的目标代码执行路径,包括:
从任一测试请求对应的代码执行路径中,选取与所述线上请求对应的代码执行路径相似度最高的测试请求对应的代码执行路径,作为目标测试请求对应的目标代码执行路径。
在一个可选的实施方式中,所述第一代码覆盖率信息具体通过以下方式得到:
所述线上代理端在接收到线上请求的情况下,调用目标字节码为所述线上请求生成追溯标识,其中,所述目标字节码包括通过字节码注入技术预先在处理所述线上请求的服务中所注入的字节码;
所述线上代理端调用所述目标字节码获取所述线上请求中携带的相关参数;
所述线上代理端在所述线上请求被所述服务处理的过程中,调用所述目标字节码统计所述服务中代码执行路径;
所述线上代理端以所述追溯标识为维度存储所述线上请求对应的代码执行路径以及相关参数,生成第一代码覆盖率信息。
在一个可选的实施方式中,所述生成第一代码覆盖率信息,包括:
基于预设的采集规则对存储的所述线上请求对应的代码执行路径以及相关参数进行采集;
根据所采集的所述线上请求对应的代码执行路径以及相关参数生成第一代码覆盖率信息。
在一个可选的实施方式中,所述第二代码覆盖率信息具体通过以下方式得到:
所述测试代理端在接收到测试请求的情况下,调用目标字节码为所述测试请求生成追溯标识,其中,所述目标字节码包括通过字节码注入技术预先在处理所述测试请求的服务中所注入的字节码;
所述测试代理端调用所述目标字节码获取所述测试请求中携带的相关参数;
所述测试代理端在所述测试请求被所述服务处理的过程中,调用所述目标字节码统计所述服务中代码执行路径;
所述测试代理端以所述追溯标识为维度存储所述测试请求对应的代码执行路径以及相关参数,生成第二代码覆盖率信息。
在本发明实施例的第二方面,还提供了一种测试用例生成装置,所述装置包括:
信息获取模块,用于从线上代理端获取第一代码覆盖率信息,以及从测试代理端获取第二代码覆盖率信息;
第一解析模块,用于解析所述第一代码覆盖率信息中每个线上请求对应的代码执行路径以及相关参数;
第二解析模块,用于解析所述第二代码覆盖率信息中每个测试请求对应的代码执行路径;
参数确定模块,用于若存在所述线上请求对应的代码执行路径与任一测试请求对应的代码执行路径不一致,则确定所述线上请求对应的相关参数为生成测试用例的目标参数;
用例生成模块,用于根据所述目标参数生成测试用例。
在本发明实施例的第三方面,还提供了一种服务器,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述第一方面中任一所述的测试用例生成方法。
在本发明实施例的第四方面,还提供了一种存储介质,所述存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面中任一所述的测试用例生成方法。
在本发明实施例的第五方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面中任一所述的测试用例生成方法。
本发明实施例提供的技术方案,通过从线上代理端获取第一代码覆盖率信息,以及从测试代理端获取第二代码覆盖率信息,解析第一代码覆盖率信息中每个线上请求对应的代码执行路径以及相关参数,解析第二代码覆盖率信息中每个测试请求对应的代码执行路径,若存在线上请求对应的代码执行路径与任一测试请求对应的代码执行路径不一致,则确定线上请求对应的相关参数为生成测试用例的目标参数,并根据目标参数生成测试用例。如此在存在线上请求对应的代码执行路径与任一测试请求对应的代码执行路径不一致的情况下,可以确定该线上请求对应的相关参数为生成测试用例的目标参数,并据此生成测试用例,可以有效降低完善和补充测试用例的困难程度,提高测试效率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中示出的一种测试用例生成系统架构示意图;
图2为本发明实施例中示出的一种生成第一代码覆盖率信息的实施流程示意图;
图3为本发明实施例中示出的一种生成第二代码覆盖率信息的实施流程示意图;
图4为本发明实施例中示出的一种测试用例生成方法的实施流程示意图;
图5为本发明实施例中示出的一种测试用例生成装置的结构示意图;
图6为本发明实施例中示出的一种服务器的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明实施例中,预先在被测服务(或者线上服务)上部署线上代理端以及测试代理端,例如如图1所示的测试用例生成系统架构示意图,在被测服务(或者线上服务)上部署线上代理端(Java Agent1)以及测试代理端(Java Agent2),线上代理端以及测试代理端分别与服务端建立socket连接。
对于线上代理端而言,如图2所示,可以执行以下步骤生成第一代码覆盖率信息:
S201,所述线上代理端在接收到线上请求的情况下,调用目标字节码为所述线上请求生成追溯标识,其中,所述目标字节码包括通过字节码注入技术预先在处理所述线上请求的服务中所注入的字节码;
在本发明实施例中,通过字节码注入技术预先在处理该线上请求的服务中注入一段字节码,即目标字节码包括通过字节码注入技术预先在处理该线上请求的服务中所注入的字节码。
在接收到该线上请求的情况下,线上代理端可以调用上述目标字节码为该线上请求生成追溯标识,该追溯标识可以是traceid。其中,该追溯标识用于唯一标识该线上请求。
例如,在接收到线上请求A的情况下,线上代理端可以调用该目标字节码为该线上请求A生成traceid1,该traceid1是唯一的;在接收到线上请求B的情况下,线上代理端可以调用该目标字节码为该线上请求B生成traceid2,该traceid2是唯一的。
S202,所述线上代理端调用所述目标字节码获取所述线上请求中携带的相关参数;
对于上述线上请求,在接收到该线上请求的情况下,一方面线上代理端可以调用上述目标字节码为该线上请求生成追溯标识,另一方面线上代理端调用上述目标字节码获取该线上请求中携带的相关参数。
对于线上请求中携带的相关参数,至少包括URL以及输入参数等相关参数,当然还可以包括其它相关参数,本发明实施例对此不作限定。
例如,对于线上请求A,线上代理端调用上述目标字节码获取该线上请求A中携带的URL以及输入参数等相关参数。
S203,所述线上代理端在所述线上请求被所述服务处理的过程中,调用所述目标字节码统计所述服务中代码执行路径;
对于上述线上请求,在该线上请求被服务处理的过程中,线上代理端调用该目标字节码统计服务中代码执行路径,如此对于任意一条线上请求,本发明实施例中线上代理端均可以通过该目标字节码统计服务中代码执行路径。
例如,对于线上请求A以及线上请求B,在线上请求A被服务处理的过程中,线上代理端调用该目标字节码统计服务中代码执行路径1,在线上请求B被服务处理的过程中,线上代理端调用该目标字节码统计服务中代码执行路径2,如此对于每条线上请求,均可以得到对应的代码执行路径,如下表1所示。
线上请求 代码执行路径
线上请求A 代码执行路径1
线上请求B 代码执行路径2
表1
对于代码执行路径,假设服务中存在10行代码,则代码执行路径可以是执行了第一行代码、第三行代码、第五行代码、第六行代码、第七行代码等。
S204,所述线上代理端以所述追溯标识为维度存储所述线上请求对应的代码执行路径以及相关参数,生成第一代码覆盖率信息。
对于上述线上请求对应的代码执行路径,以及线上请求对应的相关参数,本发明实施例中线上代理端以上述追溯标识为维度进行存储,并生成第一代码覆盖率信息,该第一代码覆盖率信息可以如下表2所示。其中,第一代码覆盖率信息具体可以以文件形式存在,相应的可以称为第一代码覆盖率文件。
表2
如上述表2所示,在本发明实施例中,以上述追溯标识为维度,对于线上请求对应的代码执行路径,以及线上请求对应的相关参数进行统计,如此可以得到每个线上请求对应的代码执行路径,以及线上请求对应的相关参数。
对于线上请求,由于数量众多,本发明实施例中线上代理端可以基于预设的采集规则对存储的线上请求对应的代码执行路径以及相关参数进行采集,根据所采集的线上请求对应的代码执行路径以及相关参数生成第一代码覆盖率信息。
例如,对于存储的线上请求对应的代码执行路径以及相关参数,本发明实施例中线上代理端每天(或者每小时)从其中采集100条线上请求对应的代码执行路径以及相关参数,根据这100条线上请求对应的代码执行路径以及相关参数生成第一代码覆盖率信息。如此对于该第一代码覆盖率信息,可以包括这100条线上请求对应的代码执行路径以及相关参数。
对于测试代理端而言,如图3所示,可以执行以下步骤生成第二代码覆盖率信息:
S301,所述测试代理端在接收到测试请求的情况下,调用目标字节码为所述测试请求生成追溯标识,其中,所述目标字节码包括通过字节码注入技术预先在处理所述测试请求的服务中所注入的字节码;
在本发明实施例中,通过字节码注入技术预先在处理该测试请求的服务中注入一段字节码,即目标字节码包括通过字节码注入技术预先在处理该测试请求的服务中所注入的字节码。
在接收到测试请求的情况下,测试代理端可以调用上述目标字节码为该测试请求生成追溯标识,该追溯标识可以是traceid。其中,该追溯标识用于唯一标识该测试请求。
例如,在接收到测试请求C的情况下,测试代理端可以调用上述目标字节码为该测试请求C生成traceid3,该traceid3是唯一的;在接收到测试请求D的情况下,测试代理端可以调用上述目标字节码为该测试请求D生成traceid4,该traceid4是唯一的。
S302,所述测试代理端调用所述目标字节码获取所述测试请求中携带的相关参数;
对于上述测试请求,在接收到该测试请求的情况下,一方面测试代理端可以调用上述目标字节码为该测试请求生成追溯标识,另一方面测试代理端调用上述目标字节码获取该测试请求中携带的相关参数。
对于测试请求中携带的相关参数,至少包括URL以及输入参数等相关参数,当然还可以包括其它相关参数,本发明实施例对此不作限定。
例如,对于测试请求C,测试代理端调用上述目标字节码获取该测试请求C中携带的URL以及输入参数等相关参数。
S303,所述测试代理端在所述测试请求被所述服务处理的过程中,调用所述目标字节码统计所述服务中代码执行路径;
对于上述测试请求,在该测试请求被服务处理的过程中,测试代理端调用该目标字节码统计服务中代码执行路径,如此对于任意一条测试请求,本发明实施例中测试代理端均可以通过该目标字节码统计服务中代码执行路径。
例如,对于测试请求C以及测试请求D,在测试请求C被服务处理的过程中,测试代理端可以调用该目标字节码统计服务中代码执行路径3,在测试请求D被服务处理的过程中,测试代理端可以调用该目标字节码统计服务中代码执行路径4,如此对于每条测试请求,均可以得到对应的代码执行路径,如下表3所示。
测试请求 代码执行路径
测试请求C 代码执行路径3
测试请求D 代码执行路径4
表3
对于代码执行路径,假设服务中存在10行代码,则代码执行路径可以是执行了第一行代码、第二行代码、第五行代码、第六行代码、第八行代码等。
S304,所述测试代理端以所述追溯标识为维度存储所述测试请求对应的代码执行路径以及相关参数,生成第二代码覆盖率信息。
对于上述测试请求对应的代码执行路径,以及测试请求对应的相关参数,本发明实施例中测试代理端以上述追溯标识为维度进行存储,并生成第二代码覆盖率信息,该第二代码覆盖率信息可以如下表4所示。其中,第二代码覆盖率信息具体可以以文件形式存在,相应的可以称为第二代码覆盖率文件。
表4
如上述表4所示,在本发明实施例中,以上述追溯标识为维度,对于测试请求对应的代码执行路径,以及测试请求对应的相关参数进行统计,如此可以得到每个测试请求对应的代码执行路径,以及测试请求对应的相关参数。
通过上述步骤,对于线上代理端而言,可以生成第一代码覆盖率信息,对于测试代理端而言,可以生成第二代码覆盖率信息。
基于上述第一代码覆盖率信息以及第二代码覆盖率信息,如图4所示,为本发明实施例提供的一种测试用例生成方法的实施流程示意图,该方法具体可以包括以下步骤:
S401,从线上代理端获取第一代码覆盖率信息,以及从测试代理端获取第二代码覆盖率信息;
在本发明实施例中,服务端可以从线上代理端获取第一代码覆盖率信息,以及从测试代理端获取第二代码覆盖率信息。
例如如图1所示,线上代理端以及测试代理端分别与服务端建立socket连接,服务端可以从Java Agent1获取第一代码覆盖率信息,从Java Agent2端获取第二代码覆盖率信息。
S402,解析所述第一代码覆盖率信息中每个线上请求对应的代码执行路径以及相关参数,解析所述第二代码覆盖率信息中每个测试请求对应的代码执行路径;
对于上述第一代码覆盖率信息,服务端可以解析其中每个线上请求对应的代码执行路径以及相关参数,对于上述第二代码覆盖率信息,服务端可以解析其中每个测试请求对应的代码执行路径以及相关参数。
例如,对于上述第一代码覆盖率信息,服务端可以解析线上请求A对应的代码执行路径以及相关参数,可以解析线上请求B对应的代码执行路径以及相关参数;对于上述第二代码覆盖率信息,服务端可以解析测试请求C对应的代码执行路径以及相关参数,解析测试请求D对应的代码执行路径以及相关参数。
S403,若存在所述线上请求对应的代码执行路径与任一测试请求对应的代码执行路径不一致,则确定所述线上请求对应的相关参数为生成测试用例的目标参数,并根据所述目标参数生成测试用例。
对于上述每个线上请求对应的代码执行路径,服务端将其与任一测试请求对应的代码执行路径进行对比;
如果存在线上请求对应的代码执行路径与测试请求对应的代码执行路径一致,则表示该线上请求已被测试请求覆盖;
如果存在线上请求对应的代码执行路径与任一测试请求对应的代码执行路径不一致,则表示该线上请求未被测试请求覆盖,可以确定该线上请求对应的相关参数为生成测试用例的目标参数,并根据该目标参数生成测试用例,如此可以生成一条与线上请求一致的测试请求。
另外,由于业务场景复杂程度不同,相应的服务复杂程度略有不同,本发明实施例可以针对不同的服务打标签或者划分复杂程度等级,以区分服务复杂程度,对于比较简单的服务,本发明实施例可以确定该线上请求对应的相关参数为生成测试用例的目标参数,并根据该目标参数生成测试用例。
为此,本发明实施例服务端可以判断处理该线上请求的服务是否满足预设要求,即判断处理该线上请求的服务对应的标签是否属于预设标签,若处理该线上请求的服务对应的标签属于预设标签,表示该服务比较简单,可以直接确定该线上请求对应的相关参数为生成测试用例的目标参数,并根据该目标参数生成测试用例。
或者,本发明实施例服务端可以判断处理该线上请求的服务是否满足预设要求,即判断处理该线上请求的服务对应的复杂程度等级是否属于预设复杂程度等级,若处理该线上请求的服务对应的复杂程度等级属于预设复杂程度等级,表示该服务比较简单,可以直接确定该线上请求对应的相关参数为生成测试用例的目标参数,并根据该目标参数生成测试用例。
或者,本发明实施例服务端可以判断处理该线上请求的服务是否满足预设要求,即判断处理该线上请求的服务对应的服务标识是否在预设标识列表中,若处理该线上请求的服务对应的服务标识在预设标识列表中,表示该服务比较简单,可以直接确定该线上请求对应的相关参数为生成测试用例的目标参数,并根据该目标参数生成测试用例。
而对于处理该线上请求的服务对应的标签未属于预设标签的情况,或者,处理该线上请求的服务对应的复杂程度等级未属于预设复杂程度等级的情况,或者处理该线上请求的服务对应的服务标识未在预设标识列表中的情况,本发明实施例服务端可以计算该线上请求对应的代码执行路径与任一测试请求对应的代码执行路径的相似度,基于该相似度从任一测试请求对应的代码执行路径中,选取目标测试请求对应的目标代码执行路径,基于该线上请求对应的代码执行路径以及该目标测试请求对应的目标代码执行路径计算差异代码,并生成差异代码报告,从而测试人员可以根据该差异代码报告、目标测试请求对应的相关参数以及该线上请求对应的相关参数,对缺失的测试用例进行补充,如此同样可以降低完善和补充测试用例的困难程度,提高测试效率。
由于利用Jaccard系数计算相似度相对简单、方便,可以极大得减轻服务端压力,因此本发明实施例服务端可以利用Jaccard系数计算该线上请求对应的代码执行路径与任一测试请求对应的代码执行路径的相似度。
例如,对于线上请求对应的代码执行路径A,以及其中一个测试请求对应的代码执行路径B,Jaccard系数定义为A与B交集的大小与A与B并集的大小的比值,定义如下:
J(A,B)=|A∩B|/|A∪B|,其中J(A,B)为A与B的相似度;
假设,对于线上请求对应的代码执行路径A为{1,2,3,4},其中,1指代第1行代码,2指代第2行代码,3指代第3行代码,以此类推;
其中一个测试请求对应的代码执行路径B为{3,4,5,6},其中,3指代第3行代码,4指代第4行代码,5指代第5行代码,以此类推;
将上述线上请求对应的代码执行路径A以及其中一个测试请求对应的代码执行路径B,代入上述公式可得:
J(A,B)={3,4}/{1,2,3,4,5,6}=1/3;
由此可知线上请求对应的代码执行路径A与其中一个测试请求对应的代码执行路径B之间的相似度为1/3。
而对于目标测试请求对应的目标代码执行路径,本发明实施例服务端可以从任一测试请求对应的代码执行路径中,选取与该线上请求对应的代码执行路径相似度最高的测试请求对应的代码执行路径,作为目标测试请求对应的目标代码执行路径。
通过上述对本发明实施例提供的技术方案的描述,通过从线上代理端获取第一代码覆盖率信息,以及从测试代理端获取第二代码覆盖率信息,解析第一代码覆盖率信息中每个线上请求对应的代码执行路径以及相关参数,解析第二代码覆盖率信息中每个测试请求对应的代码执行路径,若存在线上请求对应的代码执行路径与所有测试请求对应的代码执行路径不一致,则确定线上请求对应的相关参数为生成测试用例的目标参数,并根据目标参数生成测试用例。如此在存在线上请求对应的代码执行路径与任一测试请求对应的代码执行路径不一致的情况下,可以确定该线上请求对应的相关参数为生成测试用例的目标参数,并据此生成测试用例,可以有效降低完善和补充测试用例的困难程度,提高测试效率。
与上述方法实施例相对应,本发明实施例还提供了一种测试用例生成装置,如图5所示,该装置可以包括:信息获取模块510、第一解析模块520、第二解析模块530、参数确定模块540、用例生成模块550。
信息获取模块510,用于从线上代理端获取第一代码覆盖率信息,以及从测试代理端获取第二代码覆盖率信息;
第一解析模块520,用于解析所述第一代码覆盖率信息中每个线上请求对应的代码执行路径以及相关参数;
第二解析模块530,用于解析所述第二代码覆盖率信息中每个测试请求对应的代码执行路径;
参数确定模块540,用于若存在所述线上请求对应的代码执行路径与任一测试请求对应的代码执行路径不一致,则确定所述线上请求对应的相关参数为生成测试用例的目标参数;
用例生成模块550,用于根据所述目标参数生成测试用例。
本发明实施例还提供了一种服务器,如图6所示,包括处理器61、通信接口62、存储器63和通信总线64,其中,处理器61,通信接口62,存储器63通过通信总线64完成相互间的通信,
存储器63,用于存放计算机程序;
处理器61,用于执行存储器63上所存放的程序时,实现如下步骤:
从线上代理端获取第一代码覆盖率信息,以及从测试代理端获取第二代码覆盖率信息;解析所述第一代码覆盖率信息中每个线上请求对应的代码执行路径以及相关参数,解析所述第二代码覆盖率信息中每个测试请求对应的代码执行路径;若存在所述线上请求对应的代码执行路径与任一测试请求对应的代码执行路径不一致,则确定所述线上请求对应的相关参数为生成测试用例的目标参数,并根据所述目标参数生成测试用例。
上述服务器提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述服务器与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种存储介质,该存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的测试用例生成方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的测试用例生成方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在存储介质中,或者从一个存储介质向另一个存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (7)

1.一种测试用例生成方法,其特征在于,所述方法包括:
从线上代理端获取第一代码覆盖率信息,以及从测试代理端获取第二代码覆盖率信息;
解析所述第一代码覆盖率信息中每个线上请求对应的代码执行路径以及相关参数,解析所述第二代码覆盖率信息中每个测试请求对应的代码执行路径,其中,所述线上请求对应的相关参数包括携带于所述线上请求中的URL以及输入参数;
若存在所述线上请求对应的代码执行路径与任一测试请求对应的代码执行路径不一致,则判断处理所述线上请求的服务是否满足预设要求,其中,所述预设要求用于确定所述线上请求的服务复杂程度,并且,所述预设要求为以下之一:处理所述线上请求的服务对应的标签是否属于预设标签、处理所述线上请求的服务对应的复杂程度等级是否属于预设复杂程度等级、处理所述线上请求的服务对应的服务标识是否在预设标识列表中;
若处理所述线上请求的服务满足预设要求,则确定所述线上请求对应的相关参数为生成测试用例的目标参数,并根据所述目标参数生成测试用例;
若处理所述线上请求的服务未满足预设要求,计算所述线上请求对应的代码执行路径与任一测试请求对应的代码执行路径的相似度;
从任一测试请求对应的代码执行路径中,选取与所述线上请求对应的代码执行路径相似度最高的测试请求对应的代码执行路径,作为目标测试请求对应的目标代码执行路径;
基于所述线上请求对应的代码执行路径以及所述目标测试请求对应的目标代码执行路径计算差异代码,并生成差异代码报告;
根据所述差异代码报告、目标测试请求对应的相关参数以及所述线上请求对应的相关参数,对缺失的测试用例进行补充;
所述第一代码覆盖率信息具体通过以下方式得到:
所述线上代理端在接收到线上请求的情况下,调用目标字节码为所述线上请求生成追溯标识,其中,所述目标字节码包括通过字节码注入技术预先在处理所述线上请求的服务中所注入的字节码;
所述线上代理端调用所述目标字节码获取所述线上请求中携带的相关参数;
所述线上代理端在所述线上请求被所述服务处理的过程中,调用所述目标字节码统计所述服务中代码执行路径;
所述线上代理端以所述追溯标识为维度存储所述线上请求对应的代码执行路径以及相关参数,生成第一代码覆盖率信息。
2.根据权利要求1所述的方法,其特征在于,所述计算所述线上请求对应的代码执行路径与任一测试请求对应的代码执行路径的相似度,包括:
利用Jaccard系数计算所述线上请求对应的代码执行路径与任一测试请求对应的代码执行路径的相似度。
3.根据权利要求1所述的方法,其特征在于,所述生成第一代码覆盖率信息,包括:
基于预设的采集规则对存储的所述线上请求对应的代码执行路径以及相关参数进行采集;
根据所采集的所述线上请求对应的代码执行路径以及相关参数生成第一代码覆盖率信息。
4.根据权利要求1-3之一所述的方法,其特征在于,所述第二代码覆盖率信息具体通过以下方式得到:
所述测试代理端在接收到测试请求的情况下,调用目标字节码为所述测试请求生成追溯标识,其中,所述目标字节码包括通过字节码注入技术预先在处理所述测试请求的服务中所注入的字节码;
所述测试代理端调用所述目标字节码获取所述测试请求中携带的相关参数;
所述测试代理端在所述测试请求被所述服务处理的过程中,调用所述目标字节码统计所述服务中代码执行路径;
所述测试代理端以所述追溯标识为维度存储所述测试请求对应的代码执行路径以及相关参数,生成第二代码覆盖率信息。
5.一种测试用例生成装置,其特征在于,所述装置包括:
信息获取模块,用于从线上代理端获取第一代码覆盖率信息,以及从测试代理端获取第二代码覆盖率信息;
第一解析模块,用于解析所述第一代码覆盖率信息中每个线上请求对应的代码执行路径以及相关参数,其中,所述线上请求对应的相关参数包括携带于所述线上请求中的URL以及输入参数;
第二解析模块,用于解析所述第二代码覆盖率信息中每个测试请求对应的代码执行路径;
参数确定模块,用于若存在所述线上请求对应的代码执行路径与任一测试请求对应的代码执行路径不一致,则判断处理所述线上请求的服务是否满足预设要求,其中,所述预设要求用于确定所述线上请求的服务复杂程度,并且,所述预设要求为以下之一:处理所述线上请求的服务对应的标签是否属于预设标签、处理所述线上请求的服务对应的复杂程度等级是否属于预设复杂程度等级、处理所述线上请求的服务对应的服务标识是否在预设标识列表中;若处理所述线上请求的服务未满足预设要求,计算所述线上请求对应的代码执行路径与任一测试请求对应的代码执行路径的相似度,从任一测试请求对应的代码执行路径中,选取与所述线上请求对应的代码执行路径相似度最高的测试请求对应的代码执行路径,作为目标测试请求对应的目标代码执行路径,基于所述线上请求对应的代码执行路径以及所述目标测试请求对应的目标代码执行路径计算差异代码,并生成差异代码报告,根据所述差异代码报告、目标测试请求对应的相关参数以及所述线上请求对应的相关参数,对缺失的测试用例进行补充;若处理所述线上请求的服务满足预设要求,则确定所述线上请求对应的相关参数为生成测试用例的目标参数;
用例生成模块,用于根据所述目标参数生成测试用例;
所述第一代码覆盖率信息具体通过以下方式得到:
所述线上代理端在接收到线上请求的情况下,调用目标字节码为所述线上请求生成追溯标识,其中,所述目标字节码包括通过字节码注入技术预先在处理所述线上请求的服务中所注入的字节码;
所述线上代理端调用所述目标字节码获取所述线上请求中携带的相关参数;
所述线上代理端在所述线上请求被所述服务处理的过程中,调用所述目标字节码统计所述服务中代码执行路径;
所述线上代理端以所述追溯标识为维度存储所述线上请求对应的代码执行路径以及相关参数,生成第一代码覆盖率信息。
6.一种服务器,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-4中任一所述的方法步骤。
7.一种存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-4中任一所述的方法。
CN202010223571.7A 2020-03-26 2020-03-26 测试用例生成方法、装置、服务器及存储介质 Active CN111309635B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010223571.7A CN111309635B (zh) 2020-03-26 2020-03-26 测试用例生成方法、装置、服务器及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010223571.7A CN111309635B (zh) 2020-03-26 2020-03-26 测试用例生成方法、装置、服务器及存储介质

Publications (2)

Publication Number Publication Date
CN111309635A CN111309635A (zh) 2020-06-19
CN111309635B true CN111309635B (zh) 2023-12-15

Family

ID=71151540

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010223571.7A Active CN111309635B (zh) 2020-03-26 2020-03-26 测试用例生成方法、装置、服务器及存储介质

Country Status (1)

Country Link
CN (1) CN111309635B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113391992A (zh) * 2020-12-03 2021-09-14 腾讯科技(深圳)有限公司 测试数据的生成方法和装置、存储介质及电子设备
CN112559363A (zh) * 2020-12-23 2021-03-26 平安银行股份有限公司 基于全链路标记的测试用例生成方法、系统、设备和介质
CN113010424B (zh) * 2021-03-17 2024-04-02 平安壹钱包电子商务有限公司 接口自动化测试处理方法、系统、计算机设备与存储介质
CN113342664B (zh) * 2021-06-16 2023-09-01 北京奇艺世纪科技有限公司 拨测方法、装置、存储介质及计算机设备
CN114490424A (zh) * 2022-02-24 2022-05-13 北京启明星辰信息安全技术有限公司 自动化测试方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108491321A (zh) * 2018-03-06 2018-09-04 平安科技(深圳)有限公司 测试用例范围确定方法、装置及存储介质
CN109947646A (zh) * 2019-03-13 2019-06-28 平安信托有限责任公司 接口测试方法、装置、计算机设备和存储介质
CN110309055A (zh) * 2019-05-23 2019-10-08 深圳壹账通智能科技有限公司 基于Java虚拟机的黑盒测试方法、装置、终端及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8819642B2 (en) * 2012-05-17 2014-08-26 Cognizant Technology Solutions India Pvt. Ltd. Method and system for generating and processing black box test cases

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108491321A (zh) * 2018-03-06 2018-09-04 平安科技(深圳)有限公司 测试用例范围确定方法、装置及存储介质
CN109947646A (zh) * 2019-03-13 2019-06-28 平安信托有限责任公司 接口测试方法、装置、计算机设备和存储介质
CN110309055A (zh) * 2019-05-23 2019-10-08 深圳壹账通智能科技有限公司 基于Java虚拟机的黑盒测试方法、装置、终端及存储介质

Also Published As

Publication number Publication date
CN111309635A (zh) 2020-06-19

Similar Documents

Publication Publication Date Title
CN111309635B (zh) 测试用例生成方法、装置、服务器及存储介质
CN108322351B (zh) 生成拓扑图的方法和装置、故障确定方法和装置
CN109495334B (zh) 一种测试方法及装置
CN110798380B (zh) 一种数据获取方法、系统、装置、测试设备及测试服务器
CN111522711B (zh) 一种数据监控处理系统、方法、执行端、监控端及电子设备
CN111522728A (zh) 自动化测试用例的生成方法、电子设备及可读存储介质
CN113342689A (zh) 一种接口的自动化测试方法、装置、电子设备及存储介质
CN110471842A (zh) 一种测试方法、装置及计算机可读存储介质
CN104219230A (zh) 识别恶意网站的方法及装置
CN115391228A (zh) 精准测试方法、装置、设备及介质
CN112866062B (zh) 一种分布式压力测试系统、方法、装置、设备及存储介质
CN112948224A (zh) 一种数据处理方法、装置、终端及存储介质
CN110795646A (zh) 请求处理方法、装置、电子设备和计算机可读存储介质
CN111782418B (zh) 一种数据归因方法、装置、电子设备和计算机可读介质
CN109189369B (zh) 一种压缩代码的方法及装置
CN115129575A (zh) 一种代码覆盖结果生成方法及装置
CN115118583B (zh) 日志查询方法、装置、电子设备及计算机可读存储设备
CN116668343B (zh) 一种随流检测方法、装置、设备及存储介质
CN111026575B (zh) 一种异常处理方法、装置及电子设备
CN115065627B (zh) 参数修改方法、装置、电子设备及存储介质
CN113377674B (zh) 一种日志代码添加方法及装置
CN112929321B (zh) 一种鉴权方法、装置及终端设备
CN111026614B (zh) 程序运行状态监控方法、装置、电子设备及可读存储介质
CN116527746A (zh) 一种服务请求方法、装置、电子设备及存储介质
CN114637660A (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
GR01 Patent grant
GR01 Patent grant