CN107357721B - 测试***的方法及装置 - Google Patents

测试***的方法及装置 Download PDF

Info

Publication number
CN107357721B
CN107357721B CN201710480833.6A CN201710480833A CN107357721B CN 107357721 B CN107357721 B CN 107357721B CN 201710480833 A CN201710480833 A CN 201710480833A CN 107357721 B CN107357721 B CN 107357721B
Authority
CN
China
Prior art keywords
test
online
result data
tested
user operation
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
CN201710480833.6A
Other languages
English (en)
Other versions
CN107357721A (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.)
Beijing Xiaomi Mobile Software Co Ltd
Original Assignee
Beijing Xiaomi Mobile Software 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 Xiaomi Mobile Software Co Ltd filed Critical Beijing Xiaomi Mobile Software Co Ltd
Priority to CN201710480833.6A priority Critical patent/CN107357721B/zh
Publication of CN107357721A publication Critical patent/CN107357721A/zh
Application granted granted Critical
Publication of CN107357721B publication Critical patent/CN107357721B/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)
  • Debugging And Monitoring (AREA)

Abstract

本公开是关于一种测试***的方法及装置,属于***测试技术领域。该方法包括:获取线上***的线上数据库在指定时间点的数据库快照,根据所述数据库快照生成被测***的测试数据库,读取所述线上***的线上数据库在所述指定时间点之后执行的用户操作指令,令所述被测***执行所述用户操作指令并获取所述被测***执行所述用户操作指令后对应的测试结果数据。通过基于数据库快照生成的测试数据库,使得测试环境更加贴近实际的使用环境的同时,能够将被测***和线上***完全隔离,避免了测试***出错造成的线上***错误。

Description

