CN111858375A - 软件测试方法、装置、电子设备和介质 - Google Patents

软件测试方法、装置、电子设备和介质 Download PDF

Info

Publication number
CN111858375A
CN111858375A CN202010740872.7A CN202010740872A CN111858375A CN 111858375 A CN111858375 A CN 111858375A CN 202010740872 A CN202010740872 A CN 202010740872A CN 111858375 A CN111858375 A CN 111858375A
Authority
CN
China
Prior art keywords
service request
service
information
determining
identification information
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
CN202010740872.7A
Other languages
English (en)
Other versions
CN111858375B (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.)
Industrial and Commercial Bank of China Ltd ICBC
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
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 Industrial and Commercial Bank of China Ltd ICBC filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN202010740872.7A priority Critical patent/CN111858375B/zh
Publication of CN111858375A publication Critical patent/CN111858375A/zh
Application granted granted Critical
Publication of CN111858375B publication Critical patent/CN111858375B/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/3688Test management for test execution, e.g. scheduling of test suites
    • 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

软件测试方法、装置、电子设备和介质
技术领域
本公开涉及计算机技术领域,更具体地,涉及一种软件测试方法、装置、电子设备和介质。
背景技术
黑盒测试是软件测试的主要方法之一,测试工程师把测试对象看作一个黑盒子,不考虑程序内部的逻辑结构和内部特性,依据程序的需求说明书,检查程序的功能是否符合需求说明。在软件全生命周期的各个阶段,如单元测试、集成测试、系统测试及验收测试等阶段中,黑盒测试都发挥着重要作用。
然而在黑盒测试中,当功能出现异常情况时,测试人员无法直接获取程序代码执行情况,导致问题排查效率较低,继而导致项目开发效率较低。
发明内容
有鉴于此,本公开提供了一种软件测试方法、装置、电子设备和介质,该软件测试方法可以应用于金融领域及其他领域。
本公开的一个方面提供了一种软件测试方法,包括:获取用于访问应用程序的业务请求;对所述业务请求进行解析,以获取所述业务请求的堆栈信息和所述业务请求的标识信息,其中,所述堆栈信息包括所述应用程序响应所述业务请求而执行的代码信息;基于所述标识信息,确定所述业务请求所属的业务场景;以及根据所述业务场景和所述代码信息,生成并输出所述软件的测试报告。
根据本公开的实施例,获取用于访问应用程序的业务请求包括:获取操作指令,所述操作指令包括业务信息;基于所述操作指令,确定标识信息;以及根据所述业务信息和所述标识信息,生成所述业务请求。
根据本公开的实施例,标识信息包括统一资源标识符,所述基于所述标识信息,确定所述业务请求所属的业务场景包括:确定统一资源标识符与业务场景的映射关系表;以及基于所述映射关系表,确定所述业务请求所属的业务场景。
根据本公开的实施例,对所述业务请求进行解析,以获取所述业务请求的堆栈信息包括:对所述业务请求进行解析,以获取所述业务请求的函数对象;以及基于所述函数对象,对所述应用程序进行插桩,以获取所述函数对象的堆栈信息。
根据本公开的实施例,基于所述函数对象,对所述应用程序进行插桩,以获取所述函数对象的堆栈信息包括:获取插桩规则和插桩位置;以及基于所述插桩规则和插桩位置对所述函数对象进行插桩,以获取所述函数对象的堆栈信息。
本公开的另一方面提供了一种软件测试装置,包括:第一获取模块,用于获取用于访问应用程序的业务请求;第二获取模块,用于对所述业务请求进行解析,以获取所述业务请求的堆栈信息和所述业务请求的标识信息,其中,所述堆栈信息包括所述应用程序响应所述业务请求而执行的代码信息;确定模块,用于基于所述标识信息,确定所述业务请求所属的业务场景;以及生成模块,用于根据所述业务场景和所述代码信息,生成并输出所述软件的测试报告。
根据本公开的实施例,第一获取模块包括:获取子模块,用于获取操作指令,所述操作指令包括业务信息;第一确定子模块,用于基于所述操作指令,确定标识信息;以及生成子模块,用于根据所述业务信息和所述标识信息,生成所述业务请求。
根据本公开的实施例,标识信息包括统一资源标识符,所述确定模块包括:第二确定模块,用于确定统一资源标识符与业务场景的映射关系表;以及第三确定模块,用于基于所述映射关系表,确定所述业务请求所属的业务场景。
本公开的另一个方面提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行上述的方法。
本公开的另一方面提供了一种计算机可读存储介质,存储有计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。
本公开的另一方面提供了一种计算机程序,所述计算机程序包括计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了根据本公开实施例的测试方法的系统架构;
图2示意性示出了根据本公开实施例的软件测试方法的流程图;
图3示意性示出了根据本公开实施例的客户端子系统的结构图;
图4示意性示出了根据本公开实施例的待测应用代理子系统的结构图;
图5示意性示出了根据本发明实施例的测试分析子系统的结构图;
图6示意性示出了根据本公开另一实施例的软件测试方法的流程图;
图7示意性示出了根据本公开实施例的软件测试装置的方框图;以及
图8示意性示出了根据本公开实施例的电子设备的方框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相相匹配的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。
本公开的实施例提供了一种软件测试方法,包括:获取用于访问应用程序的业务请求;对所述业务请求进行解析,以获取所述业务请求的堆栈信息和所述业务请求的标识信息,其中,所述堆栈信息包括所述应用程序响应所述业务请求而执行的代码信息;基于所述标识信息,确定所述业务请求所属的业务场景;以及根据所述业务场景和所述代码信息,生成并输出所述软件的测试报告。
图1示意性示出了根据本公开实施例的测试方法的系统架构100。需要注意的是,图1所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
如图1所示,该系统架构中例如可以包括客户端测试设备101、应用服务器102和测试分析子系统105。其中,客户端测试设备101可以包括客户端子系统103和待测应用代理子系统104。其中,客户端子系统103、待测应用代理子系统104和测试分析子系统105共同组成了用于实现本公开的软件测试方法的测试分析系统。
测试分析系统例如可以用于测试待测应用程序的功能是否正常。
根据本公开的实施例,客户端测试设备101为测试人员使用的用于访问待测应用程序的设备(包括但不限于手机、平板电脑、浏览器等)。测试人员在对待测应程序进行功能测试的情况下,客户端子系统103可以捕获业务流量,并且可以去确定业务流量的标识信息,以及向测试分析子系统105发送标识信息。客户端子系统103向待测应用代理子系统104发送业务流量,待测应用代理子系统104根据业务流量获取待测应用程序的堆栈信息,并且向测试分析子系统105发送堆栈信息。
测试分析子系统105接收来自待测应用代理子系统104的堆栈信息和来自客户端子系统103的标识信息,并且对堆栈信息和标识信息进行分析,从而获得函数调用链与业务流量的映射关系。
下面结合图2说明根据本公开实施例的软件测试方法。
图2示意性示出了根据本公开实施例的软件测试方法的流程图。
如图2所示,该信息处理方法可以包括操作S201~S204。
在操作S201,获取用于访问应用程序的业务请求。
根据本公开的实施例,例如可以是测试人员在图1所示的客户端测试设备101上操作而生成的业务请求。
在操作S202,对所述业务请求进行解析,以获取所述业务请求的堆栈信息和所述业务请求的标识信息,其中,所述堆栈信息包括所述应用程序响应所述业务请求而执行的代码信息。
根据本公开的实施例,业务请求的标识信息例如可以是统一资源标识符,或者也可以是对业务请求中添加的业务标签。堆栈信息例如可以包括函数调用关系以及函数包名、类名、方法名、输入输出参数等信息。
在操作S203,基于所述标识信息,确定所述业务请求所属的业务场景。
根据本公开的实施例,例如可以预先建立业务场景和标识信息的对应关系表,从而可以通过查询对应关系表来确定业务请求所属的业务场景。
在操作S204,根据所述业务场景和所述代码信息,生成并输出所述软件的测试报告。
根据本公开的实施例,测试报告例如可以包括业务场景和函数调用链的对应关系。
根据本公开的实施例,该信息处理方法将函数调用链与业务流量相关联,令测试人员了解业务流量与服务端函数调用链的映射关系,从而提升测试效率。当发现功能缺陷时,测试人员可清晰了解业务流量与服务端函数调用执行情况的映射关系,了解程序实际执行流,快速定位分析异常原因,有效提升异常问题排查效率,从而提升开发效率。另外,功能测试人员可结合白盒覆盖率统计工具中输出的未覆盖的函数与需求说明,总结分析未覆盖的业务场景,完善测试用例的设计,提升测试覆盖率。
根据本公开的实施例,在操作S201获取用于访问应用程序的业务请求可以包括:获取操作指令,所述操作指令包括业务信息;基于所述操作指令,确定标识信息;以及根据所述业务信息和所述标识信息,生成所述业务请求。
根据本公开的实施例,操作指令例如可以是测试人员在图1所示的客户端测试设备101的用户交互界面上进行选定操作而生成的。例如测试人员可以在用户交互界面上选定“转账”按钮,从而客户端测试设备101生成操作指令。该操作指令例如可以是生成转账请求的http报文。
根据本公开的实施例,客户端测试设备101可在http报文header中添加业务场景标签。例如可以在http报文的header中新增属性名称设为“Business Scenario”,该属性名称的属性值可根据业务场景来确定,或者也可以是测试人员输入。例如转账场景可定义为“transfer”。开启转账场景的测试开关后,所有客户端测试设备101生成的业务请求的报文中header包括“Business Scenario:transfer”字段。
根据本公开的实施例,标识信息包括统一资源标识符,所述基于所述标识信息,确定所述业务请求所属的业务场景包括:确定统一资源标识符与业务场景的映射关系表;以及基于所述映射关系表,确定所述业务请求所属的业务场景。
标识信息例如可以是http报文中的URI(Uniform Resource Identifier,统一资源标识符)。例如可以预先在客户端测试设备101建立URI和业务场景的映射关系表。从而可以查询映射关系表,来确定业务请求所属的业务场景。
根据本公开的实施例,对所述业务请求进行解析,以获取所述业务请求的堆栈信息包括:对所述业务请求进行解析,以获取所述业务请求的函数对象;以及基于所述函数对象,对所述应用程序进行插桩,以获取所述函数对象的堆栈信息。
根据本公开的实施例,基于所述函数对象,对所述应用程序进行插桩,以获取所述函数对象的堆栈信息包括:获取插桩规则和插桩位置;以及基于所述插桩规则和插桩位置对所述函数对象进行插桩,以获取所述函数对象的堆栈信息。
在图1所示的系统架构中,测试人员在对待测应用程序进行功能测试时,客户端子系统103例如可以基于流量代理捕获业务流量,根据测试人员定义的业务场景标签对业务流量进行标识而生成业务请求,同时将标识信息发送至测试分析子系统105。部署在被测应用服务器102上的待测应用代理子系统104解析业务请求,获取业务请求对应的堆栈信息,并将收集到的堆栈信息传入测试分析子系统105。测试分析子系统105根据客户端子系统103与应用服务器102采集到的信息,分析获取函数调用链与业务流量的映射关系,向测试人员展示并输出测试报告,可帮助开发测试人员快速定位分析功能异常。
根据本公开的实施例,业务场景与函数调用链的关联构建可采用请求报文关联标记模式或者客户端标记模式。其中,请求报文关联标记模式包括:客户端可在捕获业务流量后,在http报文header中添加业务场景标签。例如可在拦截业务流量后,在header中新增属性名称设为“Business Scenario”,属性值可根据业务场景确定,或者由测试人员输入,例如转账场景可定义为“transfer”。开启功能测试开关后,所有客户端发送的业务流量的报文中header加入“Business Scenario:transfer”字段。应用服务器端解析业务请求后,获取业务请求对应的对象。通过插桩模块获取所有对象对应的调用执行函数的堆栈信息(主要包括调用关系以及函数具体包名、类名、方法名、输入输出参数等),将对象执行函数堆栈信息与对象报文头中获取的业务场景标签关联后,传入测试分析子系统105。测试分析子系统105分析获取每个业务场景的函数调用链,并向测试人员展示。例如转账场景包含3条请求,则可最终获取3条函数调用链,A1-A2-A3……-An,B1-B2-B3……Bn,C1-C2-C3……Cn。使用请求报文关联标记模式时,客户端子系统103无需向测试分析子系统105传递信息,所有信息可从待测分析代理子系统中获取。客户端标记模式包括:客户端子系统103可在捕获业务请求后,确定业务场景标签,并在客户端子系统103选取业务流量的某个特征或属性后建立业务场景标签与流量的映射。例如可选取业务流量的URI建立与业务场景标签的映射,将映射关系以键值对的形式存储在客户端文件中,并传入测试分析子系统105。服务端处理请求后,解析获取业务流量对应的对象。通过插桩模块获取所有对象对应的调用执行函数的堆栈信息(主要包括函数调用关系以及函数包名、类名、方法名、输入输出参数等信息),将对象执行函数堆栈信息与对象URI关联后,传入测试分析子系统105。测试分析子系统105基于客户端子系统103与待测应用代理子系统104传入的信息,基于函数堆栈信息分析函数调用链后,以URI为主键将调用链与业务场景关联,最终向测试人员展示。
图3示意性示出了根据本公开实施例的客户端子系统103的结构图。
如图3所示,客户端子系统103由流量捕获模块301、流量标记模块302两部分构成。测试人员进行某业务场景或测试用例的测试工作时,通过客户端子系统103对业务流量完成业务场景标识。其中,流量捕获模块301拦截测试设备发送的业务流量,流量标记模块302根据测试人员定义的业务场景标签对报文进行标记后,由客户端测试设备101将继续将流量发送至应用服务器102,同时将流量标记信息推送至测试分析子系统105。
流量捕获模块301可以利用本地流量代理工具将网络传输发送数据包进行截获、编辑与转发。流量捕获模块301基于本地流量代理工具内核实时捕获所有客户端测试设备的业务流量,将收集到的信息送入流量标记模块做进一步处理。
流量标记模块302的作用为标记业务流量。在功能测试的过程中,当测试人员开始针对某一业务场景开展测试时,可自定义业务场景标签,并将标记功能的开关开启,流量标记模块接收流量捕获模块301获取的流量后,根据测试人员自定义的业务场景标签与流量将流量标记为自定义的业务场景。当测试结束将开关关闭,结束标记。流量标记模块也可支持测试人员逐条标记业务流量。最终可将已测试业务流量标记为自定义业务场景。
图4示意性示出了根据本公开实施例的待测应用代理子系统104的结构图。
如图4所示,待测应用代理子系统104由插桩模块401、堆栈信息获取模块402两部分构成。插桩模块401实时获取业务请求后进行解析处理,获取请求对象。插桩模块401分析待测应用程序、确认插桩策略并插入探针,堆栈信息获取模块402实时获取应用服务器的堆栈信息,将采集到的堆栈信息与流量信息送入测试分析子系统105。
插桩模块401的主要作用为对应用程序编译后代码进行插桩,在被测程序中插入探针,然后通过探针的执行来获得程序的控制流。插桩模块401确定探针插入的代码位置和插桩策略后,可采用两种插桩方式:一种为在应用服务器启动前,通过配置Web容器的启动参数,加载插桩工具。另一种为在应用服务器启动后,通过附加进程的方式,将插桩工具加载入应用进程,挂载关键函数。
堆栈信息获取模块402的主要作用为实时获取代码调用执行信息。插桩程序运行后,会通过虚拟机工具接口,在字节码加载时,对应用服务器中函数做hook操作,加入自定义的分析代码,以便跟踪获取业务流量在应用服务器102对应的函数执行情况,将采集到的堆栈信息与流量信息送入测试分析子系统105进行进一步处理。
图5示意性示出了根据本发明实施例的测试分析子系统105的结构图。
如图5所示,测试分析子系统105由分析模块501、显示模块502两部分构成。分析模块501根据客户端子系统与待测应用代理子系统采集到的信息,分析获取函数调用链,并建立函数调用链与业务流量的映射关系。最后将信息推送至显示模块502向测试人员展示,并输出测试报告。
分析模块501的主要作用为在接收到客户端子系统103的流量标记信息与待测应用代理子系统104搜集到的堆栈信息及流量信息后,结合线程堆栈中线程名、运行状态与函数调用层级关系分析某个业务场景所有业务流量从入口函数到最终的存储函数或执行函数所经过的执行路径,获取业务场景流量对应的函数调用链。将获取到的函数调用链结合业务流量标记信息,建立函数调用链与业务场景的映射关系后传送至显示模块502。
显示模块502的主要作用为对分析模块501推送的函数调用链信息与业务流量信息进行处理与展示。该模块会实时在客户端测试设备展示并存储业务流量的请求名称,业务请求以及业务流量对应的具体的函数执行信息,在测试结束后,可提供报告导出供测试人员参考。
图6示意性示出了根据本公开另一实施例的软件测试方法的流程图。
如图6所示,该软件测试方法可以包括操作S601~S605。
在操作S601,将分析装置的客户端子系统与待测应用代理子系统部署到测试环境。
在操作S602,通过客户端子系统对业务流量完成业务场景标识。
例如可以利用流量捕获模块301拦截业务流量,流量标记模块302对业务流量完成场景标记后将流量发送至服务器。
在操作S603,获取应用服务器对应的代码执行堆栈信息,将信息推送至测试分析子系统。
例如可以利用待测应用代理子系统104中插桩模块401获取应用服务器对应的代码执行堆栈信息,将信息推送至测试分析子系统105。
在操作S604,采集到的代码执行信息与流量标记信息,关联代码执行流与业务流量的映射关系,推送至显示模块。
例如可以利用测试分析子系统105中分析模块501根据采集到的代码执行信息与流量标记信息,关联代码执行流与业务流量的映射关系,推送至显示模块502。
在操作S605,展示业务场景与业务流量的映射关系,并在测试完成后提供报告输出。
图7示意性示出了根据本公开实施例的软件测试装置700的方框图。
如图7所示,软件测试装置700可以包括第一获取模块710、第二获取模块720、确定模块730和生成模块740。
第一获取模块710,例如可以执行上文参考图2描述的操作S201,用于获取用于访问应用程序的业务请求。
第二获取模块720,例如可以执行上文参考图2描述的操作S202,用于对所述业务请求进行解析,以获取所述业务请求的堆栈信息和所述业务请求的标识信息,其中,所述堆栈信息包括所述应用程序响应所述业务请求而执行的代码信息。
确定模块730,例如可以执行上文参考图2描述的操作S203,用于基于所述标识信息,确定所述业务请求所属的业务场景。
生成模块740,例如可以执行上文参考图2描述的操作S204,用于根据所述业务场景和所述代码信息,生成并输出所述软件的测试报告。
根据本公开的实施例,第一获取模块710包括:获取子模块,用于获取操作指令,所述操作指令包括业务信息;第一确定子模块,用于基于所述操作指令,确定标识信息;以及生成子模块,用于根据所述业务信息和所述标识信息,生成所述业务请求。
根据本公开的实施例,标识信息包括统一资源标识符,所述确定模块730包括:第二确定模块,用于确定统一资源标识符与业务场景的映射关系表;以及第三确定模块,用于基于所述映射关系表,确定所述业务请求所属的业务场景。
根据本公开的实施例,对所述业务请求进行解析,以获取所述业务请求的堆栈信息包括:对所述业务请求进行解析,以获取所述业务请求的函数对象;以及基于所述函数对象,对所述应用程序进行插桩,以获取所述函数对象的堆栈信息。
根据本公开的实施例,所述基于所述函数对象,对所述应用程序进行插桩,以获取所述函数对象的堆栈信息包括:获取插桩规则和插桩位置;以及基于所述插桩规则和插桩位置对所述函数对象进行插桩,以获取所述函数对象的堆栈信息。
根据本公开的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,第一获取模块710、第二获取模块720、确定模块730和生成模块740中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,第一获取模块710、第二获取模块720、确定模块730和生成模块740中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,第一获取模块710、第二获取模块720、确定模块730和生成模块740中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图8示意性示出了根据本公开实施例的电子设备的方框图。图8示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图8所示,根据本公开实施例的电子设备800包括处理器801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。处理器801例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器801还可以包括用于缓存用途的板载存储器。处理器801可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 803中,存储有电子设备800操作所需的各种程序和数据。处理器801、ROM802以及RAM 803通过总线804彼此相连。处理器801通过执行ROM 802和/或RAM 803中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM 802和RAM 803以外的一个或多个存储器中。处理器801也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,电子设备800还可以包括输入/输出(I/O)接口805,输入/输出(I/O)接口805也连接至总线804。电子设备800还可以包括连接至I/O接口805的以下部件中的一项或多项:包括键盘、鼠标等的输入部分807;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
根据本公开的实施例,根据本公开实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被处理器801执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 802和/或RAM 803和/或ROM 802和RAM 803以外的一个或多个存储器。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。

