CN116431519A - 软件测试方法及装置、电子设备和计算机可读存储介质 - Google Patents

软件测试方法及装置、电子设备和计算机可读存储介质 Download PDF

Info

Publication number
CN116431519A
CN116431519A CN202310473524.1A CN202310473524A CN116431519A CN 116431519 A CN116431519 A CN 116431519A CN 202310473524 A CN202310473524 A CN 202310473524A CN 116431519 A CN116431519 A CN 116431519A
Authority
CN
China
Prior art keywords
mutated
mutation
program
position identifiers
identifier
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
Application number
CN202310473524.1A
Other languages
English (en)
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 CN202310473524.1A priority Critical patent/CN116431519A/zh
Publication of CN116431519A publication Critical patent/CN116431519A/zh
Pending legal-status Critical Current

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/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis
    • 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)
  • Stored Programmes (AREA)

Abstract

本公开提供了一种软件测试方法及装置、电子设备和计算机可读存储介质,可以应用于计算机技术、软件技术、测试技术和金融领域。该软件测试方法包括:响应于接收到来自于客户端的变异请求,根据变异请求中的待变异程序标识和M个变异因子标识,获取待变异程序和M个变异因子;根据待变异程序和M个变异因子,确定N个待变异位置标识和与N个待变异位置标识各自对应的待变异位置;根据N个待变异位置标识,利用M个变异因子对与N个待变异位置标识各自对应的待变异位置处的字段进行变异,得到与N个待变异位置标识各自对应的变异程序;将与N个待变异位置标识各自对应的变异程序发送至客户端。

Description