测试***的方法及装置
技术领域
本公开涉及***测试技术领域,特别涉及一种测试***的方法及装置。
背景技术
随着互联网中的线上***的广泛使用,一部分关键领域中的线上***要求在***更新后仍能不出差错地处理用户操作指令。例如,金融、电力或医疗领域中的线上***。因此,如何在更新线上***前测试用来更新的被测***的可靠性,成为测试技术领域中的热点研究问题。
相关技术中,线上***的管理人员使用灰度更新的方法,测试被测***的可靠性。在灰度更新中,管理人员从运行线上***的若干台服务器中,选择少部分的服务器。将选定的服务器中的线上***更新为被测***,之后让运行该被测***的服务器正常工作,并监测该服务器的运行状况。当服务器运行状况正常时,管理人员将被测***发布到线上,以更新运行线上***的服务器。
发明内容
本公开实施例提供了一种测试***的方法及装置,技术方案如下:
根据本公开实施例的第一方面,提供了一种测试***的方法,包括:
获取线上***的线上数据库在指定时间点的数据库快照,所述线上***为已实际运行的与被测***具有相同功能的***;
根据所述数据库快照生成被测***的测试数据库;
读取所述线上***的线上数据库在所述指定时间点之后执行的用户操作指令;
令所述被测***执行所述用户操作指令并获取所述被测***执行所述用户操作指令后对应的测试结果数据。
可选的,所述方法还包括:
获取所述线上***执行所述用户操作指令后对应的线上结果数据;
对比所述测试结果数据和所述线上结果数据,获得比对结果数据。
可选的,所述方法包括:
当所述测试结果数据和所述线上结果数据不同时,获取所述测试结果数据对应的测试执行参数,所述测试参数至少包括用户操作指令和所述测试***执行所述用户操作指令时的各个步骤;
获取所述线上结果数据对应的线上执行参数,所述线上执行参数至少包括用户操作指令和所述线上***执行所述用户操作指令时的各个步骤;
比对所述测试执行参数和所述线上执行参数,标注出所述测试执行参数和所述线上执行参数之间的差异部分。
可选的,所述方法还包括:
获取预设的测试清单,所述测试清单包括所述被测***被测试的功能;
当所述测试清单中的功能分别被测试完成时,输出所述对比结果数据。
可选的,所述方法包括:
设置所述被测***的测试参数,所述测试参数包括被测用户、测试时长或并发度中的至少一项;
其中,所述测试时长用于指示测试所述被测***运行的时间长度,所述并发度用于指示所述被测***同时执行的最大任务数量。
可选的,所述方法包括:
当对比结果数据表示所述测试结果数据和所述线上结果数据相同时,将封装有所述被测***的功能代码的数据包发布到线上环境,以便所述线上环境中的相关服务器使用所述数据包更新所述线上***。
根据本公开实施例的第二方面,提供了一种测试***的装置,包括:
快照获取模块,用于获取线上***的线上数据库在指定时间点的数据库快照,所述线上***为已实际运行的与被测***具有相同功能的***;
生成模块,用于根据所述数据库快照生成被测***的测试数据库;
读取模块,用于读取所述线上***的线上数据库在所述指定时间点之后执行的用户操作指令;
执行模块,用于令所述被测***执行所述用户操作指令并获取所述被测***执行所述用户操作指令后对应的测试结果数据。
可选的,所述装置还包括:
结果获取模块,用于获取所述线上***执行所述用户操作指令后对应的线上结果数据;
对比模块,用于对比所述测试结果数据和所述线上结果数据,获得比对结果数据。
可选的,所述装置包括:
第一获取模块,用于当所述测试结果数据和所述线上结果数据不同时,获取所述测试结果数据对应的测试执行参数,所述测试参数至少包括用户操作指令和所述被测***执行所述用户操作指令时的各个步骤;
第二获取模块,用于获取所述线上结果数据对应的线上执行参数,所述线上执行参数至少包括用户操作指令和所述线上***执行所述用户操作指令时的各个步骤;
标注模块,用于比对所述测试执行参数和所述线上执行参数,标注出所述测试执行参数和所述线上执行参数之间的差异部分。
可选的,所述装置还包括:
清单获取模块,用于获取预设的测试清单,所述测试清单包括所述被测***被测试的功能;
结果输出模块,用于当所述测试清单中的功能分别被测试完成时,输出所述对比结果数据。
可选的,所述装置包括:
设置模块,用于设置所述被测***的测试参数,所述测试参数包括被测用户、测试时长或并发度中的至少一项;
其中,所述测试时长用于指示测试所述被测***运行的时间长度,所述并发度用于指示所述被测***同时执行的最大任务数量。
可选的,所述装置包括:
发布模块,用于当对比结果数据表示所述测试结果数据和所述线上结果数据相同时,将封装有所述被测***的功能代码的数据包发布到线上环境,以便所述线上环境中的相关服务器使用所述数据包更新所述线上***。
根据本公开实施例的第三方面,提供了一种测试***的装置,所述装置包括处理器和用于存储所述处理器的可执行指令的存储器,所述处理器被配置为:
获取线上***的线上数据库在指定时间点的数据库快照,所述线上***为已实际运行的与被测***具有相同功能的***;
根据所述数据库快照生成被测***的测试数据库;
读取所述线上***的线上数据库在所述指定时间点之后执行的用户操作指令;
令所述被测***执行所述用户操作指令并获取所述被测***执行所述用户操作指令后对应的测试结果数据。
根据本公开实施例的第四方面,提供了一种存储设备,其特征在于,所述存储设备中存储有至少一条指令,所述指令是由处理器加载并执行的本公开实施例的第一方面任一所述的测试***的方法。
本公开实施例提供的技术方案可以包括以下有益效果:
通过获取线上***的线上数据库在指定时间点的数据库快照,根据所述数据库快照生成被测***的测试数据库,读取所述线上***的线上数据库在所述指定时间点之后执行的用户操作指令和所述线上***执行所述用户操作指令后对应的线上结果数据,令所述被测***执行所述用户操作指令并获取所述被测***执行所述用户操作指令后对应的测试结果数据,对比所述测试结果数据和所述线上结果数据是否相同,获得对比结果数据。通过基于数据库快照生成的被测***的数据库,使得测试环境更加贴近实际的使用环境的同时,能够将被测***和线上***完全隔离,避免了测试***出错造成的线上***错误。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是根据一示例性实施例示出的一种测试***的方法的流程图;
图2是根据一示例性实施例示出的另一种测试***的方法的流程图;
图3是根据一示例性实施例示出的又一种测试***的方法的流程图;
图4是基于图3所示的实施例提供的一种测试结果展示界面;
图5是基于图3所示的实施例提供的一种设置测试清单的界面;
图6是根据一示例性实施例示出的一种测试***的装置的框图;
图7是根据一示例性实施例示出的另一种测试***的装置的框图;
图8示出了本申请一个示例性实施例提供的服务器的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的方法和装置的例子。
在本公开实施例的应用场景中,线上***是已经运行在服务器中,处理实际生产中使用的数据或者用户的真实数据的***。比如金融服务核心***、电力调动数据***、医疗数据***和政务信息数据***等。由于该线上***在正常运行时,需要和大量的******进行直接或者间接的数据交互。因此,为了保障多个******中的数据正确,需要保证该线上***中的数据拥有较高的正确性。
本公开实施例以线上***是金融服务核心***为例进行说明。在金融服务核心***正常运行时,由于该金融服务核心***记录有用户的账户信息和金额数据,并且该账户信息和金额数据可能在被多个******调用时改变,例如金额数据会在该用户进行外汇买卖业务、基金买卖或者缴纳水电费时进行变动。因此,为了保障多个******所处理的业务的正确性,该金融服务核心***需要确保在运行时,其中保存的数据是准确无误的。
另外,本公开实施例可以应用于服务器中,该服务器可以是一台服务器,也可是若干台服务器组成的服务器集群,还可以是采用虚拟化技术构建的虚拟服务器。
图1是根据一示例性实施例示出的一种测试***的方法的流程图,该测试***的方法应用于服务器中,该测试***的方法可以包括如下几个步骤:
在步骤101中,获取线上***的线上数据库在指定时间点的数据库快照,线上***为已实际运行的与被测***具有相同功能的***。
在步骤102中,根据数据库快照生成被测***的测试数据库。
在步骤103中,读取线上***的线上数据库在指定时间点之后执行的用户操作指令。
在步骤104中,令被测***执行用户操作指令并获取被测***执行用户操作指令后对应的测试结果数据。
综上所述,本公开实施例提供的测试***的方法,通过获取线上***的线上数据库在指定时间点的数据库快照,根据数据库快照生成被测***的测试数据库,读取线上***的线上数据库在指定时间点之后执行的用户操作指令,令被测***执行用户操作指令并获取被测***执行用户操作指令后对应的测试结果数据。通过基于数据库快照生成的被测***的数据库,使得测试环境更加贴近实际的使用环境的同时,能够将被测***和线上***完全隔离,避免了测试***出错造成的线上***错误。
图2是根据一示例性实施例示出的另一种测试***的方法的流程图,该测试***的方法应用于服务器中,该测试***的方法可以包括如下几个步骤:
在步骤201中,获取线上***的线上数据库在指定时间点的数据库快照,线上***为已实际运行的与被测***具有相同功能的***。
在本公开实施例中,用于对被测***进行测试的服务器,将在一个指定的时间点获取线上***的线上数据库的数据库快照。获取该数据库快照的工具可以是预设的数据库引擎。需要说明的是,数据库快照是一种能够被线上***或者被测***直接使用的数据库。
其中,该线上***指处于实际生产或者面向用户提供服务的***,该线上***所处理的数据(包括线上数据库中存储的数据),是实际生产中使用的数据或者用户的真实数据。例如,线上***是金融服务核心***,若该金融服务核心***处理的业务是:用户A的账户存入500元人民币,则线上数据库中用户A对应的人民币余额数据增加500,且该用户A的账户增加500元人民币对应真实世界里向用户A的账户存入500元的行为,是实际使用环境中用户的实际操作对应的数据。
在步骤202中,根据数据库快照生成被测***的测试数据库。
在本公开实施例中,服务器对获取到的数据库快照,在数据传送接口上完成相关配置后,生成一个可以直接被被测***使用,且数据库中的数据与获取线上***时的线上数据库完全相同的数据库。在本实施例中,将该数据库称为测试数据库。
在步骤203中,获取预设的测试清单,测试清单包括被测***被测试的功能。
在本公开实施例中,预设的测试清单中含有被测***中需要被测试的功能。该需要被测试的功能可以由技术人员进行配置,例如,被测***中能够实现的功能有六个,在测试清单中可以选择其中任意数目的功能进行测试。比如,若为了全面测试被测***的所有功能是否出错,测试清单中可以包括被测***能够实现的全部功能;若为了重点测试被测***中指定的重要功能是否出错,测试清单中可以只包含指定的被测试的功能。
在步骤204中,设置被测***的测试参数,测试参数包括被测用户、测试时长或并发度中的至少一项。
在本公开实施例中,为了能够对被测***进行各个维度上的测试,验证被测***的可靠性是否达标。本公开实施例设置了用于测试被测***的测试参数,该测试参数中的测试时长用于指示测试被测***运行的时间长度。例如,测试时长是10个小时,则该被测***将进行时长为10个小时的测试。可选的,设置该测试时长还可以通过同时设置开始时间和停止时间来实现,比如,设置开始时间是2017年6月24日9:59,停止时间是2017年6月25日10:00,则被测***在上述开始时间和停止时间之间进行测试。
另外,测试参数中还可以包括并发度,该并发度用于指示被测***同时执行的最大任务数量。例如,并发度的数目为5000,则被测***在同一时间内能够同时执行的最大任务数量是5000。
在步骤205中,读取线上***的线上数据库在指定时间点之后执行的用户操作指令和线上***执行用户操作指令后对应的线上结果数据。
在本公开实施例中,取数据库快照产生时的指定时间点之后执行的用户操作指令,以及该操作指令对应的线上结果数据,以便与被测***形成对比。
在步骤206中,令被测***执行用户操作指令并获取被测***执行用户操作指令后对应的测试结果数据。
在本公开实施例中,服务器令被测***执行用户操作指令,该用户操作指令是根据用户的操作生成的,且能够被被测***所直接执行的命令。例如,用户操作是向用户A的账户存入500元人民币,则接收该用户操作的用户的手机或者是ATM机(Automatic TellerMachine,自动取款机)能够将该用户操作转换成相对应的用户操作指令,并将该指令发送给服务器。服务器令其中的被测***执行该用户操作指令,并获取执行后生成的测试结果数据。本例中,该测试结果数据可以是用户A的人民币账户余额增加500元后对应的数据。例如,原账户余额是1500元,则测试结果数据是2000元。
需要特别说明的是,此处服务器是指运行该被测***的服务器,该服务器和运行线上***的服务器相互隔离的,且该服务器不向实际的用户操作提供数据。因此,在运行该被测***的服务器出现数据错误时,并不会造成实际用户数据出错。
在步骤207中,对比测试结果数据和线上结果数据是否相同,获得对比结果数据。
为了确定被测***能否实现和线上***相同的功能,需要在被测***和线上***处理相同的用户输入操作时,对比相应的测试结果数据和线上结果数据。
在步骤208中,当测试清单中的功能分别被测试完成时,输出对比结果数据。
在本公开实施例中,测试清单中包括的功能在被正确执行预定次数后,认为被测***能够正确地实现该功能。例如,测试清单中包括功能M1、功能M2和功能M3,当功能M1至功能M3三个功能都至少被正确执行预定次数后,测试被测***的服务器输出对比结果数据。该对比结果数据包括每一个用户操作指令分别被被测***和线上***执行后的数据对比,是一个统计数据。例如,对比结果数据显示进行测试的用户操作指令是5000条,并显示其中线上结果数据和对应的测试结果数据相同的数量4998条,以及不同的数量是2条。
在步骤209中,当对比结果数据表示测试结果数据和线上结果数据相同时,将封装有被测***的功能代码的数据包发布到线上环境。
在本实施例中,当对比结果数据显示被测***获得的测试结果数据和线上结果数据完全相同时,说明被测***能够正确实现线上***的功能。因此,该被测***具备替代线上***的功能,可以发布到线上环境,以便线上***更新为被测***。
其中,封装有被测***的功能代码的数据包,可以是包括被测***全部代码的整体数据包,也可以是只包括区别于线上***的功能代码的更新数据包。其中,线上环境中运行线上***的服务器在获取到上述整体数据包后或更新数据包,将线上***更新为被测***。
可见,本公开实施例中采用数据库快照的技术手段,能够创建一个在指定时间点和线上数据库完全相同的测试数据库。由于该测试数据库和线上***相隔离,且本身就是一个数据库。因此,能够使用真实的用户操作指令进行任意维度上的测试,而可以避免数据出错造成的线上***的数据错误。从而使得测试环境更加贴近实际的使用环境,令测试结果更可靠。
比如,以测试清单中要测试的功能是功能M1、功能M2和功能M3为例,线上***测试功能M1、功能M2和功能M3所得的线上结果数据,分别为结果数据R1、结果数据R2和结果数据R3;而同时测试***测试功能M1、功能M2和功能M3所得的测试结果数据,分别为结果数据R1、结果数据R2和结果数据R3。当被测***中的功能M1、功能M2和功能M3都执行过预定次数次后,停止测试,比较线上结果数据和测试结果数据,此例中,对比结果数据显示线上结果数据和对应的测试结果数据相同。运行被测***的服务器将封装有被测***的功能代码的数据包发布到线上环境,使得运行线上***的服务器使用该数据包将线上***更新为被测***。可选的,为了提高测试的全面性,还可以在测试参数中设置被测用户、测试时长或并发度至少一项测试参数。
综上所述,本公开实施例所提供的测试***的方法,通过获取线上***的线上数据库在指定时间点的数据库快照;根据数据库快照生成被测***的测试数据库;获取预设的测试清单,测试清单包括被测***被测试的功能;设置被测***的测试参数;令被测***执行用户操作指令并获取被测***执行用户操作指令后对应的测试结果数据;对比测试结果数据和线上结果数据是否相同,获得对比结果数据;当测试清单中的功能分别被测试完成时,获取测试结果数据和线上结果数据之间的对比结果数据;当对比结果数据表示测试结果数据和线上结果数据相同时,将封装有被测***的功能代码的数据包发布到线上环境。由于被测***和线上***的运行环境完全隔离,且被测***拥有基于线上数据库的数据库快照生成的测试数据库,因此,本公开实施例提供的方法,使得测试环境更加贴近实际的使用环境的同时,能够将被测***和线上***完全隔离,避免了测试***出错造成的线上***错误。
图3是根据一示例性实施例示出的又一种测试***的方法的流程图,该测试***的方法应用于服务器中,该测试***的方法可以包括如下几个步骤:
在步骤301中,获取线上***的线上数据库在指定时间点的数据库快照,线上***为已实际运行的与被测***具有相同功能的***。
在步骤302中,根据数据库快照生成被测***的测试数据库。
在步骤303中,获取预设的测试清单,测试清单包括被测***被测试的功能。
在步骤304中,设置被测***的测试参数,测试参数包括被测用户、测试时长或并发度中的至少一项。
其中,测试时长用于指示测试被测***运行的时间长度,并发度用于指示被测***同时执行的最大任务数量。
在步骤305中,读取线上***的线上数据库在指定时间点之后执行的用户操作指令和线上***执行用户操作指令后对应的线上结果数据。
在步骤306中,令被测***执行用户操作指令并获取被测***执行用户操作指令后对应的测试结果数据。
在步骤307中,对比测试结果数据和线上结果数据是否相同,获得对比结果数据。
在步骤308中,当测试清单中的功能分别被测试完成时,输出对比结果数据。
上述步骤301至步骤308的执行过程与步骤201至步骤208的执行过程相同,相关的详细执行过程可参见步骤201至步骤208的执行过程,本处不再展开说明。
在步骤309中,当测试结果数据和线上结果数据不同时,获取测试结果数据对应的测试执行参数,测试参数至少包括用户操作指令和测试***执行用户操作指令时的各个步骤。
在本公开实施例中,对于同一个用户操作指令,被测***得出的测试结果数据和线上***得出的线上结果数据不同,说明被测***执行一个指定功能出现了错误。因此,服务器将获取被测***实现该功能时执行的测试执行参数。在实际实现中,该测试参数可以是功能代码段,该功能代码段中包括用户操作指令和相应的测试***执行用户操作指令时的各个步骤。
在步骤310中,获取线上结果数据对应的线上执行参数,线上执行参数至少包括用户操作指令和线上***执行用户操作指令时的各个步骤。
类似于步骤309的实现方式,服务器将同时获取线上结果数据对应的线上执行参数,线上执行参数可以是功能代码段,该代码段中包含用户操作指令和相应的线上***执行用户操作指令时的各个步骤。
下面通过一个例子说明步骤309和步骤310的一种可能的实现方式,在该例中,测试执行参数包括用户操作指令C、子步骤S11、子步骤S12和子步骤S13,测试结果数据是R11;线上执行参数包括用户操作指令C、子步骤S21、子步骤S22和子步骤S23,线上结果数据是R21。服务器在检测到测试结果数据R11和线上结果数据R21不同时,分别获取包含用户操作指令C、子步骤S11、子步骤S12和子步骤S13的测试执行参数,以及包含用户操作指令C、子步骤S21、子步骤S22和子步骤S23的线上执行参数。
在步骤311中,比对测试执行参数和线上执行参数,标注出测试执行参数和线上执行参数之间的差异部分。
在本公开实施例中,服务器将比对测试执行参数和线上执行参数之间差异,并将出现差异的部分标注出来,以便设计人员查找被测***中出现错误的代码段。标注的方法可以是使用不同的颜色分别标注测试执行参数和线上执行参数之间的差异部分,也可以是使用其他标注方法使得差异部分能够突出显示。其中,差异部分可以指实现相同功能且得到的数据不同的子步骤。
例如,请参见图4,图4是基于图3所示的实施例提供的一种测试结果展示界面,被测***执行用户操作指令C是通过子步骤S11、子步骤S12和子步骤S13三个子步骤来实现;线上***执行用户操作指令C是通过子步骤S21、子步骤S22和子步骤S23三个子步骤来实现。当子步骤S11得到的结果与子步骤S21得到的结果相同,子步骤S12得到的结果与子步骤S22得到的结果相同,子步骤S13得到的结果与子步骤S23得到的结果不同时,服务器将标注出子步骤S13和子步骤S23,为设计人员省去了人工对比子步骤S11和子步骤S21,以及子步骤S12和子步骤S22的时间,并提高了被测***突出显示出错部分的准确度。
步骤312,获取修改后的被测***,删除上一次测试的测试清单中已通过测试的功能,对被测***进行测试。
在本实施例中,为了提高测试被测***的效率,在测试修改后的被测***时,服务器将删除上一次测试中已经通过测试的功能,以便本次测试着重测试出现过错误的功能。
例如,请参见图5,图5是基于图3所示的实施例提供的一种设置测试清单的界面,服务器首先获取上一次测试的测试清单L1,该测试清单L1中包括功能M1、功能M2、功能M3和功能M4。其中,功能M1、功能M3和功能M4已经通过了测试,则本次测试的测试清单L2中将在测试清单L1的基础上删除已通过测试的功能M1、功能M3和功能M4,得到测试清单L2。该测试清单L2中包括功能M2。
步骤313,当对比结果数据表示测试结果数据和线上结果数据相同时,将封装有被测***的功能代码的数据包发布到线上环境。
步骤313的实现过程与步骤209的实现过程类似,详情请参见步骤209的实现过程,本处不再赘述。
比如,以测试清单中要测试的功能是功能M1、功能M2、功能M3和功能M4为例。被测***在测试清单中的四个功能分别被测试了指定次数后,通过服务器对比测试结果数据和线上结果数据是否相同。此时,服务器得到的对比结果数据显示功能M1、功能M3和功能M4在实现时,测试结果数据和线上结果数据相同。于是,服务器分别获取被测***和线上***实现功能M2时的测试执行参数和线上执行参数。其中,测试执行参数包括用户操作指令C、子步骤S11、子步骤S12和子步骤S13,测试结果数据是R11;线上执行参数包括用户操作指令C、子步骤S21、子步骤S22和子步骤S23,线上结果数据是R21。服务器在检测后确定差异部分是子步骤S13和子步骤S23,于是服务器标注出该差异部分,并以邮件或者测试文档的形式,展示测试执行参数和线上执行参数之间的差异部分。在设计人员修改被测***后,服务器将获取上一次测试的测试清单并删除其中已经通过测试的功能,使用该精简后的测试清单中的功能对修改后的被测***进行测试,以提高测试被测***的效率。
综上所述,本公开实施例提供的测试***的方法,通过当测试结果数据和线上结果数据不同时,获取测试结果数据对应的测试执行参数,测试参数至少包括用户操作指令和测试***执行用户操作指令时的各个步骤;获取线上结果数据对应的线上执行参数,线上执行参数至少包括用户操作指令和线上***执行用户操作指令时的各个步骤;比对测试执行参数和线上执行参数,标注出测试执行参数和线上执行参数之间的差异部分;获取修改后的被测***,删除上一次的测试清单中已通过测试的功能,对被测***进行测试;当对比结果数据表示测试结果数据和线上结果数据相同时,将封装有被测***的功能代码的数据包发布到线上环境。使得被测***在执行一个指定功能出现错误之后,能够自动准确地显示被测***出现错误的代码段,并在之后的测试中,自动忽略已经通过测试的功能,针对未通过测试的功能进行测试,提高了测试被测***的效率。
下述为本公开装置实施例,可以用于执行本公开方法实施例。对于本公开装置实施例中未披露的细节,请参照本公开方法实施例。
图6是根据一示例性实施例示出的一种测试***的装置的框图,该测试***的装置应用在服务器中,其测试***的功能可以由纯硬件实现,也可以由硬件执行相应的软件实现,从而实现图1、图2或图3中所列出的步骤。该装置可以包括:快照获取模块601、生成模块602、读取模块603和执行模块604。
快照获取模块601,用于获取线上***的线上数据库在指定时间点的数据库快照,线上***为已实际运行的与被测***具有相同功能的***。
生成模块602,用于根据数据库快照生成被测***的测试数据库。
读取模块603,用于读取线上***的线上数据库在指定时间点之后执行的用户操作指令。
执行模块604,用于令被测***执行用户操作指令并获取被测***执行用户操作指令后对应的测试结果数据。
综上所述,本公开实施例提供的测试程序的装置,通过获取线上***的线上数据库在指定时间点的数据库快照,根据数据库快照生成被测***的测试数据库,读取线上***的线上数据库在指定时间点之后执行的用户操作指令,令被测***执行用户操作指令并获取被测***执行用户操作指令后对应的测试结果数据,通过基于数据库快照生成的被测***的数据库,使得测试环境更加贴近实际的使用环境的同时,能够将被测***和线上***完全隔离,避免了测试***出错造成的线上***错误。
图7是根据一示例性实施例示出的另一种测试***的装置的框图,该测试***的装置应用在服务器中,其测试***的功能可以由纯硬件实现,也可以由硬件执行相应的软件实现,从而实现图1、图2或图3中所列出的步骤。该装置可以包括:快照获取模块701、生成模块702、读取模块703和执行模块704。
快照获取模块701,用于获取线上***的线上数据库在指定时间点的数据库快照,线上***为已实际运行的与被测***具有相同功能的***。
生成模块702,用于根据数据库快照生成被测***的测试数据库。
读取模块703,用于读取线上***的线上数据库在指定时间点之后执行的用户操作指令。
执行模块704,用于令被测***执行用户操作指令并获取被测***执行用户操作指令后对应的测试结果数据。
可选的,在本公开的一种可能的实现方式中,该测试***的装置还包括:结果获取模块705和对比模块706。
结果获取模块705,用于获取线上***执行用户操作指令后对应的线上结果数据。
对比模块706,用于对比测试结果数据和线上结果数据,获得比对结果数据。
可选的,在本公开的另一种可能的实现方式中,该测试***的装置还包括:第一获取模块707、第二获取模块708和标注模块709。
第一获取模块707,用于当测试结果数据和线上结果数据不同时,获取测试结果数据对应的测试执行参数,测试参数至少包括用户操作指令和被测***执行用户操作指令时的各个步骤。
第二获取模块708,用于获取线上结果数据对应的线上执行参数,线上执行参数至少包括用户操作指令和线上***执行用户操作指令时的各个步骤。
标注模块709,用于比对测试执行参数和线上执行参数,标注出测试执行参数和线上执行参数之间的差异部分。
可选的,在本公开的又一种可能的实现方式中,该测试***的装置还包括:清单获取模块710和结果获取模块711。
清单获取模块710,用于获取预设的测试清单,测试清单包括被测***被测试的功能;
结果输出模块711,用于当测试清单中的功能分别被测试完成时,输出对比结果数据。
可选的,在本公开的另一种可能的实现方式中,该测试***的装置还包括:设置模块712。
设置模块712,用于设置被测***的测试参数,测试参数包括被测用户、测试时长或并发度中的至少一项;其中,测试时长用于指示测试被测***运行的时间长度,并发度用于指示被测***同时执行的最大任务数量。
可选的,在本公开的又一种可能的实现方式中,该测试***的装置还包括:发布模块713。
发布模块713,用于当对比结果数据表示测试结果数据和线上结果数据相同时,将封装有被测***的功能代码的数据包发布到线上环境,以便线上环境中的相关服务器使用数据包更新线上***。
综上所述,本公开实施例提供的一种测试***的装置,通过获取线上***的线上数据库在指定时间点的数据库快照;根据数据库快照生成被测***的测试数据库;获取预设的测试清单,测试清单包括被测***被测试的功能;设置被测***的测试参数;令被测***执行用户操作指令并获取被测***执行用户操作指令后对应的测试结果数据;对比测试结果数据和线上结果数据是否相同,获得对比结果数据;当测试清单中的功能分别被测试完成时,获取测试结果数据和线上结果数据之间的对比结果数据;当对比结果数据表示测试结果数据和线上结果数据相同时,将封装有被测***的功能代码的数据包发布到线上环境。由于被测***和线上***的运行环境完全隔离,且被测***拥有基于向上数据库的数据库快照生成的测试数据库,因此,本公开实施例提供的方法,使得测试环境更加贴近实际的使用环境的同时,能够将被测***和线上***完全隔离,避免了测试***出错造成的线上***错误。
另外,本公开实施例提供的测试***的装置,还通过当测试结果数据和线上结果数据不同时,获取测试结果数据对应的测试执行参数,测试参数至少包括用户操作指令和测试***执行用户操作指令时的各个步骤;获取线上结果数据对应的线上执行参数,线上执行参数至少包括用户操作指令和线上***执行用户操作指令时的各个步骤;比对测试执行参数和线上执行参数,标注出测试执行参数和线上执行参数之间的差异部分;获取修改后的被测***,删除上一次的测试清单中已通过测试的功能,对被测***进行测试;当对比结果数据表示测试结果数据和线上结果数据相同时,将封装有被测***的功能代码的数据包发布到线上环境。使得被测***在执行一个指定功能出现错误之后,能够自动准确地显示被测***出现错误的代码段,并在之后的测试中,自动忽略已经通过测试的功能,针对未通过测试的功能进行测试,提高了测试被测***的效率。
本公开一示例性实施例还提供里一种测试***的装置,能够实现本公开提供的测试***的方法。该装置包括:处理器,以及用于存储处理器的可执行指令的存储器。其中,处理器被配置为:
获取线上***的线上数据库在指定时间点的数据库快照,所述线上***为已实际运行的与被测***具有相同功能的***;
根据所述数据库快照生成被测***的测试数据库;
读取所述线上***的线上数据库在所述指定时间点之后执行的用户操作指令;
令所述被测***执行所述用户操作指令并获取所述被测***执行所述用户操作指令后对应的测试结果数据。
可选的,所述方法还包括:
获取所述线上***执行所述用户操作指令后对应的线上结果数据;
对比所述测试结果数据和所述线上结果数据,获得比对结果数据。
可选的,所述方法包括:
当所述测试结果数据和所述线上结果数据不同时,获取所述测试结果数据对应的测试执行参数,所述测试参数至少包括用户操作指令和所述测试***执行所述用户操作指令时的各个步骤;
获取所述线上结果数据对应的线上执行参数,所述线上执行参数至少包括用户操作指令和所述线上***执行所述用户操作指令时的各个步骤;
比对所述测试执行参数和所述线上执行参数,标注出所述测试执行参数和所述线上执行参数之间的差异部分。
可选的,所述方法还包括:
获取预设的测试清单,所述测试清单包括所述被测***被测试的功能;
当所述测试清单中的功能分别被测试完成时,输出所述对比结果数据。
可选的,所述方法包括:
设置所述被测***的测试参数,所述测试参数包括被测用户、测试时长或并发度中的至少一项;
其中,所述测试时长用于指示测试所述被测***运行的时间长度,所述并发度用于指示所述被测***同时执行的最大任务数量。
可选的,所述方法包括:
当对比结果数据表示所述测试结果数据和所述线上结果数据相同时,将封装有所述被测***的功能代码的数据包发布到线上环境,以便所述线上环境中的相关服务器使用所述数据包更新所述线上***。
需要说明的一点是,上述实施例提供的装置在实现其功能时,仅以上述各个功能模块的划分进行举例说明,实际应用中,可以根据实际需要而将上述功能分配由不同的功能模块完成,即将设备的内容结构划分成不同的功能模块,以完成以上描述的测试***的方法的全部或者部分功能。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图8示出了本申请一个示例性实施例提供的服务器的结构示意图,该服务器包括:处理器810、存储器820和网络接口830。
处理器810包括一个或一个以上的处理核心。
存储器820用于存储程序指令和/或数据,处理器810被配置为执行存储器820中的程序指令,从而实现各种功能应用以及数据处理。可选地,存储器820中存储的程序指令被执行时用于实现本申请各个实施例提供的测试***方法中由服务器执行的步骤。存储器820可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
网络接口830用于实现与终端之间、或与其它服务器之间的通信,网络接口830可以是有线通信组件,比如,光纤接口、RJ45网卡及接口等。网络接口830也可以是无线通信组件。
可选地,存储器820中存储的程序指令包括:应用层822和内核层824。应用层822包括至少一个可运行程序,示意性的,因此822包括:被测***822a和测试数据库822b。
上述结构仅为对服务器的示意性说明,本领域技术人员可以知晓,服务器还可以包括比上述示意更多或更少的组件,比如,服务器还可以包括输入/输出(I/O)组件或电源等组件。
本领域普通技术人员可以理解的是,实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序指令配合相关的硬件完成,所述程序指令可以存储于存储设备中,该存储设备含有一种计算机可读存储介质,上述提到的存储介质可以是只读存储器,固态硬盘(Solid State Drives,SSD),闪存(Flash),磁盘或光盘等。当该计算机可读存储介质中的指令由服务器的处理器810执行时,使得服务器能够执行上述测试***的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