Claims (10)

1.一种软件测试方法,包括:
获取用于访问应用程序的业务请求;
对所述业务请求进行解析,以获取所述业务请求的堆栈信息和所述业务请求的标识信息,其中,所述堆栈信息包括所述应用程序响应所述业务请求而执行的代码信息;
基于所述标识信息,确定所述业务请求所属的业务场景;以及
根据所述业务场景和所述代码信息,生成并输出所述软件的测试报告。
2.根据权利要求1所述的方法,其中,所述获取用于访问应用程序的业务请求包括:
获取操作指令,所述操作指令包括业务信息;
基于所述操作指令,确定标识信息;以及
根据所述业务信息和所述标识信息,生成所述业务请求。
3.根据权利要求1所述的方法,其中,所述标识信息包括统一资源标识符,所述基于所述标识信息,确定所述业务请求所属的业务场景包括:
确定统一资源标识符与业务场景的映射关系表;以及
基于所述映射关系表,确定所述业务请求所属的业务场景。
4.根据权利要求1~3中任一项所述的方法,其中,所述对所述业务请求进行解析,以获取所述业务请求的堆栈信息包括:
对所述业务请求进行解析,以获取所述业务请求的函数对象;以及
基于所述函数对象,对所述应用程序进行插桩,以获取所述函数对象的堆栈信息。
5.根据权利要求4所述的方法,其中,所述基于所述函数对象,对所述应用程序进行插桩,以获取所述函数对象的堆栈信息包括:
获取插桩规则和插桩位置;以及
基于所述插桩规则和插桩位置对所述函数对象进行插桩,以获取所述函数对象的堆栈信息。
6.一种软件测试装置,包括:
第一获取模块,用于获取用于访问应用程序的业务请求;
第二获取模块,用于对所述业务请求进行解析,以获取所述业务请求的堆栈信息和所述业务请求的标识信息,其中,所述堆栈信息包括所述应用程序响应所述业务请求而执行的代码信息;
确定模块,用于基于所述标识信息,确定所述业务请求所属的业务场景;以及
生成模块,用于根据所述业务场景和所述代码信息,生成并输出所述软件的测试报告。
7.根据权利要求6所述的装置,其中,所述第一获取模块包括:
获取子模块,用于获取操作指令,所述操作指令包括业务信息;
第一确定子模块,用于基于所述操作指令,确定标识信息;以及
生成子模块,用于根据所述业务信息和所述标识信息,生成所述业务请求。
8.根据权利要求6所述的装置,其中,所述标识信息包括统一资源标识符,所述确定模块包括:
第二确定模块,用于确定统一资源标识符与业务场景的映射关系表;以及
第三确定模块,用于基于所述映射关系表,确定所述业务请求所属的业务场景。
9.一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如权利要求1~5中任意一项所述的方法。
10.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行如权利要求1~5中任意一项所述的方法。
CN202010740872.7A 2020-07-28 2020-07-28 软件测试方法、装置、电子设备和介质 Active CN111858375B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010740872.7A CN111858375B (zh) 2020-07-28 2020-07-28 软件测试方法、装置、电子设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010740872.7A CN111858375B (zh) 2020-07-28 2020-07-28 软件测试方法、装置、电子设备和介质

