CN111159033A - 一种软件测试方法及装置 - Google Patents

一种软件测试方法及装置 Download PDF

Info

Publication number
CN111159033A
CN111159033A CN201911357297.6A CN201911357297A CN111159033A CN 111159033 A CN111159033 A CN 111159033A CN 201911357297 A CN201911357297 A CN 201911357297A CN 111159033 A CN111159033 A CN 111159033A
Authority
CN
China
Prior art keywords
target
execution
function
target function
logic
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.)
Granted
Application number
CN201911357297.6A
Other languages
English (en)
Other versions
CN111159033B (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.)
Koubei Shanghai Information Technology Co Ltd
Original Assignee
Koubei Shanghai Information 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 Koubei Shanghai Information Technology Co Ltd filed Critical Koubei Shanghai Information Technology Co Ltd
Priority to CN201911357297.6A priority Critical patent/CN111159033B/zh
Publication of CN111159033A publication Critical patent/CN111159033A/zh
Application granted granted Critical
Publication of CN111159033B publication Critical patent/CN111159033B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/3664Environments for testing or debugging software
    • 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

一种软件测试方法及装置
技术领域
本申请涉及软件测试技术领域,具体涉及软件测试方法、装置及设备。本申请还涉及一种软件测试***。
背景技术
软件***日益复杂化和大型化,一项功能往往需要多个***紧密协作。例如,扫码付款功能,涉及到用户校验、风控计算、二维码解码、订单管理、资金管理、金融渠道管理多个***。复杂的软件***交互关系,使得软件测试环境的复杂度不断增加,直接导致测试环境稳定性差,影响测试结果的准确度。另外,不同的软件***的测试共用测试环境分别测试是常见的测试场景,针对各不同软件***测试时一般不需要关注被测软件***的上游***或下游***,同时不能影响上游***或下游***的运行或测试。
目前,针对复杂的测试环境,一般采用mock(模拟)技术,针对被测软件***的下游***进行mock。所谓mock技术,是指模拟交互的环境和对象,使得被测业务按照预期执行。以测试支付功能的订单***为例。作为被测软件***的订单***需要调用下游的资金调拨***、风控检测***,如果资金调拨***不可用,则可以mock资金调拨***:订单***调用真实的风控检测***,调用成功之后,针对资金调拨***的调用请求被拦截,并将所述调用请求发送给特定mock服务器,mock服务器通过预设模拟逻辑,返回特定的调用结果,从而绕过不可用的资金调拨***,完成对订单***的测试。
现有mock方案存在下述问题:侵入被测软件***。沿用上述的订单***测试的例子。在订单***中需要修改调用资金调拨***请求的目标地址,一般通过订单***的配置文件修改,每次修改需要重启服务器新配置才会生效,便利性很差。另外,由于配置文件为订单***的全局配置,被修改后向资金调拨***发送的调用请求将按照配置文件都发往mock服务器,即,对全部调用请求不加区分进行了拦截,导致没有请求发给真实的资金调拨***,使得资金调拨***难以进行联调测试。请参考图1,图中示出了现有mock测试方案中,使用测试配置信息运行的软件***101,将接收到的调用请求不加区分的发送给测试配置信息中指示的mock服务器102,而不会发送给真实下游***103;改***性***配置,使用真实环境配置信息运行的软件***104,将接收到的调用请求发送给真实下游***103。
因此,如何实现无侵入式测试,避免全量拦截调用请求是需要解决的问题。
发明内容
本申请实施例提供的软件测试方法,在不侵入被测软件***的情况下,针对被测软件***处理调用请求而执行的函数进行精准拦截,避免了全量拦截调用请求的问题。
本申请实施例提供一种软件测试方法,包括:获得被测软件***中执行目标函数对应的执行信息;获得用于确定需要拦截的目标函数的预设定位逻辑;根据所述执行信息,以及所述预设定位逻辑,获得需要拦截的目标函数,拦截所述需要拦截的目标函数;针对所述目标函数的本次执行构造目标执行结果,输出所述目标执行结果。
可选的,所述根据所述执行信息,以及所述预设定位逻辑,获得需要拦截的目标函数,包括:如果所述执行信息匹配到所述预设定位逻辑,则将所述目标函数作为需要拦截的目标函数;否则,按照被测软件***中的函数调用关系执行所述目标函数。
可选的,所述针对所述目标函数的本次执行构造目标执行结果,包括:获得针对所述目标函数的过滤条件;根据所述执行信息,以及所述过滤条件,构造所述目标执行结果。
可选的,所述根据所述执行信息,以及所述过滤条件,构造所述目标执行结果,包括:如果所述执行信息包含的内容匹配到所述过滤条件,则跳过执行所述目标函数内的代码,针对所述目标函数的本次执行构造目标执行结果;否则,按照被测软件***中的真实函数调用关系执行所述目标函数,返回执行结果。
可选的,还包括:获得用于构造目标执行结果的结果组装逻辑;按照所述结果组装逻辑,构造所述目标执行结果。
可选的,所述输出所述目标执行结果,包括:将所述目标执行结果作为所述目标函数的本次执行的返回结果,返回给调用所述目标函数的调用方。
可选的,还包括:接收针对预设定位逻辑、过滤条件、结果组装逻辑中的至少一种模拟逻辑的配置信息,根据所述配置信息调整所述至少一种模拟逻辑。
可选的,所述获得被测软件***中执行目标函数对应的执行信息,包括:监听被测软件***中执行目标函数的执行消息;根据所述执行消息,获得所述执行信息。
可选的,所述执行信息包括函数标识;所述预设定位逻辑,为根据函数标识进行匹配以定位需要拦截的目标函数的处理逻辑。
可选的,所述执行信息包括参数信息、参数类型、参数数据结构、用户属性信息中的至少一种信息;所述过滤条件,为根据参数信息、参数类型、参数数据结构、用户属性信息中的至少一种信息设置的过滤条件。
本申请实施例还提供另一种软件测试方法,包括:获得目标调用请求;根据所述目标调用请求,执行被测软件***中的目标函数;发送所述目标函数本次执行对应的执行信息;获得针对所述执行信息的目标执行结果。
本申请实施例还提供另一种软件测试方法,包括:获得目标调用请求;根据所述目标调用请求,执行被测软件***中的目标函数;根据所述目标函数本次执行对应的执行信息,以及用于确定需要拦截的目标函数的预设定位逻辑,获得需要拦截的目标函数,拦截所述需要拦截的目标函数;根据所述执行信息,以及所述需要拦截的目标函数对应的过滤条件,获得针对所述目标函数的本次执行的目标执行结果;所述目标执行结果为,按照结果组装逻辑定制构造的执行结果。
本申请实施例还提供一种软件测试***,包括:被测软件***、定位模块、过滤模块、执行结果构造模块;其中,所述被测软件***,用于接收目标调用请求,根据所述目标调用请求执行被测软件***中的目标函数,获得针对所述目标函数本次执行的目标执行结果;所述定位模块,用于获得被测软件***中执行目标函数对应的执行信息,根据所述目标函数本次执行的执行信息,以及用于确定需要拦截的目标函数的预设定位逻辑,获得需要拦截的目标函数,拦截所述需要拦截的目标函数;所述过滤模块,用于根据所述执行信息,以及所述需要拦截的目标函数对应的过滤条件,获得针对所述目标函数的本次执行的目标执行结果,输出所述目标执行结果;所述执行结果构造模块,用于按照结果组装逻辑定制构造所述目标执行结果。
可选的,还包括:模拟逻辑控制模块;所述模拟逻辑控制模块,用于接收针对模拟逻辑控制的配置信息,按照所述配置信息调整所述模拟逻辑;所述模拟逻辑,包括预设定位逻辑,过滤条件,以及结果组装逻辑中的至少一种模拟逻辑。
本申请实施例还提供一种软件测试装置,包括:执行信息获得单元,用于获得被测软件***中执行目标函数对应的执行信息;定位单元,用于获得用于确定需要拦截的目标函数的预设定位逻辑;拦截单元,用于根据所述执行信息,以及所述预设定位逻辑,获得需要拦截的目标函数,拦截所述需要拦截的目标函数;结果返回单元,用于针对所述目标函数的本次执行构造目标执行结果,输出所述目标执行结果。
本申请实施例还提供一种电子设备,包括:存储器,以及处理器;所述存储器用于存储计算机程序,所述计算机程序被所述处理器运行后,执行权利要求1-12任意一项所述的软件测试方法。
本申请实施例还提供一种存储设备,存储有计算机程序,所述计算机程序被处理器运行后,执行权利要求1-12任意一项所述的软件测试方法。
与现有技术相比,本申请具有以下优点:
本申请实施例提供的一种软件测试方法、装置、设备,通过获得被测软件***中执行目标函数对应的执行信息,根据所述执行信息以及预设定位逻辑,拦截需要拦截的目标函数;针对被拦截的目标函数的本次执行构造目标执行结果,输出所述目标执行结果。能够不侵入被测软件***,根据目标函数的执行信息精准拦截函数,并针对拦截的函数构造执行结果,避免了全量拦截调用请求的问题。
本申请实施例提供的另一种软件测试方法,通过获得目标调用请求,根据目标调用请求执行目标函数;发送所述目标函数本次执行对应的执行信息,获得针对所述执行信息的目标执行结果。由于被测软件***在计算设备中的运行时能提供函数执行信息,因而不需要针对被测软件***进行额外修改,不需要修改启动运行被测软件***使用的配置文件,解决了测试中侵入被测软件***的问题。
本申请实施例提供的另一种软件测试方法,通过获得目标调用请求;根据目标调用请求执行被测软件***中的目标函数;根据目标函数的执行信息,以及预设定位逻辑,获得需要拦截的目标函数,拦截所述需要拦截的目标函数;根据所述执行信息,以及所述需要拦截的目标函数对应的过滤条件,获得针对所述目标函数本次执行而按照结果组装逻辑定制构造的目标执行结果。由于被测软件***在计算设备中的运行时能提供函数执行信息,因而不需要修改启动运行被测软件***使用的配置文件,根据预设定位逻辑以及过滤条件,能够精准拦截目标函数,而不是进行全量拦截,从而在不侵入被测软件***的情况下,解决了全量拦截调用请求的问题。
本申请实施例提供的一种软件测试***,包括:被测软件***、定位模块、过滤模块、执行结果构造模块;其中,被测软件***在计算设备中的运行时能提供函数执行信息,因而不需要修改启动运行被测软件***使用的配置文件;定位模块能够根据预设定位逻辑以及过滤条件,能够精准拦截目标函数,而不是进行全量拦截,从而提供了一种对被测软件***无侵入、能精准拦截调用请求的测试***。
附图说明
图1是现有软件测试mock方案示意图;
图2是本申请提供的软件测试方法的***环境示意图;
图3是本申请第一实施例提供的一种软件测试方法的处理流程图;
图4是本申请第一实施例提供的一种软件测试方法的***架构示意图;
图5是本申请第一实施例提供的软件测试方法的精准拦截处理过程示意图;
图6是本申请第二实施例提供的一种软件测试方法的处理流程图;
图7是本申请第三实施例提供的一种软件测试方法的处理流程图;
图8是本申请第四实施例提供的一种软件测试***示意图;
图9是本申请第五实施例提供的一种软件测试装置示意图;
图10是本申请提供的电子设备示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
本申请实施例提供软件测试方法、装置、电子设备及存储设备。本申请实施例还提供一种软件测试***。在下面的实施例中逐一进行详细说明。
为便于理解,首先给出一种软件测试方法的***环境。请参考图2,图2所示的***环境包括:被测软件***201,接收调用请求,如果所述调用请求为针对执行测试用例的特定调用请求,则由mock模块202拦截所述特定调用请求,返回针对所述特定调用请求的调用结果;否则,所述调用请求发送给真实下游***203,由真实下游***203处理,返回调用结果。可以看出,所述软件测试方法,对真实下游***无影响,因此,在公用测试环境中,每个需要测试的被测试软件***可以共享测试环境,互不影响。
以下结合图3至图5对本申请第一实施例提供的软件测试方法进行说明。
图3所示的软件测试方法,包括:步骤S301至步骤S304。
步骤S301,获得被测软件***中执行目标函数对应的执行信息。
本实施例中,被测软件***运行于JVM(JAVA虚拟机)上,可以通过JVM代理机制获得被测软件***中执行目标函数对应的执行信息,也可以生成JAVA***监听JAVA代码特定类的方法的执行。所谓JAVA代码特定类的方法,为JAVA特定类提供的函数。一个实施方式中,所述软件测试方法可以作为JVM插件部署于具有JAVA环境的JAVA服务器上,并在所述JAVA服务器上部署被测软件***。以插件方式部署所述方法,能够无侵入接入被测软件***,在接入被测软件***进行精准拦截的过程中,对被测软件***没有影响,在退出被测软件***的过程中,对于被测软件也无影响。本步骤具体包括下述处理:监听被测软件***中执行目标函数的执行消息;根据所述执行消息,获得所述执行信息。其中,所述执行信息中包含目标函数的函数标识。请参考图4,图中所示的软件测试方法的***架构包括:被测软件***401,MOCK测试插件402,被测软件***与MOCK测试插件部署于具有JAVA环境的待测服务器403,所述待测服务器,是指运行被测软件***的JAVA服务器。被测软件***401接收目标调用请求,根据所述目标调用请求,执行被测软件***中的目标函数,MOCK测试插件402监听所述目标函数本次执行对应的执行事件,拦截执行事件,得到所述执行事件对应的执行信息。
步骤S302,获得用于确定需要拦截的目标函数的预设定位逻辑。
其中,所述预设定位逻辑,为根据函数标识进行匹配以定位需要拦截的目标函数的处理逻辑。例如,所述预设定位逻辑包含JAVA的类名和由所述类名指示的类代码提供的方法名,匹配到所述类名和所述方法名,则拦截所述方法名对应的函数,所述函数为需要拦截的目标函数。本实施例中,通过获得配置信息得到所述预设定位逻辑。一个实施方式中,通过http接口进行人机交互,获得针对所述预设定位逻辑的输入触发。实际应用中,提供配置功能实现针对所述预设定位逻辑的配置,例如,针对新增加的需要拦截的目标函数,新增预设定位逻辑。既可以通过配置功能使得所述预设定位逻辑中的指定的特定定位逻辑生效或者失效,也可以针对所述预设定位逻辑进行全局控制,即统一使得其中的每条预设定位逻辑生效或者失效。其中,生效的预设定位逻辑,能触发针对匹配到所述预设定位逻辑的目标函数的拦截;失效的预设定位逻辑,不进行拦截处理。
步骤S303,根据所述执行信息,以及所述预设定位逻辑,获得需要拦截的目标函数,拦截所述需要拦截的目标函数。
本实施例中,如果所述执行信息匹配到所述预设定位逻辑,则将所述目标函数作为需要拦截的目标函数;否则,按照被测软件***中的函数调用关系执行所述目标函数。后续步骤中,拦截需要拦截的目标函数,针对被拦截的目标函数构造定制的目标执行结果。例如,以订单***的测试为例,作为被测软件***的订单***,其下游***包括资金调拨***。测试过程中,订单***调用资金调拨***的特定类的特定方法,针对特定方法的调用,需要构造预期的资金调拨结果,具体包括下述处理:订单***执行到所述特定方法,实施所述软件测试方法的插件监听获得针对所述特定类的特定方法的执行信息,如果所述执行信息匹配到预设定位逻辑,则针对所述特定方法的执行进行拦截,拦截后按照结果定制组装逻辑定制组装执行结果,返回给所述特定方法的调用方。
步骤S304,针对所述目标函数的本次执行构造目标执行结果,输出所述目标执行结果。
本实施例中,具体通过下述处理构造目标执行结果:获得针对所述目标函数的过滤条件;根据所述执行信息,以及所述过滤条件,构造所述目标执行结果。其中,所述执行信息包括参数信息、参数类型、参数数据结构、用户属性信息中的至少一种信息;所述过滤条件,为根据参数信息、参数类型、参数数据结构、用户属性信息中的至少一种信息设置的过滤条件。通过过滤条件,能够进一步针对所述目标函数的特定场景进行拦截,例如,针对特定用户或者特定金额,拦截针对所述目标函数的执行,构造预期的执行结果。一个实施方式中,具体包括下述处理:如果所述执行信息包含的内容匹配到所述过滤条件,则跳过执行所述目标函数内的代码,针对所述目标函数的本次执行构造目标执行结果;否则,按照被测软件***中的真实函数调用关系执行所述目标函数,返回执行结果。进一步,包括:获得用于构造目标执行结果的结果组装逻辑;按照所述结果组装逻辑,构造所述目标执行结果。本实施例中,所述输出所述目标执行结果,包括:将所述目标执行结果作为所述目标函数的本次执行的返回结果,返回给调用所述目标函数的调用方。
本实施例中,还包括交互配置。具体的,接收针对预设定位逻辑、过滤条件、结果组装逻辑中的至少一种模拟逻辑的配置信息,根据所述配置信息调整所述至少一种模拟逻辑。一个实施方式中,通过http接口进行人机交互,获得针对所述至少一种模拟逻辑的输入触发。实际应用中,提供配置功能实现针对所述至少一种模拟逻辑的配置,例如,针对新增加的需要拦截的目标函数,新增预设定位逻辑。既可以通过配置功能使得所述至少一种模拟逻辑中的指定模拟逻辑生效或者失效,也可以针对所述至少一种模拟逻辑进行全局控制,即统一使得其中的每条模拟逻辑生效或者失效。现有技术方案中,如果需要将调用请求发送到mock服务器,则涉及到修改被测软件***运行使用的配置信息,配置信息修改后需要重启被测软件***,修改后的配置才会生效,因此对被测软件***有侵入性,并且操作繁琐。相反,本实施例中,能够通过配置功能针对所述至少一种模拟逻辑的失效或者生效实时控制,不影响被测软件***的运行。
实际应用中,模拟逻辑还可以包括预设定位逻辑、过滤条件、结果组装逻辑。其中,根据预设定位逻辑,确定需要拦截的目标函数。根据过滤条件,确定被拦截的目标函数的特定场景,例如特定用户或者特定金额或者特定用户的特定金额。被测软件***接收的调用请求中携带的特定场景信息通过被测软件***的函数调用关系逐层传递到目标函数,从而能够针对具体的一个特定调用请求进行拦截,而不是不加区分的进行全量拦截。根据结果组装逻辑,构造预期的执行结果,沿用上述订单***测试的例子,拦截需要拦截的资金调拨***的特定方法的执行后,直接跳过所述特定方法的代码,不执行针对所述特定方法的调用,而是按照结果组装逻辑组装执行成功的结果,返回调用成功。请参考图4,图中MOCK插件402包括:MOCK模拟逻辑交互模块402-1,接收针对预设定位逻辑、过滤条件、结果组装逻辑中的至少一种模拟逻辑的配置信息。MOCK逻辑处理模块402-2,用于根据所述配置信息调整所述至少一种模拟逻辑。MOCK核心处理模块402-3,通过定位模块根据预设定位逻辑,确定需要拦截的目标函数;通过过滤模块确定被拦截的目标函数的特定场景;通过执行判断模块进行判断,如果判断被拦截的目标函数的本次执行需要跳过执行代码,则跳过执行代码,根据结果组装逻辑,构造预期的执行结果;否则,继续调用所述目标函数的执行代码。
再请参考图5,图中示出了针对特定业务调用场景进行精准拦截的处理过程。图中,S501,被测软件***接收特定调用请求,针对特定调用请求按照内部函数调用关系进行处理。例如,源代码调用关系包括:在类A方法b中调用类A方法a;在类A方法a中调用类A方法d;在类A方法d中调用了被测软件***的外部下游***。S502,如果预设定位逻辑、过滤条件、组装结果逻辑生效,则获得被测软件***中处理特定调用请求的目标函数的执行信息,例如,可以使用JVM-sandbox插件监听被测软件***中每个类的每个方法的执行,获得所述执行信息。S503,根据预设定位逻辑,如拦截类A方法a的执行,拦截需要拦截的目标函数;因此,执行类A方法b时定位失败,直接执行方法b的代码,在执行方法b的代码过程中调用到类A方法a,判断匹配到拦截类A方法a的预设定位逻辑,将方法a作为需要拦截的目标函数。S504,进一步根据过滤条件,判断是否拦截目标函数的本次执行;例如,过滤条件为函数的参数信息,针对参数信息为1234的场景进行拦截,由于类A方法b调用类A方法a时的输入参数信息为1111,因此不进行拦截,进一步执行类A方法a的代码,调用到类A方法d;类A方法d与预设定位逻辑不匹配,因此不进行拦截,进一步执行类A方法d的代码,调用到类A方法a,再次拦截类A方法a的执行,本次执行的输入参数信息为1234,匹配到过滤条件,因此拦截类A方法a的本次执行,根据结果组装逻辑组装定制的预期结果B,并返回结果B。
至此,对本实施例提供的软件测试方法进行了详细说明,所述方法通过获得被测软件***中执行目标函数对应的执行信息,根据所述执行信息以及预设定位逻辑,拦截需要拦截的目标函数;针对被拦截的目标函数的本次执行构造目标执行结果,输出所述目标执行结果。能够不侵入被测软件***,根据目标函数的执行信息精准拦截函数,并针对拦截的函数构造执行结果,避免了全量拦截调用请求的问题。
以上述实施例为基础,本申请第二实施例提供另一种软件测试方法。
以下结合图6对第二实施例提供的软件测试方法进行说明,相关部分请参见上述实施例对应部分的说明。图6所示的软件测试方法,包括:步骤S601至步骤S604。
步骤S601,获得目标调用请求。
本实施例中,实施所述方法的被测软件***运行于具有JAVA环境的JAVA服务器上。被测软件***在JAVA服务器上运行过程中,可以由JVM插件监听被测软件***中的函数的执行,因此在接入被测软件***进行精准拦截的过程中,对被测软件***没有影响,在退出被测软件***的过程中,对于被测软件也无影响。被测软件***接收目标调用请求。
步骤S602,根据所述目标调用请求,执行被测软件***中的目标函数。
被测软件***根据所述目标调用请求,针对目标调用请求按照内部函数调用关系进行处理。例如,源代码调用关系包括:在类A方法b中调用类A方法a;在类A方法a中调用类A方法d;在类A方法d中调用了被测软件***的外部下游***。
步骤S603,发送所述目标函数本次执行对应的执行信息。
本实施例中,被测软件***的目标函数为实现类的方法的代码,需要被JVM插件监听的函数可以向JVM插件注册监听事件,当注册的类的方法被调用时,向JVM插件发送消息,消息中包含函数本次执行对应的执行信息。其中,所述执行信息包括函数标识、参数信息、参数类型、参数数据结构、用户属性信息中的至少一种信息。
步骤S604,获得针对所述执行信息的目标执行结果。
本实施例中,如果所述执行信息满足模拟逻辑,则获得按照结果组装逻辑构造的目标执行结果,否则,获得真实下游***的处理结果。所述模拟逻辑,为针对目标函数构造模拟执行结果的模拟执行条件,包括用于确定需要拦截的目标函数的预设定位逻辑、用于针对需要拦截的目标函数每次执行的执行信息进行过滤的过滤条件。所述结果组装逻辑,为用于构造目标执行结果的逻辑。
至此,对第二实施例提供的软件测试方法进行了说明,所述方法通过获得目标调用请求,根据目标调用请求执行目标函数;发送所述目标函数本次执行对应的执行信息,获得针对所述执行信息的目标执行结果。由于被测软件***在计算设备中的运行时能提供函数执行信息,因而不需要针对被测软件***进行额外修改,不需要修改启动运行被测软件***使用的配置文件,解决了测试中侵入被测软件***的问题。
以上述实施例为基础,本申请第三实施例提供另一种软件测试方法。
以下结合图7对第三实施例提供的软件测试方法进行说明,相关部分请参见上述实施例对应部分的说明。图7所示的软件测试方法,包括:步骤S701至步骤S704。
步骤S701,获得目标调用请求。
本实施例中,实施所述方法的被测软件***运行于具有JAVA环境的JAVA服务器上。被测软件***在JAVA服务器上运行过程中,可以由JVM插件监听被测软件***中的函数的执行,因此在接入被测软件***进行精准拦截的过程中,对被测软件***没有影响,在退出被测软件***的过程中,对于被测软件也无影响。被测软件***接收目标调用请求。
步骤S702,根据所述目标调用请求,执行被测软件***中的目标函数。
被测软件***根据所述目标调用请求,针对目标调用请求按照内部函数调用关系进行处理。例如,源代码调用关系包括:在类A方法b中调用类A方法a;在类A方法a中调用类A方法d;在类A方法d中调用了被测软件***的外部下游***。
步骤S703,根据所述目标函数本次执行对应的执行信息,以及用于确定需要拦截的目标函数的预设定位逻辑,获得需要拦截的目标函数,拦截所述需要拦截的目标函数。
本步骤具体包括下述处理:监听被测软件***中执行目标函数的执行消息;根据所述执行消息,获得所述执行信息;获得用于确定需要拦截的目标函数的预设定位逻辑;根据所述执行信息以及所述预设定位逻辑对目标函数进行拦截。其中,所述执行信息中包含目标函数的函数标识。被测软件***的目标函数为实现类的方法的代码,需要被JVM插件监听的函数可以向JVM插件注册监听事件,当注册的类的方法被调用时,向JVM插件发送消息,消息中包含函数本次执行对应的执行信息。其中,所述执行信息包括函数标识、参数信息、参数类型、参数数据结构、用户属性信息中的至少一种信息。其中,所述预设定位逻辑,为根据函数标识进行匹配以定位需要拦截的目标函数的处理逻辑。例如,所述预设定位逻辑包含JAVA的类名和由所述类名指示的类代码提供的方法名,匹配到所述类名和所述方法名,则拦截所述方法名对应的函数,所述函数为需要拦截的目标函数。本实施例中,通过获得配置信息得到所述预设定位逻辑。一个实施方式中,通过http接口进行人机交互,获得针对所述预设定位逻辑的输入触发。实际应用中,提供配置功能实现针对所述预设定位逻辑的配置,例如,针对新增加的需要拦截的目标函数,新增预设定位逻辑。既可以通过配置功能使得所述预设定位逻辑中的指定的特定定位逻辑生效或者失效,也可以针对所述预设定位逻辑进行全局控制,即统一使得其中的每条预设定位逻辑生效或者失效。其中,生效的预设定位逻辑,能触发针对匹配到所述预设定位逻辑的目标函数的拦截;失效的预设定位逻辑,不进行拦截处理。本实施例中,如果所述执行信息匹配到所述预设定位逻辑,则将所述目标函数作为需要拦截的目标函数;否则,按照被测软件***中的函数调用关系执行所述目标函数。后续步骤中,拦截需要拦截的目标函数,针对被拦截的目标函数构造定制的目标执行结果。例如,以订单***的测试为例,作为被测软件***的订单***,其下游***包括资金调拨***。测试过程中,订单***调用资金调拨***的特定类的特定方法,针对特定方法的调用,需要构造预期的资金调拨结果,具体包括下述处理:订单***执行到所述特定方法,实施所述软件测试方法的插件监听获得针对所述特定类的特定方法的执行信息,如果所述执行信息匹配到预设定位逻辑,则针对所述特定方法的执行进行拦截,拦截后按照结果定制组装逻辑定制组装执行结果,返回给所述特定方法的调用方。
步骤S704,根据所述执行信息,以及所述需要拦截的目标函数对应的过滤条件,获得针对所述目标函数的本次执行的目标执行结果;所述目标执行结果为,按照结果组装逻辑定制构造的执行结果。
本实施例中,具体通过下述处理构造目标执行结果:获得针对所述目标函数的过滤条件;根据所述执行信息,以及所述过滤条件,构造所述目标执行结果。其中,所述执行信息包括参数信息、参数类型、参数数据结构、用户属性信息中的至少一种信息;所述过滤条件,为根据参数信息、参数类型、参数数据结构、用户属性信息中的至少一种信息设置的过滤条件。通过过滤条件,能够进一步针对所述目标函数的特定场景进行拦截,例如,针对特定用户或者特定金额,拦截针对所述目标函数的执行,构造预期的执行结果。一个实施方式中,具体包括下述处理:如果所述执行信息包含的内容匹配到所述过滤条件,则跳过执行所述目标函数内的代码,针对所述目标函数的本次执行构造目标执行结果;否则,按照被测软件***中的真实函数调用关系执行所述目标函数,返回执行结果。进一步,包括:获得用于构造目标执行结果的结果组装逻辑;按照所述结果组装逻辑,构造所述目标执行结果。本实施例中,所述输出所述目标执行结果,包括:将所述目标执行结果作为所述目标函数的本次执行的返回结果,返回给调用所述目标函数的调用方。
本实施例中,还包括交互配置。具体的,接收针对预设定位逻辑、过滤条件、结果组装逻辑中的至少一种模拟逻辑的配置信息,根据所述配置信息调整所述至少一种模拟逻辑。一个实施方式中,通过http接口进行人机交互,获得针对所述至少一种模拟逻辑的输入触发。实际应用中,提供配置功能实现针对所述至少一种模拟逻辑的配置,例如,针对新增加的需要拦截的目标函数,新增预设定位逻辑。既可以通过配置功能使得所述至少一种模拟逻辑中的指定模拟逻辑生效或者失效,也可以针对所述至少一种模拟逻辑进行全局控制,即统一使得其中的每条模拟逻辑生效或者失效。现有技术方案中,如果需要将调用请求发送到mock服务器,则涉及到修改被测软件***运行使用的配置信息,配置信息修改后需要重启被测软件***,修改后的配置才会生效,因此对被测软件***有侵入性,并且操作繁琐。相反,本实施例中,能够通过配置功能针对所述至少一种模拟逻辑的失效或者生效实时控制,不影响被测软件***的运行。
实际应用中,模拟逻辑还可以包括预设定位逻辑、过滤条件、结果组装逻辑。其中,根据预设定位逻辑,确定需要拦截的目标函数。根据过滤条件,确定被拦截的目标函数的特定场景,例如特定用户或者特定金额或者特定用户的特定金额。被测软件***接收的调用请求中携带的特定场景信息通过被测软件***的函数调用关系逐层传递到目标函数,从而能够针对具体的一个特定调用请求进行拦截,而不是不加区分的进行全量拦截。根据结果组装逻辑,构造预期的执行结果,沿用上述订单***测试的例子,拦截需要拦截的资金调拨***的特定方法的执行后,直接跳过所述特定方法的代码,不执行针对所述特定方法的调用,而是按照结果组装逻辑组装执行成功的结果,返回调用成功。一个实施方式中,如果所述执行信息满足模拟逻辑,则获得按照结果组装逻辑构造的目标执行结果,否则,获得真实下游***的处理结果。所述模拟逻辑,为针对目标函数构造模拟执行结果的模拟执行条件,包括用于确定需要拦截的目标函数的预设定位逻辑、用于针对需要拦截的目标函数每次执行的执行信息进行过滤的过滤条件。所述结果组装逻辑,为用于构造目标执行结果的逻辑。
至此,对第三实施例提供的软件测试方法进行了说明,所述方法通过获得目标调用请求;根据目标调用请求执行被测软件***中的目标函数;根据目标函数的执行信息,以及预设定位逻辑,对目标函数进行拦截;根据所述执行信息,以及需要拦截的目标函数对应的过滤条件,获得针对所述目标函数本次执行而按照结果组装逻辑定制构造的目标执行结果。由于被测软件***在计算设备中的运行时能提供函数执行信息,因而不需要修改启动运行被测软件***使用的配置文件,根据预设定位逻辑以及过滤条件,能够精准拦截目标函数,而不是进行全量拦截,从而在不侵入被测软件***的情况下,解决了全量拦截调用请求的问题。
以上述实施例为基础,本申请第四实施例提供一种软件测试***。以下结合图8对第四实施例提供的***进行说明,相关部分请参见上述实施例对应部分的说明。图8所示的软件测试***,包括:被测软件***801、定位模块802、过滤模块803、执行结果构造模块804;其中,
所述被测软件***801,用于接收目标调用请求,根据所述目标调用请求执行被测软件***中的目标函数,获得针对所述目标函数本次执行的目标执行结果。本实施例中,实施所述方法的被测软件***运行于具有JAVA环境的JAVA服务器上。被测软件***在JAVA服务器上运行过程中,可以由JVM插件监听被测软件***中的函数的执行,因此在接入被测软件***进行精准拦截的过程中,对被测软件***没有影响,在退出被测软件***的过程中,对于被测软件也无影响。被测软件***接根据所述目标调用请求,针对目标调用请求按照内部函数调用关系进行处理。例如,源代码调用关系包括:在类A方法b中调用类A方法a;在类A方法a中调用类A方法d;在类A方法d中调用了被测软件***的外部下游***。被测软件***的需要被JVM插件监听的函数可以向JVM插件注册监听事件,当注册的类的方法被调用时,向JVM插件发送消息,消息中包含函数本次执行对应的执行信息。其中,所述执行信息包括函数标识、参数信息、参数类型、参数数据结构、用户属性信息中的至少一种信息。本实施例中,如果所述执行信息满足模拟逻辑,则获得按照结果组装逻辑构造的目标执行结果,否则,获得真实下游***的处理结果。所述模拟逻辑,为针对目标函数构造模拟执行结果的模拟执行条件,包括用于确定需要拦截的目标函数的预设定位逻辑、用于针对需要拦截的目标函数每次执行的执行信息进行过滤的过滤条件。所述结果组装逻辑,为用于构造目标执行结果的逻辑。
所述定位模块802,用于获得被测软件***中执行目标函数对应的执行信息,根据所述目标函数本次执行的执行信息,以及用于确定需要拦截的目标函数的预设定位逻辑,获得需要拦截的目标函数,拦截所述需要拦截的目标函数。本实施例中,通过获得配置信息得到所述预设定位逻辑。一个实施方式中,通过http接口进行人机交互,获得针对所述预设定位逻辑的输入触发。实际应用中,提供配置功能实现针对所述预设定位逻辑的配置,例如,针对新增加的需要拦截的目标函数,新增预设定位逻辑。既可以通过配置功能使得所述预设定位逻辑中的指定的特定定位逻辑生效或者失效,也可以针对所述预设定位逻辑进行全局控制,即统一使得其中的每条预设定位逻辑生效或者失效。其中,生效的预设定位逻辑,能触发针对匹配到所述预设定位逻辑的目标函数的拦截;失效的预设定位逻辑,不进行拦截处理。
所述过滤模块803,用于根据所述执行信息,以及所述需要拦截的目标函数对应的过滤条件,获得针对所述目标函数的本次执行的目标执行结果,输出所述目标执行结果。本实施例中,过滤模块具体通过下述处理构造目标执行结果:获得针对所述目标函数的过滤条件;根据所述执行信息,以及所述过滤条件,构造所述目标执行结果。其中,所述执行信息包括参数信息、参数类型、参数数据结构、用户属性信息中的至少一种信息;所述过滤条件,为根据参数信息、参数类型、参数数据结构、用户属性信息中的至少一种信息设置的过滤条件。通过过滤条件,能够进一步针对所述目标函数的特定场景进行拦截,例如,针对特定用户或者特定金额,拦截针对所述目标函数的执行,构造预期的执行结果。一个实施方式中,具体包括下述处理:如果所述执行信息包含的内容匹配到所述过滤条件,则跳过执行所述目标函数内的代码,针对所述目标函数的本次执行构造目标执行结果;否则,按照被测软件***中的真实函数调用关系执行所述目标函数,将执行结果返回目标函数的调用方。
所述执行结果构造模块804,用于按照结果组装逻辑定制构造所述目标执行结果。具体的,获得用于构造目标执行结果的结果组装逻辑;按照所述结果组装逻辑,构造所述目标执行结果。
本实施例中,所述***还包括:模拟逻辑控制模块;所述模拟逻辑控制模块,用于接收针对模拟逻辑控制的配置信息,按照所述配置信息调整所述模拟逻辑;所述模拟逻辑,包括预设定位逻辑,过滤条件,以及结果组装逻辑中的至少一种模拟逻辑。具体的,接收针对预设定位逻辑、过滤条件、结果组装逻辑中的至少一种模拟逻辑的配置信息,根据所述配置信息调整所述至少一种模拟逻辑。一个实施方式中,通过http接口进行人机交互,获得针对所述至少一种模拟逻辑的输入触发。实际应用中,提供配置功能实现针对所述至少一种模拟逻辑的配置,例如,针对新增加的需要拦截的目标函数,新增预设定位逻辑。既可以通过配置功能使得所述至少一种模拟逻辑中的指定模拟逻辑生效或者失效,也可以针对所述至少一种模拟逻辑进行全局控制,即统一使得其中的每条模拟逻辑生效或者失效。现有技术方案中,如果需要将调用请求发送到mock服务器,则涉及到修改被测软件***运行使用的配置信息,配置信息修改后需要重启被测软件***,修改后的配置才会生效,因此对被测软件***有侵入性,并且操作繁琐。相反,本实施例中,能够通过配置功能针对所述至少一种模拟逻辑的失效或者生效实时控制,不影响被测软件***的运行。
实际应用中,模拟逻辑还可以包括预设定位逻辑、过滤条件、结果组装逻辑。其中,根据预设定位逻辑,确定需要拦截的目标函数。根据过滤条件,确定被拦截的目标函数的特定场景,例如特定用户或者特定金额或者特定用户的特定金额。被测软件***接收的调用请求中携带的特定场景信息通过被测软件***的函数调用关系逐层传递到目标函数,从而能够针对具体的一个特定调用请求进行拦截,而不是不加区分的进行全量拦截。根据结果组装逻辑,构造预期的执行结果,沿用上述订单***测试的例子,拦截需要拦截的资金调拨***的特定方法的执行后,直接跳过所述特定方法的代码,不执行针对所述特定方法的调用,而是按照结果组装逻辑组装执行成功的结果,返回调用成功。
至此,对第四实施例提供的软件测试***进行了说明,所述***包括:被测软件***、定位模块、过滤模块、执行结果构造模块;其中,被测软件***在计算设备中的运行时能提供函数执行信息,因而不需要修改启动运行被测软件***使用的配置文件;定位模块能够根据预设定位逻辑以及过滤条件,能够精准拦截目标函数,而不是进行全量拦截,从而提供了一种对被测软件***无侵入、能精准拦截调用请求的测试***。
与第一实施例对应,本申请第五实施例提供一种软件测试装置。以下结合图9对第五实施例提供的装置进行说明。图9所示的装置,包括:
执行信息获得单元901,用于获得被测软件***中执行目标函数对应的执行信息;
定位单元902,用于获得用于确定需要拦截的目标函数的预设定位逻辑;
拦截单元903,用于根据所述执行信息,以及所述预设定位逻辑,获得需要拦截的目标函数,拦截所述需要拦截的目标函数;
结果返回单元904,用于针对所述目标函数的本次执行构造目标执行结果,输出所述目标执行结果。
可选的,所述拦截单元903具体用于:如果所述执行信息匹配到所述预设定位逻辑,则将所述目标函数作为需要拦截的目标函数;否则,按照被测软件***中的函数调用关系执行所述目标函数。
可选的,所述结果返回单元904具体用于:获得针对所述目标函数的过滤条件;根据所述执行信息,以及所述过滤条件,构造所述目标执行结果。
可选的,所述结果返回单元904具体用于:如果所述执行信息包含的内容匹配到所述过滤条件,则跳过执行所述目标函数内的代码,针对所述目标函数的本次执行构造目标执行结果;否则,按照被测软件***中的真实函数调用关系执行所述目标函数,返回执行结果。
可选的,所述结果返回单元904还用于:获得用于构造目标执行结果的结果组装逻辑;按照所述结果组装逻辑,构造所述目标执行结果。
可选的,所述结果返回单元904具体用于:将所述目标执行结果作为所述目标函数的本次执行的返回结果,返回给调用所述目标函数的调用方。
可选的,所述装置还包括配置单元,所述配置单元用于:接收针对预设定位逻辑、过滤条件、结果组装逻辑中的至少一种模拟逻辑的配置信息,根据所述配置信息调整所述至少一种模拟逻辑。
可选的,所述执行信息获得单元901具体用于:监听被测软件***中执行目标函数的执行消息;根据所述执行消息,获得所述执行信息。
可选的,所述执行信息包括函数标识;所述预设定位逻辑,为根据函数标识进行匹配以定位需要拦截的目标函数的处理逻辑。
可选的,所述执行信息包括参数信息、参数类型、参数数据结构、用户属性信息中的至少一种信息;所述过滤条件,为根据参数信息、参数类型、参数数据结构、用户属性信息中的至少一种信息设置的过滤条件。
至此,对本实施例提供的软件测试装置进行了详细说明,所述装置通过获得被测软件***中执行目标函数对应的执行信息,根据所述执行信息以及预设定位逻辑,拦截需要拦截的目标函数;针对被拦截的目标函数的本次执行构造目标执行结果,输出所述目标执行结果。能够不侵入被测软件***,根据目标函数的执行信息精准拦截函数,并针对拦截的函数构造执行结果,避免了全量拦截调用请求的问题。
与第一实施例相对应,本申请第六实施例提供一种电子设备。图10为所述电子设备的示意图,所述电子设备,包括:存储器,以及处理器;所述存储器用于存储计算机程序,所述计算机程序被所述处理器运行后,执行权利要求1-12任意一项所述的软件测试方法。所述电子设备通过获得被测软件***中执行目标函数对应的执行信息,根据所述执行信息以及预设定位逻辑,拦截需要拦截的目标函数;针对被拦截的目标函数的本次执行构造目标执行结果,输出所述目标执行结果。能够不侵入被测软件***,根据目标函数的执行信息精准拦截函数,并针对拦截的函数构造执行结果,避免了全量拦截调用请求的问题。
与第一实施例对应,本申请第七实施例提供一种存储设备,相关的部分请参见上述实施例的对应说明即可。所述存储设备的示意图类似图10。所述存储设备存储有计算机程序,所述计算机程序被处理器运行后,执行权利要求1-12任意一项所述的软件测试方法。本实施例提供的存储设备存储的指令,通过获得被测软件***中执行目标函数对应的执行信息,根据所述执行信息以及预设定位逻辑,拦截需要拦截的目标函数;针对被拦截的目标函数的本次执行构造目标执行结果,输出所述目标执行结果。能够不侵入被测软件***,根据目标函数的执行信息精准拦截函数,并针对拦截的函数构造执行结果,避免了全量拦截调用请求的问题。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、***或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。

Claims (10)

1.一种软件测试方法,其特征在于,包括:
获得被测软件***中执行目标函数对应的执行信息;
获得用于确定需要拦截的目标函数的预设定位逻辑;
根据所述执行信息,以及所述预设定位逻辑,获得需要拦截的目标函数,拦截所述需要拦截的目标函数;
针对所述目标函数的本次执行构造目标执行结果,输出所述目标执行结果。
2.根据权利要求1所述的方法,其特征在于,所述根据所述执行信息,以及所述预设定位逻辑,获得需要拦截的目标函数,包括:
如果所述执行信息匹配到所述预设定位逻辑,则将所述目标函数作为需要拦截的目标函数;否则,按照被测软件***中的函数调用关系执行所述目标函数。
3.根据权利要求1所述的方法,其特征在于,所述针对所述目标函数的本次执行构造目标执行结果,包括:
获得针对所述目标函数的过滤条件;
根据所述执行信息,以及所述过滤条件,构造所述目标执行结果。
4.根据权利要求3所述的方法,其特征在于,所述根据所述执行信息,以及所述过滤条件,构造所述目标执行结果,包括:
如果所述执行信息包含的内容匹配到所述过滤条件,则跳过执行所述目标函数内的代码,针对所述目标函数的本次执行构造目标执行结果;否则,按照被测软件***中的真实函数调用关系执行所述目标函数,返回执行结果。
5.根据权利要求1所述的方法,其特征在于,还包括:获得用于构造目标执行结果的结果组装逻辑;
所述针对所述目标函数的本次执行构造目标执行结果,包括:按照所述结果组装逻辑,构造所述目标执行结果。
6.根据权利要求1所述的方法,其特征在于,所述输出所述目标执行结果,包括:将所述目标执行结果作为所述目标函数的本次执行的返回结果,返回给调用所述目标函数的调用方。
7.根据权利要求1或4所述的方法,其特征在于,还包括:接收针对预设定位逻辑、过滤条件、结果组装逻辑中的至少一种模拟逻辑的配置信息,根据所述配置信息调整所述至少一种模拟逻辑。
8.一种软件测试方法,其特征在于,包括:
获得目标调用请求;
根据所述目标调用请求,执行被测软件***中的目标函数;
发送所述目标函数本次执行对应的执行信息;
获得针对所述执行信息的目标执行结果。
9.一种软件测试方法,其特征在于,包括:
获得目标调用请求;
根据所述目标调用请求,执行被测软件***中的目标函数;
根据所述目标函数本次执行对应的执行信息,以及用于确定需要拦截的目标函数的预设定位逻辑,获得需要拦截的目标函数,拦截所述需要拦截的目标函数;
根据所述执行信息,以及所述需要拦截的目标函数对应的过滤条件,获得针对所述目标函数的本次执行的目标执行结果;所述目标执行结果为,按照结果组装逻辑定制构造的执行结果。
10.一种软件测试***,其特征在于,包括:被测软件***、定位模块、过滤模块、执行结果构造模块;其中,
所述被测软件***,用于接收目标调用请求,根据所述目标调用请求执行被测软件***中的目标函数,获得针对所述目标函数本次执行的目标执行结果;
所述定位模块,用于获得被测软件***中执行目标函数对应的执行信息,根据所述目标函数本次执行的执行信息,以及用于确定需要拦截的目标函数的预设定位逻辑,获得需要拦截的目标函数,拦截所述需要拦截的目标函数;
所述过滤模块,用于根据所述执行信息,以及所述需要拦截的目标函数对应的过滤条件,获得针对所述目标函数的本次执行的目标执行结果,输出所述目标执行结果;
所述执行结果构造模块,用于按照结果组装逻辑定制构造所述目标执行结果。
CN201911357297.6A 2019-12-25 2019-12-25 一种软件测试方法及装置 Active CN111159033B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911357297.6A CN111159033B (zh) 2019-12-25 2019-12-25 一种软件测试方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911357297.6A CN111159033B (zh) 2019-12-25 2019-12-25 一种软件测试方法及装置

Publications (2)

Publication Number Publication Date
CN111159033A true CN111159033A (zh) 2020-05-15
CN111159033B CN111159033B (zh) 2023-07-04

Family

ID=70557968

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911357297.6A Active CN111159033B (zh) 2019-12-25 2019-12-25 一种软件测试方法及装置

Country Status (1)

Country Link
CN (1) CN111159033B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111797020A (zh) * 2020-07-03 2020-10-20 北京每日优鲜电子商务有限公司 基于动态字节码的mock数据方法及装置
CN113821449A (zh) * 2021-11-22 2021-12-21 浙江口碑网络技术有限公司 ***测试方法、装置及电子设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110239194A1 (en) * 2010-03-29 2011-09-29 Microsoft Corporation Automatically redirecting method calls for unit testing
CN104731695A (zh) * 2013-12-19 2015-06-24 广州凯乐软件技术有限公司 一种支持表格驱动底层输入的单元测试***和方法
CN107203465A (zh) * 2016-03-18 2017-09-26 阿里巴巴集团控股有限公司 ***接口测试方法及装置
CN108959061A (zh) * 2017-05-19 2018-12-07 腾讯科技(深圳)有限公司 应用功能管理方法、终端以及装置
CN110134582A (zh) * 2019-04-03 2019-08-16 口碑(上海)信息技术有限公司 测试用例的处理及数据处理方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110239194A1 (en) * 2010-03-29 2011-09-29 Microsoft Corporation Automatically redirecting method calls for unit testing
CN104731695A (zh) * 2013-12-19 2015-06-24 广州凯乐软件技术有限公司 一种支持表格驱动底层输入的单元测试***和方法
CN107203465A (zh) * 2016-03-18 2017-09-26 阿里巴巴集团控股有限公司 ***接口测试方法及装置
CN108959061A (zh) * 2017-05-19 2018-12-07 腾讯科技(深圳)有限公司 应用功能管理方法、终端以及装置
CN110134582A (zh) * 2019-04-03 2019-08-16 口碑(上海)信息技术有限公司 测试用例的处理及数据处理方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
尹春娇: "自动化单元测试中MOCK技术的研究与应用" *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111797020A (zh) * 2020-07-03 2020-10-20 北京每日优鲜电子商务有限公司 基于动态字节码的mock数据方法及装置
CN113821449A (zh) * 2021-11-22 2021-12-21 浙江口碑网络技术有限公司 ***测试方法、装置及电子设备

