CN108874654B - 幂等有效性测试方法、装置及设备、可读介质 - Google Patents

幂等有效性测试方法、装置及设备、可读介质 Download PDF

Info

Publication number
CN108874654B
CN108874654B CN201710338301.9A CN201710338301A CN108874654B CN 108874654 B CN108874654 B CN 108874654B CN 201710338301 A CN201710338301 A CN 201710338301A CN 108874654 B CN108874654 B CN 108874654B
Authority
CN
China
Prior art keywords
idempotent
test
entity object
fields
test case
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
CN201710338301.9A
Other languages
English (en)
Other versions
CN108874654A (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.)
Advanced New Technologies Co Ltd
Original Assignee
Advanced New Technologies 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 Advanced New Technologies Co Ltd filed Critical Advanced New Technologies Co Ltd
Priority to CN201710338301.9A priority Critical patent/CN108874654B/zh
Publication of CN108874654A publication Critical patent/CN108874654A/zh
Application granted granted Critical
Publication of CN108874654B publication Critical patent/CN108874654B/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/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

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)
  • Mobile Radio Communication Systems (AREA)
  • Monitoring And Testing Of Transmission In General (AREA)
  • Maintenance And Management Of Digital Transmission (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请提供一种幂等有效性测试方法、装置及设备、可读介质,所述方法包括:获取待测试的实体对象中包含的幂等字段;所述幂等字段是所述实体对象为实现幂等性预定进行处理的字段;基于获取的幂等字段构建至少两个测试用例;构建的各测试用例携带的幂等字段相同;分别执行构建的各测试用例;基于各测试用例的执行结果确定所述实体对象的幂等性是否有效。实施本申请,基于待测试的实体对象为实现幂等性预定进行处理的幂等字段,构建多个携带有相同的幂等字段的测试用例,根据各测试用例的执行结果,能快速确定实体对象针对幂等字段相同的测试用例是否有执行幂等处理,进而能确定实体对象是否能实现幂等性。

Description

幂等有效性测试方法、装置及设备、可读介质
技术领域
本申请涉及计算机技术领域,尤其涉及幂等有效性测试方法、装置及设备、可读介质。
背景技术
实际应用中,很多业务需要实现幂等性,即避免重复操作对系统造成重复影响。以进行账务转入或转出处理的业务处理方为例,业务处理方可以应业务请求方的业务请求,为业务请求方提供对应的业务处理。在处理完成后,业务处理方发送的处理结果,由于网络延迟等原因,可能无法及时送达业务请求方。因此,业务请求方可能会再次向业务处理方发起同样的业务请求(即重复请求)。面对业务请求方的重复请求,业务处理方要实现幂等性,即避免因业务请求方的重复请求,发生重复的业务处理,进而保证用户的资金安全。
为了实现幂等性,现有技术的常用做法是通过幂等校验系统,在业务处理方的数据库中针对每次业务请求建立唯一性约束,例如:在数据库中建立幂等表,每次处理业务请求之前,均要求将该业务请求的某种唯一标识信息(例如“业务请求单号”、“业务请求单号+业务类型”、“业务请求单号+业务请求来源”等)插入幂等表,如果插入成功,说明业务处理方是第一次处理该业务请求,则继续正常的业务处理流程;反之如果插入失败,则说明幂等表中已经存在该业务请求的信息,即业务处理方之前曾经处理过该业务请求,那么可以直接确定该请求为重复请求,进而停止处理该请求。
而幂等功能的开发方在构建幂等校验系统时,可能会出现构建失误,导致幂等校验系统难以校验出重复请求,发生幂等性无效的状况,进而导致业务处理方因业务请求方的重复请求,发生重复的业务处理,造成用户的资金损失。
发明内容
有鉴于此,本申请提供一种幂等有效性测试方法、装置及设备、可读介质。
根据本申请实施例的第一方面,提供一种幂等有效性测试方法,包括步骤:
获取待测试的实体对象中包含的幂等字段;所述幂等字段是所述实体对象为实现幂等性预定进行处理的字段;
基于获取的幂等字段构建至少两个测试用例;构建的各测试用例携带的幂等字段相同;
分别执行构建的各测试用例;
基于各测试用例的执行结果确定所述实体对象的幂等性是否有效。
根据本申请实施例的第二方面,提供一种电子设备,包括:
处理器;
存储处理器可执行指令的存储器;
其中,所述处理器耦合于所述存储器,用于读取所述存储器存储的程序指令,并作为响应,执行如下操作:
获取待测试的实体对象中包含的幂等字段;所述幂等字段是所述实体对象为实现幂等性预定进行处理的字段;
基于获取的幂等字段构建至少两个测试用例;构建的各测试用例携带的幂等字段相同;
分别执行构建的各测试用例;
基于各测试用例的执行结果确定所述实体对象的幂等性是否有效。
根据本申请实施例的第三方面,提供一种幂等有效性测试装置,包括:
幂等字段获取模块,用于获取待测试的实体对象中包含的幂等字段;所述幂等字段是所述实体对象为实现幂等性预定进行处理的字段;
测试用例构建模块,用于基于获取的幂等字段构建至少两个测试用例;构建的各测试用例携带的幂等字段相同;
测试用例执行模块,用于分别执行构建的各测试用例;
有效性判断模块,用于基于各测试用例的执行结果确定所述实体对象的幂等性是否有效。
根据本申请实施例的第四方面,提供一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得终端设备执行以上所述的方法。
实施本申请提供的实施例,基于实体对象为实现幂等性预定进行处理的幂等字段,构建多个携带有相同的幂等字段的测试用例,然后分别执行构建的各测试用例,根据各测试用例的执行结果,即可以快速确定实体对象针对幂等字段相同的测试用例是否有执行幂等处理,进而能确定实体对象是否能实现幂等性,如果能实现表明其幂等性有效。
附图说明
图1是本申请一示例性实施例示出的幂等有效性测试方法的流程图;
图2是本申请另一示例性实施例示出的幂等有效性测试方法的流程图;
图3是本申请另一示例性实施例示出的幂等有效性测试方法的流程图;
图4是本申请一示例性实施例示出的幂等有效性测试装置的逻辑框图;
图5是本申请一示例性实施例示出的幂等有效性测试装置的硬件结构图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本申请实施例涉及的实体对象,可以是各种需要实现幂等性的业务对应的业务程序,这里提到的业务可以是金融领域的各种业务,如支付、提现、代扣、理财等等。在实际处理相应业务的过程中,为了实现幂等性,可以在提供相应业务的业务处理方的数据库中建立幂等表,每次处理业务请求之前,均要求将该业务请求的某种唯一标识信息(例如“业务请求单号”、“业务请求单号+业务类型”、“业务请求单号+业务请求来源”等)插入幂等表,如果插入成功,说明业务处理方是第一次处理该业务请求,则继续正常的业务处理流程;反之如果插入失败,则说明幂等表中已经存在该业务请求的信息,即业务处理方之前曾经处理过该业务请求,那么可以直接确定该请求为重复请求,进而停止处理该请求。
但是,幂等功能的开发方在构建实现幂等性的业务程序(实体对象)时,可能不会如事先约定的那样进行唯一性约束,如,根本不做唯一性约束,或者只将事先约定的信息中的部分信息作为唯一标识信息等等。这样会导致实际处理业务请求时,发生幂等性无效的状况,进而导致业务处理方因业务请求方的重复请求,发生重复的业务处理,造成用户的资金损失。
为了避免因开发方的过失,造成业务处理方对业务请求方的重复请求,发生重复的业务处理,需要检验开发方处理后的业务程序是否能有效的校验出重复请求,实现幂等性。一般校验是由检验人员查看被开发方预先标好的业务程序(程序代码)。但是,很多时候校验人员没有足够的时间一一查看开发方标记的所有程序,只会查看标记的部分程序,因此,容易漏检存在缺陷的程序,发生幂等性无效的状况,进而导致业务处理方因业务请求方的重复请求,发生重复的业务处理,造成用户的资金损失。本申请的技术方案,针对开发方的失误易造成业务处理方难以实现幂等性的问题,提出解决方案。
本申请的方案,为了解决幂等功能的开发方的失误易造成业务处理方难以实现幂等性的问题。可以在幂等功能的开发方完成业务完成实体对象的开发后,基于实体对象为实现幂等性预定进行处理的幂等字段,构建多个携带有相同的幂等字段的测试用例,然后分别执行构建的各测试用例,根据各测试用例的执行结果,即可以快速确定实体对象针对幂等字段相同的测试用例是否有执行幂等处理,进而能确定实体对象是否能实现幂等性。以下结合附图详细说明本申请的幂等有效性测试过程。
请参阅图1,图1是本申请一示例性实施例示出的幂等有效性测试方法的流程图,可以包括以下步骤S101-S104:
步骤S101、获取待测试的实体对象中包含的幂等字段;所述幂等字段是所述实体对象为实现幂等性预定进行处理的字段。
步骤S102、基于获取的幂等字段构建至少两个测试用例;构建的各测试用例携带的幂等字段相同。
步骤S103、分别执行构建的各测试用例。
步骤S104、基于各测试用例的执行结果确定所述实体对象的幂等性是否有效。
本申请实施例,实体对象可以是各种需要实现幂等性的业务对应的业务程序,这里提到的业务可以是金融领域的各种业务,例如,支付、提现、代扣、理财等业务,实体对象可以是具有支付、代扣、理财和提现等功能中的至少一项的应用软件。
实际应用中,可以在幂等功能的开发方完成对实体对象的开发时、实体对象的定期维护期间或者其他预定时期,对实体对象的幂等性进行测试,测试其是否能有效实现幂等性。测试过程中,所获取的幂等字段可以是幂等功能的开发方基于预先与业务处理方的约定,为实现幂等性预定进行幂等处理的字段。例如:预定处理的对象为“业务请求单号”、“业务请求单号+业务类型”或者“业务请求单号+业务请求来源”等字段。
为了便于快速识别到这些幂等字段,开发方在开发过程中,一般会用预定的标记来指示幂等字段。比如,开发方是通过在业务处理方的数据库中建立幂等表实现幂等时,可以在幂等表对应的实体对象中,对预定处理的“业务请求单号”、“业务请求单号+业务类型”或者“业务请求单号+业务请求来源”等对象,用预定的注解标签进行标记。针对这种状况,本申请的实施例可以通过以下操作获取待测试的实体对象中包含的幂等字段:
对所述实体对象进行拦截。
对拦截出的实体对象进行解析,解析出带有预定的注解标签的字段为幂等字段。
本例子中,幂等字段是实体对象实现幂等性所需要幂等处理的关键字段。在实际应用中,以Spring(轻量级的Java开发框架)为例,可以通过Spring的AOP(Aspect OrientedProgramming)拦截所有的数据访问层类,并获取输入参数,得到实体对象,从实体对象中解析出带有预定的注解标签的字段为幂等字段。然后可以根据实体对象中的字段与幂等表中的数据之间的对应关系,获取注解标签所标注的幂等字段对应的数据的属性。
在获取到幂等字段后,为了测试出开发方开发的实体对象的幂等性是否有效,可以基于获取的幂等字段构建测试用例,构造好后,在某些例子中,可以将构造的测试用例,传入到DAO(数据库访问层)类的代码中进行执行。
执行构建的每个测试用例时,可以基于每个测试用例携带的测试参数,构建测试请求(某种业务请求),所构建的各测试请求需要携带有相同的幂等字段,然后将构建的每个测试请求向实体对象发送,并接收所述实体对象针对每个测试请求返回的处理结果。某些例子中,可以通过DAO(数据库访问层)的代码执行测试请求。测试参数与实体对象要实现的业务功能相关,例如,要实现支付功能时,测试参数包括构建支付请求所需的参数。
向实体对象发送构建好的测试请求时,可以按预定次序发送。如果实体对象没有实现幂等性的程序代码,每接收到一个测试请求,即会执行一次正常的业务处理,并返回一次正常处理的处理结果。如果实体对象具备实现幂等性的程序代码,每接收到一个测试请求,在执行正常的处理流程前,会先对接收到的测试请求进行幂等处理,即根据其所携带的幂等字段判断本次接收到的测试请求与已接收的测试请求是否相同,如果相同,则确定该请求为重复请求,停止处理该请求,返回禁止处理的处理结果,该处理结果能反映该请求为重复请求;如果不同,则确定该请求不是重复请求,为首次请求,继续正常的处理,返回正常处理的处理结果,该处理结果能反映该请求不是重复请求。
但是,在实现幂等性的程序代码有误时,接收到测试请求进行处理时,业务处理方会给出错误的处理结果,例如,将重复请求误确定为首次请求,然后继续正常的业务处理,返回正常处理的处理结果,该处理结果能反映该重复请求不是重复请求。
此外,考虑到实体对象可能会对测试用例有其他约束条件,比如不同测试用例的标号不同。为了避免因其他约束条件导致对实体对象的误判,除携带的幂等字段相同外,所构建的各测试用例携带的其他信息可以各不相同。例如,开发方是通过在业务处理方的数据库中建立幂等表实现幂等时,幂等字段为满足所述数据库的唯一性约束条件的幂等标识。除“测试请求单号”、“测试请求单号+测试类型”或者“测试请求单号+测试请求来源”等对象相同外,各测试用例的其他信息各不相同。
本申请实施例,在针对测试请求进行的幂等处理可以采用与现有技术相同的方案,即:每次处理测试请求之前,将该测试请求的某种唯一标识信息(例如“业务请求单号”、“业务请求单号+业务类型”、“业务请求单号+业务请求来源”等)插入预定的幂等表,如果插入成功,说明实体对象是第一次处理该测试请求,则继续正常的处理流程;反之如果插入失败,则说明幂等表中已经存在该测试请求的信息,即实体对象之前曾经处理过该测试请求,那么可以直接确定该请求为重复请求,进而停止处理该请求。当然,本申请并不需要对具体的幂等处理方案进行限定。
在实体对象对测试请求处理后,会向测试方返回处理结果,如果接收的处理结果表明仅一个测试请求被处理,则确定所述实体对象的幂等性有效;如果接收的处理结果表明两个以上的测试请求被处理,则确定所述实现对象的幂等性无效。这里的幂等性无效可以指实体对象未对测试请求进行幂等处理,也可以指实体对象对测试请求的校验有误,本申请并不需要对具体的校验方式进行限定。
某些例子中,本申请的设计人员基于构建的测试用例构建测试请求,并向实体对象发送第一个测试请求后,可能会接收到表示该请求为重复请求的处理结果,出现这种状况,可能是本次构建的测试请求与实体对象已处理的请求相同,也可能是实体对象中实现幂等性的程序代码有误,难以准确判定出实体对象是否对测试请求进行了有效的幂等处理。为了解决该问题,本申请实施例可以,基于所述幂等字段,基于获取的幂等字段重新构建至少两个测试用例;重新构建的测试用例携带的幂等字段相同,且与已执行的测试用例携带的幂等字段不同,重复分别执行重新构建的各测试用例、基于各测试用例的执行结果确定所述实体对象的幂等性是否有效的步骤,然后根据接收的处理结果确定实体对象的幂等性是否有效。
在其他实施例中,本申请实施例可以采取循环操作来实现幂等有效性的测试,具体实现过程具可以参阅图2,图2是本申请一示例性实施例示出的幂等有效性测试方法的流程图,可以包括以下步骤S201-S207:
步骤S201、获取待测试的实体对象中包含的幂等字段;所述幂等字段是所述实体对象为实现幂等性预定进行处理的字段。
步骤S202、基于获取的幂等字段构建至少两个测试用例,本次构建的各测试用例携带的幂等字段相同,与已执行的测试用例所携带的幂等字段不同。
步骤S203、基于每个测试用例所携带的测试参数,构建携带有所述幂等字段的测试请求。
步骤S204、向所述实体对象发送构建的每个测试请求。
步骤S205、接收所述实体对象针对每个测试请求返回的处理结果。
步骤S206、基于接收的处理结果,判断发送的第一个测试请求是否被处理,如果未被处理,则返回执行步骤S202,如果被处理,则执行步骤S207。
步骤S207、基于接收的处理结果,确定所述实体对象的幂等性是否有效。
本申请实施例所涉及的技术内容,与图1对应的实施例所涉及的技术内容相应,在此不再赘述。
本申请通过采取循环操作来实现幂等有效性的测试,可以排除因构建的测试用例请求与已执行的测试用例重复,而影响幂等有效性测试结果。
以下结合附图3例举一个应用实例,将幂等有效性测试方法具体应用到支付领域的支付业务场景。相应地,实体对象在本应用示例中为具有支付功能的应用软件(支付APP),测试请求在本应用示例中为支付请求,处理结果在本应用示例中为支付处理结果,实体对象对应的业务处理方在本应用示例中为支付方,这里提到的支付方可以是银行、第三方支付平台等等。
此外,本应用实施例中所述支付涉及的技术载体,可以包括近场通信(Near FieldCommunication,NFC)、WIFI、3G/4G/5G、POS机刷卡技术、二维码扫码技术、条形码扫码技术、蓝牙、红外、短消息(Short Message Service,SMS)、多媒体消息(Multimedia MessageService,MMS)等。
请参阅图3,图3是本申请一示例性实施例示出的幂等有效性测试方法的流程图,可以包括以下步骤S301-S304:
步骤S301、获取具有支付功能的应用软件中包含的幂等字段;所述幂等字段是所述应用软件为实现幂等性预定进行处理的字段。
步骤S302、基于获取的幂等字段构建至少两个测试用例;构建的各测试用例携带的幂等字段相同。
步骤S303、分别执行构建的各测试用例。
步骤S304、基于各测试用例的执行结果确定所述应用软件的幂等性是否有效。
本申请实施例中,本申请实施例的步骤S301至S304所涉及的技术内容,与图1的步骤S101至S104所涉及的技术内容相应。
本实施例的具有支付功能的应用软件,仅用于示例性说明本申请的幂等有效性的测试方法,并不用以限制本申请。本申请的幂等有效性测试方法在其他实施例中,也适用于其它需要实现幂等性的业务场景,例如:理财平台的理财场景、代扣平台的代扣场景等等。
由上述实施例可知,本申请可以基于实体对象为实现幂等性预定进行处理的幂等字段,构建多个携带有相同的幂等字段的测试用例,然后分别执行构建的各测试用例,根据各测试用例的执行结果,即可以快速确定实体对象针对幂等字段相同的测试用例是否有执行幂等处理,进而能确定实体对象是否能实现幂等性。
此外,本申请实的幂等有效性测试方法应用于支付方时,可以快速检测出支付方是否能实现幂等性,保证用户的资金安全。
与前述方法的实施例相对应,本申请还提供了装置的实施例。
参见图4,图4是本申请一示例性实施例示出的幂等有效性测试装置的逻辑框图,该装置400可以包括:幂等字段获取模块410、测试用例构建模块420、测试用例执行模块430和有效性判断模块440。
其中,幂等字段获取模块410,用于获取待测试的实体对象中包含的幂等字段;所述幂等字段是所述实体对象为实现幂等性预定进行处理的字段。
测试用例构建模块420,用于基于获取的幂等字段构建至少两个测试用例;构建的各测试用例携带的幂等字段相同。
测试用例执行模块430,用于分别执行构建的各测试用例。
有效性判断模块440,用于基于各测试用例的执行结果确定所述实体对象的幂等性是否有效。
一些例子中,幂等字段获取模块410可以包括:
对象拦截模块,用于对所述实体对象进行拦截。
字段解析模块,用于对拦截出的实体对象进行解析,解析出带有预定的注解标签的字段为幂等字段。
作为例子,所述幂等字段为满足关联的数据库的唯一性约束条件的幂等标识。
另一些例子中,测试用例执行模块430可以包括:
测试请求构建模块,用于基于每个测试用例所携带的测试参数,构建携带有所述幂等字段的测试请求。
测试请求发送模块,用于向所述实体对象发送构建的每个测试请求。
处理结果接收模块,用于接收所述实体对象针对每个测试请求返回的处理结果。
作为例子,有效性判断模块440可以包括:
有效幂等确定模块,用于在接收的处理结果表明两个以上的测试请求被处理,确定所述实体对象的幂等性无效。
无效幂等确定模块,用于在接收的处理结果表明仅一个测试请求被处理,则确定所述实体对象的幂等性有效。
作为例子,本申请实施例的幂等有效性测试装置还可以包括测试用例重建模块,用于:
在接收的处理结果表明发送的第一个测试请求未被处理时,基于获取的幂等字段重新构建至少两个测试用例;重新构建的测试用例携带的幂等字段相同,且与已执行的测试用例携带的幂等字段不同。
通知测试用例模块分别执行重新构建的测试用例、通知有效性判断模块基于重新构建的各测试用例的执行结果确定所述实体对象的幂等性是否有效。
另一些例子中,除携带的幂等字段相同外,各测试用例携带的其他信息各不相同。
另一些例子中,所述实体对象为具有以下至少一项功能的应用软件:
支付,代扣,理财,提现。
上述装置中各个单元(或模块)的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元或模块可以是或者也可以不是物理上分开的,作为单元或模块显示的部件可以是或者也可以不是物理单元或模块,即可以位于一个地方,或者也可以分布到多个网络单元或模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本申请幂等有效性测试装置的实施例可以应用在电子设备上。具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现中,电子设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备、互联网电视、智能机车、无人驾驶汽车、智能冰箱、其他智能家居设备或者这些设备中的任意几种设备的组合。
装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储器等可读介质中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图5所示,为本申请幂等有效性测试装置所在电子设备的一种硬件结构图,除了图5所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的电子设备通常根据该电子设备的实际功能,还可以包括其他硬件,对此不再赘述。电子设备的存储器可以存储处理器可执行程序指令;处理器可以耦合存储器,用于读取所述存储器存储的程序指令,并作为响应,执行如下操作:获取待测试的实体对象中包含的幂等字段;所述幂等字段是所述实体对象为实现幂等性预定进行处理的字段;基于获取的幂等字段构建至少两个测试用例;构建的各测试用例携带的幂等字段相同;分别执行构建的各测试用例;基于各测试用例的执行结果确定所述实体对象的幂等性是否有效。
在其他实施例中,处理器所执行的操作可以参考上文方法实施例中相关的描述,在此不予赘述。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

Claims (16)

1.一种幂等有效性测试方法,包括步骤:
获取待测试的实体对象中包含的幂等字段;所述幂等字段是所述实体对象为实现幂等性预定进行处理的字段;
基于获取的幂等字段构建至少两个测试用例;构建的各测试用例携带的幂等字段相同;构建的各测试用例携带的其他信息不相同;
分别执行构建的各测试用例;
基于各测试用例的执行结果确定所述实体对象的幂等性是否有效。
2.根据权利要求1所述的方法,所述获取待测试的实体对象中包含的幂等字段,包括:
对所述实体对象进行拦截;
对拦截出的实体对象进行解析,解析出带有预定的注解标签的字段为幂等字段。
3.根据权利要求2所述的方法,所述幂等字段为满足关联的数据库的唯一性约束条件的幂等标识。
4.根据权利要求1所述的方法,在执行每个测试用例时,基于每个测试用例所携带的测试参数,构建携带有所述幂等字段的测试请求,向所述实体对象发送构建的每个测试请求,并接收所述实体对象针对每个测试请求返回的处理结果。
5.根据权利要求4所述的方法,所述基于各测试用例的执行结果确定所述实体对象的幂等性是否有效,包括:
如果接收的处理结果表明两个以上的测试请求被处理,则确定所述实体对象的幂等性无效;
如果接收的处理结果表明仅一个测试请求被处理,则确定所述实体对象的幂等性有效。
6.根据权利要求4所述的方法,如果接收的处理结果表明发送的第一个测试请求未被处理,所述方法还包括以下步骤:
基于获取的幂等字段重新构建至少两个测试用例;重新构建的测试用例携带的幂等字段相同,且与已执行的测试用例携带的幂等字段不同;
重复分别执行重新构建的各测试用例、基于各测试用例的执行结果确定所述实体对象的幂等性是否有效的步骤。
7.根据权利要求1至6中任一项所述的方法,所述实体对象为具有以下至少一项功能的应用软件:
支付,代扣,理财,提现。
8.一种电子设备,包括:
处理器;
存储处理器可执行指令的存储器;
其中,所述处理器耦合于所述存储器,用于读取所述存储器存储的程序指令,并作为响应,执行如下操作:
获取待测试的实体对象中包含的幂等字段;所述幂等字段是所述实体对象为实现幂等性预定进行处理的字段;
基于获取的幂等字段构建至少两个测试用例;构建的各测试用例携带的幂等字段相同;
分别执行构建的各测试用例;
基于各测试用例的执行结果确定所述实体对象的幂等性是否有效。
9.一种幂等有效性测试装置,包括:
幂等字段获取模块,用于获取待测试的实体对象中包含的幂等字段;所述幂等字段是所述实体对象为实现幂等性预定进行处理的字段;
测试用例构建模块,用于基于获取的幂等字段构建至少两个测试用例;构建的各测试用例携带的幂等字段相同;构建的各测试用例携带的其他信息不相同;
测试用例执行模块,用于分别执行构建的各测试用例;
有效性判断模块,用于基于各测试用例的执行结果确定所述实体对象的幂等性是否有效。
10.根据权利要求9所述的装置,所述幂等字段获取模块包括:
对象拦截模块,用于对所述实体对象进行拦截;
字段解析模块,用于对拦截出的实体对象进行解析,解析出带有预定的注解标签的字段为幂等字段。
11.根据权利要求10所述的装置,所述幂等字段为满足关联的数据库的唯一性约束条件的幂等标识。
12.根据权利要求9所述的装置,所述测试用例执行模块包括:
测试请求构建模块,用于基于每个测试用例所携带的测试参数,构建携带有所述幂等字段的测试请求;
测试请求发送模块,用于向所述实体对象发送构建的每个测试请求;
处理结果接收模块,用于接收所述实体对象针对每个测试请求返回的处理结果。
13.根据权利要求12所述的装置,所述有效性判断模块包括:
有效幂等确定模块,用于在接收的处理结果表明两个以上的测试请求被处理,确定所述实体对象的幂等性无效;
无效幂等确定模块,用于在接收的处理结果表明仅一个测试请求被处理,则确定所述实体对象的幂等性有效。
14.根据权利要求12所述的装置,所述装置还包括测试用例重建模块,用于:
在接收的处理结果表明发送的第一个测试请求未被处理时,基于获取的幂等字段重新构建至少两个测试用例;重新构建的测试用例携带的幂等字段相同,且与已执行的测试用例携带的幂等字段不同;
通知测试用例模块分别执行重新构建的测试用例、通知有效性判断模块基于重新构建的各测试用例的执行结果确定所述实体对象的幂等性是否有效。
15.根据权利要求9至14中任一项所述的装置,所述实体对象为具有以下至少一项功能的应用软件:
支付,代扣,理财,提现。
16.一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得终端设备执行如权利要求1-7中任一项所述的方法。
CN201710338301.9A 2017-05-15 2017-05-15 幂等有效性测试方法、装置及设备、可读介质 Active CN108874654B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710338301.9A CN108874654B (zh) 2017-05-15 2017-05-15 幂等有效性测试方法、装置及设备、可读介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710338301.9A CN108874654B (zh) 2017-05-15 2017-05-15 幂等有效性测试方法、装置及设备、可读介质

Publications (2)

Publication Number Publication Date
CN108874654A CN108874654A (zh) 2018-11-23
CN108874654B true CN108874654B (zh) 2022-08-16

Family

ID=64320427

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710338301.9A Active CN108874654B (zh) 2017-05-15 2017-05-15 幂等有效性测试方法、装置及设备、可读介质

Country Status (1)

Country Link
CN (1) CN108874654B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110046976B (zh) * 2018-11-30 2023-08-18 创新先进技术有限公司 对账方法和装置、服务器
CN110046877B (zh) * 2018-11-30 2023-09-29 创新先进技术有限公司 对账方法和装置、服务器
CN111026465A (zh) * 2019-11-15 2020-04-17 北京三快在线科技有限公司 程序处理方法、装置、电子设备及存储介质
CN112035118A (zh) * 2020-08-28 2020-12-04 江苏徐工信息技术股份有限公司 一种基于注解自动实现接口幂等的方法
CN112905492A (zh) * 2021-04-06 2021-06-04 浙江网商银行股份有限公司 验证方法及装置
CN113610537A (zh) * 2021-08-05 2021-11-05 北京云从科技有限公司 请求执行方法、服务器、计算机设备和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105573996A (zh) * 2014-10-09 2016-05-11 阿里巴巴集团控股有限公司 数据库处理方法、装置及系统
CN106155891A (zh) * 2015-04-02 2016-11-23 阿里巴巴集团控股有限公司 接口测试方法、接口描述数据库生成方法及装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7899921B2 (en) * 2004-12-08 2011-03-01 Microsoft Corporation Verifying and maintaining connection liveliness in a reliable messaging for web services environment
CN101308556A (zh) * 2007-05-15 2008-11-19 阿里巴巴集团控股有限公司 网上支付测试系统及网上支付测试方法
CN101330329B (zh) * 2008-07-29 2012-03-28 中兴通讯股份有限公司 自适应测试方法和系统
CN102231134A (zh) * 2011-07-29 2011-11-02 哈尔滨工业大学 基于静态分析的冗余代码缺陷检测方法
CN103176895B (zh) * 2011-12-22 2016-03-30 阿里巴巴集团控股有限公司 一种回归测试方法和系统
CN103310334B (zh) * 2012-03-16 2016-12-28 阿里巴巴集团控股有限公司 一种业务处理的方法及装置
US9317410B2 (en) * 2013-03-15 2016-04-19 International Business Machines Corporation Testing functional correctness and idempotence of software automation scripts
CN105335143A (zh) * 2014-07-30 2016-02-17 阿里巴巴集团控股有限公司 一种业务处理方法及装置
CN105740258B (zh) * 2014-12-09 2019-01-04 阿里巴巴集团控股有限公司 基于幂等号校验的业务处理方法及装置
CN104580409B (zh) * 2014-12-24 2017-12-22 广州酷狗计算机科技有限公司 业务请求处理方法、服务器及终端

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105573996A (zh) * 2014-10-09 2016-05-11 阿里巴巴集团控股有限公司 数据库处理方法、装置及系统
CN106155891A (zh) * 2015-04-02 2016-11-23 阿里巴巴集团控股有限公司 接口测试方法、接口描述数据库生成方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Testing Idempotence for Infrastructure as Code;Waldemar Hummer等;《ACM/IFIP/USENIX Middleware Conference》;20130131;1-20 *
架构设计 | 接口幂等性原则,防重复提交Token管理;演道网;《https://www.go2live.cn/nocate/%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1-%E6%8E%A5%E5%8F%A3%E5%B9%82%E7%AD%89%E6%80%A7%E5%8E%9F%E5%88%99%EF%BC%8C%E9%98%B2%E9%87%8D%E5%A4%8D%E6%8F%90%E4%BA%A4token%E7%AE%A1%E7%90%86.html》;20120217;1-7 *

Also Published As

Publication number Publication date
CN108874654A (zh) 2018-11-23

Similar Documents

Publication Publication Date Title
CN108874654B (zh) 幂等有效性测试方法、装置及设备、可读介质
JP6707270B2 (ja) サービス処理方法および装置
RU2705455C1 (ru) Способ и система для сбора и формирования отчетности аутентификационных данных
US10019347B2 (en) Systems and methods for selection of test cases for payment terminals
CN109033772B (zh) 一种验证信息的输入方法及装置
CN110175916B (zh) 资金流核对方法及装置
US9235840B2 (en) Electronic transaction notification system and method
CN109003071B (zh) 支付方法、装置及设备
CN109257366A (zh) 对用户进行身份验证的方法和装置
CN110855718B (zh) 企业用户的注册方法、装置、电子设备及计算机可读介质
CN108710658B (zh) 一种数据记录的存储方法及装置
CN110278241B (zh) 一种注册请求处理方法及装置
WO2021121030A1 (zh) 一种资源转移的方法及结账终端、服务器节点
CN108632348B (zh) 一种业务校验方法和装置
JP6563001B2 (ja) 補充取引におけるリスクを検出して警告するためのシステムおよび方法
CN114428815A (zh) 数据存储方法、装置、电子设备和计算机可读介质
CN112184406A (zh) 数据处理方法、系统、电子设备及计算机可读存储介质
CN111901299A (zh) 申请认证方法、装置、电子设备和存储介质
CN117114027A (zh) 一种二维码扫描方法、装置及设备
CN110730092B (zh) 进行网关调试的方法和装置
CN111429132B (zh) 一种业务处理方法和装置
US11797975B1 (en) Pre-authorized transfer
EP3244340A1 (en) Method for securely running an application
CN104348698B (zh) 一种基于即时通讯的服务的消息提醒方法和装置
CN111506299B (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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20200923

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Applicant before: Alibaba Group Holding Ltd.

Effective date of registration: 20200923

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant before: Advanced innovation technology Co.,Ltd.

GR01 Patent grant
GR01 Patent grant