Publications (2)

Publication Number Publication Date
CN111858375A true CN111858375A (zh) 2020-10-30
CN111858375B CN111858375B (zh) 2023-09-05

Family

ID=72948794

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010740872.7A Active CN111858375B (zh) 2020-07-28 2020-07-28 软件测试方法、装置、电子设备和介质

Country Status (1)

Country Link
CN (1) CN111858375B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112506800A (zh) * 2020-12-22 2021-03-16 北京百度网讯科技有限公司 测试代码的方法、装置、设备、介质和程序产品
CN112749094A (zh) * 2021-01-14 2021-05-04 中国工商银行股份有限公司 测试案例生成方法及装置
CN113114681A (zh) * 2021-04-13 2021-07-13 中国工商银行股份有限公司 测试报文处理方法、装置、计算机系统及可读存储介质
CN113342677A (zh) * 2021-06-29 2021-09-03 平安普惠企业管理有限公司 接口测试方法、装置、计算机设备及存储介质
CN114416520A (zh) * 2021-12-08 2022-04-29 中国人民解放军战略支援部队信息工程大学 一种面向Windows程序图形界面绕过的模糊测试方法及装置
CN116775040A (zh) * 2023-08-16 2023-09-19 北京安普诺信息技术有限公司 实现代码疫苗的插桩方法及基于代码疫苗的应用测试方法

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102521120A (zh) * 2011-11-16 2012-06-27 中国民航信息网络股份有限公司 一种软件自动化测试系统及方法
CN103020529A (zh) * 2012-10-31 2013-04-03 中国航天科工集团第二研究院七○六所 一种基于场景模型的软件漏洞分析方法
CN103455413A (zh) * 2012-05-31 2013-12-18 联想(北京)有限公司 一种通讯终端交互场景测试数据处理方法、装置和系统
CN104268055A (zh) * 2014-09-01 2015-01-07 腾讯科技(深圳)有限公司 一种程序异常的监控方法和装置
CN105468517A (zh) * 2015-11-10 2016-04-06 中国矿业大学 一种基于黑盒测试用例约简的统计错误定位方法
CN108255700A (zh) * 2017-03-27 2018-07-06 平安科技(深圳)有限公司 测试结果生成方法和装置
CN108664372A (zh) * 2018-05-08 2018-10-16 平安科技(深圳)有限公司 测试过程的监控装置、方法及计算机可读存储介质
CN110414242A (zh) * 2019-08-02 2019-11-05 中国工商银行股份有限公司 用于检测业务逻辑漏洞的方法、装置、设备及介质
CN110618940A (zh) * 2019-09-19 2019-12-27 腾讯科技(深圳)有限公司 堆栈信息追踪方法、装置、计算机可读介质及计算装置
CN110955899A (zh) * 2019-12-13 2020-04-03 中国工商银行股份有限公司 安全测试方法、装置、测试设备以及介质
CN111382023A (zh) * 2018-12-27 2020-07-07 中国移动通信集团贵州有限公司 代码故障定位方法、装置、设备及存储介质
CN111427792A (zh) * 2020-03-27 2020-07-17 中国工商银行股份有限公司 测试方法、装置、电子设备和可读存储介质

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102521120A (zh) * 2011-11-16 2012-06-27 中国民航信息网络股份有限公司 一种软件自动化测试系统及方法
CN103455413A (zh) * 2012-05-31 2013-12-18 联想(北京)有限公司 一种通讯终端交互场景测试数据处理方法、装置和系统
CN103020529A (zh) * 2012-10-31 2013-04-03 中国航天科工集团第二研究院七○六所 一种基于场景模型的软件漏洞分析方法
CN104268055A (zh) * 2014-09-01 2015-01-07 腾讯科技(深圳)有限公司 一种程序异常的监控方法和装置
CN105468517A (zh) * 2015-11-10 2016-04-06 中国矿业大学 一种基于黑盒测试用例约简的统计错误定位方法
CN108255700A (zh) * 2017-03-27 2018-07-06 平安科技(深圳)有限公司 测试结果生成方法和装置
CN108664372A (zh) * 2018-05-08 2018-10-16 平安科技(深圳)有限公司 测试过程的监控装置、方法及计算机可读存储介质
CN111382023A (zh) * 2018-12-27 2020-07-07 中国移动通信集团贵州有限公司 代码故障定位方法、装置、设备及存储介质
CN110414242A (zh) * 2019-08-02 2019-11-05 中国工商银行股份有限公司 用于检测业务逻辑漏洞的方法、装置、设备及介质
CN110618940A (zh) * 2019-09-19 2019-12-27 腾讯科技(深圳)有限公司 堆栈信息追踪方法、装置、计算机可读介质及计算装置
CN110955899A (zh) * 2019-12-13 2020-04-03 中国工商银行股份有限公司 安全测试方法、装置、测试设备以及介质
CN111427792A (zh) * 2020-03-27 2020-07-17 中国工商银行股份有限公司 测试方法、装置、电子设备和可读存储介质

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112506800A (zh) * 2020-12-22 2021-03-16 北京百度网讯科技有限公司 测试代码的方法、装置、设备、介质和程序产品
CN112506800B (zh) * 2020-12-22 2023-08-18 北京百度网讯科技有限公司 测试代码的方法、装置、设备、介质和程序产品
CN112749094A (zh) * 2021-01-14 2021-05-04 中国工商银行股份有限公司 测试案例生成方法及装置
CN113114681A (zh) * 2021-04-13 2021-07-13 中国工商银行股份有限公司 测试报文处理方法、装置、计算机系统及可读存储介质
CN113114681B (zh) * 2021-04-13 2022-09-06 中国工商银行股份有限公司 测试报文处理方法、装置、计算机系统及可读存储介质
CN113342677A (zh) * 2021-06-29 2021-09-03 平安普惠企业管理有限公司 接口测试方法、装置、计算机设备及存储介质
CN114416520A (zh) * 2021-12-08 2022-04-29 中国人民解放军战略支援部队信息工程大学 一种面向Windows程序图形界面绕过的模糊测试方法及装置
CN116775040A (zh) * 2023-08-16 2023-09-19 北京安普诺信息技术有限公司 实现代码疫苗的插桩方法及基于代码疫苗的应用测试方法
CN116775040B (zh) * 2023-08-16 2023-11-17 北京安普诺信息技术有限公司 实现代码疫苗的插桩方法及基于代码疫苗的应用测试方法

