项目测试方法及装置、服务器、平台与流程

文档序号:17695737发布日期:2019-05-17 21:29阅读:142来源:国知局
项目测试方法及装置、服务器、平台与流程

本申请涉及软件测试领域,具体而言,涉及一种项目测试方法及装置、服务器、平台。



背景技术:

通过在测试服务器上搭建一套可运行的测试环境,并使用测试域名对测试服务器进行访问。

发明人发现,由于在研发过程中,不同的研发人员都会通过代码版本控制系统系统提交代码。当用户1提交代码,如果代码中有bug,会导致测试环境不可用,同时用户2在测试过程中会由于用户1提交的不可用代码而阻断用户2当前的工作。即用户1与用户2不能在同一时间测试自己的负责的功能。在目前的测试过程中,不同的开发人员提交代码会相互影响对方从而无法使开发人员独立自主完成自己负责开发的功能。

针对相关技术中测试过程中不同开发人员提交代码会相互影响的问题,目前尚未提出有效的解决方案。



技术实现要素:

本申请的主要目的在于提供一种项目测试方法及装置、服务器、平台,以解决测试过程中不同开发人员提交代码会相互影响的问题。

为了实现上述目的,根据本申请的一个方面,提供了一种项目测试方法。

根据本申请的项目测试方法包括:获取用于访问测试环境的域名;根据所述域名判断出所述域名对应项目所在的预设分支;通过所述预设分支,访问所述测试环境。

进一步地,根据所述域名判断出所述域名对应项目所在的预设分支包括:根据所述域名判断出所述预设分支是否通过浏览器访问;如果根据所述域名判断出所述预设分支通过浏览器访问,则在解析得到cookie后,通过配置环境找到所述域名对应项目代码的所述预设分支。

进一步地,根据所述域名判断出所述域名对应项目所在的预设分支包括:根据所述域名判断出所述预设分支是否脱离浏览器访问;如果根据所述域名判断出所述预设分支脱离浏览器访问,则在解析得到httpheader后,通过配置环境找到所述域名对应项目代码的所述预设分支。

进一步地,根据所述域名判断出所述域名对应项目所在的预设分支还包括:判断所述域名中是否存在cookie或httpheader;如果根据所述域名判断出分支域名既不存在cookie也不存在httpheader,则通过配置环境找到所述域名对应项目代码的默认分支域名。

进一步地,获取用于访问测试环境的域名之前还包括:根据cookie配置项目所属的第一分支;根据httpheader配置项目所属的第二分支;将所述第一分支和/或所述第二分支,作为待测试项目代码需要访问的预设分支。

为了实现上述目的,根据本申请的另一方面,提供了一种项目测试装置。

根据本申请的项目测试装置包括:获取模块,用于获取用于访问测试环境的域名;判断模块,用于根据所述域名判断出所述域名对应项目所在的预设分支;访问模块,用于通过所述预设分支,访问所述测试环境。

进一步地,所述配置获取模块包括:第一判断单元,用于根据所述域名判断出所述预设分支是否通过浏览器访问;第一解析单元,用于根据所述域名判断出所述预设分支通过浏览器访问时,在解析得到cookie后,通过配置环境找到所述域名对应项目代码的所述预设分支。

进一步地,所述配置获取模块包括:第二判断单元,用于根据所述域名判断出所述预设分支是否脱离浏览器访问;第二解析单元,用于根据所述域名判断出所述预设分支脱离浏览器访问时,在解析得到httpheader后,通过配置环境找到所述域名对应项目代码的所述预设分支。

在本申请的另一方面还提供了一种项目测试服务器,包括:所述的测试装置。

在本申请的再一方面还提供了一种项目测试平台,包括:输入模块,用于输入用于访问测试环境的同一个域名;切换模块,用于根据接收到的测试环境切换指令,确定并访问所述同一个域名中不同项目对应的分支。

在本申请实施例中,采用获取用于访问测试环境的域名的方式,通过根据所述域名判断出所述域名对应项目所在的预设分支,通过所述预设分支,访问所述测试环境,达到了使用同一个域名访问不同分支的目的,从而实现了开发人员可切换开发环境并灵活配置不同项目和不同访问分支域名的技术效果,进而解决了测试过程中不同开发人员提交代码会相互影响的技术问题。

附图说明

构成本申请的一部分的附图用来提供对本申请的进一步理解,使得本申请的其它特征、目的和优点变得更明显。本申请的示意性实施例附图及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1是根据本申请第一实施例的项目测试方法流程示意图;

图2是根据本申请第二实施例的项目测试方法流程示意图;

图3是根据本申请第三实施例的项目测试方法流程示意图;

图4是根据本申请第四实施例的项目测试方法流程示意图;

图5是根据本申请第五实施例的项目测试方法流程示意图;

图6是根据本申请第一实施例的项目测试装置结构示意图;

图7是根据本申请第二实施例的项目测试装置结构示意图;

图8是根据本申请第三实施例的项目测试装置结构示意图;

图9是根据本申请第四实施例的项目测试装置结构示意图;

图10是根据本申请实施例的测试方法实现原理示意图;

图11是根据本申请优选实施例的测试方法实现原理示意图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

在本申请中,术语“上”、“下”、“左”、“右”、“前”、“后”、“顶”、“底”、“内”、“外”、“中”、“竖直”、“水平”、“横向”、“纵向”等指示的方位或位置关系为基于附图所示的方位或位置关系。这些术语主要是为了更好地描述本申请及其实施例,并非用于限定所指示的装置、元件或组成部分必须具有特定方位,或以特定方位进行构造和操作。

并且,上述部分术语除了可以用于表示方位或位置关系以外,还可能用于表示其他含义,例如术语“上”在某些情况下也可能用于表示某种依附关系或连接关系。对于本领域普通技术人员而言,可以根据具体情况理解这些术语在本申请中的具体含义。

此外,术语“安装”、“设置”、“设有”、“连接”、“相连”、“套接”应做广义理解。例如,可以是固定连接,可拆卸连接,或整体式构造;可以是机械连接,或电连接;可以是直接相连,或者是通过中间媒介间接相连,又或者是两个装置、元件或组成部分之间内部的连通。对于本领域普通技术人员而言,可以根据具体情况理解上述术语在本申请中的具体含义。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

如图1所示,该方法包括如下的步骤s102至步骤s104:

步骤s102,获取用于访问测试环境的域名;

在提交域名后,在后台服务器中可以获取得到域名并且通过该域名访问测试环境。通常可以在测试服务器上搭建一套可运行的测试环境,并使用测试域名比如,www.test.com来访问测试服务器。通常不同的研发人员可以通过git来提交代码。git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

步骤s104,根据所述域名判断出所述域名对应项目所在的预设分支;

根据所述域名可以判断出所述域名对应项目代码所在的预设分支,其中,分支域名是指开发人员各自在自己的分支上开发新功能,并且在代码上线时将开发完成的功能合并到主干分支中。通过不同的预设分支可以用来访问不同的分支。

具体地,对于分支域名可以采用泛域名的方式,将*.test.coma记录解析到nginx所在的服务器ip,nginx可以实现泛域名转到代码分支的过程。

读取出所述分支域名的配置时,可以获得分支域名中的项目和分支域名的对应配置关系。

作为本实施例中的优选,如果当迭代代码时会出现大量新的分支,导致各个项目中引入的配置文件做大量的改动,从而会影响分支域名的选择。通常,可以在不修改任何代码的情况下采用cookie实现测试目的。比如,可以实现在同一项目下的分支访问。

作为本实施例中的有优选,可以使用cookie+lua在nginx中实现泛域名转到代码分支的过程。lua是一种轻量小巧的脚本语言,用标准c语言编写并以源代码形式开放,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。

步骤s106,通过所述预设分支,访问所述测试环境。

通过上述步骤中获得的预设分支,可以访问对应项目代码中的测试环境。并且通过判断当前项目设置的哪个预设分域名,可以访问到该分支域名中的代码。

从以上的描述中,可以看出,本申请实现了如下技术效果:

在本申请实施例中,采用获取用于访问测试环境的域名的方式,通过根据所述域名判断出所述域名对应项目所在的预设分支,通过所述预设分支,访问所述测试环境,达到了使用同一个域名访问不同分支的目的,从而实现了开发人员可切换开发环境并灵活配置不同项目和不同访问分支域名的技术效果,进而解决了测试过程中不同开发人员提交代码会相互影响的技术问题。

根据本申请实施例,作为本实施例中的优选,如图2所示,根据所述域名判断出所述域名对应项目所在的预设分支包括:

步骤s202,根据所述域名判断出所述预设分支是否通过浏览器访问;

当接收到域名后,根据所述域名可以判断出分支域名是否通过浏览器访问,即该域名属于web端的项目测试域名。

步骤s204,如果根据所述域名判断出所述预设分支通过浏览器访问,则在解析得到cookie后,通过配置环境找到所述域名对应项目代码的所述预设分支。

如果所述域名可以判断出分支域名通过浏览器访问,则可以解析出该域名中的cookie,然后再进一步读取得到分支域名的配置。cookie是储存在用户本地浏览器上的数据,所以如果述域名可以判断出分支域名通过浏览器访问,则可以解析出该域名中的cookie。通常配置文件在redis上存放。redis是一个开源的使用ansic语言编写、支持网络、可基于内存亦可持久化的日志型、key-value数据库,并提供多种语言的api。

根据本申请实施例,作为本实施例中的优选,如图3所示,根根据所述域名判断出所述域名对应项目所在的预设分支包括:

步骤s302,根据所述域名判断出所述预设分支是否脱离浏览器访问;

当接收到域名后,根据所述域名可以判断出分支域名是否脱离浏览器访问,即该域名属于离线访问的项目测试域名,比如开发手机上的应用程序。又比如,开发h5小程序。

步骤s304,如果根据所述域名判断出所述预设分支脱离浏览器访问,则在解析得到httpheader后,通过配置环境找到所述域名对应项目代码的所述预设分支。

如果所述域名可以判断出分支域名脱离浏览器访问,则可以解析出该域名中的httpheader,再读取出所述分支域名的配置。具体地,http超文本传输协议,是网页传输的的通用协议。http协议采用了请求/响应模型,浏览器或其他客户端发出请求,服务器给与响应。http协议包括message-header和message-body两部分,其中,message-header,即httpheader消息。通常而言如所述域名可以判断出分支域名脱离浏览器访问,则可以解析得到该域名中的httpheader。

通过上述判断方法,可以有效地防止配置丢失的问题。

根据本申请实施例,作为本实施例中的优选,如图4所示,根据所述域名判断出所述域名对应项目所在的预设分支还包括:

步骤s402,判断所述域名中是否存在cookie或httpheader;

具体地,可以通过lua判断所述域名是否存在cookie或httpheader。即判断域名的访问是通过浏览器还是脱离浏览器。

步骤s404,如果根据所述域名判断出分支域名既不存在cookie也不存在httpheader,则通过配置环境找到所述域名对应项目代码的默认分支域名。

如果根据所述域名判断出分支域名既不存在cookie也不存在httpheader时,则根据所述域名判断出默认分支域名。根据默认分支域名可以读取得到其配置。

根据本申请实施例,作为本实施例中的优选,如图5所示,获取用于访问测试环境的域名之前还包括:

步骤s502,根据cookie配置项目所属的第一分支;

开发人员根据cookie配置项目所属的分支域名以及版本库。

在不同的测试场景中可以包括多个需要访问的分支域名。通过浏览器cookie中保存的相关密钥key,可判断当前项目设置的哪些分支域名,从而让请求访问到该些分支域名的代码。

具体地,可以采用nginx配合lua和cookie的方式读取分支域名中的配置。

步骤s504,根据httpheader配置项目所属的第二分支;

开发人员根据httpheader配置项目所属的分支域名以及版本库。

在不同的测试场景中可以包括多个需要访问的分支域名。通过httpheader中保存的相关密钥key,可判断当前项目设置的哪些分支域名,从而让请求访问到该些分支域名的代码。

具体地,可以采用nginx配合lua和httpheader的方式读取分支域名中的配置。

步骤s506,将所述第一分支和/或所述第二分支,作为待测试项目代码需要访问的预设分支。

在读取配置文件后,可以查询出指定项目所属的分支域名。比如,项目project1设置的env1,则从redis中查询env1中project1所设置的分支域名为:分支域名a,从而访问定位到“project1-分支域名a”。

获取指定项目所属的分支域名后,则可以确定出指定项目和对应的分支域名。从而可以根据同一个域名中不同项目对应的分支域名,切换到不同的测试环境。

需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

根据本申请实施例,还提供了一种用于实施上述项目测试方法的装置,如图6所示,该装置包括:获取模块10,用于获取用于访问测试环境的域名;判断模块20,用于根据所述域名判断出所述域名对应项目所在的预设分支;访问模块30,用于通过所述预设分支,访问所述测试环境。

本申请实施例的获取模块10中在提交域名后,在后台服务器中可以获取得到域名并且通过该域名访问测试环境。通常可以在测试服务器上搭建一套可运行的测试环境,并使用测试域名比如,www.test.com来访问测试服务器。通常不同的研发人员可以通过git来提交代码。git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

本申请实施例的配置获取模块20中根据所述域名可以判断出所述域名对应项目代码所在的预设分支,其中分支域名是指开发人员各自在自己的分支上开发新功能,并且在代码上线时将开发完成的功能合并到主干分支中。通过不同的预设分支可以用来访问不同的分支。

具体地,对于分支域名可以采用泛域名的方式,将*.test.coma记录解析到nginx所在的服务器ip,nginx可以实现泛域名转到代码分支的过程。

读取出所述分支域名的配置时,可以获得分支域名中的项目和分支域名的对应配置关系。

作为本实施例中的优选,如果当迭代代码时会出现大量新的分支,导致各个项目中引入的配置文件做大量的改动,从而会影响分支域名的选择。通常,可以在不修改任何代码的情况下采用cookie实现测试目的。比如,可以实现在同一项目下的分支访问。

作为本实施例中的有优选,可以使用cookie+lua在nginx中实现泛域名转到代码分支的过程。lua是一种轻量小巧的脚本语言,用标准c语言编写并以源代码形式开放,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。

本申请实施例的访问模块30中通过上述模块中获得的预设分支,可以访问对应项目代码中的测试环境。并且通过判断当前项目设置的哪个预设分域名,可以访问到该分支域名中的代码。

根据本申请实施例,作为本实施例中的优选,如图7所示,所述配置获取模块20包括:第一判断单元201,用于据所述域名判断出所述预设分支是否通过浏览器访问;第一解析单元202,用于如果根据所述域名判断出所述预设分支通过浏览器访问,则在解析得到cookie后,通过配置环境找到所述域名对应项目代码的所述预设分支。

本申请实施例的第一判断单元201中当接收到域名后,根据所述域名可以判断出分支域名是否通过浏览器访问,即该域名属于web端的项目测试域名。

本申请实施例的第一解析单元202中如果所述域名可以判断出分支域名通过浏览器访问,则可以解析出该域名中的cookie,然后再进一步读取得到分支域名的配置。cookie是储存在用户本地浏览器上的数据,所以如果述域名可以判断出分支域名通过浏览器访问,则可以解析出该域名中的cookie。通常配置文件在redis上存放。redis是一个开源的使用ansic语言编写、支持网络、可基于内存亦可持久化的日志型、key-value数据库,并提供多种语言的api。

根据本申请实施例,作为本实施例中的优选,如图8所示,所述配置获取模块20包括:第二判断单元203,用于根据所述域名判断出所述预设分支是否脱离浏览器访问;第二解析单元204,用于如果根据所述域名判断出所述预设分支脱离浏览器访问,则在解析得到httpheader后,通过配置环境找到所述域名对应项目代码的所述预设分支。

本申请实施例的第二判断单元203中当接收到域名后,根据所述域名可以判断出分支域名是否脱离浏览器访问,即该域名属于离线访问的项目测试域名,比如开发手机上的应用程序。又比如,开发h5小程序。

本申请实施例的第二解析单元204中如果所述域名可以判断出分支域名脱离浏览器访问,则可以解析出该域名中的httpheader,再读取出所述分支域名的配置。具体地,http超文本传输协议,是网页传输的的通用协议。http协议采用了请求/响应模型,浏览器或其他客户端发出请求,服务器给与响应。http协议包括message-header和message-body两部分,其中,message-header,即httpheader消息。通常而言如所述域名可以判断出分支域名脱离浏览器访问,则可以解析得到该域名中的httpheader。

根据本申请实施例,作为本实施例中的优选,所述配置获取模块还包括:第三判断单元,用于判断所述域名中是否存在cookie或httpheader;第二解析模块单元,用于如果根据所述域名判断出分支域名既不存在cookie也不存在httpheader,则通过配置环境找到所述域名对应项目代码的默认分支域名。