Claims (14)

1.一种测试***的方法,其特征在于,所述方法包括:
获取线上***的线上数据库在指定时间点的数据库快照,所述线上***为已实际运行的与被测***具有相同功能的***;
根据所述数据库快照生成被测***的测试数据库;
读取所述线上***的线上数据库在所述指定时间点之后执行的用户操作指令;
令所述被测***执行所述用户操作指令并获取所述被测***执行所述用户操作指令后对应的测试结果数据;
获取测试结果数据对应的测试执行参数,所述测试执行参数至少包括用户操作指令和所述被测***执行所述用户操作指令时的各个步骤;
获取所述线上***执行所述用户操作指令后对应的线上结果数据所对应的线上执行参数,所述线上执行参数至少包括用户操作指令和所述线上***执行所述用户操作指令时的各个步骤;
比对所述测试执行参数和所述线上执行参数,标注出所述测试执行参数和所述线上执行参数之间的差异部分,所述差异部分为实现相同功能且得到数据不同的子步骤。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
对比所述测试结果数据和所述线上结果数据,获得对比结果数据。
3.根据权利要求2所述的方法,其特征在于,所述方法包括:
当所述测试结果数据和所述线上结果数据不同时,获取所述测试结果数据对应的测试执行参数。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
获取预设的测试清单,所述测试清单包括所述被测***被测试的功能;
当所述测试清单中的功能分别被测试完成时,输出所述对比结果数据。
5.根据权利要求1所述的方法,其特征在于,所述方法包括:
设置所述被测***的测试参数,所述测试参数包括被测用户、测试时长或并发度中的至少一项;
其中,所述测试时长用于指示测试所述被测***运行的时间长度,所述并发度用于指示所述被测***同时执行的最大任务数量。
6.根据权利要求2所述的方法,其特征在于,所述方法包括:
当所述对比结果数据表示所述测试结果数据和所述线上结果数据相同时,将封装有所述被测***的功能代码的数据包发布到线上环境,以便所述线上环境中的相关服务器使用所述数据包更新所述线上***。
7.一种测试***的装置,其特征在于,所述装置包括:
快照获取模块,用于获取线上***的线上数据库在指定时间点的数据库快照,所述线上***为已实际运行的与被测***具有相同功能的***;
生成模块,用于根据所述数据库快照生成被测***的测试数据库;
读取模块,用于读取所述线上***的线上数据库在所述指定时间点之后执行的用户操作指令;
执行模块,用于令所述被测***执行所述用户操作指令并获取所述被测***执行所述用户操作指令后对应的测试结果数据;
结果获取模块,用于获取所述线上***执行所述用户操作指令后对应的线上结果数据;
第一获取模块,用于获取所述测试结果数据对应的测试执行参数,所述测试执行参数至少包括用户操作指令和所述被测***执行所述用户操作指令时的各个步骤;
第二获取模块,用于获取所述线上结果数据对应的线上执行参数,所述线上执行参数至少包括用户操作指令和所述线上***执行所述用户操作指令时的各个步骤;
标注模块,用于比对所述测试执行参数和所述线上执行参数,标注出所述测试执行参数和所述线上执行参数之间的差异部分;所述差异部分为实现相同功能且得到数据不同的子步骤。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
对比模块,用于对比所述测试结果数据和所述线上结果数据,获得对比结果数据。
9.根据权利要求8所述的装置,其特征在于,所述装置包括:
第一获取模块,用于当所述测试结果数据和所述线上结果数据不同时,获取所述测试结果数据对应的测试执行参数。
10.根据权利要求8所述的装置,其特征在于,所述装置还包括:
清单获取模块,用于获取预设的测试清单,所述测试清单包括所述被测***被测试的功能;
结果输出模块,用于当所述测试清单中的功能分别被测试完成时,输出所述对比结果数据。
11.根据权利要求7所述的装置,其特征在于,所述装置包括:
设置模块,用于设置所述被测***的测试参数,所述测试参数包括被测用户、测试时长或并发度中的至少一项;
其中,所述测试时长用于指示测试所述被测***运行的时间长度,所述并发度用于指示所述被测***同时执行的最大任务数量。
12.根据权利要求8所述的装置,其特征在于,所述装置包括:
发布模块,用于当所述对比结果数据表示所述测试结果数据和所述线上结果数据相同时,将封装有所述被测***的功能代码的数据包发布到线上环境,以便所述线上环境中的相关服务器使用所述数据包更新所述线上***。
13.一种测试***的装置,其特征在于,所述装置包括:
处理器;
用于存储所述处理器的可执行指令的存储器;
其中,所述处理器被配置为:
获取线上***的线上数据库在指定时间点的数据库快照,所述线上***为已实际运行的与被测***具有相同功能的***;
根据所述数据库快照生成被测***的测试数据库;
读取所述线上***的线上数据库在所述指定时间点之后执行的用户操作指令;
令所述被测***执行所述用户操作指令并获取所述被测***执行所述用户操作指令后对应的测试结果数据;
获取测试结果数据对应的测试执行参数,所述测试执行参数至少包括用户操作指令和所述被测***执行所述用户操作指令时的各个步骤;
获取所述线上***执行所述用户操作指令后对应的线上结果数据所对应的线上执行参数,所述线上执行参数至少包括用户操作指令和所述线上***执行所述用户操作指令时的各个步骤;
比对所述测试执行参数和所述线上执行参数,标注出所述测试执行参数和所述线上执行参数之间的差异部分,所述差异部分为实现相同功能且得到数据不同的子步骤。
14.一种存储设备,其特征在于,所述存储设备中存储有至少一条指令,所述指令是由处理器加载并执行的权利要求1至6任一所述的测试***的方法。
CN201710480833.6A 2017-06-22 2017-06-22 测试***的方法及装置 Active CN107357721B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710480833.6A CN107357721B (zh) 2017-06-22 2017-06-22 测试***的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710480833.6A CN107357721B (zh) 2017-06-22 2017-06-22 测试***的方法及装置

