CN110659209A - 一种基于接口调用的自动化测试方法、装置及测试系统 - Google Patents

一种基于接口调用的自动化测试方法、装置及测试系统 Download PDF

Info

Publication number
CN110659209A
CN110659209A CN201910885547.7A CN201910885547A CN110659209A CN 110659209 A CN110659209 A CN 110659209A CN 201910885547 A CN201910885547 A CN 201910885547A CN 110659209 A CN110659209 A CN 110659209A
Authority
CN
China
Prior art keywords
test
tested
sequence
random
interface
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
CN201910885547.7A
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.)
Beijing Dajia Internet Information Technology Co Ltd
Original Assignee
Beijing Dajia Internet 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 Beijing Dajia Internet Information Technology Co Ltd filed Critical Beijing Dajia Internet Information Technology Co Ltd
Priority to CN201910885547.7A priority Critical patent/CN110659209A/zh
Publication of CN110659209A publication Critical patent/CN110659209A/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/3684Test management for test design, e.g. generating new test cases

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

本公开关于一种基于接口调用的自动化测试方法、装置及测试系统,涉及软件测试技术领域,用以解决基于SDK接口的测试难针对大量的接口调用的组合进行测试的问题,本公开方法包括:将至少一个接口调用信息实例化得到至少一个待测试对象的集合确定为待测试对象集合;进行至少一次针对待测试对象集合的随机序列测试,其中,进行每次随机序列测试都包括以下过程:进行至少两次对象测试,其中,每次对象测试随机针对所述待测试对象集合中的一个待测试对象进行测试;根据本次随机序列测试中每次对象测试的测试顺序以及每次对象测试对应的待测试对象的测试结果生成随机测试序列。本公开提供了一种尽可能多地对不同接口组合和调用时序进行测试的方法。

Description