本申请实施例的第三判断单元中具体地,可以通过lua判断所述域名是否存在cookie或httpheader。即判断域名的访问是通过浏览器还是脱离浏览器。

本申请实施例的第二解析模块单元中如果根据所述域名判断出分支域名既不存在cookie也不存在httpheader时,则根据所述域名判断出默认分支域名。根据默认分支域名可以读取得到其配置。

根据本申请实施例,作为本实施例中的优选,装置还包括:访问模块,所述访问模块包括:第一配置单元,用于根据cookie配置项目所属的第一分支;第二配置单元,用于根据httpheader配置项目所属的第二分支;访问单元,用于将所述第一分支和/或所述第二分支,作为待测试项目代码需要访问的预设分支。

本申请实施例的第一配置单元中开发人员根据cookie配置项目所属的分支域名以及版本库。

在不同的测试场景中可以包括多个需要访问的分支域名。通过浏览器cookie中保存的相关密钥key,可判断当前项目设置的哪些分支域名,从而让请求访问到该些分支域名的代码。

具体地,可以采用nginx配合lua和cookie的方式读取分支域名中的配置。

本申请实施例的第二配置单元开发人员根据httpheader配置项目所属的分支域名以及版本库。

在不同的测试场景中可以包括多个需要访问的分支域名。通过httpheader中保存的相关密钥key,可判断当前项目设置的哪些分支域名,从而让请求访问到该些分支域名的代码。

具体地,可以采用nginx配合lua和httpheader的方式读取分支域名中的配置。

本申请实施例的访问单元中在读取配置文件后,可以查询出指定项目所属的分支域名。比如,项目project1设置的env1,则从redis中查询env1中project1所设置的分支域名为:分支域名a,从而访问定位到“project1-分支域名a”。

获取指定项目所属的分支域名后,则可以确定出指定项目和对应的分支域名。从而可以根据同一个域名中不同项目对应的分支域名,切换到不同的测试环境。

在本申请的另一实施例中,提供了项目测试服务器,包括:所述的测试装置。其中,测试装置的实现原理和有益效果如上所述,在此不再进行赘述。

如图9所示,在本申请的再一实施例中,还提供了一种项目测试平台,包括:输入模块100,用于输入用于访问测试环境的同一个域名;切换模块200,用于根据接收到的测试环境切换指令,确定并访问所述同一个域名中不同项目对应的分支域名。在所述输入模块100可以是指用户通过相关web管理平台进行域名域名的输入。其中,访问测试环境的同一个域名可是指在测试阶段不同的开发人员可以输入同一个域名但是系统后台会根据不同开发人员自动配置测试环境。在所述切换模块200中,根据从开发人员接收到的测试环境切换指令后,可以确定使用哪个项目中的哪个分支域名,并且访问所述同一个域名中不同项目所对应的分支。

具体地,上述项目测试平台实现原理,请参考图10至图11,如图10所示输入为:

project1:a.test.com(可以是同一个域名或者分支域名)

project2:b.test.com(可以是同一个域名或者分支域名)

将域名输入nginx以及通过lua获取域名中的cookie。通过cookie可以在不修改代码的情况下实现无干扰的测试,对于同一项目下的分支访问可以良好进行。

通过上述进一步通过配置读取方式,可以在redis中获取cookie所设置的环境配置,具体如图所示:

env1:

project1分支aproject2分支b

env2:

project1分支dproject2分支e

在所述切换模块200,用于根据接收到的测试环境切换指令可以确定需要访问的项目project的哪个分支。进而可以实现通过不同分支域名来访问不同的分支。

在图10所示的场景中适用于浏览器的访问场景,在跨项目方位时可能产生脱机工作即脱离浏览器的情况,为了避免丢失配置,比如,在一些场景中当project1通过curl方式调用project2或project1中通过nginxproxy_pass调用project2,此时project2将无法确定使用哪些分支。

在图11中给出了具体的解决办法,当project1调用project2时,将cookie通过httpheader方式透传到project2中,即可以借助lua层处理。

在lua层判断httpheader是否存在,以及判断cookie是否存在,

如果httpheader存在,则在redis中进行配置,配置好对应分支。

如果cookie存在,则在redis配置中进行配置,配置好对应分支。

如果既不存在httpheader,也不存在cookie,则在redis配置中进行默认分支配置。

显然,本领域的技术人员project2应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。

以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1