Also Published As

Publication number Publication date
CN111159033B (zh) 2023-07-04

Similar Documents

Publication Publication Date Title
CN111625452B (zh) 流量回放方法和***
US9129058B2 (en) Application monitoring through continuous record and replay
CN110515854B (zh) 应用程序异常的复现方法、装置和电子设备
CN110795311B (zh) 一种事件回放的方法及装置
CN114978940B (zh) 链路监控及告警方法、装置、计算机设备和存储介质
US20180159724A1 (en) Automatic task tracking
CN113190464A (zh) mock测试方法、装置、电子设备及介质
WO2020211360A1 (zh) Mock测试方法、***、电子设备及计算机非易失性可读存储介质
CN111159033B (zh) 一种软件测试方法及装置
CN114745295A (zh) 数据采集方法、装置、设备和可读存储介质
US11368554B2 (en) Systems and methods for regulating service behavior
CN110858242A (zh) 页面跳转方法及装置
CN112699034A (zh) 虚拟登录用户构建方法、装置、设备及存储介质
CN114895879B (zh) 管理***设计方案确定方法、装置、设备及存储介质
CN112734349A (zh) 接口生成、数据调用方法、装置和电子设备
CN112383434B (zh) 网络请求的接口模拟方法、装置、电子设备和存储介质
CN115016995A (zh) 接口测试方法、计算机设备及计算机存储介质
CN111258873A (zh) 测试方法及装置
US8977901B1 (en) Generating service call patterns for systems under test
CN112948269B (zh) 信息处理方法、信息处理装置、电子设备及可读存储介质
US11868204B1 (en) Cache memory error analysis and management thereof
CN117234951B (zh) 应用***的功能测试方法、装置、计算机设备、存储介质
CN107885659A (zh) 对客户端的请求模拟响应的方法及装置、设备
CN113468007B (zh) 设备标识信息验证方法、装置、设备和存储介质
CN116126687A (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