一种基于接口调用的自动化测试方法、装置及测试系统
技术领域
本公开涉及软件测试技术领域,特别涉及一种基于接口调用的自动化测试方法、装置及测试系统。
背景技术
软件自动化测试作为提升测试效率、覆盖异常场景、提升研发质量的有效手段,目前被广泛使用,尤其在应用程序测试方面,针对图形用户接口(Graphical UserInterface,GUI)的自动化测试技术层出不穷,例如基于数据驱动的自动化测试、基于录制回放的自动化测试等等;且随着业内面向企业(To Business)行业或者内部中台服务的兴起,开发者交付的内容由原来的应用程序,慢慢变成交付软件开发工具包(SoftwareDevelopment Kit,SDK);相对于应用程序的测试,在使用SDK接口的方式和调用接口的时序会存在多种多样的情况,测试中很难针对各种接口调用的组合进行穷举测试。
综上所述,在现有技术中,SDK接口的组合方式和SDK接口调用的时序会存在多种多样的情况,测试中很难针对各种接口调用的组合进行穷举测试。
发明内容
本公开提供一种基于接口调用的自动化测试方法、装置及测试系统,以至少解决现有技术中,SDK接口的组合方式和SDK接口调用的时序会存在多种多样的情况,测试中很难针对大量的接口调用的组合进行测试的问题。
根据本公开实施例的第一方面,提供一种基于接口调用的自动化测试方法,所述方法包括:
将至少一个接口调用信息实例化得到至少一个待测试对象,将所述至少一个待测试对象的集合确定为待测试对象集合,其中,每个待测试对象包括接口调用的前置条件、进行接口调用的执行体以及用于确定接口调用执行结果的后置校验体;
进行至少一次针对待测试对象集合的随机序列测试,其中,进行每次随机序列测试都包括以下过程:
进行至少两次对象测试,其中,每次对象测试随机针对所述待测试对象集合中的一个待测试对象进行测试;
根据本次随机序列测试中每次对象测试的测试顺序以及每次对象测试对应的待测试对象的测试结果生成随机测试序列。
可选地,按照如下方法进行每次对象测试:
从所述待测试对象集合中随机选择一个待测试对象:
若当前满足选择的所述待测试对象包括的接口调用的前置条件,则执行选择的所述待测试对象包括的执行体进行接口调用,并通过选择的所述待测试对象包括的后置校验体确定接口调用的执行结果,并根据所述执行结果确定所述待测试对象的测试结果;或
若当前不满足选择的所述待测试对象包括的接口调用的前置条件,则确定所述待测试对象的测试结果为跳过测试。
可选地,所述根据本次随机序列测试中每次对象测试的测试顺序以及每次对象测试对应的待测试对象的测试结果生成随机测试序列,包括:
按照每次对象测试的测试顺序,将每次对象测试对应的待测试对象的身份标识进行排序得到一个第一随机测试序列;以及
将每次对象测试对应的待测试对象的测试结果保存到所述第一随机测试序列中,得到一个所述随机测试序列。
可选地,所述将每次对象测试对应的待测试对象的测试结果保存到所述第一随机测试序列中,还包括:
将每次对象测试的测试开始时间保存到所述第一随机测试序列中。
可选地,所述进行至少一次针对待测试对象集合的随机序列测试,还包括:
若所述至少一次针对待测试对象集合的随机序列测试过程中出现测试异常,则通过辅助测试工具获取测试异常时的异常测试数据。
可选地,所述进行至少一次针对待测试对象集合的随机序列测试,还包括:
进行至少一次针对待测试对象集合的随机序列测试的总时长达到第一预设时长,结束所述至少一次随机序列测试;和/或进行随机序列测试的总次数达到第一预设测试次数时,结束所述至少一次针对待测试对象集合的随机序列测试;
在结束所述至少一次针对待测试对象集合的随机序列测试后,生成所述至少一次针对待测试对象集合的随机序列测试的测试报告。
可选地,所述进行每次针对待测试对象集合的随机序列测试,还包括:
进行至少两次对象测试的总时长达到第二预设时长,结束所述至少两次对象测试;和/或进行至少对象测试的总次数达到第二预设次数时,结束所述至少两次对象测试。
根据本公开实施例的第二方面,提供一种基于接口调用的自动化测试装置,所述装置包括待测试对象管理单元、自动化测试单元、测试结果记录单元,其中:
所述待测试对象管理单元被配置为执行将至少一个接口调用信息实例化得到至少一个待测试对象,将所述至少一个待测试对象的集合确定为待测试对象集合,其中,每个待测试对象包括接口调用的前置条件、进行接口调用的执行体以及用于确定接口调用执行结果的后置校验体;
所述自动化测试单元被配置为执行进行至少一次针对待测试对象集合的随机序列测试;其中,进行每次随机序列测试都包括以下过程:进行至少两次对象测试,其中,每次对象测试随机针对所述待测试对象集合中的一个待测试对象进行测试;
所述测试结果记录单元被配置为执行,根据每次随机序列测试中每次对象测试的测试顺序以及每次对象测试对应的待测试对象的测试结果生成随机测试序列。
可选地,所述自动化测试单元被配置为执行:
从所述待测试对象集合中随机选择一个待测试对象:
若当前满足选择的所述待测试对象包括的接口调用的前置条件,则执行选择的所述待测试对象包括的执行体进行接口调用,并通过选择的所述待测试对象包括的后置校验体确定接口调用的执行结果,并根据所述执行结果确定所述待测试对象的测试结果;或
若当前不满足选择的所述待测试对象包括的接口调用的前置条件,则确定所述待测试对象的测试结果为跳过测试。
可选地,所述测试结果记录单元被配置为执行:
按照每次对象测试的测试顺序,将每次对象测试对应的待测试对象的身份标识进行排序得到一个第一随机测试序列;以及
将每次对象测试对应的待测试对象的测试结果保存到所述第一随机测试序列中,得到一个所述随机测试序列。
可选地,所述测试结果记录单元还被配置为执行:
将每次对象测试的测试开始时间保存到所述第一随机测试序列中。
可选地,所述自动化测试单元还被配置为执行:
若所述至少一次针对待测试对象集合的随机序列测试过程中出现测试异常,则通过辅助测试工具获取测试异常时的异常测试数据。
可选地,所述自动化测试单元还被配置为执行:
进行至少一次针对待测试对象集合的随机序列测试的总时长达到第一预设时长,结束所述至少一次随机序列测试;和/或进行随机序列测试的总次数达到第一预设测试次数时,结束所述至少一次针对待测试对象集合的随机序列测试;
在结束所述至少一次针对待测试对象集合的随机序列测试后,生成所述至少一次针对待测试对象集合的随机序列测试的测试报告。
可选地,所述自动化测试单元还被配置为执行:
进行至少两次对象测试的总时长达到第二预设时长,结束所述至少两次对象测试;和/或进行至少对象测试的总次数达到第二预设次数时,结束所述至少两次对象测试。
根据本公开实施例的第三方面,提供一种电子设备,包括处理器、用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行本公开实施例的第一方面所述的基于接口调用的自动化测试方法的步骤。
根据本公开实施例的第四方面,提供一种计算机可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行本公开实施例的第一方面所述的基于接口调用的自动化测试方法的步骤。
本公开实施例提供的技术方案至少带来以下有益效果:
本公开中随机从待测试对象集合中选择待测试对象进行测试,进而生成多个针对待测试对象集合中的待测试对象的随机测试序列,提供了一种尽可能多地对不同接口组合和调用时序进行测试的方法;且有效地保证了SDK接口在不同调用组合和不同调用时序时的稳定性和质量,且在随机序列测试过程中生成的随机测试序列中包含各个待测试对象进行测试的顺序和测试结果,便于后期根据记录的随机测试序列查找测试中出现的问题,以及根据查找出的测试失败或异常的待测试对象进行校验或修复。
应当理解的是,以上的一般描述和后文的细节描述仅是示意性和解释性的,并不能限制本公开。
附图说明
为了更清楚地说明本公开实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例提供的提供一种接口调用的自动化测试系统的示意图;
图2为本公开实施例提供的一种基于接口调用的自动化测试方法的示过程意图;
图3为本公开实施例提供的进行每次对象测试的过程示意图;
图4为本公开实施例提供的一种基于接口调用的自动化测试方法的完整过程示意图;
图5为本公开实施例提供的一种基于接口调用的自动化测试装置的示意图;
图6为本公开实施例提供的一种测试设备示意图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
为了便于本领域技术人员更好地理解本申请的技术方案,下面对本申请涉及的专有名词进行说明:
1、应用程序编程接口(Application Programing Interface,API):一些预先定义的函数,用以提供应用程序与开发人员基于某软件或硬件得意访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
2、软件开发包(Software Development Kit,SDK):软件工程师为特定的软件包、软件框架、硬件平台、操作系统等简历应用软件时的以API接口的形式提供的开发工具集合。
3、图形用户接口(Graphical User Interface,GUI)采用图形方式显示的计算机操作用户界面。
4、穷举测试(Exhaustive Testing):也称完全测试,即软件程序在运行测试的过程中各个软件程序分支都能被调用到;穷举法,可视为最简单的搜索,即是在一个可能存在可行状态的状态全集中依次遍历所有的元素,判断是否存在可行状态的方法。
以下对本申请的设计思想进行说明:
软件自动化测试中相对于应用程序的测试,针对SDK接口的软件测试国策很难过面临着如下两个问题:
问题1)SDK接口提供的界面是应用程序编程接口(Application ProgramingInterface,API),而不是图形用户接口(Graphical User Interface,GUI),在对SDK接口进行测试时,无法使用基于GUI的自动化测试框架。
问题2)软件应用程序的开发人员在使用SDK接口时,会存在不同的SDK接口组合和调用时序,测试无法针对多种SDK接口组合和调用时序进行测试。
如有接口A、接口B、接口C三个SDK接口,在SDK接口的开发和测试过程中,若一直以接口A、接口B和接口C的调用顺序对3个SDK接口进行调用,测试的时候仅对接口A、接口B和接口C的调用顺序进行测试,但是却不能得知接口C、接口B和接口A的调用顺序,或者接口A、接口C和接口B的调用顺序是否会出现错误。
目前为了解决上述问题1)和问题2),通常采用如下两种方式对SDK接口的调用进行测试:
测试方案一:基于SDK接口的自动化测试,通过SDK接口调用的形式,而非GUI操作的形式,来对SDK进行自动化测试。
该方法中,用程序的开发人员在使用SDK接口时,存在多种多样的组合情况,基于SDK接口的自动化测试依然无法测试出多种接口调用顺序的情况。
测试方案二:基于GUI的随机测试(Monkey Test)。
对于有GUI的软件应用程序,可以通过Monkey Test的方法,随机对用户界面进行测试操作,从而保证软件应用程序的健壮性和稳定性。
但是用GUI的方式对SDK接口进行自动化测试时,必须有基于SDK接口的演示案例(Demonstration,Demo),若已经有了基于SDK接口的Demo,则Demo使用API接口的方式已经被固定,若想要Demo覆盖所有的API接口,则Demo将会变得异常复杂。
另一方面,基于SDK接口调用的随机自动化测试,各个SDK接口之间具有一定的依赖关系,并不能做到完全随机,如SDK接口中有一个对歌曲的背景音乐做变调的setBgmPitch接口,这个setBgmPitch接口的前提条件是该歌曲的背景音乐已经被播放,即另外一个播放该歌曲的背景音乐的startBgm接口已经被调用,那么,先调用setBgmPitch接口后调用startBgm接口的测试没有意义,因此,针对SDK接口进行自动化测试的测试框架需要解决这种接口间的依赖关系。
综上,在对SDK接口进行自动化测试时,SDK接口的组合方式和SDK接口调用的时序会存在多种多样的情况,测试中很难针对大量的接口调用的组合进行测试。
基于上述场景,本公开实施例提供一种基于接口调用的自动化测试方法,该方法中将每个SDK接口调用信息实例化得到一个待测试对象,将得到的一个或多个待测试对象的集合确定为待测试对象集合,其中每个待测试对象包括接口调用的前置条件、进行接口调用的执行体以及用于确定接口调用执行结果的后置校验体;
得到待测试对象集合后,进而针对该待测试对象集合进行至少一次随机序列测试,其中,每次随机测试中进行至少两次对象测试,在每次对象测试中从待测试对象集合中随机选择一个待测试对象进行测试;
在每次随机序列测试中,根据本次随机序列测试中,每次对象测试的测试顺序以及每次对象测试对应的待测试对象的测试结果生成一个随机测试序列,该随机测试序列中保存有参与本次随机序列测试的各个待测试对象的身份标识,以及各个待测试对象的测试结果,以便在自动化测试结束后,工作人员可以根据记录的各个随机测试序列的信息,对测试失败或异常的随机测试序列进行回放,或者对测试失败或异常的待测试对象进行校验或修复。
为了便于理解,下面结合说明书附图对本公开示意性实施例做进一步详细描述。
如图1所示,本公开提供一种接口调用的自动化测试系统,上述测试系统包括待测试对象管理模块11、自动化测试模块12、测试结果记录模块13,其中:
上述待测试对象管理模块11被配置为执行将至少一个接口调用信息得到至少一个待测试对象,并把上述至少一个待测试对象添加到待测试对象集合中;
上述自动化测试模块12被配置为执行进行至少一次针对待测试对象集合的随机序列测试;其中,进行每次随机序列测试都包括至少两次对象测试,每次对象测试随机针对待测试对象集合中的一个待测试对象进行测试;
测试结果记录模块13被配置为根据每次随机序列测试的各个待测试对象的测试顺序以及对应的测试结果生成随机测试序列并记录。
其中,上述待测试对象管理模块用于将一个或多个SDK接口信息进行实例化得到一个获多个待测试对象,以及将实例化得到的待测试对象增添到待测试对象集合、将待测试对象从待测试对象集合中删除、以及修改待测试对象集合中的待测试对象等。
每个待测试对象可以但不局限于包括接口调用的前置条件、进行接口调用的执行体、用于确定接口调用执行结果的后置校验体,其中:
上述接口调用的前置条件可以包括上述执行体执行具体的SDK接口调用前,待测试对象需要达到的状态,如若一个待测试对象的执行体为调用对歌曲的背景音乐进行变调的SDK接口,则该执行体的接口调用的前置条件应为正在播放歌曲的背景音乐。
上述执行体为调用SDK接口的具体执行模块。
上述后置校验体,用于根据上述接口调用的执行结果确定待测试对象的测试结果,上述测试结果可以但不局限于包括测试成功、测试失败以及跳过测试。
作为一种可能的实施方式,上述待测试对象管理模块还用于,在进行一次对象测试时,从待测试对象集合中随机选择一个待测试对象,作为该次对象测试的被测试对象。
自动化测试模块用于进行至少一次针对待测试对象集合的随机序列测试;且在每次随机序列测试中,用于进行至少两次对象测试,每次对象测试随机针对待测试对象集合中的一个待测试对象进行测试。
每次对象测试的过程如下:
如果当前满足选择的待测试对象的接口调用的前提条件,则执行选择的待测试对象的执行体进行接口调用,并通过选择的待测试对象的后置校验体确定该待测试对象的执行结果,否则,确定选择的待测试对象的测试结果为跳过测试。
可选地,上述测试系统还包括测试异常捕获模块,该测试异常捕获模块可以在该系统的各个模块中使用,该测试测试异常捕获模块被配置为通过预设的辅助测试工具获取测试异常时的异常测试数据等,上述辅助测试工具可以但不局限于包括crash捕获工具、接口随机参数生成等。
如图2所示,本公开提供一种基于接口调用的自动化测试方法,该方法可以应用于上述自动化测试系统,该方法具体包括:
步骤S201,获取参与自动化测试的待测试对象集合,上述待测试集合中包括将至少一个接口调用信息实例化得到的至少一个待测试对象。
可以将实例化得到的至少一个待测试对象的集合确定为待测试对象,可以直接根据工作人员的指示,得到上述待测试对象集合,也可以根据自动化测试系统中的待测试对象管理模块得到上述待测试集合。
可选地,上述每个待测试对象可以但不局限于包括接口调用的前置条件、进行接口调用的执行体、用于确定接口调用执行结果的后置校验体,其中:
上述接口调用的前置条件可以包括上述执行体进行具体的SDK接口调用前,待测试对象需要达到的状态,如若一个待测试对象的执行体为调用对歌曲的背景音乐进行变调的SDK接口,则该待测试对象对应的测试前提条件应为正在播放歌曲的背景音乐。
上述执行体为调用SDK接口的具体执行模块。
上述后置校验模块,用于确定调用上述执行体进行接口调用,并根据上述接口调用的执行结果确定待测试对象的测试结果,上述测试结果可以但不局限于包括测试成功、测试失败以及跳过测试。
步骤S202,触发自动化测试时,进行至少一次针对待测试对象集合的随机序列测试,并在每次随机序列测试后生成一个随机测试序列,其中,每次随机序列测试都包括至少两次对象测试,每次对象测试随机从上述待测试对象集合中随机选择一个待测试对象进行测试。
如图3所示,可以但不局限于按照如下方法进行每次对象测试:
步骤S301,确定触发对象测试时,确定待测试对象管理模块选择的本次对象的待测试对象;
步骤S302,判断当前是否满足选择的待测试对象包括的接口调用的前提条件,若满足则进入步骤S303,否则,进入步骤S305;
步骤S303,执行选择的待测试对象的执行体进行接口调用;
步骤S304,通过选择的待测试对象的后置校验体确定该待测试对象的执行结果;
步骤S305,确定选择的待测试对象的测试结果为跳过测试。
可选地,在一次针对待测试对象集合的随机序列测试结束时,可以根据该次随机序列测试中,每次对象测试的测试顺序以及每次对象测试对应的待测试对象的测试结果生成随机测试序列。
可选地,按照每次对象测试的测试顺序,将每次对象测试对应的待测试对象的身份标识进行排序得到一个第一随机测试序列;以及
将每次对象测试对应的待测试对象的测试结果保存到上述一个第一随机测试序列中,得到一个随机测试序列。
为了后期便于工作人员根据随机测试序列中各个待测试对象的测试结果,快速查找到测试失败或跳过测试的待测试对象,进而对上述待测试对象进行校验或修复,还可以在每次对象测试时,记录每次对象测试的测试开始时间,并将上述测试开始时间保存在第一随机测试序列中。
具体可以但不局限于按照如下两种形式获得随机测试序列:
第一种获得随机测试序列的方式
将每个待测试对象的测试顺序、身份标识以及测试结果保存为一条对象测试记录,在每次随机序列测试结束时,将在该次随机序列测试中生成的所有对象测试记录,按照上述测试顺序保存为该次随机序列测试对应的随机测试序列。
第二种获得随机测试序列得方式
将与测试顺序对应的待测试对象的身份标识按照测试顺序从前到后排列为身份标识序列,将与测试顺序对应的待测试对象的测试结果按照测试顺序从前到后排列为测试结果序列,进而将上述身份标识序列和测试结果序列保存为本次随机序列测试得到的随机测试序列。
可选地,还可以在每次对象测试时,记录每次对象测试的测试开始时间,并将上述测试开始时间保存在对象随机序列中。
可选地,还可以按照如下两种形式获得随机测试序列:
第三种获得随机测试序列得方式
将每个待测试对象的测试顺序、身份标识、测试结果以及测试开始时间保存为一条对象测试记录,在每次随机序列测试结束时,将在该次随机序列测试中生成的所有对象测试记录,按照上述测试顺序保存为该次随机序列测试对应的随机测试序列。
第四种获得随机测试序列得方式
将与测试顺序对应的待测试对象的身份标识按照测试顺序从前到后排列为身份标识序列,将与测试顺序对应的待测试对象的测试结果按照测试顺序从前到后排列为测试结果序列,将与测试顺序对应的待测试对象的测试开始时间按照测试顺序从前到后排列为测试开始时间序列,进而将上述身份标识序列、测试结果序列以及测试开始时间序列保存为本次随机序列测试得到的随机测试序列。
为了控制整个自动化测试的用时,本公开还提供如下方法用于结束上述至少一次针对待测试对象集合的随机序列测试,以及控制每次随机测试的用时,具体包括:
针对于每次随机序列测试,满足如下一个或多个测试停止条件时,结束本次随机序列测试:
第一种测试停止条件:进行至少两次对象测试的总时长达到第二预设时长。
第二种测试停止条件:进行至少对象测试的总次数达到第二预设次数。
第三种测试停止条件:进行至少两次对象测试的总时长达到第二预设时长,且进行至少对象测试的总次数达到第二预设次数。
第四种测试停止条件:进行至少两次对象测试的总时长达到第二预设时长,或进行至少对象测试的总次数达到第二预设次数。
针对于整个自动化测试过程而言,当满足如下一个或多个测试结束条件时,结束上述至少一次随机序列测试:
第一个测试结束条件:进行至少一次针对待测试对象集合的随机序列测试的总时长达到第一预设时长。
第二个测试结束条件:进行随机序列测试的总次数达到第一预设测试次数。
第三个测试结束条件:进行至少一次针对待测试对象集合的随机序列测试的总时长达到第一预设时长,且进行随机序列测试的总次数达到第一预设测试次数。
第四个测试结束条件:进行至少一次针对待测试对象集合的随机序列测试的总时长达到第一预设时长,或进行随机序列测试的总次数达到第一预设测试次数。
其中,在结束上述至少一次针对待测试对象集合的随机序列测试后,可以生成上述至少一次针对待测试对象集合的随机序列测试的测试报告,即在整个自动化测试结束后,得到的至少一个随机序列测试的测试报告,该测试报告中可以包括每次随机序列测试得到的随机测试序列,以及每个随机测试序列对应的序列测试结果,上述序列测试结果可以包括序列测试通过、序列测试异常等。
如图4所示,以下提供一种基于接口调用的自动化测试方法的完整过程,具体包括:
步骤S400,获取参与自动化测试的待测试对象集合;
步骤S401,触发针对待测试对象集合的随机序列测试;
步骤S402,判断随机序列测试测试的总时长是否达到第一预设时长,若达到则进步骤S403,否则进入步骤S409;
步骤S403,随机从待测试对象集合中随机选择一个待测试对象进行对象测试;
步骤S404,判断当前是否满足选择的待测试对象的接口调用的前提条件,若满足则进入步骤S405,否则,进入步骤S406;
步骤S405,执行选择的待测试对象的执行体进行接口调用,通过选择的待测试对象的后置校验体确定该待测试对象的执行结果,进入步骤S407;
步骤S406,确定选择的待测试对象的测试结果为跳过测试;
步骤S407,判断本次随机序列测试的总时长是否达到第二预设时长,若达到则进步骤S408,否则进入步骤S403;
步骤S408,根据每次随机序列测试中,各个待测试对象的测试顺序、测试结果以及测试开始时间生成随机测试序列,并进入步骤S402;
步骤S409,记录自动化测试中得到的各个随机测试序列,并结束本次自动化测试过程。
以下给出一个具体的应用实例:
假定待测试的接口调用信息包括:startBgm接口、setBgmPitch接口、stopBgm接口的调用信息,其中,startBgm接口用于播放歌曲的背景音乐,setBgmPitch接口对所播放的背景音乐Bgm进行变调,stopBgm接口停止播放背景音乐Bgm。
为了对上述startBgm接口、setBgmPitch接口和stopBgm接口进行随机序列测试,分别将startBgm接口、setBgmPitch接口和stopBgm示例化为第一待测试对象Action1、第二待测试对象Action2以及第三待测试对象Action3;并将Action1、Action2以及Action3通过待测试对象管理模块ActionManager加入到待测试对象集合中。
其中,如下以部分代码的形式示意性描述Action1、Action2以及Action3中的接口调用信息,其中/*XXXX*/为其之前的代码的含义说明,其中XXXX为说明文字。
Action1:
/*Action1是对startBgm接口进行测试,该接口的作用是播放背景音乐*/
action1.precondition=[](void)->bool{return true;}/*Action1包括的接口调用的前置条件,因为startBgm不需要接口调用的前置条件,所以直接这里直接返回真值true*/
action1.process=[](void){sdkInstance->startBgm(bgmFile);}/*Action1包括的执行体即测试执行体,对startBgm进行调用,bgmFile为背景音乐文件*/
action1.check=[](Result*){检查sdkInstance->isBgmStarted,并返回对应的Result;}/*Action1包括的后置校验体,对startBgm接口调用后的结果进行校验,这里该后置校验体用于检查背景音乐是否已在播放。*/
Action2:
/*Action2是对setBgmPitch接口进行测试,该接口的作用是对背景音乐进行变调*/
action2.precondition=[](void)->bool{return sdkInstance->isBgmStarted;}/*Action2包括的接口调用的前置条件,用于判断背景音乐是否在播放中。*/
action2.process=[](void){sdkInstance->setBgmPitch(2);}/*Action2包括的执行体,调用setBgmPitch接口。*/
action3.check=[](Result*){检查bgm是否已变调,并返回对应的Result;}/*Action2包括的后置校验体,这里校验背景音乐是否已经变调,涉及较复杂的算法,由于这个算法不是本公开的关注点,这里用伪代码“检查bgm是否已变调,并返回对应的Result”代替。*/
应当说明的是,Action2应用到了接口调用的前置条件,使用setBgmPitch接口进行变调,依赖背景音乐已经被播放,本公开的方案中通过接口调用的前置条件,就保证了在背景音乐未播放时,该Action2不会被执行。
Action3:
/*Action3是对stopBgm接口进行测试,这个接口的作用是停止背景音乐的播放*/
action3.precondition=[](void)->bool{return true;}/*Action2包括的接口调用的前置条件,对于SDK的设计,控制停止stop相关的接口应该是幂等的,所以这里的前置条件返回true,即无论背景音乐是否正在播放,都可以调用stopBgm进行测试*/
action3.process=[](void){sdkInstance->stopBgm();}/*ction2包括的执行体,调用stopBgm接口*/
action3.check=[](Result*){检查背景音乐的播放是否已停止,并返回对应的Result;}/*Action2包括的后置校验体,检查背景音乐是否已经停止播放。*/
待测试对象管理模块ActionManager在对Action1、Action2以及Action3进行自动化测试过程中,在每次针对待测试对象集合的随机序列测试中,在每次对象测试时随机从待测试对象集合中选择Action1、Action2以及Action3中的一个,进而实时生成随机测试序列,并在每次选择Action1、Action2以及Action3中的一个待测试对象后,将选择的待测试对象交给自动化测试模块ActionRunner执行,达到对这三个待测试对象随机测试的效果。
ActionRunner执行每次对象测试中ActionManager选择的待测试对象;若ActionManager在一次随机序列测试中选择的待测试对象的顺序是Action1、Action3、Action2;则测试Action2时,Action2的接口调用的前置条件不满足,即在测试Action3时,背景音乐播放已停止,此时Action2不会执行;在以Action1、Action3、Action2的顺序进行随机序列测试时,可以对每个待测试对象的测试过程进行录制,方便后续回放。
ActionRunner运行的总时长达到第一预设时长,或者ActionRunner运行随机序列测试的总次数达到第一预设测试次数后,由测试结果记录模块ResultManager生成对应的随机序列测试报告。
假设ActionRunner运行过程中有待测试对象测试失败(测试失败,或者跳过测试,或发生异常),可以通过之前ActionRunner录制每个待测试对象的测试过程中的数据,使用ActionRunner对此次随机序列测试或者该待测试对象的测试进行回放,以便测试人员和开发人员复现和分析问题。
本公开中随机从待测试对象集合中选择待测试对象进行测试,进而生成多个针对待测试对象集合中的待测试对象的随机测试序列,提供了一种尽可能多地对不同接口组合和调用时序进行测试的方法;且有效地保证了SDK接口在不同调用组合和不同调用时序时的稳定性和质量,且在随机序列测试过程中生成的随机测试序列中包含各个待测试对象进行测试的顺序和测试结果,便于后期根据记录的随机测试序列查找测试中出现的问题,以及根据查找出的测试失败或异常的待测试对象进行校验或修复。
如图5所示,本公开提供一种基于接口调用的自动化测试装置500,上述装置包括待测试对象管理单元501、自动化测试单元502、测试结果记录单元503,其中:
上述待测试对象管理单元501被配置为执行将至少一个接口调用信息实例化得到至少一个待测试对象,将上述至少一个待测试对象的集合确定为待测试对象集合,其中,每个待测试对象包括接口调用的前置条件、进行接口调用的执行体以及用于确定接口调用执行结果的后置校验体;
上述自动化测试单元502被配置为执行进行至少一次针对待测试对象集合的随机序列测试;其中,进行每次随机序列测试都包括以下过程:进行至少两次对象测试,其中,每次对象测试随机针对上述待测试对象集合中的一个待测试对象进行测试;
上述测试结果记录单元503被配置为执行,根据每次随机序列测试中每次对象测试的测试顺序以及每次对象测试对应的待测试对象的测试结果生成随机测试序列。
可选地,上述自动化测试单元被配置为执行:
从上述待测试对象集合中随机选择一个待测试对象:
若当前满足选择的上述待测试对象包括的接口调用的前置条件,则执行选择的上述待测试对象包括的执行体进行接口调用,并通过选择的上述待测试对象包括的后置校验体确定接口调用的执行结果,并根据上述执行结果确定上述待测试对象的测试结果;或
若当前不满足选择的上述待测试对象包括的接口调用的前置条件,则确定上述待测试对象的测试结果为跳过测试。
可选地,上述测试结果记录单元被配置为执行:
按照每次对象测试的测试顺序,将每次对象测试对应的待测试对象的身份标识进行排序得到一个第一随机测试序列;以及
将每次对象测试对应的待测试对象的测试结果保存到上述第一随机测试序列中,得到一个上述随机测试序列。
可选地,上述测试结果记录单元还被配置为执行:
将每次对象测试的测试开始时间保存到上述第一随机测试序列中。
可选地,上述自动化测试单元还被配置为执行:
若上述至少一次针对待测试对象集合的随机序列测试过程中出现测试异常,则通过辅助测试工具获取测试异常时的异常测试数据。
可选地,上述自动化测试单元还被配置为执行:
进行至少一次针对待测试对象集合的随机序列测试的总时长达到第一预设时长,结束上述至少一次随机序列测试;和/或进行随机序列测试的总次数达到第一预设测试次数时,结束上述至少一次针对待测试对象集合的随机序列测试;
在结束上述至少一次针对待测试对象集合的随机序列测试后,生成上述至少一次针对待测试对象集合的随机序列测试的测试报告。
可选地,上述自动化测试单元还被配置为执行:
进行至少两次对象测试的总时长达到第二预设时长,结束上述至少两次对象测试;和/或进行至少对象测试的总次数达到第二预设次数时,结束上述至少两次对象测试。
如图6所示,本公开提供一种测试设备600,包括处理器601、用于存储上述处理器可执行指令的存储器602;
其中,上述处理器被配置为执行如下过程:
将至少一个接口调用信息实例化得到至少一个待测试对象,将上述至少一个待测试对象的集合确定为待测试对象集合,其中,每个待测试对象包括接口调用的前置条件、进行接口调用的执行体以及用于确定接口调用执行结果的后置校验体;
进行至少一次针对待测试对象集合的随机序列测试,其中,进行每次随机序列测试都包括以下过程:
进行至少两次对象测试,其中,每次对象测试随机针对上述待测试对象集合中的一个待测试对象进行测试;
根据本次随机序列测试中每次对象测试的测试顺序以及每次对象测试对应的待测试对象的测试结果生成随机测试序列。
可选地,按照如下方法进行每次对象测试:
从上述待测试对象集合中随机选择一个待测试对象:
若当前满足选择的上述待测试对象包括的接口调用的前置条件,则执行选择的上述待测试对象包括的执行体进行接口调用,并通过选择的上述待测试对象包括的后置校验体确定接口调用的执行结果,并根据上述执行结果确定上述待测试对象的测试结果;或
若当前不满足选择的上述待测试对象包括的接口调用的前置条件,则确定上述待测试对象的测试结果为跳过测试。
可选地,上述根据本次随机序列测试中每次对象测试的测试顺序以及每次对象测试对应的待测试对象的测试结果生成随机测试序列,包括:
按照每次对象测试的测试顺序,将每次对象测试对应的待测试对象的身份标识进行排序得到一个第一随机测试序列;以及
将每次对象测试对应的待测试对象的测试结果保存到上述第一随机测试序列中,得到一个所述随机测试序列。
可选地,上述将每次对象测试对应的待测试对象的测试结果保存到上述第一随机测试序列中,还包括:
将每次对象测试的测试开始时间保存到上述第一随机测试序列中。
可选地,上述进行至少一次针对待测试对象集合的随机序列测试,还包括:
若上述至少一次针对待测试对象集合的随机序列测试过程中出现测试异常,则通过辅助测试工具获取测试异常时的异常测试数据。
可选地,上述进行至少一次针对待测试对象集合的随机序列测试,还包括:
进行至少一次针对待测试对象集合的随机序列测试的总时长达到第一预设时长,结束上述至少一次随机序列测试;和/或进行随机序列测试的总次数达到第一预设测试次数时,结束上述至少一次针对待测试对象集合的随机序列测试;
在结束上述至少一次针对待测试对象集合的随机序列测试后,生成上述至少一次针对待测试对象集合的随机序列测试的测试报告。
可选地,上述进行每次针对待测试对象集合的随机序列测试,还包括:
进行至少两次对象测试的总时长达到第二预设时长,结束上述至少两次对象测试;和/或进行至少对象测试的总次数达到第二预设次数时,结束上述至少两次对象测试。
在示例性实施例中,还提供了一种包括指令的存储介质,例如包括指令的存储器,上述指令可由上述电子设备的处理器执行以完成上述方法。可选地,存储介质可以是非临时性计算机可读存储介质,例如,上述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

Claims (10)

1.一种基于接口调用的自动化测试方法,其特征在于,所述方法包括:
将至少一个接口调用信息实例化得到至少一个待测试对象,将所述至少一个待测试对象的集合确定为待测试对象集合,其中,每个待测试对象包括接口调用的前置条件、进行接口调用的执行体以及用于确定接口调用执行结果的后置校验体;
进行至少一次针对待测试对象集合的随机序列测试,其中,进行每次随机序列测试都包括以下过程:
进行至少两次对象测试,其中,每次对象测试随机针对所述待测试对象集合中的一个待测试对象进行测试;
根据本次随机序列测试中每次对象测试的测试顺序以及每次对象测试对应的待测试对象的测试结果生成随机测试序列。
2.如权利要求1所述的方法,其特征在于,按照如下方法进行每次对象测试:
从所述待测试对象集合中随机选择一个待测试对象:
若当前满足选择的所述待测试对象包括的接口调用的前置条件,则执行选择的所述待测试对象包括的执行体进行接口调用,并通过选择的所述待测试对象包括的后置校验体确定接口调用的执行结果,并根据所述执行结果确定所述待测试对象的测试结果;或
若当前不满足选择的所述待测试对象包括的接口调用的前置条件,则确定所述待测试对象的测试结果为跳过测试。
3.如权利要求2所述的方法,其特征在于,所述根据本次随机序列测试中每次对象测试的测试顺序以及每次对象测试对应的待测试对象的测试结果生成随机测试序列,包括:
按照每次对象测试的测试顺序,将每次对象测试对应的待测试对象的身份标识进行排序得到一个第一随机测试序列;以及
将每次对象测试对应的待测试对象的测试结果保存到所述第一随机测试序列中,得到一个所述随机测试序列。
4.如权利要求3所述的方法,其特征在于,所述将每次对象测试对应的待测试对象的测试结果保存到所述第一随机测试序列中,还包括:
将每次对象测试的测试开始时间保存到所述第一随机测试序列中。
5.如权利要求1-4任一所述的方法,其特征在于,所述进行至少一次针对待测试对象集合的随机序列测试,还包括:
若所述至少一次针对待测试对象集合的随机序列测试过程中出现测试异常,则通过辅助测试工具获取测试异常时的异常测试数据。
6.如权利要求1-4任一所述的方法,其特征在于,所述进行至少一次针对待测试对象集合的随机序列测试,还包括:
进行至少一次针对待测试对象集合的随机序列测试的总时长达到第一预设时长,结束所述至少一次随机序列测试;和/或进行随机序列测试的总次数达到第一预设测试次数时,结束所述至少一次针对待测试对象集合的随机序列测试;
在结束所述至少一次针对待测试对象集合的随机序列测试后,生成所述至少一次针对待测试对象集合的随机序列测试的测试报告。
7.如权利要求1-4任一所述的方法,其特征在于,所述进行每次针对待测试对象集合的随机序列测试,还包括:
进行至少两次对象测试的总时长达到第二预设时长,结束所述至少两次对象测试;和/或进行至少对象测试的总次数达到第二预设次数时,结束所述至少两次对象测试。
8.一种基于接口调用的自动化测试装置,其特征在于,所述装置包括待测试对象管理单元、自动化测试单元、测试结果记录单元,其中:
所述待测试对象管理单元被配置为执行将至少一个接口调用信息实例化得到至少一个待测试对象,将所述至少一个待测试对象的集合确定为待测试对象集合,其中,每个待测试对象包括接口调用的前置条件、进行接口调用的执行体以及用于确定接口调用执行结果的后置校验体;
所述自动化测试单元被配置为执行进行至少一次针对待测试对象集合的随机序列测试;其中,进行每次随机序列测试都包括以下过程:进行至少两次对象测试,其中,每次对象测试随机针对所述待测试对象集合中的一个待测试对象进行测试;
所述测试结果记录单元被配置为执行,根据每次随机序列测试中每次对象测试的测试顺序以及每次对象测试对应的待测试对象的测试结果生成随机测试序列。
9.一种测试设备,其特征在于,包括处理器、用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行权利要求1至7中任一项所述的基于接口调用的自动化测试方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1至7任一所述方法的步骤。
CN201910885547.7A 2019-09-19 2019-09-19 一种基于接口调用的自动化测试方法、装置及测试系统 Pending CN110659209A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910885547.7A CN110659209A (zh) 2019-09-19 2019-09-19 一种基于接口调用的自动化测试方法、装置及测试系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910885547.7A CN110659209A (zh) 2019-09-19 2019-09-19 一种基于接口调用的自动化测试方法、装置及测试系统