软件测试方法及装置、电子设备和计算机可读存储介质
技术领域
本公开涉及计算机技术、软件技术、测试技术和金融领域,更具体地,涉及一种软件测试方法及装置、电子设备、计算机可读存储介质和计算机程序产品。
背景技术
随着计算机技术的发展,应用于各种领域的***软件和应用软件应运而生。通过软件测试可以检查软件是否满足设计要求。
软件测试(即Software Testing)可以指在规定的条件下对软件程序进行操作,以发现软件程序存在的问题、衡量软件质量,并对软件程序是否能满足设计要求进行评估的过程。软件测试可以包括静态测试、动态测试、黑盒测试和白盒测试等。
在实现本公开构思的过程中,发明人发现相关技术中至少存在如下问题:由于软件测试的覆盖率较低,因而无法保障软件质量。
发明内容
有鉴于此,本公开提供了一种软件测试方法及装置、电子设备、计算机可读存储介质和计算机程序产品。
根据本公开的一个方面,提供了一种软件测试方法,应用于代理端,包括:
响应于接收到来自于客户端的变异请求,根据上述变异请求中的待变异程序标识和M个变异因子标识,获取待变异程序和M个变异因子,其中,M为正整数;
根据上述待变异程序和上述M个变异因子,确定N个待变异位置标识和与上述N个待变异位置标识各自对应的待变异位置,其中,N为正整数;
根据上述N个待变异位置标识,利用上述M个变异因子对与上述N个待变异位置标识各自对应的待变异位置处的字段进行变异,得到与上述N个待变异位置标识各自对应的变异程序;以及
将与上述N个待变异位置标识各自对应的变异程序发送至上述客户端,以便于上述客户端对与上述N个待变异位置标识各自对应的变异程序进行软件测试,得到与上述N个待变异位置标识各自对应的软件测试结果。
根据本公开的实施例,上述根据上述N个待变异位置标识,利用上述M个变异因子对与上述N个待变异位置标识各自对应的待变异位置处的字段进行变异,得到与上述N个待变异位置标识各自对应的变异程序包括:
确定与上述待变异位置标识对应的变异因子标识;
根据上述变异因子标识,确定与上述变异因子标识对应的变异字段值;以及
利用与上述变异因子标识对应的变异字段值,对与上述待变异位置标识对应的待变异位置处的字段进行变异,得到与上述待变异位置标识对应的变异程序。
根据本公开的实施例,上述软件测试方法还包括:
根据上述待变异程序标识,获取与上述待变异程序标识对应的原始字节码文件;
将上述原始字节码文件存储至内存;以及
响应于生成与上述待变异位置标识对应的变异程序,重新加载上述原始字节码文件。
根据本公开的实施例,上述软件测试方法还包括,在上述响应于接收到来自于客户端的变异请求,根据上述变异请求中的待变异程序标识和M个变异因子标识,获取待变异程序和M个变异因子之前:
在上述代理端和上述客户端之间建立第一通信连接;以及
基于上述第一通信连接,接收上述变异请求。
根据本公开的实施例,上述M个变异因子中的每个变异因子各自包括变异字段名称和与上述变异字段名称对应的变异字段值。
根据本公开的实施例,上述根据上述待变异程序和上述M个变异因子,确定N个待变异位置标识和与上述N个待变异位置标识各自对应的待变异位置包括:
根据与上述变异因子标识对应的上述变异字段名称,对上述待变异程序进行字段名称匹配,得到与上述变异因子标识对应的n个候选待变异位置标识和与上述n个候选待变异位置标识各自对应的候选待变异位置,其中,n为正整数且n小于或等于N;以及
根据与上述每个变异因子标识各自对应的上述n个候选待变异位置标识和n个候选待变异位置,确定上述N个待变异位置标识和与上述N个待变异位置标识各自对应的待变异位置。
根据本公开的另一个方面,提供了软件测试方法,应用于客户端,包括:
响应于检测到软件测试操作,根据与上述软件测试操作对应的待变异程序标识和变异因子标识,生成变异请求;
将上述变异请求发送至代理端;
接收来自于上述代理端的与N个待变异位置标识各自对应的变异程序,其中,N为正整数;以及
对与上述N个待变异位置标识各自对应的变异程序进行软件测试,得到与上述N个待变异位置标识各自对应的软件测试结果。
根据本公开的实施例,上述软件测试方法还包括,在上述对与上述N个待变异位置标识各自对应的变异程序进行软件测试,得到与上述N个待变异位置标识各自对应的软件测试结果之后:
在与上述待变异位置标识对应的测试结果表征上述变异程序通过软件测试的情况下,基于第一预定模式在上述待变异程序中显示与上述待变异位置标识对应的待注入位置处的字段;以及
在与上述待变异位置标识对应的测试结果表征上述变异程序未通过软件测试的情况下,基于第二预定模式在上述待变异程序中显示与上述待变异位置标识对应的待注入位置处的字段。
根据本公开的实施例,上述软件测试方法还包括:
响应于检测到上述软件测试操作,根据与上述软件测试操作对应的客户端标识,生成代理请求;
将上述代理请求发送至服务端;以及
接收来自于上述服务端的代理端标识,其中,上述代理端标识是上述服务端根据上述客户端标识创建得到的,上述代理端标识用于指示代理端。
根据本公开的实施例,上述软件测试方法还包括,在上述将上述变异请求发送至代理端之前:
根据上述代理端标识,在与上述代理端标识对应的上述代理端和上述客户端之间建立第二通信连接;以及
基于上述第二通信连接,发送上述变异请求。
根据本公开的另一个方面,提供了一种软件测试装置,应用于代理端,包括:
第一获取模块,用于响应于接收到来自于客户端的变异请求,根据上述变异请求中的待变异程序标识和M个变异因子标识,获取待变异程序和M个变异因子,其中,M为正整数;
确定模块,用于根据上述待变异程序和上述M个变异因子,确定N个待变异位置标识和与上述N个待变异位置标识各自对应的待变异位置,其中,N为正整数;
变异模块,用于根据上述N个待变异位置标识,利用上述M个变异因子对与上述N个待变异位置标识各自对应的待变异位置处的字段进行变异,得到与上述N个待变异位置标识各自对应的变异程序;以及
第一发送模块,用于将与上述N个待变异位置标识各自对应的变异程序发送至上述客户端,以便于上述客户端对与上述N个待变异位置标识各自对应的变异程序进行软件测试,得到与上述N个待变异位置标识各自对应的软件测试结果。
根据本公开的另一个方面,提供了一种软件测试装置,应用于客户端,包括:
生成模块,用于响应于检测到软件测试操作,根据与上述软件测试操作对应的待变异程序标识和变异因子标识,生成变异请求;
第二发送模块,用于将上述变异请求发送至代理端;
第一接收模块,用于接收来自于上述代理端的与N个待变异位置标识各自对应的变异程序,其中,N为正整数;以及
测试模块,用于对与上述N个待变异位置标识各自对应的变异程序进行软件测试,得到与上述N个待变异位置标识各自对应的软件测试结果。
根据本公开的另一个方面,提供了一种电子设备,包括:
一个或多个处理器;
存储器,用于存储一个或多个指令,
其中,当上述一个或多个指令被上述一个或多个处理器执行时,使得上述一个或多个处理器实现如本公开所述的方法。
根据本公开的另一个方面,提供了一种计算机可读存储介质,其上存储有可执行指令,上述可执行指令被处理器执行时使处理器实现如本公开所述的方法。
根据本公开的另一个方面,提供了一种计算机程序产品,上述计算机程序产品包括计算机可执行指令,上述计算机可执行指令在被执行时用于实现如本公开所述的方法。
根据本公开的实施例,由于待变异程序和M个变异因子是根据变异请求获取的,通过根据待变异程序和M个变异因子,确定待变异位置标识和待变异位置,由此提高了软件测试的覆盖率。在此基础上,通过根据待变异位置标识,利用变异因子对与待变异位置标识对应的待变异位置处的字段进行变异,能够自动得到变异程序,由此至少部分地克服了相关技术中由于软件测试的覆盖率较低,无法保障软件质量的技术问题,提高了软件测试的效率。此外,通过将变异程序发送至客户端,使得客户端能够对变异程序进行软件测试,得到软件测试结果,由此提高了软件产品的质量。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了根据本公开实施例的可以应用软件测试方法的***架构;
图2示意性示出了根据本公开实施例的软件测试方法的流程图;
图3示意性示出了根据本公开实施例的根据N个待变异位置标识,利用M个变异因子对与N个待变异位置标识各自对应的待变异位置处的字段进行变异,得到与N个待变异位置标识各自对应的变异程序过程的示例示意图;
图4示意性示出了根据本公开实施例的软件测试过程的示例示意图;
图5示意性示出了根据本公开另一实施例的软件测试方法的流程图;
图6示意性示出了根据本公开另一实施例的软件测试过程的示例示意图;
图7示意性示出了根据本公开实施例的软件测试交互过程的示例示意图;
图8示意性示出了根据本公开实施例的软件测试装置的框图;
图9示意性示出了根据本公开另一实施例的软件测试装置的框图;以及
图10示意性示出了根据本公开实施例的适于实现软件测试方法的电子设备的框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“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的***等)。
在本公开的技术方案中,所涉及的用户个人信息的获取,存储和应用等,均符合相关法律法规的规定,采取了必要保密措施,且不违背公序良俗。
在本公开的技术方案中,在获取或采集用户个人信息之前,均获取了用户的授权或同意。
测试脚本可以作为测试安全网用于检测软件质量,但是,由于测试安全网本身也是由编程人员编写的,因而测试脚本本身也可能存在缺陷和有效性不足的问题。因此,需要对测试脚本进行测试。
对测试脚本进行测试的方式可以包括单元测试和接口测试。单元测试可以指对软件中的最小可测试单元进行检查和验证。接口测试可以指对测试***组件间接口的测试。
在相关技术中,单元测试通常采用白盒变异测试,缺乏针对黑盒接口级测试进行有效性分析的方法,无法保障软件测试的覆盖率,进而无法保障软件质量。
为了至少部分地解决相关技术中存在的技术问题,本公开提供了一种软件测试方法及装置、电子设备和计算机可读存储介质,可以应用于计算机技术、软件技术、测试技术和金融领域。该软件测试方法包括:响应于接收到来自于客户端的变异请求,根据变异请求中的待变异程序标识和M个变异因子标识,获取待变异程序和M个变异因子;根据待变异程序和M个变异因子,确定N个待变异位置标识和与N个待变异位置标识各自对应的待变异位置;根据N个待变异位置标识,利用M个变异因子对与N个待变异位置标识各自对应的待变异位置处的字段进行变异,得到与N个待变异位置标识各自对应的变异程序;将与N个待变异位置标识各自对应的变异程序发送至客户端。
需要说明的是,本公开实施例提供的软件测试方法和装置可用于计算机技术、软件技术、测试技术和金融领域,例如应用于互联网技术领域。本公开实施例提供的软件测试方法和装置也可用于除计算机技术、软件技术、测试技术和金融领域之外的任意领域,例如应用于信息安全技术领域。本公开实施例提供的软件测试方法和装置的应用领域不做限定。
图1示意性示出了根据本公开实施例的可以应用软件测试方法的***架构。需要注意的是,图1所示仅为可以应用本公开实施例的***架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、***、环境或场景。
如图1所示,根据该实施例的***架构100可以包括第一终端设备101、第二终端设备102、第三终端设备103,网络104和服务器105。网络104用以在第一终端设备101、第二终端设备102、第三终端设备103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用第一终端设备101、第二终端设备102、第三终端设备103中的至少一个通过网络104与服务器105交互,以接收或发送消息等。第一终端设备101、第二终端设备102、第三终端设备103上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
第一终端设备101、第二终端设备102、第三终端设备103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对用户利用第一终端设备101、第二终端设备102、第三终端设备103所浏览的网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的用户请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)反馈给终端设备。
需要说明的是,本公开实施例所提供的软件测试方法一般可以由服务器105执行。相应地,本公开实施例所提供的软件测试装置一般可以设置于服务器105中。本公开实施例所提供的软件测试方法也可以由不同于服务器105且能够与第一终端设备101、第二终端设备102、第三终端设备103和/或服务器105通信的服务器或服务器集群执行。相应地,本公开实施例所提供的软件测试装置也可以设置于不同于服务器105且能够与第一终端设备101、第二终端设备102、第三终端设备103和/或服务器105通信的服务器或服务器集群中。
备选地,本公开实施例所提供的软件测试方法也可以由第一终端设备101、第二终端设备102或第三终端设备103执行,或者也可以由不同于第一终端设备101、第二终端设备102或第三终端设备103的其他终端设备执行。相应地,本公开实施例所提供的软件测试装置也可以设置于第一终端设备101、第二终端设备102或第三终端设备103中,或设置于不同于第一终端设备101、第二终端设备102或第三终端设备103的其他终端设备中。
应该理解,图1中的第一终端设备、第二终端设备、第三终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的第一终端设备、第二终端设备、第三终端设备、网络和服务器。
应注意,以下方法中各个操作的序号仅作为该操作的表示以便描述,而不应被看作表示该各个操作的执行顺序。除非明确指出,否则该方法不需要完全按照所示顺序来执行。
图2示意性示出了根据本公开实施例的软件测试方法的流程图。
如图2所示,该软件测试方法200可以包括操作S210~S240。
在操作S210,响应于接收到来自于客户端的变异请求,根据变异请求中的待变异程序标识和M个变异因子标识,获取待变异程序和M个变异因子,其中,M为正整数。
在操作S220,根据待变异程序和M个变异因子,确定N个待变异位置标识和与N个待变异位置标识各自对应的待变异位置,其中,N为正整数。
在操作S230,根据N个待变异位置标识,利用M个变异因子对与N个待变异位置标识各自对应的待变异位置处的字段进行变异,得到与N个待变异位置标识各自对应的变异程序。
在操作S240,将与N个待变异位置标识各自对应的变异程序发送至客户端,以便于客户端对与N个待变异位置标识各自对应的变异程序进行软件测试,得到与N个待变异位置标识各自对应的软件测试结果。
根据本公开的实施例,软件测试方法200可以应用于代理端。
根据本公开的实施例,软件测试方法可以应用于客户端(即Client)、服务端(即Server)和代理端(即Agent)之间的交互过程。
根据本公开的实施例,可以将生成变异请求的代码预先写入第一脚本中,响应于检测到用户通过客户端发起的软件测试操作,客户端可以运行该第一脚本,生成变异请求。客户端可以将变异请求发送至与代理端标识对应的代理端,以便于代理端根据该变异请求获取待变异程序和M个变异因子。备选地,代理端可以对变异请求进行解析处理,得到待变异程序和M个变异因子。
根据本公开的实施例,待变异程序可以指计算机能识别和执行的源代码。变异因子可以指改变源代码行为的指令或代码集合。可以利用变异因子对待变异程序进行变异测试(Mutation Testing)。变异测试可以指通过选择变异操作,将变异因子注入至源代码中,并执行与源代码对应的所有测试脚本的过程。
根据本公开的实施例,M个变异因子例如可以包括变异因子1、变异因子2、…、变异因子m、…、变异因子M。m∈{1,2,…,(M-1),M}。变异因子可以包括变异字段名称和与变异字段名称对应的变异字段值。例如,变异因子1可以包括变异字段名称1和变异字段值1,变异因子m可以包括变异字段名称m和变异字段值m。
根据本公开的实施例,在获得待变异程序和M个变异因子之后,可以针对M个变异因子中的每个变异因子,根据变异字段名称,对待变异程序进行匹配,得到至少一个变异点。例如,可以根据变异字段名称1对待变异程序进行匹配,得到与变异因子1对应的至少一个变异点。根据变异字段名称2对待变异程序进行匹配,得到与变异因子2对应的至少一个变异点。
根据本公开的实施例,变异点可以指源代码中变异测试的详细信息记录。变异点可以包括以下至少之一:子类、方法、代码块、代码行号、变异因子和指令序号。可以根据至少一个变异点,确定N个待变异位置标识和与N个待变异位置标识各自对应的待变异位置。待变异位置标识可以用于标识不同的待变异位置。例如,可以确定与变异因子1对应的待变异位置标识n11、待变异位置标识n12、...、待变异位置标识n1n,与变异因子m对应的待变异位置标识nm1、待变异位置标识nm2、…、待变异位置标识nmn。可以根据与M个变异因子各自对应的待变异位置标识,得到N个待变异位置标识。
根据本公开的实施例,在获得N个待变异位置标识之后,可以确定与待变异位置标识对应的变异因子标识。根据变异因子标识,确定与变异因子标识对应的变异字段值。利用与变异因子标识对应的变异字段值,对与待变异位置标识对应的待变异位置处的字段进行变异,得到与待变异位置标识对应的变异程序。变异程序可以称为变异体。变异程序可以指被注入变异因子的目标程序。
例如,针对待变异位置标识n11,可以确定与待变异位置标识n11对应的变异因子1,利用变异字段值1对与待变异位置标识n11对应的待变异位置处的字段进行变异,得到与待变异位置标识对应的变异程序。备选地,针对待变异位置标识nm1可以确定与待变异位置标识nm1对应的变异因子m,利用变异字段值m对与待变异位置标识nm1对应的待变异位置处的字段进行变异,得到与待变异位置标识对应的变异程序。
根据本公开的实施例,在获得与N个待变异位置标识各自对应的变异程序之后,可以将与N个待变异位置标识各自对应的变异程序发送至客户端。客户端可以接收并对与N个待变异位置标识各自对应的变异程序进行软件测试,得到与N个待变异位置标识各自对应的软件测试结果。软件测试结果可以用于表征与变异程序对应的测试脚本是否执行成功。例如,在与变异程序对应的测试脚本执行失败,即注入目标程序中的变异因子被无效的情况下,可以得到变异测试成功的软件测试结果。在此基础上,能够自动生成待变异程序的测试脚本的有效性分析报告。
根据本公开的实施例,由于待变异程序和M个变异因子是根据变异请求获取的,通过根据待变异程序和M个变异因子,确定待变异位置标识和待变异位置,由此提高了软件测试的覆盖率。在此基础上,通过根据待变异位置标识,利用变异因子对与待变异位置标识对应的待变异位置处的字段进行变异,能够自动得到变异程序,由此至少部分地克服了相关技术中由于软件测试的覆盖率较低,无法保障软件质量的技术问题,提高了软件测试的效率。此外,通过将变异程序发送至客户端,使得客户端能够对变异程序进行软件测试,得到软件测试结果,由此提高了软件产品的质量。
下面参考图3和图4,对根据本发明实施例的软件测试方法200做进一步说明。
根据本公开的实施例,软件测试方法200还可以包括如下操作。
在代理端和客户端之间建立第一通信连接。基于第一通信连接,接收变异请求。
根据本公开的实施例,在进行代理端和客户端之间的交互之前,可以在代理端和客户端之间建立第一通信连接。在建立第一通信连接之后,可以基于第一通信连接接收变异请求和发送变异程序。
根据本公开的实施例,第一通信连接可以包括以下至少之一:基于全双工通信协议(WebSocket)的第一通信连接、基于超文本传输协议(HyperText Transfer Protocol,HTTP)的第一通信连接和基于消息队列遥测传输协议(Message Queuing TelemetryTransport,MQTT)的第一通信连接。
根据本公开的实施例,操作S220可以包括如下操作。
根据与变异因子标识对应的变异字段名称,对待变异程序进行字段名称匹配,得到与变异因子标识对应的n个候选待变异位置标识和与n个候选待变异位置标识各自对应的候选待变异位置,其中,n为正整数且n小于或等于N。根据与每个变异因子标识各自对应的n个候选待变异位置标识和n个候选待变异位置,确定N个待变异位置标识和与N个待变异位置标识各自对应的待变异位置。
根据本公开的实施例,M个变异因子中的每个变异因子可以各自包括变异字段名称和与变异字段名称对应的变异字段值。
根据本公开的实施例,可以根据与变异因子标识对应的变异字段名称,在待变异程序中查找与变异因子标识对应的变异因子能够注入的变异点,即候选待变异位置。在此基础上,可以根据与每个变异因子标识各自对应的n个候选待变异位置,确定N个待变异位置。N个待变异位置可以用于后续指导变异体的生成。
根据本公开的实施例,操作S230可以包括如下操作。
确定与待变异位置标识对应的变异因子标识。根据变异因子标识,确定与变异因子标识对应的变异字段值。利用与变异因子标识对应的变异字段值,对与待变异位置标识对应的待变异位置处的字段进行变异,得到与待变异位置标识对应的变异程序。
根据本公开的实施例,在获得N个待变异位置标识和与N个待变异位置标识各自对应的待变异位置之后,可以对N个待变异位置标识进行遍历,以遍历N个待变异位置。针对N个待变异位置中的当前待变异位置,可以根据变异因子标识,确定与变异因子标识对应的变异字段值。
根据本公开的实施例,通过将变异因子注入至待变异程序中,例如利用变异字段值,对待变异位置处的字段进行替换,得到变异体字节码。在此基础上,可以利用Java的热加载技术重新加载该变异体字节码至Java虚拟机(Java Virtual Machine,JVM)中,得到与待变异位置标识对应的变异程序。可以重复执行上述操作,直至与N个待变异位置标识各自对应的变异点均完成注入,得到与N个待变异位置标识各自对应的变异程序。
根据本公开的实施例,可以基于Java的Instrumentation机制(即Java AgentAPI)和JVMTI(即JVM Tool Interface)功能,以允许JVM虚拟机在加载某个class文件之前对其字节码进行修改,以及对已加载的class文件进行重新加载。备选地,可以基于ASM框架(例如,ow2.asm)实现在JVM虚拟机运行过程中修改类并使之生效的目的。
图3示意性示出了根据本公开实施例的根据N个待变异位置标识,利用M个变异因子对与N个待变异位置标识各自对应的待变异位置处的字段进行变异,得到与N个待变异位置标识各自对应的变异程序过程的示例示意图。
如图3所示,在300中,针对N个待变异位置标识中的每个待变异位置标识301,可以确定与待变异位置标识301对应的变异因子标识302。根据变异因子标识302,确定与变异因子标识302对应的变异字段值303。
利用与变异因子标识302对应的变异字段值303,对与待变异位置标识301对应的待变异位置处的字段304进行变异,得到与待变异位置标识301对应的变异程序305。
根据本公开的实施例,软件测试方法200还可以包括如下操作。
根据待变异程序标识,获取与待变异程序标识对应的原始字节码文件。将原始字节码文件存储至内存。响应于生成与待变异位置标识对应的变异程序,重新加载原始字节码文件。
根据本公开的实施例,原始字节码(即Byte-code)文件可以指中间状态的二进制代码。可以通过对待变异程序的源代码进行编译,得到与待变异程序标识对应的原始字节码文件。以Java为例,需要经由Java虚拟机对原始字节码文件进行处理得到机器码,以实现中央处理器(Central Processing Unit,CPU)的读取和运行。
根据本公开的实施例,可以根据待变异程序标识,获取与待变异程序标识对应的原始字节码文件。在此基础上,可以将原始字节码文件备份以供变异操作完成后进行恢复。响应于生成与待变异位置标识对应的变异程序,可以将备份中的原始字节码文件重新加载到当前Java虚拟机,用于将当前变异因子移除,从而恢复待变异程序的原有逻辑。
根据本公开的实施例,通过将原始字节码文件存储至内存,响应于生成与待变异位置标识对应的变异程序,可以重新加载原始字节码文件,由此实现了在完成单次变异测试之后即抹除变异,恢复原有功能。
图4示意性示出了根据本公开实施例的软件测试过程的示例示意图。
如图4所示,在400中,响应于接收到来自于客户端的变异请求401,可以根据变异请求401中的待变异程序标识402,获取与待变异程序标识402对应的原始字节码文件404和待变异程序405。根据变异请求401中的变异因子标识403,获取变异因子406。
变异因子406可以包括变异字段名称407和与变异字段名称407对应的变异字段值408。可以根据变异字段名称407,对待变异程序405进行字段名称匹配,得到待变异位置标识409和与待变异位置标识409对应的待变异位置410。
可以根据待变异位置410,确定待变异位置处的字段411。利用与变异因子标识403对应的变异字段值408,对与待变异位置标识409对应的待变异位置处的字段411进行变异,得到与待变异位置标识对应的变异程序412。
以上仅是示例性实施例,但不限于此,还可以包括本领域已知的其他软件测试方法,只要能够提高软件测试的覆盖率和效率,进而提高软件产品的质量即可。
图5示意性示出了根据本公开另一实施例的软件测试方法的流程图。
如图5所示,该软件测试方法500可以包括操作S510~S540。
在操作S510,响应于检测到软件测试操作,根据与软件测试操作对应的待变异程序标识和变异因子标识,生成变异请求。
在操作S520,将变异请求发送至代理端。
在操作S530,接收来自于代理端的与N个待变异位置标识各自对应的变异程序,其中,N为正整数。
在操作S540,对与N个待变异位置标识各自对应的变异程序进行软件测试,得到与N个待变异位置标识各自对应的软件测试结果。
根据本公开的实施例,软件测试方法500可以应用于客户端。
根据本公开的实施例,软件测试方法可以应用于客户端、服务端和代理端之间的交互过程。
根据本公开的实施例,客户端在获得N个变异程序之后,可以对N个变异程序进行分别软件测试,得到与N个待变异位置标识各自对应的软件测试结果。软件测试结果可以用于表征与变异程序对应的测试脚本是否执行成功。例如,在与变异程序对应的测试脚本执行失败即注入目标程序中的变异因子被无效的情况下,可以得到变异测试成功的软件测试结果。备选地,在与变异程序对应的测试脚本执行成功,即注入目标程序中的变异因子有效的情况下,可以得到变异测试失败的软件测试结果。
根据本公开的实施例,由于变异程序是通过利用变异因子对与待变异位置标识对应的待变异位置处的字段进行变异自动得到的,因此提高了软件测试的效率。在此基础上,由于软件测试结果是通过对变异程序进行软件测试得到的,因此提高了软件产品的质量。
下面参考图6和图7,对根据本发明实施例的软件测试方法500做进一步说明。
根据本公开的实施例,软件测试方法500还可以包括如下操作。
响应于检测到软件测试操作,根据与软件测试操作对应的客户端标识,生成代理请求。将代理请求发送至服务端。接收来自于服务端的代理端标识,其中,代理端标识是服务端根据客户端标识创建得到的,代理端标识用于指示代理端。
根据本公开的实施例,可以将生成代理请求的代码预先写入第二脚本中,响应于检测到用户通过客户端发起的软件测试操作,客户端可以运行该第二脚本,生成代理请求。用户可以通过软件测试操作指定待变异程序和变异因子。客户端可以将代理请求发送至服务端,以便于服务端根据该代理请求创建代理端标识。在创建代理端标识之后,服务端可以将该代理端标识发送至客户端,以便于客户端根据该代理端标识与代理端建立通信连接。
根据本公开的实施例,服务端可以基于Java中tools.jar提供的attach接口,通过获取代理端标识即可完成代理。代理端标识可以用于指示JVM虚拟机。服务端可以用于将代理端注入至目标应用,以及在变异测试完成将代理端从目标应用中卸载。
根据本公开的实施例,软件测试方法500还可以包括如下操作。
根据代理端标识,在与代理端标识对应的代理端和客户端之间建立第二通信连接。基于第二通信连接,发送变异请求。
根据本公开的实施例,在进行代理端和客户端之间的交互之前,可以在代理端和客户端之间建立第二通信连接。在建立第二通信连接之后,可以基于第二通信连接发送变异请求和接收变异程序。第二通信连接可以包括以下至少之一:基于全双工通信协议的第二通信连接、基于超文本传输协议的第二通信连接和基于消息队列遥测传输协议的第二通信连接。第一通信连接和第二通信连接可以相同或不同,在此不作限定。
根据本公开的实施例,软件测试方法500还可以包括如下操作。
在与待变异位置标识对应的测试结果表征变异程序通过软件测试的情况下,基于第一预定模式在待变异程序中显示与待变异位置标识对应的待注入位置处的字段。在与待变异位置标识对应的测试结果表征变异程序未通过软件测试的情况下,基于第二预定模式在待变异程序中显示与待变异位置标识对应的待注入位置处的字段。
根据本公开的实施例,第一预定模式可以根据实际业务需求进行设置,在此不作限定。例如,第一预定模式可以为将与待变异位置标识对应的待注入位置处的字段以第一预设颜色显示。第一预设颜色可以设置为绿色。
根据本公开的实施例,第二预定模式可以根据实际业务需求进行设置,在此不作限定。例如,第二预定模式可以为将与待变异位置标识对应的待注入位置处的字段以第二预设颜色显示。第二预设颜色可以设置为红色。
图6示意性示出了根据本公开另一实施例的软件测试过程的示例示意图。
如图6所示,在600中,响应于检测到软件测试操作,可以根据与软件测试操作对应的待变异程序标识601和变异因子标识602,生成变异请求603。将变异请求603发送至代理端。
接收来自于代理端的与N个待变异位置标识各自对应的变异程序604。对与N个待变异位置标识各自对应的变异程序604进行软件测试,得到与N个待变异位置标识各自对应的软件测试结果605。在获得与N个待变异位置标识各自对应的软件测试结果605之后,可以执行操作S610。
在操作S610,与待变异位置标识对应的测试结果表征变异程序通过软件测试?
若是,则可以基于第一预定模式606在待变异程序中显示与待变异位置标识对应的待注入位置处的字段。
若否,则可以基于第二预定模式607在待变异程序中显示与待变异位置标识对应的待注入位置处的字段。
根据本公开的实施例,以下以待变异程序P、变异因子“RETURN_VAL”(用于将返回值置为null)为例对软件测试过程进行进一步说明。
客户端响应于检测到软件测试操作,可以根据与软件测试操作对应的客户端标识,生成代理请求。客户端可以将代理请求发送至服务端。服务端可以根据所述客户端标识创建代理端标识。服务端可以将代理端标识发送至客户端。客户端可以根据待变异程序P和变异因子“RETURN_VAL”,生成变异请求。客户端可以将变异请求发送至代理端。代理端可以根据变异请求,获取待变异程序P和变异因子“RETURN_VAL”。代理端可以可以在目标虚拟机的已加载类中查找待变异程序P,得到待变异位置1为行号14、待变异位置2为行号17和待变异位置3为行号19。
代理端可以利用变异因子“RETURN_VAL”,对与行号14处的字段“return“营养不良””进行变异,得到与行号14对应的“return null”。利用变异因子“RETURN_VAL”,对与行号17处的字段“return“超重””进行变异,得到与行号17对应的“return null”。利用变异因子“RETURN_VAL”,对与行号19处的字段“return“正常””进行变异,得到与行号19对应的“return null”。在此基础上,可以得到与三次变异操作各自对应的变异程序,即与行号14对应的变异程序、与行号17对应的变异程序和与行号19对应的变异程序。
代理端可以可以将与行号14对应的变异程序、与行号17对应的变异程序和与行号19对应的变异程序依次加载至目标虚拟机,以便于客户端分别执行对应的测试脚本,完成三次变异测试。
在与行号14和与行号17对应的测试结果表征变异程序未通过软件测试的情况下,可以基于第二预定模式在待变异程序中显示与行号14和与行号17对应的待注入位置处的字段。在与行号19对应的测试结果表征变异程序通过软件测试的情况下,可以基于第一预定模式在待变异程序中显示与行号19对应的待注入位置处的字段。可以理解,测试有效性为1/3。
图7示意性示出了根据本公开实施例的软件测试交互过程的示例示意图。
如图7所示,在700中,软件测试过程可以包括操作S701~操作S714。
在操作S701,响应于检测到软件测试操作,客户端可以根据与软件测试操作对应的客户端标识,生成代理请求。
在操作S702,客户端可以将代理请求发送至服务端。
在操作S703,服务端可以接收代理请求。
在操作S704,服务端可以根据客户端标识创建代理端标识。
在操作S705,服务端可以将代理端标识发送至客户端。
在操作S706,客户端可以接收代理端标识。
在操作S707,响应于检测到软件测试操作,客户端可以根据与软件测试操作对应的待变异程序标识和变异因子标识,生成变异请求。
在操作S708,客户端可以将变异请求发送至代理端。
在操作S709,响应于接收到来自于客户端的变异请求,代理端可以根据变异请求中的待变异程序标识和M个变异因子标识,获取待变异程序和M个变异因子。
在操作S710,代理端可以根据待变异程序和M个变异因子,确定N个待变异位置标识和与N个待变异位置标识各自对应的待变异位置。
在操作S711,代理端可以利用M个变异因子对与N个待变异位置标识各自对应的待变异位置处的字段进行变异,得到与N个待变异位置标识各自对应的变异程序。
在操作S712,代理端可以将与N个待变异位置标识各自对应的变异程序发送至客户端。
在操作S713,客户端可以接收来自于代理端的与N个待变异位置标识各自对应的变异程序。
在操作S714,客户端可以对与N个待变异位置标识各自对应的变异程序进行软件测试,得到与N个待变异位置标识各自对应的软件测试结果。
以上仅是示例性实施例,但不限于此,还可以包括本领域已知的其他软件测试方法,只要能够提高软件测试的效率和软件产品的质量即可。
图8示意性示出了根据本公开实施例的软件测试装置的框图。
如图8所示,软件测试装置800,应用于代理端,可以包括第一获取模块810、确定模块820、变异模块830和第一发送模块840。
第一获取模块810,用于响应于接收到来自于客户端的变异请求,根据变异请求中的待变异程序标识和M个变异因子标识,获取待变异程序和M个变异因子,其中,M为正整数。
确定模块820,用于根据待变异程序和M个变异因子,确定N个待变异位置标识和与N个待变异位置标识各自对应的待变异位置,其中,N为正整数。
变异模块830,用于根据N个待变异位置标识,利用M个变异因子对与N个待变异位置标识各自对应的待变异位置处的字段进行变异,得到与N个待变异位置标识各自对应的变异程序。
第一发送模块840,用于将与N个待变异位置标识各自对应的变异程序发送至客户端,以便于客户端对与N个待变异位置标识各自对应的变异程序进行软件测试,得到与N个待变异位置标识各自对应的软件测试结果。
根据本公开的实施例,变异模块830可以包括第一确定单元、第二确定单元和变异单元。
第一确定单元,用于确定与待变异位置标识对应的变异因子标识。
第二确定单元,用于根据变异因子标识,确定与变异因子标识对应的变异字段值。
变异单元,用于利用与变异因子标识对应的变异字段值,对与待变异位置标识对应的待变异位置处的字段进行变异,得到与待变异位置标识对应的变异程序。
根据本公开的实施例,软件测试装置800还可以包括第二获取模块、存储模块和加载模块。
第二获取模块,用于根据待变异程序标识,获取与待变异程序标识对应的原始字节码文件。
存储模块,用于将原始字节码文件存储至内存。
加载模块,用于响应于生成与待变异位置标识对应的变异程序,重新加载原始字节码文件。
根据本公开的实施例,软件测试装置800还可以包括第一建立模块和第二接收模块。
第一建立模块,用于在代理端和客户端之间建立第一通信连接。
第二接收模块,用于基于第一通信连接,接收变异请求。
根据本公开的实施例,M个变异因子中的每个变异因子各自包括变异字段名称和与变异字段名称对应的变异字段值。
根据本公开的实施例,确定模块820可以包括匹配单元和第三确定单元。
匹配单元,用于根据与变异因子标识对应的变异字段名称,对待变异程序进行字段名称匹配,得到与变异因子标识对应的n个候选待变异位置标识和与n个候选待变异位置标识各自对应的候选待变异位置,其中,n为正整数且n小于或等于N。
第三确定单元,用于根据与每个变异因子标识各自对应的n个候选待变异位置标识和n个候选待变异位置,确定N个待变异位置标识和与N个待变异位置标识各自对应的待变异位置。
图9示意性示出了根据本公开另一实施例的软件测试装置的框图。
如图9所示,软件测试装置900,应用于客户端,可以包括生成模块910、第二发送模块920、第一接收模块930和测试模块940。
生成模块910,用于响应于检测到软件测试操作,根据与软件测试操作对应的待变异程序标识和变异因子标识,生成变异请求;
第二发送模块920,用于将变异请求发送至代理端。
第一接收模块930,用于接收来自于代理端的与N个待变异位置标识各自对应的变异程序,其中,N为正整数。
测试模块940,用于对与N个待变异位置标识各自对应的变异程序进行软件测试,得到与N个待变异位置标识各自对应的软件测试结果。
根据本公开的实施例,软件测试装置900还可以包括第一显示模块和第二显示模块。
第一显示模块,用于在与待变异位置标识对应的测试结果表征变异程序通过软件测试的情况下,基于第一预定模式在待变异程序中显示与待变异位置标识对应的待注入位置处的字段。
第二显示模块,用于在与待变异位置标识对应的测试结果表征变异程序未通过软件测试的情况下,基于第二预定模式在待变异程序中显示与待变异位置标识对应的待注入位置处的字段。
根据本公开的实施例,软件测试装置900还可以包括生成模块、第三发送模块和第三接收模块。
生成模块,用于响应于检测到软件测试操作,根据与软件测试操作对应的客户端标识,生成代理请求。
第三发送模块,用于将代理请求发送至服务端。
第三接收模块,用于接收来自于服务端的代理端标识,其中,代理端标识是服务端根据客户端标识创建得到的,代理端标识用于指示代理端。
根据本公开的实施例,软件测试装置900还可以包括第二建立模块和第四发送模块。
第二建立模块,用于根据代理端标识,在与代理端标识对应的代理端和客户端之间建立第二通信连接。
第四发送模块,用于基于第二通信连接,发送变异请求。
根据本公开的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上***、基板上的***、封装上的***、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,第一获取模块810、确定模块820、变异模块830和第一发送模块840中的任意多个可以合并在一个模块/单元/子单元中实现,或者其中的任意一个模块/单元/子单元可以被拆分成多个模块/单元/子单元。或者,这些模块/单元/子单元中的一个或多个模块/单元/子单元的至少部分功能可以与其他模块/单元/子单元的至少部分功能相结合,并在一个模块/单元/子单元中实现。根据本公开的实施例,第一获取模块810、确定模块820、变异模块830和第一发送模块840中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上***、基板上的***、封装上的***、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,第一获取模块810、确定模块820、变异模块830和第一发送模块840中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,生成模块910、第二发送模块920、第一接收模块930和测试模块940中的任意多个可以合并在一个模块/单元/子单元中实现,或者其中的任意一个模块/单元/子单元可以被拆分成多个模块/单元/子单元。或者,这些模块/单元/子单元中的一个或多个模块/单元/子单元的至少部分功能可以与其他模块/单元/子单元的至少部分功能相结合,并在一个模块/单元/子单元中实现。根据本公开的实施例,生成模块910、第二发送模块920、第一接收模块930和测试模块940中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上***、基板上的***、封装上的***、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,生成模块910、第二发送模块920、第一接收模块930和测试模块940中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
需要说明的是,本公开的实施例中软件测试装置部分与本公开的实施例中软件测试方法部分是相对应的,软件测试装置部分的描述具体参考软件测试方法部分,在此不再赘述。
图10示意性示出了根据本公开实施例的适于实现软件测试方法的电子设备的框图。图10示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图10所示,根据本公开实施例的计算机电子设备1000包括处理器1001,其可以根据存储在只读存储器(ROM)1002中的程序或者从存储部分1009加载到随机访问存储器(RAM)1003中的程序而执行各种适当的动作和处理。处理器1001例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器1001还可以包括用于缓存用途的板载存储器。处理器1001可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 1003中,存储有电子设备1000操作所需的各种程序和数据。处理器1001、ROM 1002以及RAM 1003通过总线1004彼此相连。处理器1001通过执行ROM 1002和/或RAM1003中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM 1002和RAM 1003以外的一个或多个存储器中。处理器1001也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,电子设备1000还可以包括输入/输出(I/O)接口1005,输入/输出(I/O)接口1005也连接至总线1004。电子设备1000还可以包括连接至输入/输出(I/O)接口1005的以下部件中的一项或多项:包括键盘、鼠标等的输入部分1006;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1007;包括硬盘等的存储部分1008;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1009。通信部分1009经由诸如因特网的网络执行通信处理。驱动器1010也根据需要连接至输入/输出(I/O)接口1005。可拆卸介质1011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1010上,以便于从其上读出的计算机程序根据需要被安装入存储部分1008。
根据本公开的实施例,根据本公开实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1009从网络上被下载和安装,和/或从可拆卸介质1011被安装。在该计算机程序被处理器1001执行时,执行本公开实施例的***中限定的上述功能。根据本公开的实施例,上文描述的***、设备、装置、模块、单元等可以通过计算机程序模块来实现。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/***中所包含的;也可以是单独存在,而未装配入该设备/装置/***中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质。例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 1002和/或RAM 1003和/或ROM 1002和RAM 1003以外的一个或多个存储器。
本公开的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行本公开实施例所提供的方法的程序代码,当计算机程序产品在电子设备上运行时,该程序代码用于使电子设备实现本公开实施例所提供的软件测试方法。
在该计算机程序被处理器1001执行时,执行本公开实施例的***/装置中限定的上述功能。根据本公开的实施例,上文描述的***、装置、模块、单元等可以通过计算机程序模块来实现。
在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分1009被下载和安装,和/或从可拆卸介质1011被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
根据本公开的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如Java,C++,python,“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。