Publications (2)

Publication Number Publication Date
CN107357721A CN107357721A (zh) 2017-11-17
CN107357721B true CN107357721B (zh) 2020-10-13

Family

ID=60272991

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710480833.6A Active CN107357721B (zh) 2017-06-22 2017-06-22 测试***的方法及装置

Country Status (1)

Country Link
CN (1) CN107357721B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107590129B (zh) * 2017-09-25 2021-07-09 清远墨墨教育科技有限公司 一种可随时查看结果的词汇量测试方法及其测试***、移动测试终端
CN109634868B (zh) * 2018-12-19 2024-05-03 平安科技(深圳)有限公司 金融数据分析***自动化测试结果的处理方法及装置
CN110083542B (zh) * 2019-05-06 2023-11-07 百度在线网络技术(北京)有限公司 一种推荐***中模型测试方法、装置及电子设备
CN113094121B (zh) * 2021-04-30 2023-03-10 腾讯科技(成都)有限公司 一种数据处理方法、设备以及计算机可读存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101727383A (zh) * 2008-10-16 2010-06-09 上海市医疗保险信息中心 数据库的仿真测试方法和***
CN103810092A (zh) * 2012-11-13 2014-05-21 深圳市腾讯计算机***有限公司 应用***测试方法及装置
CN104182344A (zh) * 2014-08-25 2014-12-03 腾讯科技(深圳)有限公司 一种覆盖安装测试方法及装置
CN104410542A (zh) * 2014-11-18 2015-03-11 小米科技有限责任公司 模拟测试方法及装置
CN106326108A (zh) * 2016-08-09 2017-01-11 北京金山安全软件有限公司 一种新应用的测试方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8161077B2 (en) * 2009-10-21 2012-04-17 Delphix Corp. Datacenter workflow automation scenarios using virtual databases

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101727383A (zh) * 2008-10-16 2010-06-09 上海市医疗保险信息中心 数据库的仿真测试方法和***
CN103810092A (zh) * 2012-11-13 2014-05-21 深圳市腾讯计算机***有限公司 应用***测试方法及装置
CN104182344A (zh) * 2014-08-25 2014-12-03 腾讯科技(深圳)有限公司 一种覆盖安装测试方法及装置
CN104410542A (zh) * 2014-11-18 2015-03-11 小米科技有限责任公司 模拟测试方法及装置
CN106326108A (zh) * 2016-08-09 2017-01-11 北京金山安全软件有限公司 一种新应用的测试方法及装置