Also Published As

Publication number Publication date
CN111858375B (zh) 2023-09-05

Similar Documents

Publication Publication Date Title
CN111858375B (zh) 软件测试方法、装置、电子设备和介质
CN109302522B (zh) 测试方法、装置以及计算机系统和介质
CN108521353B (zh) 定位性能瓶颈的处理方法、设备及可读存储介质
US9697104B2 (en) End-to end tracing and logging
CN107241315B (zh) 银行网关接口的接入方法、装置及计算机可读存储介质
US10491629B2 (en) Detecting sensitive data sent from client device to third-party
CN110069413B (zh) 测试数据通信、测试方法、装置、设备及存储介质
CN105787364A (zh) 任务的自动化测试方法、装置及系统
CN112367680B (zh) 基于智能电表的外部通信测试方法、装置和计算机设备
CN113760641A (zh) 业务监控方法、装置、计算机系统和计算机可读存储介质
CN111831574B (zh) 回归测试规划方法、装置、计算机系统和介质
CN111008105A (zh) 一种分布式系统调用关系可视化方法及装置
CN113076253A (zh) 一种测试方法和测试装置
CN112783787A (zh) 接口测试方法、装置、系统和电子设备
CN110502428A (zh) 代码测试方法、装置、计算机设备和存储介质
US20070245313A1 (en) Failure tagging
CN115186274A (zh) 基于iast的安全测试方法及装置
CN112769609B (zh) 控制故障模拟和模拟故障的方法、系统、介质和产品
CN112131127B (zh) 接口测试方法、装置、系统及电子设备
CN116841902A (zh) 健康状态检查方法、装置、设备及存储介质
CN113852610B (zh) 报文处理方法、装置、计算机设备和存储介质
CN115391127A (zh) 一种拨测方法、装置、存储介质及芯片
CN114553663A (zh) 一种异常检测方法、装置、设备和存储介质
CN113886277B (zh) 一种软件缺陷报告合规性的检测方法及装置
CN117992359B (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