Claims (14)

1.一种软件测试方法,应用于代理端,包括:
响应于接收到来自于客户端的变异请求,根据所述变异请求中的待变异程序标识和M个变异因子标识,获取待变异程序和M个变异因子,其中,M为正整数;
根据所述待变异程序和所述M个变异因子,确定N个待变异位置标识和与所述N个待变异位置标识各自对应的待变异位置,其中,N为正整数;
根据所述N个待变异位置标识,利用所述M个变异因子对与所述N个待变异位置标识各自对应的待变异位置处的字段进行变异,得到与所述N个待变异位置标识各自对应的变异程序;以及
将与所述N个待变异位置标识各自对应的变异程序发送至所述客户端,以便于所述客户端对与所述N个待变异位置标识各自对应的变异程序进行软件测试,得到与所述N个待变异位置标识各自对应的软件测试结果。
2.根据权利要求1所述的方法,其中,所述根据所述N个待变异位置标识,利用所述M个变异因子对与所述N个待变异位置标识各自对应的待变异位置处的字段进行变异,得到与所述N个待变异位置标识各自对应的变异程序包括:
确定与所述待变异位置标识对应的变异因子标识;
根据所述变异因子标识,确定与所述变异因子标识对应的变异字段值;以及
利用与所述变异因子标识对应的变异字段值,对与所述待变异位置标识对应的待变异位置处的字段进行变异,得到与所述待变异位置标识对应的变异程序。
3.根据权利要求1所述的方法,还包括:
根据所述待变异程序标识,获取与所述待变异程序标识对应的原始字节码文件;
将所述原始字节码文件存储至内存;以及
响应于生成与所述待变异位置标识对应的变异程序,重新加载所述原始字节码文件。
4.根据权利要求1至3中任一项所述的方法,还包括,在所述响应于接收到来自于客户端的变异请求,根据所述变异请求中的待变异程序标识和M个变异因子标识,获取待变异程序和M个变异因子之前:
在所述代理端和所述客户端之间建立第一通信连接;以及
基于所述第一通信连接,接收所述变异请求。
5.根据权利要求1至3中任一项所述的方法,其中,所述M个变异因子中的每个变异因子各自包括变异字段名称和与所述变异字段名称对应的变异字段值;
所述根据所述待变异程序和所述M个变异因子,确定N个待变异位置标识和与所述N个待变异位置标识各自对应的待变异位置包括:
根据与所述变异因子标识对应的所述变异字段名称,对所述待变异程序进行字段名称匹配,得到与所述变异因子标识对应的n个候选待变异位置标识和与所述n个候选待变异位置标识各自对应的候选待变异位置,其中,n为正整数且n小于或等于N;以及
根据与所述每个变异因子标识各自对应的所述n个候选待变异位置标识和n个候选待变异位置,确定所述N个待变异位置标识和与所述N个待变异位置标识各自对应的待变异位置。
6.一种软件测试方法,应用于客户端,包括:
响应于检测到软件测试操作,根据与所述软件测试操作对应的待变异程序标识和变异因子标识,生成变异请求;
将所述变异请求发送至代理端;
接收来自于所述代理端的与N个待变异位置标识各自对应的变异程序,其中,N为正整数;以及
对与所述N个待变异位置标识各自对应的变异程序进行软件测试,得到与所述N个待变异位置标识各自对应的软件测试结果。
7.根据权利要求6所述的方法,还包括,在所述对与所述N个待变异位置标识各自对应的变异程序进行软件测试,得到与所述N个待变异位置标识各自对应的软件测试结果之后:
在与所述待变异位置标识对应的测试结果表征所述变异程序通过软件测试的情况下,基于第一预定模式在所述待变异程序中显示与所述待变异位置标识对应的待注入位置处的字段;以及
在与所述待变异位置标识对应的测试结果表征所述变异程序未通过软件测试的情况下,基于第二预定模式在所述待变异程序中显示与所述待变异位置标识对应的待注入位置处的字段。
8.根据权利要求6或7所述的方法,还包括:
响应于检测到所述软件测试操作,根据与所述软件测试操作对应的客户端标识,生成代理请求;
将所述代理请求发送至服务端;以及
接收来自于所述服务端的代理端标识,其中,所述代理端标识是所述服务端根据所述客户端标识创建得到的,所述代理端标识用于指示代理端。
9.根据权利要求8所述的方法,还包括,在所述将所述变异请求发送至代理端之前:
根据所述代理端标识,在与所述代理端标识对应的所述代理端和所述客户端之间建立第二通信连接;以及
基于所述第二通信连接,发送所述变异请求。
10.一种软件测试装置,应用于代理端,包括:
第一获取模块,用于响应于接收到来自于客户端的变异请求,根据所述变异请求中的待变异程序标识和M个变异因子标识,获取待变异程序和M个变异因子,其中,M为正整数;
确定模块,用于根据所述待变异程序和所述M个变异因子,确定N个待变异位置标识和与所述N个待变异位置标识各自对应的待变异位置,其中,N为正整数;
变异模块,用于根据所述N个待变异位置标识,利用所述M个变异因子对与所述N个待变异位置标识各自对应的待变异位置处的字段进行变异,得到与所述N个待变异位置标识各自对应的变异程序;以及
第一发送模块,用于将与所述N个待变异位置标识各自对应的变异程序发送至所述客户端,以便于所述客户端对与所述N个待变异位置标识各自对应的变异程序进行软件测试,得到与所述N个待变异位置标识各自对应的软件测试结果。
11.一种软件测试装置,应用于客户端,包括:
生成模块,用于响应于检测到软件测试操作,根据与所述软件测试操作对应的待变异程序标识和变异因子标识,生成变异请求;
第二发送模块,用于将所述变异请求发送至代理端;
第一接收模块,用于接收来自于所述代理端的与N个待变异位置标识各自对应的变异程序,其中,N为正整数;以及
测试模块,用于对与所述N个待变异位置标识各自对应的变异程序进行软件测试,得到与所述N个待变异位置标识各自对应的软件测试结果。
12.一种电子设备,包括:
一个或多个处理器;
存储器,用于存储一个或多个指令,
其中,当所述一个或多个指令被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至5中任一项或权利要求6至9中任一项所述的方法。
13.一种计算机可读存储介质,其上存储有可执行指令,所述可执行指令被处理器执行时使处理器实现权利要求1至5中任一项或权利要求6至9中任一项所述的方法。
14.一种计算机程序产品,所述计算机程序产品包括计算机可执行指令,所述计算机可执行指令在被执行时用于实现权利要求1至5中任一项或权利要求6至9中任一项所述的方法。
CN202310473524.1A 2023-04-27 2023-04-27 软件测试方法及装置、电子设备和计算机可读存储介质 Pending CN116431519A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310473524.1A CN116431519A (zh) 2023-04-27 2023-04-27 软件测试方法及装置、电子设备和计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310473524.1A CN116431519A (zh) 2023-04-27 2023-04-27 软件测试方法及装置、电子设备和计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN116431519A true CN116431519A (zh) 2023-07-14

Family

ID=87081454

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310473524.1A Pending CN116431519A (zh) 2023-04-27 2023-04-27 软件测试方法及装置、电子设备和计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN116431519A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117992359A (zh) * 2024-04-07 2024-05-07 中国科学院空天信息创新研究院 服务化软件的观测方法、装置和电子设备

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117992359A (zh) * 2024-04-07 2024-05-07 中国科学院空天信息创新研究院 服务化软件的观测方法、装置和电子设备

Similar Documents

Publication Publication Date Title
CN110532185B (zh) 测试方法、装置、电子设备和计算机可读存储介质
CN111813696A (zh) 应用测试方法、装置、***及电子设备
CN113114680B (zh) 用于文件上传漏洞的检测方法和检测装置
CN112506779A (zh) 软件接口测试方法、装置、电子设备及存储介质
CN116431519A (zh) 软件测试方法及装置、电子设备和计算机可读存储介质
CN114168471A (zh) 测试方法、装置、电子设备及存储介质
CN113535577A (zh) 基于知识图谱的应用测试方法、装置、电子设备和介质
CN113362173A (zh) 防重机制验证方法、验证***、电子设备及存储介质
CN112988578A (zh) 一种自动化测试方法和装置
CN111930629A (zh) 页面测试方法、装置、电子设备及存储介质
KR102165037B1 (ko) 코드 커버리지 측정 장치, 코드 커버리지 측정 장치의 코드 커버리지 측정 방법, 및 코드 커버리지 측정 시스템
CN116662193A (zh) 页面测试方法和装置
CN116483888A (zh) 程序评估方法及装置、电子设备和计算机可读存储介质
CN112084114B (zh) 用于测试接口的方法和装置
CN114840429A (zh) 识别版本冲突的方法、装置、设备、介质和程序产品
CN115203178A (zh) 数据质检方法、装置、电子设备及存储介质
CN114490264A (zh) 应用***的文件监控方法、装置、电子设备及存储介质
CN113535568B (zh) 应用部署版本的验证方法、装置、设备和介质
CN116452208B (zh) 变更交易码的确定方法、装置、设备及介质
CN115190008B (zh) 故障处理方法、故障处理装置、电子设备及存储介质
CN116467214A (zh) 一种代码质量检测方法、装置、设备及存储介质
CN114064484A (zh) 接口测试方法、装置、电子设备及可读存储介质
CN116737539A (zh) 程序测试方法及装置、电子设备和计算机可读存储介质
CN116467209A (zh) 性能测试方法、装置、设备及存储介质
CN114896151A (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