CN103699479B - 一种沙盒测试环境构建系统及构建方法 - Google Patents
一种沙盒测试环境构建系统及构建方法 Download PDFInfo
- Publication number
- CN103699479B CN103699479B CN201210374428.3A CN201210374428A CN103699479B CN 103699479 B CN103699479 B CN 103699479B CN 201210374428 A CN201210374428 A CN 201210374428A CN 103699479 B CN103699479 B CN 103699479B
- Authority
- CN
- China
- Prior art keywords
- test
- sandbox
- data
- measured
- environment
- 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
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种沙盒测试环境构建系统及构建方法。一种沙盒测试环境构建系统包括:测试对象部署模块,用于根据预设的配置模板,在目标机器上生成沙盒环境,并将待测程序部署到该沙盒环境中;测试数据构建模块,用于根据所述待测程序访问的原始数据,构建至少两个内容相同的测试用数据集;数据访问代理模块,用于对沙盒环境中待测程序与测试用数据集的访问连接关系进行设置。应用上述方案将单机系统测试提升到多设备协作系统测试,并且仅需投入少量人力进行初始化设置,其余大部分构建及运维工作都可以由系统自动快速完成,不仅有助于够提高测试效率,而且明显降低了人力成本,也减少了人为因素所导致的错误隐患。
Description
技术领域
本发明涉及测试技术领域,特别是涉及一种沙盒测试环境构建系统及构建方法。
背景技术
沙盒,也称为沙箱或沙盘,在计算机领域指一种虚拟技术,其基本原理是:根据计算机程序的真实运行环境,创建一个虚拟的运行环境,当某个程序试图发挥作用时,可以先让它在沙盒中运行,程序在沙盒中造成的所有改动不会对真实的运行环境造成任何影响。
沙盒技术经常应于计算机安全领域,例如利用沙盒对计算机病毒特征进行研究、或者为一些来源不可信、具备破坏力或无法判定程序意图的程序提供试验运行环境等等。此外,沙盒还可以在应用程序的开发或升级阶段,起到构建测试环境的作用,例如在应用程序正式上线之前,利用沙盒模拟线上环境,对应用进行小流量上线测试,以便快速发现问题。
根据现有技术,对于简单应用环境,例如单机环境,可以在一定程度上实现沙盒测试环境的自动化构建。然而对于复杂系统的沙盒环境构建,考虑到系统本身的高耦合性等因素,需要大量的人工介入。以线上应用环境为例,为真实模拟设备的网络环境、数据读写等实际情况,在沙盒测试环境的构建阶段,就需要多方面验证与协调。如果待测程序版本频繁更新,则需要进一步的人力投入,这种构建测试环境的方式不仅效率低下,而且在现实中不可避免地会引入一些人为因素所导致的错误。
发明内容
为解决上述技术问题,本发明实施例提供一种沙盒测试环境构建系统及构建方法,以实现复杂测试环境的自动构建及维护,技术方案如下:
本发明实施例提供一种沙盒测试环境构建系统,该系统包括:测试对象部署模块、测试数据构建模块和数据访问代理模块;
所述测试对象部署模块,用于根据预设的配置模板,在目标机器上生成沙盒环境,并将待测程序部署到该沙盒环境中;
所述测试数据构建模块,用于根据所述待测程序访问的原始数据,构建至少两个内容相同的测试用数据集;
所述数据访问代理模块,用于对沙盒环境中待测程序与测试用数据集的访问连接关系进行设置。
根据本发明的一种具体实施方式,所述测试对象部署模块,具体用于:
在监测到待测程序源码更新之后,根据预设的配置模板,在目标机器上生成沙盒环境,并将更新后的待测程序部署到该沙盒环境中。
根据本发明的一种具体实施方式,所述配置模板中,包括静态配置项目和动态配置项目,所述测试对象部署模块,具体用于:
根据目标机器的属性生成所述动态配置项目,结合所述静态配置项目生成沙盒环境。
根据本发明的一种具体实施方式,所述测试数据构建模块,具体用于:
根据所述待测程序访问的原始数据,提取测试所需的必要数据集。
根据本发明的一种具体实施方式,所述数据访问代理模块,具体用于:
在测试用户使用所述沙盒环境完成一次测试任务后,将待测程序的访问连接切换至备用数据集。
根据本发明的一种具体实施方式,所述测试数据构建模块,具体用于:
在测试用户使用所述沙盒环境完成一次测试任务后,对切换下来的数据集进行重构,将重构后的数据集设置为备用数据集。
根据本发明的一种具体实施方式,所述测试数据构建模块,具体用于:
将多个测试用数据集配置在不同的物理设备上,
或者
将多个测试用数据集复用在相同的物理设备上。
根据本发明的一种具体实施方式,所述测试数据构建模块,具体用于:
将同一测试用数据集分别配置在多个物理设备上,以分担待测程序对该数据集的访问负载。
本发明实施例还提供一种沙盒测试环境构建方法,该方法包括:
预先根据待测程序访问的原始数据,构建至少两个内容相同的测试用数据集;
根据预设的配置模板,在目标机器上生成沙盒环境,并将待测程序部署到该沙盒环境中;
将至少一个测试用数据集设置为沙盒环境中待测程序的数据访问对象。
根据本发明的一种具体实施方式,所述根据预设的配置模板,在目标机器上生成沙盒环境,并将待测程序部署到该沙盒环境中,包括:
在监测到待测程序源码更新之后,根据预设的配置模板,在目标机器上生成沙盒环境,并将更新后的待测程序部署到该沙盒环境中。
根据本发明的一种具体实施方式,所述配置模板中,包括静态配置项目和动态配置项目,所述根据预设的配置模板,在目标机器上生成沙盒环境,包括:
根据目标机器的属性生成所述动态配置项目,结合所述静态配置项目生成沙盒环境。
根据本发明的一种具体实施方式,所述根据所述待测程序访问的原始数据,构建测试用数据集:
根据所述待测程序访问的原始数据,提取测试所需的必要数据集。
根据本发明的一种具体实施方式,该方法还包括:
在测试用户使用所述沙盒环境完成一次测试任务后,将待测程序的访问连接切换至备用数据集。
根据本发明的一种具体实施方式,该方法还包括:
对切换下来的数据集进行重构,将重构后的数据集设置为备用数据集。
根据本发明的一种具体实施方式,所述构建至少两个内容相同的测试用数据集,包括:
将多个测试用数据集配置在不同的物理设备上,
或者
将多个测试用数据集复用在相同的物理设备上。
根据本发明的一种具体实施方式,所述构建至少两个内容相同的测试用数据集,包括:
将同一测试用数据集分别配置在多个物理设备上,以分担待测程序对该数据集的访问负载。
本发明技术方案,将沙盒测试环境的构建分为两个方面:待测程序的部署和线上环境的模拟。其中,前者是利用预设的模板来生成沙盒环境,从而实现对待测程序的快速、自动部署;后者则是利用生成多组测试用数据集并且切换使用的方式,来实现测试数据环境的快速使用和恢复。与现有技术相比,本发明所提供的测试环境构建方案,将单机系统测试提升到多设备协作系统测试,并且仅需投入少量人力进行初始化设置,其余大部分构建及运维工作都可以由系统自动快速完成,不仅有助于够提高测试效率,而且明显降低了人力成本,也减少了人为因素所导致的错误隐患。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本发明实施例沙盒测试环境构建系统的结构示意图;
图2为本发明实施例目标机器网络环境的示意图;
图3为本发明实施例沙盒测试环境构建方法的第一种流程图;
图4为本发明实施例沙盒测试环境构建方法的第二种流程图。
具体实施方式
在现有技术中,沙盒测试环境的构建是单一且隔离的,大多都是耦合性低的子系统单独实现在本机的自动化构建,应用这种方案,需要需要将产品库中待上线程序源代码拷贝到单系统的沙盒环境,然后在沙盒中启动各种协议、接口等相关服务,实现沙盒环境的运转。在整个测试环境的运转过程中,具体还存在以下问题:
首先要考虑程序上线后对线上环境的潜在风险,一种解决方案是开发人员需要记得提醒测试人员修改配置以及添加白名单、黑名单等访问限制。这种方式本身需要人工接入,效率低下,而且一旦开发人员忘记通知测试人员进行相应的修改,或者测试人员配置错误,则可能造成未知的问题。另一种解决方案是对线上环境进行备份,令待测程序对备份的数据的进行操作,然而在测试过程中,难以避免地会产生各种形式的脏数据(例如对于实际业务毫无意义的数据、数据取值范围错误、或者数据格式错误等等),甚至造成测试数据丢失等问题,这些都需要人工进行清理或者恢复。
另外需要考虑的是沙盒使用问题,由于当前部署维护方案的不连贯、需要测试人员与开发人员、测试人员与测试人员之间的沟通耗时,沙盒的部署与更新占用较长的时间,在这段时间内,沙盒只能进行更新及更新的完整性验证,无法实际使用。如果开发更新频率较高,难以保证测试的效率。
基于上述问题,本发明提供一种可以自动化构建复杂测试环境的方案,该方案将沙盒测试环境的构建分为两个方面:待测程序的自动部署和线上环境的模拟。其中后者又可以进一步细分为两个方面:模拟线上环境的自动生成以及如何快速使用模拟线上环境以适应测试需求。
为了使本领域技术人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本发明保护的范围。
下面首先对本发明所提供的一种沙盒测试环境构建系统进行说明,参见图1所示,该系统由测试对象部署模块100、测试数据构建模块200和数据访问代理模块300组成。以下将对这几个部分的功能及协作关系进行详细说明:
测试对象部署模块100:
测试对象部署模块100的作用是构建测试用的沙盒环境,并且将需要测试的程序部署到该沙盒环境中。
为了实现沙盒环境的快速生成,测试对象部署模块100本身提供配置模板conf_template,模板中包含的沙盒环境的基本配置信息。如果需要生成一个处于网络环境的沙盒,则在该模板中还可以进一步包含该沙盒环境的上游设备信息或下游设备信息。例如,如果需要设置上游系统,则可以在模板中添加上游信息信任信息,例如上游域名、上游IP、上游接口前缀等等。类似地,如果需要设置下游系统,则可以在模板中添加下游信任信息。
配置模板中包含若干配置项目,每个配置项目由配置名和配置值组成。配置项目可以分为静态配置项目和动态配置项目两类:
静态配置项目,是指对于不同的应用环境,配置值不需要变化的配置项目,例如系统管理员信息、存储路径等,这类信息具有通用性,不需要在每次生成新的沙盒时进行修改,因此配置值可以固定写为常量。
动态配置项目,是指配置值需要随应用环境变化的配置项目,例如需要生成沙盒的目标机器是线上配置还是线下配置、是线下A环境还是线下B环境等等,这类信息需要随配置需求和目标机器的属性变化,因此在模板中的配置值以变量的方式提供。
可以理解的,上述动态配置项目与静态项目的区分并不是绝对的,在一定的条件下,二者可以相互转换,例如,如果系统管理员频繁变动,那么可以将相关配置项修改为动态类型。总的原则是,将具有通用性的配置项设为静态类型,以避免每次生成沙盒环境时重复指定。在待测程序每次版本更新时,由开发者确定conf_template是否需要添加或修改,并其区分出相应的动态配置项。对于动态配置项,多数可以根据需要创建沙盒环境的目标机器属性自动赋值,仅在有特殊需求时需要人工介入进行修改。
下面以一段具体的代码形式,对配置模板进行举例说明:
上述配置项中,adminEmail和adminSms为系统管理员信息,如果管理人员稳定,这两项可以固化写为具体人员,如果管理人员变动频繁,可以动态指定。
logPath为沙盒系统的log存储路径,一般而言,由于系统是确定的,因此无论是线上线下环境、沙盒A环境沙盒B环境等等,这个值是都是确定的,可以写为固定值,在不同的环境部署,该值不需要变更;
task_add为沙盒系统执行的任务信息,针对每套测试环境不同,由派生文件动态产生;
slaveTrackers和slaveAuthIP为下游系统信息,其中slaveTrackers为下游域名信息、slaveAuthIP为下游IP信息。由于不同目标机器所处的网络位置不同,因此该项一般为动态配置项目;
masterTrackers和masterAuthIP为上游系统信息,其中masterTrackers为上游域名信息、masterAuthIP为上游IP信息。由于不同目标机器所处的网络位置不同,因此该项一般为动态配置项目;
soap是沙盒系统需要提供的服务类型信息,根据实际测试需求,该项目可以是动态配置,也可以是静态配置。
如果需要在目标机器A上配置如图2所示的沙盒环境,则可以在task_add中分别指定需要依靠上游设备或下游设备完成的任务,将B1和B2的信息派生为slaveTrackers以及slaveAuthIp信息。C1和C2的信息派生为masterTrackers以及masterAuthIp信息。上述信息保存在目标机器A中,当对象部署模块100需要在目标机器A生成沙盒环境时,通过读取所保存的信息,为相应的动态配置项目赋值,完成沙盒环境的构建。
可以理解的是,上述提供的具体配置项目及相应的配置方式,仅用于示意性说明,不应理解为对本发明技术方案的限定。
对象部署模块100生成沙盒环境后,进一步将待测对象部署到该沙盒环境中,具体而言,就是将版本更新后的程序源代码复制到沙盒环境中。在本法的一种优选实施方式中,对象部署模块100可以实时对源码库进行监测,当开发人员向源码库提交新版本代码后,对象部署模块100监测到该情况后,自动触发后续的构建沙盒以及源码部署操作,从而进一步减少人工介入。
需要说明的是,构建沙盒以及源码部署操作的具体触发方式不应理解为对本发明方案的限定,例如,构建沙盒以及源码部署操作也可以由人工触发。
测试数据构建模块200:
测试数据构建模块200的作用是为沙盒提供程序测试需要使用的数据环境。为了保证真实数据源的安全,本发明采用对真实数据源进行备份的方式,构建测试用数据。
由于在测试过程中,难以避免地会产生各种形式的脏数据,甚至造成测试数据丢失等问题,为了快速恢复测试用数据环境,本发明采用构建多份测试用数据集的方式,例如,构建内容相同的测试用数据集X和测试用数据集Y,当数据集X发生变化,需要对其进行恢复时,可以将沙盒访问的数据对象切换至Y,在沙盒使用Y的过程中,对X进行恢复或重构……如此反复,以减少数据测试用数据环境的恢复时间。实现沙盒的连续运转。
在实际应用过程中,不同的测试用数据集可以分别配置在不同的物理设备上,如果设备资源受限,也可以将不同的测试用数据集配置在相同的物理设备上,通过端口切换等方式实现复用。
另外,由于mysql等数据库技术本身支持数据的读写分离功能,因此对于同一份测试用数据集,可以分别配置在多个物理设备上。例如设置主从两台数据设备,主设备Master负责处理写入、变更、删除操作,从设备Slave负责处理读取操作,通过这种方式分担负载,提高数据库的使用效率以及稳定性。
根据上述说明,本发明采用的一种典型的配置方式是:构建两套测试用数据集X和Y,将X和Y分别复用在两台机器Master和Slave上,也就是说:
X和Y分别在不同的测试阶段段切换使用,通过端口切换实现两套数据的复用;
在Master和Slave上分别具有X和Y的全量数据,在同一测试阶段,Master负责处理写入、变更、删除操作,从设备Slave负责处理读取操作,利用原生的数据库技术实现读写分离。
在实际构建测试用数据的过程中,还可以进一步考虑以下因素:一方面,为了实现完整的测试功能,因此测试用数据必须能够准确模拟原始数据库的数据结构,另一方面,测试过程并不需要全量的原始数据,例如,原始数据库中包含上万用户的信息,而为了完成测试,可能仅需要构建一个包含10名用户信息的数据集。
基于以上考虑,在本发明的一种实施方式中,将测试用数据集分为两部分:
结构数据Base.sql:主要包括创表语句以及基础数据,其中基础数据指状态数据、模板数据、结构数据等与执行过程无关的数据。base.sql可以通过对原始数据结构进行备份、然后清空过程数据、结果数据得到。
执行数据Data.sql:这部分数根据实际测试需求决定,例如根据目标机器的配置、测试所需的用户数量、测试所涉及的流程等确定,总的目标是从海量的原始数据中仅提取少量足够测试使用的数据,从而提高测试数据集的构建效率。
数据访问代理模块300:
数据访问代理模块300负责沙盒与测试用数据集之间的通信。该模块主要实现两方面需求:
一方面,由于在测试过程中,沙盒中的待测程序访问的不是真实的数据库,但是程序代码中的数据接口对应的却是真实的数据库,现有的处理方式是由人工修改数据接口。而应用本发明方案,数据访问代理模块300可以直接将待测程序对外的数据访问请求转换到测试数据集上,这样,从待测程序的角度看,对外的数据接口并不需要改变,从而避免了人工修改程序代码的麻烦。
另一方面,为了使得沙盒高速运转,不能仅仅采用“使用-恢复”一套测试数据集的方式,由于测试数据集的恢复需要花费时间,而且在这段时间内,测试工作无法保证继续进行,影响整个测试系统的使用效率。根据本发明前面的说明,测试数据构建模块200构建了至少两套测试用数据集,数据访问代理模块300的功能则是控制沙盒中的待测程序对不同测试用数据集的访问连接切换。
例如,测试数据构建模块200构建了两套测试用数据集X和Y,沙盒中的待测程序首先使用X进行测试,此时Y作为X备用数据集,测试人员完成一次测试任务后(可能是一个操作,或者一组操作的集合),向数据访问代理模块300发送一个消息,告知本次使用完成。数据访问代理模块300将待测程序的数据访问连接对象从X切换到Y,该步骤可以在很短的时间内完成,测试人员马上可以利用Y进行后续的测试工作。另一方面,对于刚刚切换下来的X,访问代理模块300向测试数据构建模块200发送一个消息,指示测试数据构建模块200重新构建X。重构后的X作为Y的备用数据集,待Y使用完毕之后,数据访问代理模块300将待测程序的数据访问连接对象从X切换到Y、然后通知测试数据构建模块200对Y进行重构……如此反复,充分利用测试人员执行测试操作的时间,对测试用数据集进行重构,以提高整个测试环境的运转效率。
以上分别对本发明所提供的沙盒环境构建系统的三个主要模块分别做了介绍,其中测试对象部署模块100是利用预设的模板来生成沙盒环境,从而实现对待测程序的快速自动部署;测试数据构建模块200和数据访问代理模块300利用生成多组测试用数据集的并且切换使用的方式,来实现测试数据环境的快速使用和恢复。下面结合实际的流程,对本发明的沙盒环境构建方案进行说明:
首先根据测试需求,为测试对象部署模块100设置配置模板,当开发人员向源码库提交代码后,测试对象部署模块100检测到源码内容的变化,根据配置模板以及目标机器的属性,生成沙盒环境,如果当前已经存在一个沙盒环境,则对当前沙盒进行替换,然后将最新版本的源代码部署到新的沙盒环境中,这样就完成了沙盒环境源码与开发进程的同步。
测试人员使用沙盒进行测试的过程中,每次执行完一批测试用例,或者在到达规定的使用时限后,都将触发一个任务通知给数据访问代理模块300,告知本次使用完成,数据访问代理模块300将在短时间内完成数据连接指向切换,切换到备用的数据库以供沙盒下次测试使用。本次切换完成之后,数据访问代理模块300触发一个更新任务db_update给数据访问代理模块300,更新对象为本次更新替换下来的数据库,测试数据构建模块200通过向这个数据库导入已经构造好的结构数据文件base.sql和执行数据文件data.sql完成数据库的重构,重构完成后,将该数据返回到备用数据库池中,以备下次切换使用。
与现有技术相比,本发明所提供的测试环境构建方案,将单机系统测试提升到多设备协作系统测试,并且仅需投入少量人力进行初始化设置,其余大部分构建及运维工作都可以由系统自动快速完成,不仅有助于够提高测试效率,而且明显降低了人力成本,也减少了人为因素所导致的错误隐患。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
相应于上面的方法实施例,本发明还提供一种沙盒测试环境构建方法,参见图3所示,该方法可以包括以下步骤:
S101,预先根据待测程序访问的原始数据,构建至少两个内容相同的测试用数据集;
S102,根据预设的配置模板,在目标机器上生成沙盒环境,并将待测程序部署到该沙盒环境中;
S103,将至少一个测试用数据集设置为沙盒环境中待测程序的数据访问对象。
步骤S101的作用是为沙盒提供程序测试需要使用的数据环境。为了保证真实数据源的安全,本发明采用对真实数据源进行备份的方式,构建测试用数据。
由于在测试过程中,难以避免地会产生各种形式的脏数据,甚至造成测试数据丢失等问题,为了快速恢复测试用数据环境,本发明采用构建多份测试用数据集的方式,例如,构建内容相同的测试用数据集X和测试用数据集Y,当数据集X发生变化,需要对其进行恢复时,可以将沙盒访问的数据对象切换至Y,在沙盒使用Y的过程中,对X进行恢复或重构……如此反复,以减少数据测试用数据环境的恢复时间。实现沙盒的连续运转。
在实际应用过程中,不同的测试用数据集可以分别配置在不同的物理设备上,如果设备资源受限,也可以将不同的测试用数据集配置在相同的物理设备上,通过端口切换等方式实现复用。
另外,由于mysql等数据库技术本身支持数据的读写分离功能,因此对于同一份测试用数据集,可以分别配置在多个物理设备上。例如设置主从两台数据设备,主设备Master负责处理写入、变更、删除操作,从设备Slave负责处理读取操作,通过这种方式分担负载,提高数据库的使用效率以及稳定性。
步骤S102的作用是构建测试用的沙盒环境,并且将需要测试的程序部署到该沙盒环境中。
为了实现沙盒环境的快速生成,可以预先设置配置模板conf_template,模板中包含的沙盒环境的基本配置信息。如果需要生成一个处于网络环境的沙盒,则在该模板中还可以进一步包含该沙盒环境的上游设备信息或下游设备信息。例如,如果需要设置上游系统,则可以在模板中添加上游信息信任信息,例如上游域名、上游IP、上游接口前缀等等。类似地,如果需要设置下游系统,则可以在模板中添加下游信任信息。
配置模板中包含若干配置项目,每个配置项目由配置名和配置值组成。配置项目可以分为静态配置项目和动态配置项目两类:
静态配置项目,是指对于不同的应用环境,配置值不需要变化的配置项目,例如系统管理员信息、存储路径等,这类信息具有通用性,不需要在每次生成新的沙盒时进行修改,因此配置值可以固定写为常量。
动态配置项目,是指配置值需要随应用环境变化的配置项目,例如需要生成沙盒的目标机器是线上配置还是线下配置、是线下A环境还是线下B环境等等,这类信息需要随配置需求和目标机器的属性变化,因此在模板中的配置值以变量的方式提供。
可以理解的,上述动态配置项目与静态项目的区分并不是绝对的,在一定的条件下,二者可以相互转换,例如,如果系统管理员频繁变动,那么可以将相关配置项修改为动态类型。总的原则是,将具有通用性的配置项设为静态类型,以避免每次生成沙盒环境时重复指定。在待测程序每次版本更新时,由开发者确定conf_template是否需要添加或修改,并其区分出相应的动态配置项。对于动态配置项,多数可以根据需要创建沙盒环境的目标机器属性自动赋值,仅在有特殊需求时需要人工介入进行修改。
在本发明的一种优选实施方式中,步骤S102可以采用自动触发的方式执行。具体方案是对源码库进行监测,当开发人员向源码库提交新版本代码后,可以监测到源码库内容变化,进而自动触发后续的构建沙盒以及源码部署操作,从而进一步减少人工介入。
需要说明的是,构建沙盒以及源码部署操作的具体触发方式不应理解为对本发明方案的限定,例如,构建沙盒以及源码部署操作也可以由人工触发。
步骤S103主要用于实现两方面需求:
一方面,由于在测试过程中,沙盒中的待测程序访问的不是真实的数据库,但是程序代码中的数据接口对应的却是真实的数据库,现有的处理方式是由人工修改数据接口。而应用本发明方案,可以直接将待测程序对外的数据访问请求转换到测试数据集上,这样,从待测程序的角度看,对外的数据接口并不需要改变,从而避免了人工修改程序代码的麻烦。
另一方面,为了使得沙盒高速运转,因此不能仅仅采用“使用-恢复”一套测试数据集的方式,由于测试数据集的恢复需要花费时间,而且在这段时间内,测试工作无法保证继续进行,影响整个测试系统的使用效率。根据本发明前面的说明,在S101构建了至少两套测试用数据集,进而在S103可以是控制沙盒中的待测程序对不同测试用数据集的访问连接切换。
图4所示为本发明实施例沙盒测试环境的构建方法的另一种流程图,与图3相比,进一步增加了步骤S104和S105。
例如,预先构建了两套测试用数据集X和Y,沙盒中的待测程序首先使用X进行测试,此时Y作为X备用数据集,测试人员完成一次测试任务后(可能是一个操作,或者一组操作的集合),在步骤S104,将待测程序的数据访问连接对象从X切换到Y,该步骤可以在很短的时间内完成,测试人员马上可以利用Y进行后续的测试工作。另一方面,对于刚刚切换下来的X,在步骤S105重新构建X。重构后的X作为Y的备用数据集,待Y使用完毕之后,再将待测程序的数据访问连接对象从X切换到Y、然后Y进行重构……如此反复,充分利用测试人员执行测试操作的时间,对测试用数据集进行重构,以提高整个测试环境的运转效率。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例而言,由于其基本相似于系统实施例,所以描述得比较简单,相关之处参见系统实施例的部分说明即可。
以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (16)
1.一种沙盒测试环境构建系统,其特征在于,该系统包括:测试对象部署模块、测试数据构建模块和数据访问代理模块;
所述测试对象部署模块,用于根据预设的配置模板,在目标机器上生成沙盒环境,并将待测程序部署到该沙盒环境中;
所述测试数据构建模块,用于根据所述待测程序访问的原始数据,构建至少两个内容相同的测试用数据集;
所述数据访问代理模块,用于对沙盒环境中待测程序与测试用数据集的访问连接关系进行设置。
2.根据权利要求1所述的系统,其特征在于,所述测试对象部署模块,具体用于:
在监测到待测程序源码更新之后,根据预设的配置模板,在目标机器上生成沙盒环境,并将更新后的待测程序部署到该沙盒环境中。
3.根据权利要求1所述的系统,其特征在于,所述配置模板中,包括静态配置项目和动态配置项目,所述测试对象部署模块,具体用于:
根据目标机器的属性生成所述动态配置项目,结合所述静态配置项目生成沙盒环境。
4.根据权利要求1所述的系统,其特征在于,所述测试数据构建模块,具体用于:
根据所述待测程序访问的原始数据,提取测试所需的必要数据集。
5.根据权利要求1所述的系统,其特征在于,所述数据访问代理模块,具体用于:
在测试用户使用所述沙盒环境完成一次测试任务后,将待测程序的访问连接切换至备用数据集。
6.根据权利要求5所述的系统,其特征在于,所述测试数据构建模块,具体用于:
在测试用户使用所述沙盒环境完成一次测试任务后,对切换下来的数据集进行重构,将重构后的数据集设置为备用数据集。
7.根据权利要求1所述的系统,其特征在于,所述测试数据构建模块,具体用于:
将多个测试用数据集配置在不同的物理设备上,
或者
将多个测试用数据集复用在相同的物理设备上。
8.根据权利要求1所述的系统,其特征在于,所述测试数据构建模块,具体用于:
将同一测试用数据集分别配置在多个物理设备上,以分担待测程序对该数据集的访问负载。
9.一种沙盒测试环境构建方法,其特征在于,该方法包括:
预先根据待测程序访问的原始数据,构建至少两个内容相同的测试用数据集;
根据预设的配置模板,在目标机器上生成沙盒环境,并将待测程序部署到该沙盒环境中;
将至少一个测试用数据集设置为沙盒环境中待测程序的数据访问对象。
10.根据权利要求9所述的方法,其特征在于,所述根据预设的配置模板,在目标机器上生成沙盒环境,并将待测程序部署到该沙盒环境中,包括:
在监测到待测程序源码更新之后,根据预设的配置模板,在目标机器上生成沙盒环境,并将更新后的待测程序部署到该沙盒环境中。
11.根据权利要求9所述的方法,其特征在于,所述配置模板中,包括静态配置项目和动态配置项目,所述根据预设的配置模板,在目标机器上生成沙盒环境,包括:
根据目标机器的属性生成所述动态配置项目,结合所述静态配置项目生成沙盒环境。
12.根据权利要求9所述的方法,其特征在于,所述根据所述待测程序访问的原始数据,构建测试用数据集:
根据所述待测程序访问的原始数据,提取测试所需的必要数据集。
13.根据权利要求9所述的方法,其特征在于,该方法还包括:
在测试用户使用所述沙盒环境完成一次测试任务后,将待测程序的访问连接切换至备用数据集。
14.根据权利要求13所述的方法,其特征在于,该方法还包括:
对切换下来的数据集进行重构,将重构后的数据集设置为备用数据集。
15.根据权利要求9所述的方法,其特征在于,所述构建至少两个内容相同的测试用数据集,包括:
将多个测试用数据集配置在不同的物理设备上,
或者
将多个测试用数据集复用在相同的物理设备上。
16.根据权利要求9所述的方法,其特征在于,所述构建至少两个内容相同的测试用数据集,包括:
将同一测试用数据集分别配置在多个物理设备上,以分担待测程序对该数据集的访问负载。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210374428.3A CN103699479B (zh) | 2012-09-27 | 2012-09-27 | 一种沙盒测试环境构建系统及构建方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210374428.3A CN103699479B (zh) | 2012-09-27 | 2012-09-27 | 一种沙盒测试环境构建系统及构建方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103699479A CN103699479A (zh) | 2014-04-02 |
CN103699479B true CN103699479B (zh) | 2018-02-02 |
Family
ID=50361015
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210374428.3A Active CN103699479B (zh) | 2012-09-27 | 2012-09-27 | 一种沙盒测试环境构建系统及构建方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103699479B (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9411959B2 (en) * | 2014-09-30 | 2016-08-09 | Juniper Networks, Inc. | Identifying an evasive malicious object based on a behavior delta |
CN104850786B (zh) * | 2015-06-03 | 2018-03-20 | 舒辉 | 基于环境重构的恶意代码完整性分析方法 |
CN106850263B (zh) * | 2016-12-27 | 2019-10-18 | 北京华为数字技术有限公司 | 一种备平面中转发设备的配置错误检测方法、装置和系统 |
US10171487B2 (en) | 2017-02-15 | 2019-01-01 | International Business Machines Corporation | Generating a virtual database to test data security of a real database |
CN107193636A (zh) * | 2017-05-25 | 2017-09-22 | 深信服科技股份有限公司 | 一种numa架构下沙箱环境内虚拟任务模拟方法及装置 |
CN107220121B (zh) * | 2017-05-25 | 2020-11-13 | 深信服科技股份有限公司 | 一种numa架构下沙箱环境测试方法及其系统 |
CN108255717B (zh) * | 2018-01-10 | 2020-01-14 | 贝壳找房(北京)科技有限公司 | 接口自动化测试优化方法、系统、电子设备和存储介质 |
CN108304569B (zh) * | 2018-02-13 | 2021-10-29 | 中国银行股份有限公司 | 一种测试数据积累方法及装置 |
CN109614339B (zh) * | 2018-12-27 | 2020-01-21 | 四川新网银行股份有限公司 | 一种基于多套测试环境的自动扩充方法 |
CN109726127B (zh) * | 2018-12-28 | 2019-07-23 | 四川新网银行股份有限公司 | 一种基于单套测试环境的自动扩充方法 |
CN109726593B (zh) * | 2018-12-31 | 2021-02-23 | 联动优势科技有限公司 | 一种数据沙盒的实现方法及装置 |
CN109726592B (zh) * | 2018-12-31 | 2021-02-23 | 联动优势科技有限公司 | 一种数据沙盒的处理方法及装置 |
CN111966426A (zh) * | 2019-05-20 | 2020-11-20 | 顺丰科技有限公司 | 一种api对接方法、系统、设备及存储介质 |
CN110908893A (zh) * | 2019-10-08 | 2020-03-24 | 深圳逻辑汇科技有限公司 | 联邦学习的沙盒机制 |
CN113032004B (zh) * | 2019-12-09 | 2024-05-24 | 伊姆西Ip控股有限责任公司 | 在开发环境中管理开发作业的方法、设备和程序产品 |
CN111078473A (zh) * | 2020-01-03 | 2020-04-28 | 恩亿科(北京)数据科技有限公司 | 一种测试项目复制方法及装置 |
CN111222132A (zh) * | 2020-01-03 | 2020-06-02 | 北京字节跳动网络技术有限公司 | 一种dom沙盒环境的创建方法、装置、介质和电子设备 |
CN111355629B (zh) * | 2020-02-17 | 2021-01-15 | 苏州亿歌网络科技有限公司 | 一种客户端的测试方法、装置、计算机设备及存储介质 |
CN112527252B (zh) * | 2020-11-30 | 2024-01-09 | 北京百度网讯科技有限公司 | 小程序管理方法及装置、小程序平台、电子设备、介质 |
CN113535704B (zh) * | 2021-07-30 | 2024-06-14 | 数网金融有限公司 | 一种扫描方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1894667A (zh) * | 2003-12-18 | 2007-01-10 | 康泰克创新公司 | 分配服务器资源的系统和方法 |
CN101001183A (zh) * | 2007-01-10 | 2007-07-18 | 网之易信息技术(北京)有限公司 | 一种网络应用软件的测试方法和系统 |
CN101576849A (zh) * | 2008-05-09 | 2009-11-11 | 北京世纪拓远软件科技发展有限公司 | 测试数据的生成方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8782604B2 (en) * | 2008-04-11 | 2014-07-15 | Oracle International Corporation | Sandbox support for metadata in running applications |
US8793291B2 (en) * | 2010-03-15 | 2014-07-29 | Salesforce.Com, Inc. | System, method and computer program product for deploying an update between environments of a multi-tenant on-demand database system |
-
2012
- 2012-09-27 CN CN201210374428.3A patent/CN103699479B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1894667A (zh) * | 2003-12-18 | 2007-01-10 | 康泰克创新公司 | 分配服务器资源的系统和方法 |
CN101001183A (zh) * | 2007-01-10 | 2007-07-18 | 网之易信息技术(北京)有限公司 | 一种网络应用软件的测试方法和系统 |
CN101576849A (zh) * | 2008-05-09 | 2009-11-11 | 北京世纪拓远软件科技发展有限公司 | 测试数据的生成方法 |
Non-Patent Citations (1)
Title |
---|
"基于虚拟机QEMU的嵌入式全系统仿真测试环境的研究与实现";鲍颖力;《中国优秀硕士学位论文全文数据库 信息科技辑》;20120715;文章第7-8页第2.2节以及图2-1 * |
Also Published As
Publication number | Publication date |
---|---|
CN103699479A (zh) | 2014-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103699479B (zh) | 一种沙盒测试环境构建系统及构建方法 | |
Jabbari et al. | What is DevOps? A systematic mapping study on definitions and practices | |
Delaet et al. | A survey of system configuration tools | |
US10579599B2 (en) | Upgrade of heterogeneous multi-instance database clusters | |
CN106126204B (zh) | 一种基于模块化设计的信息系统迭代式扩展开发方法 | |
CN104040529B (zh) | 用于云迁移中的配置管理的装置和方法 | |
CN108038201B (zh) | 一种数据整合系统及其分布式数据整合系统 | |
Bass et al. | Eliciting operations requirements for applications | |
CN111736994B (zh) | 资源编排方法、系统及存储介质和电子设备 | |
CN106201502A (zh) | 一种跨主机应用程序部署方法及装置 | |
CN107147711A (zh) | 应用服务更新方法及装置 | |
CN109558191A (zh) | 一种配置页面的方法、装置、存储介质及计算机设备 | |
CN109299063A (zh) | 一种跨平台数据库迁移方法及系统 | |
CN106951593B (zh) | 一种生成保护测控装置的配置文件的方法和装置 | |
CN115934244A (zh) | 生成用于测试容器编排系统的测试集群 | |
CN109784686A (zh) | 产品全生命周期管理系统及方法 | |
Nikolaidis et al. | Frisbee: automated testing of Cloud-native applications in Kubernetes | |
Lourenço et al. | Cloudcity: A live environment for the management of cloud infrastructures | |
KR20090099977A (ko) | 예약된 컴포넌트 컨테이너 기반 소프트웨어 개발 방법 및장치 | |
CN110471681A (zh) | 应用程序的自动变更方法、系统、装置及存储介质 | |
CN102710433A (zh) | 一种在线升级处理方法、相关装置和系统 | |
Dhungana et al. | Supporting the evolution of product line architectures with variability model fragments | |
US20210026865A1 (en) | Method, device and computer program product for providing visual representation | |
Potuzak et al. | Design of a component-based simulation framework for component testing using SpringDM | |
CN107153531A (zh) | 一种用于软件开发的方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |