CN111984522B - 一种自动化测试的方法及装置 - Google Patents

一种自动化测试的方法及装置 Download PDF

Info

Publication number
CN111984522B
CN111984522B CN201910436526.7A CN201910436526A CN111984522B CN 111984522 B CN111984522 B CN 111984522B CN 201910436526 A CN201910436526 A CN 201910436526A CN 111984522 B CN111984522 B CN 111984522B
Authority
CN
China
Prior art keywords
test
data
test data
failure data
failure
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
CN201910436526.7A
Other languages
English (en)
Other versions
CN111984522A (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.)
Hangzhou Hikvision System Technology Co Ltd
Original Assignee
Hangzhou Hikvision System 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 Hangzhou Hikvision System Technology Co Ltd filed Critical Hangzhou Hikvision System Technology Co Ltd
Priority to CN201910436526.7A priority Critical patent/CN111984522B/zh
Publication of CN111984522A publication Critical patent/CN111984522A/zh
Application granted granted Critical
Publication of CN111984522B publication Critical patent/CN111984522B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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

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)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请提供一种自动化测试的方法及装置,其中所述方法包括:获取针对被测对象配置的测试数据生成规则;按照所述测试数据生成规则生成所述被测对象的测试数据;采用所述测试数据执行测试用例,获得执行结果;若所述执行结果不符合预设的预期结果,则将所述测试数据作为失败数据,并对所述失败数据进行处理,获得新的测试数据,以将所述新的测试数据作为测试数据并执行所述测试用例。本申请实施例可以自动按照测试数据生成规则生成测试数据以驱动测试,以此生成远超人工设计数量的测试数据,提升了测试覆盖面积以及测试效率。同时还可以使得测试人员更加专注于被测对象本身。

Description

一种自动化测试的方法及装置
技术领域
本申请涉及软件测试处理领域,尤其涉及一种自动化测试的方法及装置。
背景技术
软件测试是软件项目的一个重要环节,也是确保软件质量的一个重要手段。软件测试就是在预设条件下运行系统或应用程序,评估运行结果,其中预先条件包括正常条件和异常条件。
软件测试的方法种类繁多,自动化测试是其中的一种。自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。
例如,在对云存储系统进行自动化测试时,针对云存储系统中的各个接口,需要制定一系列的输入数据和预期值。然后在执行测试时,将一定数量的接口按照确定的顺序执行,分别将执行结果与预期值相比较。
在上述过程中,一般通过人工制定一系列的输入数据和预期值,存在如下不足:
1、人工输入数据量不足的情况下测试质量不高;但人工输入数据量高的情况下会导致时间成本增加。
2、分散测试人员精力。这种方式使得测试人员需要消耗精力定义输入数据,而无法将精力集中到对整个系统的理解。
发明内容
有鉴于此,本申请提供一种自动化测试的方法及装置。
具体地,本申请是通过如下技术方案实现的:
第一方面,本申请实施例提供了一种自动化测试的方法,所述方法包括:
获取针对被测对象配置的测试数据生成规则;
按照所述测试数据生成规则生成所述被测对象的测试数据;
采用所述测试数据执行测试用例,获得执行结果;
若所述执行结果不符合预设的预期结果,则将所述测试数据作为失败数据,并对所述失败数据进行处理,获得新的测试数据,以将所述新的测试数据作为测试数据并执行所述测试用例。
在本实施例的一种可能的实施方式中,所述方法还包括:
若所述执行结果符合预设的预期结果,则继续执行所述按照所述测试数据生成规则生成所述被测对象的测试数据的步骤,直到所述测试用例的执行次数达到预设的最大执行次数。
在本实施例的一种可能的实施方式中,所述对所述失败数据进行处理,包括:
确定所述失败数据的取值类型,所述取值类型包括字符串、整数、数组或字典;
根据所述取值类型对所述失败数据进行处理,包括:
若所述失败数据的取值类型为字符串,则对所述失败数据进行缩短处理或加长处理;
若所述失败数据的取值类型为整数,则对所述失败数据进行变小处理或变大处理;
若所述失败数据的取值类型为数组类型或字典类型,则去掉所述失败数据中的指定数量的元素。
在本实施例的一种可能的实施方式中,所述测试数据生成规则包括测试数据的取值类型及取值范围;
所述按照所述测试数据生成规则生成所述被测对象的测试数据,包括:
按照所述取值类型,随机生成基于所述取值范围的测试数据。
在本实施例的一种可能的实施方式中,生成的所述测试数据包括所述取值范围中的边界值。
在本实施例的一种可能的实施方式中,所述失败数据用于指导开发人员对所述被测对象进行修复,所述方法还包括:
重新执行所述测试用例以对修复后的所述被测对象进行测试,在测试时,优先以所述失败数据作为测试数据执行所述测试用例。
第二方面,本申请实施例还提供了一种自动化测试装置,所述装置包括:
规则获取模块,用于获取针对被测对象配置的测试数据生成规则;
测试数据生成模块,用于按照所述测试数据生成规则生成所述被测对象的测试数据;
测试用例执行模块,用于采用所述测试数据执行测试用例,获得执行结果;
失败数据处理模块,用于若所述执行结果不符合预设的预期结果,则将所述测试数据作为失败数据,并对所述失败数据进行处理,获得新的测试数据,以将所述新的测试数据作为测试数据并执行所述测试用例。
在本实施例的一种可能的实施方式中,所述失败数据处理模块包括:
取值类型确定子模块,用于确定所述失败数据的取值类型,所述取值类型包括字符串、整数、数组或字典;
处理子模块,用于根据所述取值类型对所述失败数据进行处理;
所述处理子模块具体用于:
若所述失败数据的取值类型为字符串,则对所述失败数据进行缩短处理或加长处理;
若所述失败数据的取值类型为整数,则对所述失败数据进行变小处理或变大处理;
若所述失败数据的取值类型为数组类型或字典类型,则去掉所述失败数据中的指定数量的元素。
在本实施例的一种可能的实施方式中,所述测试数据生成规则包括测试数据的取值类型及取值范围;
所述测试数据生成模块具体用于:
按照所述取值类型,随机生成基于所述取值范围的测试数据。
在本实施例的一种可能的实施方式中,所述失败数据用于指导开发人员对所述被测对象进行修复,所述装置还包括:
修复对象测试模块,用于重新执行所述测试用例以对修复后的所述被测对象进行测试,在测试时,优先以所述失败数据作为测试数据执行所述测试用例。
本申请实施例具有如下有益效果:
在本实施例中,测试人员在对被测对象进行测试时,无需输入多个不同的测试数据,只需要配置测试数据生成规则即可,然后本实施例可以自动按照测试数据生成规则生成测试数据以驱动测试,以此生成远超人工设计数量的测试数据,提升了测试覆盖面积以及测试效率。同时还可以使得测试人员更加专注于被测对象本身,并使得测试人员对输入数据有效性缺乏了解的情况下可利用定义大范围规则从而有效的进行探索。
另外,本实施例还可以在确定执行结果不符合预期结果的失败数据后,通过对失败数据的处理获得新的测试数据传入测试用例中进行测试,提升了测试精度,进而有效的提升测试数据的质量。
附图说明
图1是本申请一示例性实施例示出的一种自动化测试的方法实施例的步骤流程图;
图2是本申请一示例性实施例示出的测试过程示意图;
图3是本申请一示例性实施例示出的测试用例示意图;
图4是本申请一示例性实施例示出的另一种自动化测试的方法实施例的步骤流程图;
图5是本申请的装置所在设备的一种硬件结构图;
图6是本申请一示例性实施例示出的一种自动化测试装置实施例的结构框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
参考图1,示出了本申请一示例性实施例示出的一种自动化测试的方法实施例的步骤流程图,本实施例具体可以包括如下步骤:
步骤101,获取针对被测对象配置的测试数据生成规则。
在该步骤中,被测对象可以包括需要输入数据以进行自动化测试的软件对象,例如,被测对象可以包括云存储系统中的接口对象(或称为接口),示例性地,接口可以包括RESTful(Representational State Transfer,指的是一组架构约束条件和原则,满足这些约束条件和原则的应用程序或设计就是RESTful)API(Application ProgrammingInterface,应用程序编程接口)接口、C++SDK(Software Development Kit,软件开发工具包)接口或JavaSDK接口等。
在本实施例的一种适用的场景中,如图2的测试过程示意图所示,当测试人员调用某个接口时,针对该接口的输入参数,不需要填入具体的测试数据,而只需要指定测试数据的生成规则(即测试数据生成规则,如图2的规则1、规则2等)。
在一种实施方式中,可以从该被测对象的测试用例中获取针对被测对象配置的测试数据生成规则。
具体的,在自动化测试场景中,当需要对被测对象进行自动化测试时,测试人员需要为被测对象编写测试用例(Test Case)。示例性地,本实施例的测试用例至少可以包括被测对象、针对被测对象的测试数据生成规则以及预期结果等。
例如,如图3的测试用例示意图所示,通过图3的界面显示需要执行的测试用例,指定被测对象进行测试。在图3中,该测试用例的用例名称为“获取所有数据源-name”,该测试用例用于对系统中存在的一个接口“获取所有数据源”的参数“name”进行测试,即被测对象为“获取所有数据源-name”。
在本实施例中,测试数据生成规则可以为测试人员为被测对象制定的一个关于输入数据的生成策略,根据该测试数据生成规则可以自动生成多个输入数据。示例性地,测试数据生成规则可以包括测试数据的取值类型、取值范围以及测试数据数量等。
在一个例子中,测试数据的取值类型可以包括字符串、整数、数组或字典等。对于不同的取值类型,取值范围可以为数值大小范围或者数据长度(如字符串长度)等。
例如,假设测试数据生成规则为“输入数据A应该是一个大于0小于1000的整数”,即取值类型为整数,取值范围为[0,1000],测试数据数量为默认数量(可以根据经验值确定,如50-100个)。
在一种实现方式中,测试用例可以采用编程语言(如python)实现。针对图3的测试用例,其包含的测试数据生成规则为“valid_source_name”,可以描述如下:
在上述测试数据生成规则的描述中,生成一个ascii字母组成的字符串,且其长度在1到112之间。
步骤102,按照所述测试数据生成规则生成所述被测对象的测试数据。
在该步骤中,可以自动根据测试数据生成规则生成针对被测对象的测试数据。
在本实施例的一种可能的实施方式中,步骤102可以包括如下子步骤:
按照所述取值类型,随机生成基于所述取值范围的测试数据。
在一个例子中,如图2所示,当确定测试数据生成规则(如图2的规则1)以后,则可以根据规则1随机生成测试数据,如图2中的随机入参。
例如,某一个接口的参数的测试数据生成规则为“输入数据A应该是一个大于0小于1000的整数”,则测试数据需要从0-1000中随机选取整数。
又如,某一个接口的参数的测试数据生成规则指定其为一个长度在1到112之间的字符串,那么本实施例可以自动生成一个符合规定长度的真实随机字符串。
在一种实施方式中,为了保证测试数据的质量,在按照测试数据生成规则生成测试数据时,生成的测试数据可以包括取值范围中的边界值。例如,针对上例中的测试数据生成规则为“输入数据A应该是一个大于0小于1000的整数”,在选取测试数据时可以考虑1和999这样的边界值,使得测试数据兼顾边界值和常用值。
步骤103,采用所述测试数据执行测试用例,获得执行结果。
在该步骤中,可以将生成的测试数据作为测试用例的输入数据来驱动测试,并获得执行结果。
步骤104,若所述执行结果不符合预设的预期结果,则将所述测试数据作为失败数据,并对所述失败数据进行处理,获得新的测试数据,以将所述新的测试数据作为测试数据并执行所述测试用例。
在该步骤中,针对当前测试数据驱动测试后所获得的执行结果,可以将该执行结果与测试用例中包含的预期结果进行比较,以判断该执行结果与预期结果是否一致。
若当前测试数据的执行结果不符合预期结果时,可以将该测试数据作为失败数据。在一个例子中,由于导致测试失败的失败数据是随机生成的随机数,其执行结果可能与预期结果相差较远,为了提升测试精度,本实施例可以通过对失败数据的处理来获得新的测试数据,并采用该新的测试数据传入被测对象进行测试,通过这样的方法可以确定更为精确的失败数据。
在本实施例的一种可能的实施方式中,上述对失败数据进行处理的步骤,示例性地可以为:确定所述失败数据的取值类型,所述取值类型包括字符串、整数、数组或字典;根据所述取值类型对所述失败数据进行处理。
示例性地,根据不同取值类型的失败数据,可以具有如下不同的处理方法:
若所述失败数据的取值类型为字符串,则对所述失败数据进行缩短处理或加长处理。在一个例子中,对字符串的缩短处理可以为:将字符串随机丢弃一个字符后作为新的测试数据重新执行测试用例,直到测试成功或者该字符串为空,比如,假设测试失败的字符串为“aaaaaaaaaa”,可以将该字符串缩短为“aaaaa”重新测试。在另一个例子中,对字符串的加长处理可以为:某些字符串参数具有最小长度的要求时,可以将字符串的长度*2,直到长度达到1024或者测试成功为止。
若所述失败数据的取值类型为整数,则对所述失败数据进行变小处理或变大处理。在一个例子中,对整数的变小处理可以为:将整数除以2,直到最终的整数为0或者测试成功为止。在另一个例子中,对整数的变大处理可以为:将整数乘以2,直到最终的整数大于2的32次方或者测试成功为止。
若所述失败数据的取值类型为数组类型或字典类型,则去掉所述失败数据中的指定数量的元素。例如,假设失败数据为一个包含N个元素的数组,可以去掉其中一个元素,该数组变成N-1个元素重试,重复该过程,直到最终的数组或字典中的元素数量为0或者测试成功为止。
对失败数据进行处理获得新的测试数据以后,可以将新的测试数据作为测试数据并继续执行步骤103,直到测试用例执行的次数达到预设的最大执行次数。
在另一种实施例中,当前测试数据的执行结果与预期结果一致时,则表示该测试数据通过测试,此时可以继续执行步骤102,生成另一个测试数据以驱动测试。
当所有测试数据均通过测试且测试用例的执行次数(即测试数据的数量)达到预设的最大执行次数时,则表示对该被测对象的测试通过,可以停止测试。
在一种实施例中,测试数据生成规则可以转化为复用策略供所有相同的被测对象使用,例如,针对上述“获取所有数据源-name”的测试用例中的测试数据生成规则,定义了“可用源名字”的测试数据生成规则,假设很多接口都有“可用源”这个输入参数,那这个策略就是可在这些接口中复用。
在本实施例中,测试人员在对被测对象进行测试时,无需输入多个不同的测试数据,只需要配置测试数据生成规则即可,然后本实施例可以自动按照测试数据生成规则生成测试数据以驱动测试,以此生成远超人工设计数量的测试数据,提升了测试覆盖面积以及测试效率。同时还可以使得测试人员更加专注于被测对象本身,并使得测试人员对输入数据有效性缺乏了解的情况下可利用定义大范围规则从而有效的进行探索。
另外,本实施例还可以在确定执行结果不符合预期结果的失败数据后,通过对失败数据的处理获得新的测试数据传入测试用例中进行测试,提升了测试精度,进而有效的提升测试数据的质量。
参考图4,示出了本申请一示例性实施例示出的另一种自动化测试的方法实施例的步骤流程图,本实施例具体可以包括如下步骤:
步骤401,获取针对被测对象配置的测试数据生成规则。
步骤402,按照所述测试数据生成规则生成所述被测对象的测试数据。
步骤403,采用所述测试数据执行测试用例,获得执行结果。
步骤404,若所述执行结果不符合预设的预期结果,则将所述测试数据作为失败数据,并对所述失败数据进行处理,获得新的测试数据,以将所述新的测试数据作为测试数据并执行所述测试用例。
步骤405,重新执行所述测试用例以对修复后的所述被测对象进行测试,在测试时,优先以所述失败数据作为测试数据执行所述测试用例。
其中,所述失败数据用于指导开发人员对所述被测对象进行修复。在一个例子中,当出现失败数据,则可以表示被测对象可能出现缺陷bug,可以将失败数据提供给开发人员,开发人员通过对失败数据的分析来对被测对象进行缺陷修复。针对修复后的被测对象,可以重新执行上述测试用例进行测试。
根据经验,如果在执行测试用例的过程中某个测试数据导致测试不通过,则再次执行测试用例时该测试数据也很可能导致测试不通过。因此,在本实施例中,可以在数据库中记录不符合预期结果的失败数据,当被测对象被修复后再次执行该测试用例时,将保存的失败数据从数据库中取出,重新传入测试用例中进行测试。重复本实施例的过程,直到对被测对象的测试通过。
在本实施例中,针对修复后的被测对象,优先以失败数据作为测试数据执行测试用例,可以快速地定位失败数据,提高测试效率。
与前述方法的实施例相对应,本申请还提供了一种自动化测试装置的实施例。
本申请的装置实施例可以应用在电子设备中。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图5所示,为本申请的装置所在设备的一种硬件结构图,除了图5所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的设备通常根据该装置的实际功能,还可以包括其他硬件,对此不再赘述。
请参考图6,示出了本申请一示例性实施例示出的一种自动化测试装置实施例的结构框图,具体可以包括如下模块:
规则获取模块601,用于获取针对被测对象配置的测试数据生成规则;
测试数据生成模块602,用于按照所述测试数据生成规则生成所述被测对象的测试数据;
测试用例执行模块603,用于采用所述测试数据执行测试用例,获得执行结果;
失败数据处理模块604,用于若所述执行结果不符合预设的预期结果,则将所述测试数据作为失败数据,并对所述失败数据进行处理,获得新的测试数据,以将所述新的测试数据作为测试数据并执行所述测试用例。
在本实施例的一种可能的实施方式中,所述装置还包括:
继续执行模块,用于若所述执行结果符合预设的预期结果,则继续调用所述测试数据生成模块,直到所述测试用例的执行次数达到预设的最大执行次数。
在本实施例的一种可能的实施方式中,所述失败数据处理模块604可以包括如下子模块:
取值类型确定子模块,用于确定所述失败数据的取值类型,所述取值类型包括字符串、整数、数组或字典;
处理子模块,用于根据所述取值类型对所述失败数据进行处理;
所述处理子模块具体用于:
若所述失败数据的取值类型为字符串,则对所述失败数据进行缩短处理或加长处理;
若所述失败数据的取值类型为整数,则对所述失败数据进行变小处理或变大处理;
若所述失败数据的取值类型为数组类型或字典类型,则去掉所述失败数据中的指定数量的元素。
在本实施例的一种可能的实施方式中,所述测试数据生成规则包括测试数据的取值类型及取值范围;
所述测试数据生成模块602具体用于:
按照所述取值类型,随机生成基于所述取值范围的测试数据。
在本实施例的一种可能的实施方式中,生成的所述测试数据包括所述取值范围中的边界值。
在本实施例的一种可能的实施方式中,所述失败数据用于指导开发人员对所述被测对象进行修复,所述装置还包括:
修复对象测试模块,用于重新执行所述测试用例以对修复后的所述被测对象进行测试,在测试时,优先以所述失败数据作为测试数据执行所述测试用例。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述方法实施例的步骤。
本申请实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法实施例的步骤。
本说明书中描述的主题及功能操作的实施例可以在以下中实现:数字电子电路、有形体现的计算机软件或固件、包括本说明书中公开的结构及其结构性等同物的计算机硬件、或者它们中的一个或多个的组合。本说明书中描述的主题的实施例可以实现为一个或多个计算机程序,即编码在有形非暂时性程序载体上以被数据处理装置执行或控制数据处理装置的操作的计算机程序指令中的一个或多个模块。可替代地或附加地,程序指令可以被编码在人工生成的传播信号上,例如机器生成的电、光或电磁信号,该信号被生成以将信息编码并传输到合适的接收机装置以由数据处理装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备、或它们中的一个或多个的组合。
本说明书中描述的处理及逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程计算机执行,以通过根据输入数据进行操作并生成输出来执行相应的功能。所述处理及逻辑流程还可以由专用逻辑电路—例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)来执行,并且装置也可以实现为专用逻辑电路。
适合用于执行计算机程序的计算机包括,例如通用和/或专用微处理器,或任何其他类型的中央处理单元。通常,中央处理单元将从只读存储器和/或随机存取存储器接收指令和数据。计算机的基本组件包括用于实施或执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备,例如磁盘、磁光盘或光盘等,或者计算机将可操作地与此大容量存储设备耦接以从其接收数据或向其传送数据,抑或两种情况兼而有之。然而,计算机不是必须具有这样的设备。此外,计算机可以嵌入在另一设备中,例如车载终端、移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏操纵台、全球定位系统(GPS)接收机、或例如通用串行总线(USB)闪存驱动器的便携式存储设备,仅举几例。
适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、媒介和存储器设备,例如包括半导体存储器设备(例如EPROM、EEPROM和闪存设备)、磁盘(例如内部硬盘或可移动盘)、磁光盘以及CD ROM和DVD-ROM盘。处理器和存储器可由专用逻辑电路补充或并入专用逻辑电路中。
虽然本说明书包含许多具体实施细节,但是这些不应被解释为限制任何发明的范围或所要求保护的范围,而是主要用于描述特定发明的具体实施例的特征。本说明书内在多个实施例中描述的某些特征也可以在单个实施例中被组合实施。另一方面,在单个实施例中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合来实施。此外,虽然特征可以如上所述在某些组合中起作用并且甚至最初如此要求保护,但是来自所要求保护的组合中的一个或多个特征在一些情况下可以从该组合中去除,并且所要求保护的组合可以指向子组合或子组合的变型。
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求这些操作以所示的特定顺序执行或顺次执行、或者要求所有例示的操作被执行,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中均需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中,或者封装成多个软件产品。
由此,主题的特定实施例已被描述。其他实施例在所附权利要求书的范围以内。在某些情况下,权利要求书中记载的动作可以以不同的顺序执行并且仍实现期望的结果。此外,附图中描绘的处理并非必需所示的特定顺序或顺次顺序,以实现期望的结果。在某些实现中,多任务和并行处理可能是有利的。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

Claims (8)

1.一种自动化测试的方法,其特征在于,所述方法包括:
从被测对象的测试用例中获取针对被测对象配置的测试数据生成规则;所述测试用例至少包括所述被测对象、所述针对被测对象的测试数据生成规则以及预期结果;
按照所述测试数据生成规则生成所述被测对象的测试数据;
采用所述测试数据执行测试用例,获得执行结果;
若所述执行结果与所述测试用例中包含的预期结果不一致,则将所述测试数据作为失败数据,并对所述失败数据进行处理,获得新的测试数据,以将所述新的测试数据作为测试数据并执行所述测试用例;
其中,所述对所述失败数据进行处理,包括:
确定所述失败数据的取值类型,所述取值类型包括字符串、整数、数组或字典;
根据所述取值类型对所述失败数据进行处理,包括:
若所述失败数据的取值类型为字符串,则对所述失败数据进行缩短处理直至测试成功或该字符串为空,或者,对所述失败数据进行加长处理直至测试成功或该字符串长度达到上限值;
若所述失败数据的取值类型为整数,则对所述失败数据进行变小处理直至测试成功或该整数为0,或者,对所述失败数据进行变大处理直至测试成功或该整数大于上限值;
若所述失败数据的取值类型为数组类型或字典类型,则去掉所述失败数据中的指定数量的元素直至测试成功或所述数组类型或字典类型中的元素数量为0。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述执行结果与所述测试用例中包含的预期结果一致,则继续执行所述按照所述测试数据生成规则生成所述被测对象的测试数据的步骤,直到所述测试用例的执行次数达到预设的最大执行次数。
3.根据权利要求1或2所述的方法,其特征在于,所述测试数据生成规则包括测试数据的取值类型及取值范围;
所述按照所述测试数据生成规则生成所述被测对象的测试数据,包括:
按照所述取值类型,随机生成基于所述取值范围的测试数据。
4.根据权利要求3所述的方法,其特征在于,生成的所述测试数据包括所述取值范围中的边界值。
5.根据权利要求1所述的方法,其特征在于,所述失败数据用于指导开发人员对所述被测对象进行修复,所述方法还包括:
重新执行所述测试用例以对修复后的所述被测对象进行测试,在测试时,优先以所述失败数据作为测试数据执行所述测试用例。
6.一种自动化测试装置,其特征在于,所述装置包括:
规则获取模块,用于从被测对象的测试用例中获取针对被测对象配置的测试数据生成规则;所述测试用例至少包括所述被测对象、所述针对被测对象的测试数据生成规则以及预期结果;
测试数据生成模块,用于按照所述测试数据生成规则生成所述被测对象的测试数据;
测试用例执行模块,用于采用所述测试数据执行测试用例,获得执行结果;
失败数据处理模块,用于若所述执行结果与所述测试用例中包含的预期结果不一致,则将所述测试数据作为失败数据,并对所述失败数据进行处理,获得新的测试数据,以将所述新的测试数据作为测试数据并执行所述测试用例;
其中,所述对所述失败数据进行处理,包括:
确定所述失败数据的取值类型,所述取值类型包括字符串、整数、数组或字典;
根据所述取值类型对所述失败数据进行处理,包括:
若所述失败数据的取值类型为字符串,则对所述失败数据进行缩短处理直至测试成功或该字符串为空,或者,对所述失败数据进行加长处理直至测试成功或该字符串长度达到上限值;
若所述失败数据的取值类型为整数,则对所述失败数据进行变小处理直至测试成功或该整数为0,或者,对所述失败数据进行变大处理直至测试成功或该整数大于上限值;
若所述失败数据的取值类型为数组类型或字典类型,则去掉所述失败数据中的指定数量的元素直至测试成功或所述数组类型或字典类型中的元素数量为0。
7.根据权利要求6所述的装置,其特征在于,所述测试数据生成规则包括测试数据的取值类型及取值范围;
所述测试数据生成模块具体用于:
按照所述取值类型,随机生成基于所述取值范围的测试数据。
8.根据权利要求6所述的装置,其特征在于,所述失败数据用于指导开发人员对所述被测对象进行修复,所述装置还包括:
修复对象测试模块,用于重新执行所述测试用例以对修复后的所述被测对象进行测试,在测试时,优先以所述失败数据作为测试数据执行所述测试用例。
CN201910436526.7A 2019-05-23 2019-05-23 一种自动化测试的方法及装置 Active CN111984522B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910436526.7A CN111984522B (zh) 2019-05-23 2019-05-23 一种自动化测试的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910436526.7A CN111984522B (zh) 2019-05-23 2019-05-23 一种自动化测试的方法及装置

Publications (2)

Publication Number Publication Date
CN111984522A CN111984522A (zh) 2020-11-24
CN111984522B true CN111984522B (zh) 2024-02-27

Family

ID=73436699

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910436526.7A Active CN111984522B (zh) 2019-05-23 2019-05-23 一种自动化测试的方法及装置

Country Status (1)

Country Link
CN (1) CN111984522B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103810171A (zh) * 2012-11-06 2014-05-21 深圳市金蝶中间件有限公司 生成限定范围的随机测试数据的方法及系统
CN103853652A (zh) * 2012-11-29 2014-06-11 百度在线网络技术(北京)有限公司 一种测试案例生成方法及装置
CN104866426A (zh) * 2015-05-28 2015-08-26 华北计算技术研究所 软件测试综合控制方法及系统
CN106502906A (zh) * 2016-10-27 2017-03-15 广州华多网络科技有限公司 一种测试应用程序的方法和装置
CN107832227A (zh) * 2017-11-24 2018-03-23 平安科技(深圳)有限公司 业务系统的接口参数测试方法、装置、设备和存储介质
CN108763070A (zh) * 2018-05-16 2018-11-06 北京金山云网络技术有限公司 测试数据的生成方法、装置及电子设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9037915B2 (en) * 2011-12-08 2015-05-19 International Business Machines Corporation Analysis of tests of software programs based on classification of failed test cases

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103810171A (zh) * 2012-11-06 2014-05-21 深圳市金蝶中间件有限公司 生成限定范围的随机测试数据的方法及系统
CN103853652A (zh) * 2012-11-29 2014-06-11 百度在线网络技术(北京)有限公司 一种测试案例生成方法及装置
CN104866426A (zh) * 2015-05-28 2015-08-26 华北计算技术研究所 软件测试综合控制方法及系统
CN106502906A (zh) * 2016-10-27 2017-03-15 广州华多网络科技有限公司 一种测试应用程序的方法和装置
CN107832227A (zh) * 2017-11-24 2018-03-23 平安科技(深圳)有限公司 业务系统的接口参数测试方法、装置、设备和存储介质
CN108763070A (zh) * 2018-05-16 2018-11-06 北京金山云网络技术有限公司 测试数据的生成方法、装置及电子设备