Publications (1)

Publication Number Publication Date
CN110659209A true CN110659209A (zh) 2020-01-07

Family

ID=69037207

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910885547.7A Pending CN110659209A (zh) 2019-09-19 2019-09-19 一种基于接口调用的自动化测试方法、装置及测试系统

Country Status (1)

Country Link
CN (1) CN110659209A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113238926A (zh) * 2021-04-14 2021-08-10 北京信安世纪科技股份有限公司 一种数据库脚本检测方法、装置、电子设备及存储介质
CN113360364A (zh) * 2020-03-04 2021-09-07 腾讯科技(深圳)有限公司 目标对象的测试方法及装置
CN113899756A (zh) * 2021-09-09 2022-01-07 东风柳州汽车有限公司 高压线束分组测试方法、装置、设备及存储介质
US20230015745A1 (en) * 2020-06-01 2023-01-19 Agora Lab, Inc. Highly scalable system for automated sdk testing

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6067639A (en) * 1995-11-09 2000-05-23 Microsoft Corporation Method for integrating automated software testing with software development
CN103377104A (zh) * 2012-04-19 2013-10-30 腾讯科技(深圳)有限公司 测试方法及装置
CN107329861A (zh) * 2017-06-12 2017-11-07 北京奇安信科技有限公司 一种多接口测试方法及装置
CN108153670A (zh) * 2017-11-30 2018-06-12 北京奇艺世纪科技有限公司 一种接口测试方法、装置及电子设备
CN109189666A (zh) * 2018-08-02 2019-01-11 腾讯科技(北京)有限公司 接口测试方法、装置和计算机设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6067639A (en) * 1995-11-09 2000-05-23 Microsoft Corporation Method for integrating automated software testing with software development
CN103377104A (zh) * 2012-04-19 2013-10-30 腾讯科技(深圳)有限公司 测试方法及装置
CN107329861A (zh) * 2017-06-12 2017-11-07 北京奇安信科技有限公司 一种多接口测试方法及装置
CN108153670A (zh) * 2017-11-30 2018-06-12 北京奇艺世纪科技有限公司 一种接口测试方法、装置及电子设备
CN109189666A (zh) * 2018-08-02 2019-01-11 腾讯科技(北京)有限公司 接口测试方法、装置和计算机设备

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113360364A (zh) * 2020-03-04 2021-09-07 腾讯科技(深圳)有限公司 目标对象的测试方法及装置
CN113360364B (zh) * 2020-03-04 2024-04-19 腾讯科技(深圳)有限公司 目标对象的测试方法及装置
US20230015745A1 (en) * 2020-06-01 2023-01-19 Agora Lab, Inc. Highly scalable system for automated sdk testing
US11650913B2 (en) * 2020-06-01 2023-05-16 Agora Lab, Inc. Highly scalable system for automated SDK testing
CN113238926A (zh) * 2021-04-14 2021-08-10 北京信安世纪科技股份有限公司 一种数据库脚本检测方法、装置、电子设备及存储介质
CN113238926B (zh) * 2021-04-14 2023-11-10 北京信安世纪科技股份有限公司 一种数据库脚本检测方法、装置、电子设备及存储介质
CN113899756A (zh) * 2021-09-09 2022-01-07 东风柳州汽车有限公司 高压线束分组测试方法、装置、设备及存储介质
CN113899756B (zh) * 2021-09-09 2024-03-22 东风柳州汽车有限公司 高压线束分组测试方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
CN110659209A (zh) 一种基于接口调用的自动化测试方法、装置及测试系统
CN110008113B (zh) 一种测试方法、装置、电子设备
US8522214B2 (en) Keyword based software testing system and method
US20050160321A1 (en) System and method for automatic test-case generation for software
CN104246714A (zh) 软件缺陷验证
CN107168857B (zh) 一种统计应用程序中的函数调用的方法及组件
CN112882930B (zh) 自动化测试方法、装置、存储介质及电子设备
Koeman et al. Automating failure detection in cognitive agent programs
CN111797006B (zh) 一种线程测试的方法、装置、设备以及存储介质
CN103049374B (zh) 一种自动化测试的方法及装置
CN110688313B (zh) 一种VxWorks操作系统下软件测试的故障注入方法
CN114138670B (zh) 基于接口自动化测试与功能、性能、安全测试融合的方法
CN111984524A (zh) 故障注入方法、故障模拟方法、故障注入装置及存储介质
Bertolino et al. Run java applications and test them in-vivo meantime
KR20140059600A (ko) 상태 기반의 테스트 시나리오 모델을 이용한 gui 테스트 장치 및 방법
CA3206550A1 (en) Test method, system and device based on excel file loading
EP2820547B1 (en) Debugging method and computer program product
CN110209593B (zh) 一种面向偏好设置的安卓应用测试方法
Buhse et al. Vedebug: regression debugging tool for java
Shaye Transitioning a team to agile test methods
Silva et al. Evolutionary testing of object-oriented software
CN112015648A (zh) 基于自动化脚本的测试方法、装置、计算机设备和介质
Martins et al. Testing java exceptions: An instrumentation technique
CN112328281A (zh) 一种服务器固件刷新方法和装置
Belli et al. Layer-centric testing

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
RJ01 Rejection of invention patent application after publication

Application publication date: 20200107

RJ01 Rejection of invention patent application after publication