Also Published As

Publication number Publication date
CN107357721A (zh) 2017-11-17

Similar Documents

Publication Publication Date Title
CN107357721B (zh) 测试***的方法及装置
WO2018000607A1 (zh) 一种识别测试用例失败原因的方法及电子设备
CN108628748B (zh) 自动化测试管理方法和自动化测试管理***
CN111158741B (zh) 监控业务模块对第三方类库依赖关系变化的方法及装置
CN110058998B (zh) 软件测试方法及装置
CN108111364B (zh) 一种业务***的测试方法及装置
CN112433944A (zh) 业务测试方法、装置、计算机设备和存储介质
CN109977012B (zh) ***的联调测试方法、装置、设备及计算机可读存储介质
CN112631911A (zh) 自动化测试方法、装置、计算机设备及存储介质
CN109408361A (zh) Monkey测试复原方法、装置、电子设备及计算机可读存储介质
CN112631924A (zh) 自动化测试方法、装置、计算机设备及存储介质
CN112181854A (zh) 一种生成流程自动化脚本的方法、装置、设备及存储介质
CN112650676A (zh) 软件测试方法、装置、设备及存储介质
CN112711640A (zh) 一种业务受理流程配置的方法及装置
CN111124872A (zh) 基于差异代码分析的分支检测方法、装置及存储介质
CN110688305B (zh) 测试环境同步方法、装置、介质、电子设备
CN113220597B (zh) 测试方法、测试装置、电子设备及存储介质
CN111159040A (zh) 一种测试数据生成方法、装置、设备及存储介质
CN110888800A (zh) 服务交互功能的测试方法、装置、存储介质及测试***
CN113778878A (zh) 接口测试方法、装置、电子设备及存储介质
CN112561690A (zh) ***分期业务接口的测试方法、***、设备及存储介质
CN110362294A (zh) 开发任务执行方法、装置、电子设备及存储介质
CN114637672A (zh) 自动化数据测试方法、装置、计算机设备及存储介质
CN110221952B (zh) 业务数据的处理方法及装置、业务数据处理***
CN112256554B (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