Also Published As

Publication number Publication date
CN111984522A (zh) 2020-11-24

Similar Documents

Publication Publication Date Title
CN108073519B (zh) 测试用例生成方法和装置
US10678673B2 (en) Software program fault localization
CN110764993A (zh) 自动化测试方法及终端设备
US20100251220A1 (en) Method and apparatus for dynamically instrumenting a program
US9558852B2 (en) Method and apparatus for defect repair in NAND memory device
CN114546738B (zh) 服务器通用测试方法、系统、终端及存储介质
CN111198809A (zh) 接口自动化测试方法和装置
CN105068935A (zh) 一种软件测试结果的处理方法及装置
CN111290905A (zh) 物联网云平台的测试方法和装置
JP6891703B2 (ja) 自動ソフトウェアプログラム修復
CN111984522B (zh) 一种自动化测试的方法及装置
US20140281719A1 (en) Explaining excluding a test from a test suite
CN109189673B (zh) 一种软件的测试方案、测试用例的确定方法及装置
CN111078526A (zh) 一种测试用例的生成方法、装置及存储介质
CN109388564B (zh) 一种测试方法、装置及电子设备
CN113626333A (zh) 一种接口自动化测试方法及装置
CN110299184B (zh) 闪存读电压确定方法、装置、计算机设备和存储介质
CN105955879A (zh) 一种二维码生成算法的测试方法及装置
CN113641585B (zh) 一种测试数据的生成方法、装置、设备及存储介质
CN108628750B (zh) 一种测试代码处理方法及装置
Baker et al. Quality assurance and error identification for the Community Earth System Model
CN111221737B (zh) 一种覆盖率确定方法、装置及存储介质
CN112256587B (zh) 基于scrm系统的数据测试方法、装置、电子设备和存储介质
CN114637474B (zh) 数据块处理的方法、装置、电子设备
CN110928788B (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