CN111581087B - 应用程序测试方法和装置 - Google Patents
应用程序测试方法和装置 Download PDFInfo
- Publication number
- CN111581087B CN111581087B CN202010354098.6A CN202010354098A CN111581087B CN 111581087 B CN111581087 B CN 111581087B CN 202010354098 A CN202010354098 A CN 202010354098A CN 111581087 B CN111581087 B CN 111581087B
- Authority
- CN
- China
- Prior art keywords
- test
- layer
- user
- application program
- created
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test 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)
- Data Exchanges In Wide-Area Networks (AREA)
- Debugging And Monitoring (AREA)
Abstract
本说明书一个实施例提供了应用程序测试方法和装置,其中方法包括:获取应用程序的测试层创建请求,为应用程序创建至少一个测试层;获取应用程序的测试创建请求,在测试层中创建测试;监控测试层的空闲用户流量的大小变化情况,根据已创建测试的最早开启时间、已创建测试所请求分配的用户流量的大小和已创建测试所在的测试层的变化后的空闲用户流量的大小,判断已创建测试中是否具有满足开启条件的测试,若具有,则开启测试;响应于用户终端发送的应用程序的测试请求,在已开启测试中确定所述用户所属的测试,向用户提供所属的测试所针对的测试项的测试数据。本实施例能够解决目前应用程序的A/B测试,测试创建效率和测试运行效率较低的问题。
Description
技术领域
本文件涉及计算机技术领域,尤其涉及一种应用程序测试方法和装置。
背景技术
一般通过A/B测试的方式获取用户对应用程序的反馈,以调整或优化应用程序。A/B测试指的是针对同一个测试项,向不同用户提供不同的测试数据,根据不同用户的反馈调整或优化应用程序。比如,针对应用程序的页面字体大小,选择一部分用户作为测试组,向这部分用户提供4号字体的页面内容,选择另外一部分用户作为对照组,向这部分用户提供5号字体的页面内容,根据测试组用户和对照组用户对于所浏览的页面字体大小的反馈操作,优化应用程序。
根据A/B测试的原理可知,测试过程中需要对照组用户和测试组用户的参与,对照组用户和测试组用户可以理解为测试所需的用户流量。由此在创建测试时通常定义有用户流量大小,比如定义用户流量大小为日均总用户流量的30%,其中对照组的用户流量为15%,测试组的用户流量为15%,即表示一天内访问该应用程序的总用户中的30%的用户为测试所需的用户流量,该30%的用户中,一半用户位于对照组,是对照组用户,一半用户位于测试组,是测试组用户。
现有技术中,若为应用程序创建多个测试,则要求所创建的多个测试所需的用户流量之和不能超过应用程序的总用户流量,但是实际测试过程中,可能发生部分测试结束后才开始其他测试,因此在全部测试不一定同时进行的情况下,要求所创建的多个测试所需的用户流量之和不能超过应用程序的总用户流量,降低了测试创建效率,且测试创建后,需要人工手动开启测试,容易导致测试滞后开启,降低了测试运行效率。
发明内容
本说明书一个实施例的目的是提供一种应用程序测试方法和装置,以解决目前应用程序的A/B测试,测试创建效率和测试运行效率较低的问题。
为解决上述技术问题,本说明书一个实施例是这样实现的:
第一方面,本说明书一个实施例提供了一种应用程序测试方法,包括:
获取应用程序的测试层创建请求,根据所述测试层创建请求,为所述应用程序创建至少一个测试层;其中,所述测试层用于容纳为所述应用程序创建的测试,所述测试用于针对所述应用程序的同一测试项,向所述应用程序的不同用户提供不同的测试数据,以根据所述不同用户的反馈数据调整所述应用程序的与所述测试项相关的程序数据;位于同一测试层中的各个测试所针对的测试项属于同一项目类别;
获取应用程序的测试创建请求,根据所述测试创建请求,在所述测试层中创建测试;其中,所述测试创建请求中携带的测试所请求分配的用户流量的大小,大于测试所在的测试层的空闲用户流量的大小;
在创建测试层和测试之后,监控测试层的空闲用户流量的大小变化情况,根据已创建测试的最早开启时间、已创建测试所请求分配的用户流量的大小和已创建测试所在的测试层的变化后的空闲用户流量的大小,判断已创建测试中是否具有满足开启条件的测试,若具有,则开启满足开启条件的测试;
响应于用户终端发送的所述应用程序的测试请求,根据所述用户终端的用户标识和各个测试层的测试层标识,在已开启测试中确定所述用户所属的测试,向所述用户提供所述所属的测试所针对的测试项的测试数据,以根据所述用户的反馈数据调整所述应用程序的与所述所针对的测试项相关的程序数据。
第二方面,本说明书另一个实施例提供了一种应用程序测试装置,包括:
第一创建单元,用于获取应用程序的测试层创建请求,根据所述测试层创建请求,为所述应用程序创建至少一个测试层;其中,所述测试层用于容纳为所述应用程序创建的测试,所述测试用于针对所述应用程序的同一测试项,向所述应用程序的不同用户提供不同的测试数据,以根据所述不同用户的反馈数据调整所述应用程序的与所述测试项相关的程序数据;位于同一测试层中的各个测试所针对的测试项属于同一项目类别;
第二创建单元,用于获取应用程序的测试创建请求,根据所述测试创建请求,在所述测试层中创建测试;其中,所述测试创建请求中携带的测试所请求分配的用户流量的大小,大于测试所在的测试层的空闲用户流量的大小;
测试开启单元,用于在创建测试层和测试之后,监控测试层的空闲用户流量的大小变化情况,根据已创建测试的最早开启时间、已创建测试所请求分配的用户流量的大小和已创建测试所在的测试层的变化后的空闲用户流量的大小,判断已创建测试中是否具有满足开启条件的测试,若具有,则开启满足开启条件的测试;
数据下发单元,用于响应于用户终端发送的所述应用程序的测试请求,根据所述用户终端的用户标识和各个测试层的测试层标识,在已开启测试中确定所述用户所属的测试,向所述用户提供所述所属的测试所针对的测试项的测试数据,以根据所述用户的反馈数据调整所述应用程序的与所述所针对的测试项相关的程序数据。
第三方面,本说明书又一个实施例提供了一种应用程序测试设备,包括:存储器、处理器和存储在所述存储器上并可在所述处理器上运行的计算机可执行指令,所述计算机可执行指令被所述处理器执行时实现如上述第一方面所述的应用程序测试方法的步骤。
第四方面,本说明书再一个实施例提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机可执行指令,所述计算机可执行指令被处理器执行时实现如上述第一方面所述的应用程序测试方法的步骤。
本说明书一实施例中,首先获取应用程序的测试层创建请求,根据测试层创建请求,为应用程序创建至少一个测试层。其次获取应用程序的测试创建请求,根据测试创建请求,在应用程序的各个测试层中创建测试,其中,测试创建请求中携带的测试所请求分配的用户流量的大小,大于测试所在的测试层的空闲用户流量的大小。在创建测试层和测试之后,监控测试层的空闲用户流量的大小变化情况,并根据已创建测试的最早开启时间、已创建测试所请求分配的用户流量的大小和已创建测试所在的测试层的变化后的空闲用户流量的大小,开启满足开启条件的测试。最后响应于用户终端发送的上述应用程序的测试请求,根据用户终端的用户标识和各个测试层的测试层标识,在已创建测试中确定用户所属的测试,向用户提供该所属的测试所针对的测试项的测试数据,以进行测试。可见通过本实施例,在创建测试时不要求测试所请求分配的用户流量的大小必须小于或等于测试所在的测试层的空闲用户流量的大小,从而减少了创建测试的限制条件,提高了测试创建效率。另外,可以自动开启测试,不需要人工手动开启测试,避免了测试滞后开启的问题,提高了测试运行效率。
附图说明
为了更清楚地说明本说明书一个或多个实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书一实施例提供的应用程序测试方法的流程示意图;
图2为本说明书一实施例提供的应用程序的测试层和桶的示意图;
图3为本说明书一实施例提供的在测试层中创建测试的示意图;
图4为本说明书一实施例提供的确定用户所对应的测试的示意图;
图5为本说明书一实施例提供的测试开启和结束的示意图;
图6为本说明书一实施例提供的应用程序测试装置的模块组成示意图;
图7为本说明书一实施例提供的应用程序测试设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书一个或多个实施例中的技术方案,下面将结合本说明书一个或多个实施例中的附图,对本说明书一个或多个实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书一个或多个实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本文件的保护范围。
本说明书一个实施例的目的是提供一种应用程序测试方法和装置,以解决目前应用程序的A/B测试,测试创建效率和测试运行效率较低的问题。
为便于理解本实施例,这里首先介绍本实施例所涉及的一些相关内容。
测试层:随着应用程序功能的增多,需要创建的A/B测试也随之变多。因此可以为应用程序创建测试层,每个测试层可以包括多个测试。位于同一测试层中的各个测试对应于应用程序的同一项目类别下的不同测试项目,不同测试层用于容纳对应于应用程序的不同项目类别的测试。比如,项目类别包括页面形态类和页面内容类,第一测试层中包括两个测试,分别对应于页面形态类下的页面展示颜色和页面字体大小,第二测试层中包括一个测试,对应于页面内容类下的页面标题内容。通过第一测试层中的两个测试,可以分别获知用户对于不同页面颜色和不同页面字体大小的反馈,通过第二测试层中的一个测试,可以获知用户对于相同正文内容但是不同标题的反馈。
用户流量:每个测试层都具有100%的用户流量,比如每个测试层都将一天内访问该应用程序的全部用户作为用户流量。同一测试层中的每个测试所占用的用户流量相互排斥,不同测试层中的测试所占用的用户流量可以复用。具体地,以第一测试层和第二测试层为例,第一测试层包括第一测试和第二测试,第二测试层包括第三测试和第四测试。第一测试占用第一测试层的50%的用户流量,第二测试占用第一测试层的50%的用户流量,一个用户若属于第一测试所占用的用户流量,则将不属于第二测试所占用的用户流量。第三测试占用第二测试层的50%的用户流量,第四测试占用第二测试层的50%的用户流量,一个用户若属于第一测试层中的某个测试所占用的用户流量,则也有可能属于第二测试层中的某个测试所占用的用户流量。
桶:每个测试层都具有100%的用户流量,这些用户流量承装在桶中,桶具有预定义的序号。比如,将某个测试层的用户流量分配至1000个桶中,桶的序号从0开始至999为止,则每个桶中承装有千分之一的用户流量。在为测试分配用户流量时,可以将桶分配给测试,比如为测试分配30%的流量,则将序号0-299的桶分配至该测试,以达到分配用户流量的效果。
下面介绍本实施例中的方法和装置。
图1为本说明书一实施例提供的应用程序测试方法的流程示意图,该方法可以应用在服务器端,由服务器执行,如图1所示,该方法包括以下步骤:
步骤S102,获取应用程序的测试层创建请求,根据测试层创建请求,为应用程序创建至少一个测试层;其中,测试层用于容纳为应用程序创建的测试,测试用于针对应用程序的同一测试项,向应用程序的不同用户提供不同的测试数据,以根据不同用户的反馈数据调整应用程序的与测试项相关的程序数据;位于同一测试层中的各个测试所针对的测试项属于同一项目类别;
步骤S104,获取应用程序的测试创建请求,根据测试创建请求,在测试层中创建测试;其中,测试创建请求中携带的测试所请求分配的用户流量的大小,大于测试所在的测试层的空闲用户流量的大小;
步骤S106,在创建测试层和测试之后,监控测试层的空闲用户流量的大小变化情况,根据已创建测试的最早开启时间、已创建测试所请求分配的用户流量的大小和已创建测试所在的测试层的变化后的空闲用户流量的大小,判断已创建测试中是否具有满足开启条件的测试,若具有,则开启满足开启条件的测试;
步骤S108,响应于用户终端发送的应用程序的测试请求,根据用户终端的用户标识和各个测试层的测试层标识,在已开启测试中确定用户所属的测试,向用户提供该所属的测试所针对的测试项的测试数据,以根据用户的反馈数据调整应用程序的与该所针对的测试项相关的程序数据。
本说明书一实施例中,首先获取应用程序的测试层创建请求,根据测试层创建请求,为应用程序创建至少一个测试层。其次获取应用程序的测试创建请求,根据测试创建请求,在应用程序的各个测试层中创建测试,其中,测试创建请求中携带的测试所请求分配的用户流量的大小,大于测试所在的测试层的空闲用户流量的大小。在创建测试层和测试之后,监控测试层的空闲用户流量的大小变化情况,并根据已创建测试的最早开启时间、已创建测试所请求分配的用户流量的大小和已创建测试所在的测试层的变化后的空闲用户流量的大小,开启满足开启条件的测试。最后响应于用户终端发送的上述应用程序的测试请求,根据用户终端的用户标识和各个测试层的测试层标识,在已创建测试中确定用户所属的测试,向用户提供该所属的测试所针对的测试项的测试数据,以进行测试。可见通过本实施例,在创建测试时不要求测试所请求分配的用户流量的大小必须小于或等于测试所在的测试层的空闲用户流量的大小,从而减少了创建测试的限制条件,提高了测试创建效率。另外,可以自动开启测试,不需要人工手动开启测试,避免了测试滞后开启的问题,提高了测试运行效率。
上述步骤S102中,获取应用程序的测试层创建请求,根据测试层创建请求,为应用程序创建至少一个测试层。根据前面对测试层的解释可知,测试层用于容纳为应用程序创建的测试,每个测试层可以包括多个测试。位于同一测试层中的各个测试所针对的测试项属于同一项目类别,位于不同测试层的测试所针对的测试项属于不同项目类别。
项目类别可以举例为前述的页面形态类和页面内容类。属于页面形态类的测试项可以举例为页面展示颜色和页面字体大小,属于页面内容类的测试项可以举例为页面标题内容。比如,项目类别包括页面形态类和页面内容类,第一测试层中包括两个测试,对应的测试项分别是页面形态类下的页面展示颜色和页面字体大小,第二测试层中包括一个测试,对应的测试项是页面内容类下的页面标题内容。通过第一测试层中的两个测试,可以分别获知用户对于不同页面颜色和不同页面字体大小的反馈,通过第二测试层中的一个测试,可以获知用户对于相同正文内容但是不同标题的反馈。
测试用于针对应用程序的同一测试项,向应用程序的不同用户提供不同的测试数据,以根据不同用户的反馈数据调整应用程序的与测试项相关的程序数据。以上例为例,测试项是页面形态类下的页面展示颜色,测试数据即为页面展示颜色数据。在进行相应测试时,向应用程序的一部分用户提供红色的页面颜色,向应用程序的另一部分用户提供绿色的页面颜色,从而获取这两部分用户对于各自所看到的页面颜色的反馈数据,根据该反馈数据调整应用程序的与页面展示颜色相关的程序数据。反馈数据包括但不限于用户的点赞数据、程序卸载数据等用户操作数据。程序数据可以是程序代码等数据。
另外,根据前面有关测试项的解释和有关用户流量的解释可知,每个测试层都具有100%的用户流量。同一测试层中的每个测试所占用的用户流量相互排斥,不同测试层中的测试所占用的用户流量可以复用。在一个具体的实施例中,可以基于业务需求为应用程序创建多个测试层,每个测试层拥有应用程序100%的用户流量,不同测试层可以复用用户流量。测试层创建请求中可以携带有测试层属性信息。测试层属性信息如下:
测试层ID:layerId,***自动生成的数字类型的唯一标识
测试层名称,layerName,值如:字符串类型,描述测试层表达的含义
测试层状态,layerStatus,0表示禁用,1表示启用,被禁用的测试层将不能再次参与创建测试,但对于已创建的测试将无影响
该实施例中,服务器可以获取携带有上述测试层属性信息的测试层创建请求,服务器根据该测试层创建请求创建测试层。
上述步骤S104中,获取应用程序的测试创建请求,测试创建请求中携带有所请求创建的测试的基本信息,比如测试的名称、测试项的名称、测试所在的测试层的标识等。测试创建请求中还携带有测试所请求分配的用户流量的大小。本实施例中不限制测试所请求分配的用户流量的大小的具体数值,可以大于该测试所在的测试层的空闲用户流量的大小。
在获取到测试创建请求后,根据该请求中携带的测试所在的测试层的标识,在应用程序的各个测试层中选取测试层,选取的测试层即为所要创建该测试的测试层。然后,在选取的测试层中创建测试。由于不限制测试所请求分配的用户流量的大小的具体数值,因此测试创建请求中携带的测试所请求分配的用户流量的大小,可以大于测试所在的测试层的空闲用户流量的大小。比如,测试创建请求中携带的测试所请求分配的用户流量的大小为40%,大于测试所在的测试层的空闲用户流量的大小20%。创建好的测试可以放入测试所在的测试层的测试队列,以等待测试开启。
在一个具体的实施例中,为应用程序创建测试,选择测试所属的测试层,不同测试可以选择相同测试层,但同一测试只能属于一个测试层。在测试创建请求中携带测试所请求分配的用户流量的大小,相当于为测试预申请用户流量,可以申请比所属测试层空闲用户流量更大的流量。与现有技术相比,这种预申请用户流量的方式的优点在于,不必等到用户流量释放后再创建测试,而是可以随时创建测试,创建好的测试可以放置到测试队列,以等待测试开启。该实施例中服务器创建测试的具体步骤如下:
(1)获取测试的基本信息、测试过滤规则和测试指标,测试的基本信息如下:
测试ID:testId,***自动生成的唯一标识;
测试名称:testName,测试名称,用于描述测试的功能和作用;
测试描述:testDescription,对测试的功能和作用以及所针对的测试项进行详细阐述;
所属应用程序:productName,所属应用程序名称;
测试时长:testDuration,单位可以选择天或者小时;
测试最早开启时间:testPreStartTime,测试最早开启时间,设定测试只要超过该时间并且具有足够的用户流量即可以开启;
测试开启时间:testStartTime,测试真正开启时间,当测试开启时,***自动记录;
测试结束时间:testEndTime,测试真正结束时间,当测试结束时,***自动记录;
测试状态:testStatus,测试状态可以有调试中、运行中、已结束等状态。
测试过滤规则包括两部分内容,分别为用户终端基本信息和用户信息,用户终端基本信息包括国家、语言、设备标识等,用户信息包括年龄、性别、职业等,设置测试过滤规则用于在用户中筛选能够参与测试的用户。
测试指标主要包括应用程序的日使用时长、日启动次数、点击次数、展示次数、点击人数、展示人数、每日新增人数、次日留存、7日留存等各种应用程序优化时关注的指标。
(2)获取测试所属的测试层的标识,并获取测试所请求分配的用户流量的大小,以为测试预申请用户流量,用户流量以百分比的形式记录。
(3)为测试创建对照组和测试组,对照组和测试组可以对测试所申请的用户流量进行再次细分,所有对照组和测试组的用户流量加和等于测试所请求分配的用户流量的大小。对照组的数量可以为一个或多个,测试组的数量可以为一个或多个。
(4)获取对照组所需的测试数据和测试组所需的测试数据。比如获取对照组所需的测试数据为页面颜色是红色,获取测试组所需的测试数据为页面颜色是绿色。
(5)根据以上获取的信息和数据创建测试,创建好的测试放入测试队列。
在创建测试层和测试之后,执行步骤S106,监控测试层的空闲用户流量的大小变化情况,根据已创建测试的最早开启时间、已创建测试所请求分配的用户流量的大小和已创建测试所在的测试层的变化后的空闲用户流量的大小,判断已创建测试中是否具有满足开启条件的测试,若具有,则开启满足开启条件的测试。其中,已创建测试的最早开启时间可以如上所示,记录在测试的基本信息中,服务器可以获取该基本信息。
本实施例中,已创建测试可以通过测试队列存储,一个测试层具备一个测试队列,同样地,一个测试层的用户流量也可以通过一个流量队列存储,一个测试层具备一个流量队列。比如针对每个测试层,为该测试层设置测试队列,测试队列用于存储该测试层的各个测试。在该测试层中创建测试之后,将创建的测试放入该测试层的测试队列,创建的测试结束之后,将该测试从该测试层的测试队列中移除。针对每个测试层,还为每个测试层设置流量队列,每个测试层具备一个流量队列,流量队列用于存储对应测试层的空闲用户流量。当某个测试层中某个测试开启时,可以从该测试层的流量队列的队头按照该测试所请求分配的用户流量的大小,获取空闲用户流量分配给该测试。当某个测试层中某个测试结束时,可以将该测试的用户流量释放到该测试层的流量队列的队尾。其中,若测试的已开启时长大于或等于测试的预设测试时长,则结束该测试。
基于以上内容,本实施例中,在创建测试之后,将已创建测试放入该测试所在的测试层的测试队列。每个测试层具备一个测试队列。在已创建测试开启后,若已创建测试的已开启时长等于或大于该测试的预设测试时长,则确定该测试满足结束条件,结束该测试,并将该测试从该测试所在的测试层的测试队列中移除。已创建测试的预设测试时长即为上述测试的基本信息中的测试时长。
相应地,本步骤中,监控测试层的空闲用户流量的大小变化情况,包括:监控测试层的流量队列保存的流量的大小变化情况。每个测试层具备一个流量队列,流量队列用于保存对应测试层的空闲用户流量。若测试层的流量队列保存的流量变多,说明测试层的空闲用户流量变多,反之,说明测试层的空闲用户流量变少。
本步骤中,根据已创建测试的最早开启时间、已创建测试所请求分配的用户流量的大小和已创建测试所在的测试层的变化后的空闲用户流量的大小,判断已创建测试中是否具有满足开启条件的测试,具体包括:
(a1)针对任意一个已创建测试,判断***时间是否到达或晚于该测试的最早开启时间,判断该测试所请求分配的用户流量的大小是否小于或等于该测试所在的测试层的变化后的空闲用户流量的大小;
(a2)若***时间到达或晚于该测试的最早开启时间,且,该测试所请求分配的用户流量的大小小于或等于该测试所在的测试层的变化后的空闲用户流量的大小,则确定该测试满足开启条件。
具体地,服务器通过以上两个动作,在确定***时间已经到达或晚于某测试的最早开启时间,且,该测试所在的测试层中有足够的空闲用户流量分配给该测试之后,确定该测试满足开启条件。
服务器确定某个测试满足开启条件之后,在开启该测试之前,还根据该测试所请求分配的用户流量的大小,从该测试层的流量队列中获取用户流量,将获取的用户流量分配给该测试。也即,服务器在开启已创建测试之前,根据已创建测试所请求分配的用户流量的大小,从已创建测试所在的测试层的流量队列中获取用户流量,将获取的用户流量分配给已创建测试。在具体分配时,可以从流量队列的队头获取空闲用户流量分配给所需测试,获取并分配给已创建测试的用户流量的大小等于已创建测试所请求分配的用户流量的大小。
在已创建测试结束之后,服务器还释放分配至已创建测试的用户流量至已创建测试所在的测试层的流量队列,具体释放至流量队列的队尾,以便于服务器后续从流量队列中获取该释放的流量开启测试层的其他测试。
本实施例中,在任意一个测试结束之后,不限制释放流量和从测试队列中移除测试这两个动作的先后顺序,可以先移除测试再释放流量,也可先释放流量再移除测试,也可以同步进行。
在一个具体的实施例中,服务器可以定时检测每个测试层的测试队列中是否有未开启的测试,若有,则判断***时间是否到达或晚于该测试的最早开启时间,以及,判断该测试所请求分配的用户流量的大小是否小于或等于相应测试层的变化后的空闲用户流量的大小,从而判断是否有足够的流量和合理的时间开启该测试。服务器在开启测试时,从相应测试层的流量对列的队头,按照测试所请求分配的用户流量的大小,为测试获取空闲用户流量并分配给测试。服务器还可以定时检测测试层的测试队列中是否有未结束的测试,若有,则判断该测试的已开启时长是否大于或等于该测试的测试时长,若是,则结束该测试,并释放该测试的用户流量至相应测试层的流量对列的队尾,并将该测试从相应的测试队列中移除。通过本实施例,服务器可以依次遍历每个测试层的测试队列,开启所有满足开启条件的测试,并结束需要结束的测试,提高了***自动化程度,提升用户流量转化效率,可以同步运行更多测试。
本实施例中,服务器可以通过分布式定时监测任务定时检测是否有测试满足开启条件或结束条件,控制测试自动开启和结束,完全实现测试的全生命周期管理。并且,通过队列的方式保存空闲用户流量,实现空闲用户流量的循环往复高效利用。
上述步骤S108中,应用程序可以在用户无感知的情况下定时通过用户终端向服务器发送测试请求。服务器在接收到用户终端发送的应用程序的测试请求后,响应于该请求,根据用户终端的用户标识和各个测试层的测试层标识,在已开启测试中确定用户所属的测试,向用户提供所属的测试所针对的测试项的测试数据,以根据用户的反馈数据调整应用程序的与所针对的测试项相关的程序数据。
本步骤中,根据用户终端的用户标识和各个测试层的测试层标识,在已创建测试中确定用户所属的测试,具体包括:
(b1)针对任意一个测试层,根据用户终端的用户标识、该测试层的测试层标识和预设的哈希算法,计算得到哈希值;
(b2)获取该测试层的用户流量所在的桶的最大序号,计算哈希值相对于所述最大序号的余数;
(b3)若余数位于该测试层中的任意一个已开启测试所对应的桶序号区间内,则确定该测试为用户所属的测试;其中,测试所对应的桶序号区间为分配至该测试的用户流量所在的桶的序号所组成的序号区间。
根据前述对桶的描述可知,用户流量承装在桶中,桶具有预定义的序号。在为测试分配流量时,可以将桶分配给测试,从而达到分配用户流量的效果。用户终端的用户标识可以为预先给用户定义的一串唯一数字,应用程序的每个测试层都具有测试层标识,测试层标识可以为预先定义的一串唯一数字。基于此,本步骤中,针对任意一个测试层,首先利用预设的哈希算法,对用户终端的用户标识、该测试层的测试层标识进行哈希运算,得到哈希值。然后获取该测试层的用户流量所在的桶的最大序号,计算哈希值相对于最大序号的余数。测试层的用户流量承装在桶中,若将测试层的桶的数量设定为1000,则桶的序号可以从0到999依次排列,上述最大序号即为999。
最后,确定该测试层中分配至每个测试的用户流量所在的桶的序号。由于分配至测试的用户流量所在的桶不可能是一个桶,因此这些桶的序号会组成桶序号区间,再确定这些桶的序号所组成的桶序号区间。判断上述计算得到的余数是否位于某个桶序号区间内,若位于,则该位于的已开启测试即为用户所属的测试。
这里通过一个具体的例子解释上面过程。假设某测试层的用户流量承装在1000个桶中,桶的序号从0到999依次排列,这1000个桶中,其中0-299这300个桶被分配至某测试。则本实施例中,利用预设的哈希算法,对用户终端的用户标识、该测试层的测试层标识进行哈希运算,得到哈希值,比如哈希值为2000,然后计算哈希值相对于最大序号999的余数,2000除以999取余等于2。由于2位于序号区间[0,299]之间,因此上述的某测试为用户所属的测试。一个具体的实施例中,预设哈希算法为MurmurHash算法。
本实施例中,在应用程序具有多个测试层,每个测试层具有至少一个测试的情况下,在接收到用户终端发送的应用程序的测试请求后,分别对用户终端的用户标识和各个测试层的测试层标识进行哈希运算,以确定用户在每个测试层中的余数,以确定用户在每个测试层中所属的测试。这种方式中,能够使同一用户在不同测试层中对应的余数不一样,从而使不同测试层的测试的互相影响降低到最小,使每个测试均可以独立运行,使测试指标统计数据更加精确。
本实施例中,若某测试为用户所属的测试,则向用户提供该所属的测试所针对的测试项的测试数据,以根据用户的反馈数据调整应用程序的与该所针对的测试项相关的程序数据。比如,所针对的测试项为页面字体大小,则向用户提供5号字体大小的页面数据作为测试数据,根据用户的反馈操作,比如点赞操作或者页面放大操作,调整应用程序的与页面字体大小有关的程序代码。
在一个具体的实施例中,用户终端可以基于接收到的测试数据,通过预设的规则设置页面展示不同的形态或者请求不同的业务接口获取不同的业务数据展示给用户,最终达到不同用户看到的界面形态和业务数据各异的目标。应用程序的页面可以预埋有打点数据,应用程序将打点结果上报给后台大数据,大数据基于测试指标要求及时生成指标报告,测试负责人即可以通过查看报表评估测试结果优劣,提升用户转化。
以上介绍了图1中的测试方法的具体过程。下面通过一个具体的例子进行解释。
图2为本说明书一实施例提供的应用程序的测试层和桶的示意图,如图2所示,为应用程序创建UI测试层、网关测试层、业务测试层,将每个测试层的用户流量分配至0-999的1000个桶中。UI测试层中的测试用于测试UI类的测试项。网关测试层中的测试用于测试网关类的测试项。业务测试层中的测试用于测试业务类的测试项。
图3为本说明书一实施例提供的在测试层中创建测试的示意图,如图3所示,在UI测试层创建测试A、测试B、测试C、测试D,分别预申请20%、40%、20%、40%的流量,其中,服务器为测试A分配序号为0-199的桶,为测试B分配序号为200-599的桶,为测试C分配序号为600-799的桶,剩余流量不够分给测试D,测试D将处于未开启状态,一直到可分配流量为止。服务器自动监测测试D的最早开启时间和UI测试层的空闲流量大小,如果达到了测试D的最早开启时间,并且已经拥有足够流量,则开启测试D。服务器还在网关测试层创建测试E,将序号为0-399的桶划分给测试E,剩余的400-999桶将为当前层的剩余流量。服务器没有在业务测试层创建测试。
图4为本说明书一实施例提供的确定用户所对应的测试的示意图,如图4所示,当用户终端发送应用程序的测试请求时,服务器将获取到用户的唯一标识如“359881030314356”,使用MurmurHash算法对(用户唯一标识+测试层ID)进行Hash运算,并将运算结果相对于每个测试层的最大桶序号取余,得到用户在不同测试层的桶号。如图4所示,用户在UI测试层命中的桶号在1-200之间,故在UI测试层命中测试A;在网关测试命中的桶号在400-600之间,属于空闲流量,没有命中任何测试;在业务测试层命中的桶号在200-400之间,同样没有命中任何测试,服务求将把命中的测试A的测试数据下发到用户终端。
图5为本说明书一实施例提供的测试开启和结束的示意图,如图5所示,服务器通过定时检测任务检测当前是否有待完成的测试,例如检测到了测试A已经开启了预设时长并且处于运行中状态,则结束测试A,并把测试A空余出的流量,即UI测试层的0-199桶放置到UI测试层的流量队列的队尾,供其它测试使用。服务器通过定时监测任务发现测试D已经具备开启条件,则把空闲流量800-999、0-199共400个桶分配给测试D,并开启测试D。
综上,通过本实施例中的测试方法,通过预申请流量的方式预先申请测试流量,测试可以提前创建,不必等到流量释放再创建测试。该方法可以用于测试的自动开启和结束,完全实现测试的全生命周期管理。该方法对多个测试层复用用户流量,每个测试层使用独立的桶计算方式,实现流量的随机分布,提高复用率。该方法使用队列保存空闲流量,实现流量的循环往复高效利用。
图6为本说明书一实施例提供的应用程序测试装置的模块组成示意图,如图6所示,该装置包括:
第一创建单元61,用于获取应用程序的测试层创建请求,根据所述测试层创建请求,为所述应用程序创建至少一个测试层;其中,所述测试层用于容纳为所述应用程序创建的测试,所述测试用于针对所述应用程序的同一测试项,向所述应用程序的不同用户提供不同的测试数据,以根据所述不同用户的反馈数据调整所述应用程序的与所述测试项相关的程序数据;位于同一测试层中的各个测试所针对的测试项属于同一项目类别;
第二创建单元62,用于获取应用程序的测试创建请求,根据所述测试创建请求,在所述测试层中创建测试;其中,所述测试创建请求中携带的测试所请求分配的用户流量的大小,大于测试所在的测试层的空闲用户流量的大小;
测试开启单元63,用于在创建测试层和测试之后,监控测试层的空闲用户流量的大小变化情况,根据已创建测试的最早开启时间、已创建测试所请求分配的用户流量的大小和已创建测试所在的测试层的变化后的空闲用户流量的大小,判断已创建测试中是否具有满足开启条件的测试,若具有,则开启满足开启条件的测试;
数据下发单元64,用于响应于用户终端发送的所述应用程序的测试请求,根据所述用户终端的用户标识和各个测试层的测试层标识,在已开启测试中确定所述用户所属的测试,向所述用户提供所述所属的测试所针对的测试项的测试数据,以根据所述用户的反馈数据调整所述应用程序的与所述所针对的测试项相关的程序数据。
可选地,所述测试开启单元具体用于:针对任意一个已创建测试,判断***时间是否到达或晚于该测试的最早开启时间,判断该测试所请求分配的用户流量的大小是否小于或等于该测试所在的测试层的变化后的空闲用户流量的大小;若***时间到达或晚于该测试的最早开启时间,且,该测试所请求分配的用户流量的大小小于或等于该测试所在的测试层的变化后的空闲用户流量的大小,则确定该测试满足开启条件。
可选地,所述数据下发单元具体用于:针对任意一个测试层,根据所述用户终端的用户标识、该测试层的测试层标识和预设的哈希算法,计算得到哈希值;获取该测试层的用户流量所在的桶的最大序号,计算所述哈希值相对于所述最大序号的余数;若所述余数位于该测试层中的任意一个已开启测试所对应的桶序号区间内,则确定该测试为所述用户所属的测试;其中,测试所对应的桶序号区间为分配至该测试的用户流量所在的桶的序号所组成的序号区间。
可选地,所述装置还包括队列控制单元,用于:在创建测试之后,将已创建测试放入该测试所在的测试层的测试队列;其中,每个测试层具备一个测试队列;在已创建测试开启后,若已创建测试的已开启时长等于或大于该测试的预设测试时长,则确定该测试满足结束条件;结束该测试,并将该测试从该测试所在的测试层的测试队列中移除。
可选地,所述测试开启单元具体用于:监控测试层的流量队列保存的流量的大小变化情况;其中,每个测试层具备一个流量队列,所述流量队列用于保存对应测试层的空闲用户流量。
可选地,所述装置还包括流量分配单元,用于:在开启已创建测试之前,根据已创建测试所请求分配的用户流量的大小,从已创建测试所在的测试层的流量队列中获取用户流量,将获取的用户流量分配给已创建测试;在已创建测试结束之后,释放分配至已创建测试的用户流量至已创建测试所在的测试层的流量队列,以便于从所述流量队列中获取该释放的流量开启测试层的其他测试。
本说明书一实施例中,首先获取应用程序的测试层创建请求,根据测试层创建请求,为应用程序创建至少一个测试层。其次获取应用程序的测试创建请求,根据测试创建请求,在应用程序的各个测试层中创建测试,其中,测试创建请求中携带的测试所请求分配的用户流量的大小,大于测试所在的测试层的空闲用户流量的大小。在创建测试层和测试之后,监控测试层的空闲用户流量的大小变化情况,并根据已创建测试的最早开启时间、已创建测试所请求分配的用户流量的大小和已创建测试所在的测试层的变化后的空闲用户流量的大小,开启满足开启条件的测试。最后响应于用户终端发送的上述应用程序的测试请求,根据用户终端的用户标识和各个测试层的测试层标识,在已创建测试中确定用户所属的测试,向用户提供该所属的测试所针对的测试项的测试数据,以进行测试。可见通过本实施例,在创建测试时不要求测试所请求分配的用户流量的大小必须小于或等于测试所在的测试层的空闲用户流量的大小,从而减少了创建测试的限制条件,提高了测试创建效率。另外,可以自动开启测试,不需要人工手动开启测试,避免了测试滞后开启的问题,提高了测试运行效率。
本说明书一实施例提供的应用程序测试装置能够实现前述应用程序测试方法实施例中的各个过程,并达到相同的功能和效果,这里不再重复。
进一步地,本说明书一个实施例还提供了一种应用程序测试设备,图7为本说明书一实施例提供的应用程序测试设备的结构示意图,如图7所示,该设备包括:存储器701、处理器702、总线703和通信接口704。存储器701、处理器702和通信接口704通过总线703进行通信,通信接口704可以包括输入输出接口,输入输出接口包括但不限于键盘、鼠标、显示器、麦克风、扩音器等。
图7中,所述存储器701上存储有可在所述处理器702上运行的计算机可执行指令,所述计算机可执行指令被所述处理器702执行时实现以下流程:
获取应用程序的测试层创建请求,根据所述测试层创建请求,为所述应用程序创建至少一个测试层;其中,所述测试层用于容纳为所述应用程序创建的测试,所述测试用于针对所述应用程序的同一测试项,向所述应用程序的不同用户提供不同的测试数据,以根据所述不同用户的反馈数据调整所述应用程序的与所述测试项相关的程序数据;位于同一测试层中的各个测试所针对的测试项属于同一项目类别;
获取应用程序的测试创建请求,根据所述测试创建请求,在所述测试层中创建测试;其中,所述测试创建请求中携带的测试所请求分配的用户流量的大小,大于测试所在的测试层的空闲用户流量的大小;
在创建测试层和测试之后,监控测试层的空闲用户流量的大小变化情况,根据已创建测试的最早开启时间、已创建测试所请求分配的用户流量的大小和已创建测试所在的测试层的变化后的空闲用户流量的大小,判断已创建测试中是否具有满足开启条件的测试,若具有,则开启满足开启条件的测试;
响应于用户终端发送的所述应用程序的测试请求,根据所述用户终端的用户标识和各个测试层的测试层标识,在已开启测试中确定所述用户所属的测试,向所述用户提供所述所属的测试所针对的测试项的测试数据,以根据所述用户的反馈数据调整所述应用程序的与所述所针对的测试项相关的程序数据。
可选地,所述计算机可执行指令被所述处理器执行时,根据已创建测试的最早开启时间、已创建测试所请求分配的用户流量的大小和已创建测试所在的测试层的变化后的空闲用户流量的大小,判断已创建测试中是否具有满足开启条件的测试,包括:
针对任意一个已创建测试,判断***时间是否到达或晚于该测试的最早开启时间,判断该测试所请求分配的用户流量的大小是否小于或等于该测试所在的测试层的变化后的空闲用户流量的大小;
若***时间到达或晚于该测试的最早开启时间,且,该测试所请求分配的用户流量的大小小于或等于该测试所在的测试层的变化后的空闲用户流量的大小,则确定该测试满足开启条件。
可选地,所述计算机可执行指令被所述处理器执行时,根据所述用户终端的用户标识和各个测试层的测试层标识,在已开启测试中确定所述用户所属的测试,包括:
针对任意一个测试层,根据所述用户终端的用户标识、该测试层的测试层标识和预设的哈希算法,计算得到哈希值;
获取该测试层的用户流量所在的桶的最大序号,计算所述哈希值相对于所述最大序号的余数;
若所述余数位于该测试层中的任意一个已开启测试所对应的桶序号区间内,则确定该测试为所述用户所属的测试;其中,测试所对应的桶序号区间为分配至该测试的用户流量所在的桶的序号所组成的序号区间。
可选地,所述计算机可执行指令被所述处理器执行时,还包括:
在创建测试之后,将已创建测试放入该测试所在的测试层的测试队列;其中,每个测试层具备一个测试队列;
在已创建测试开启后,若已创建测试的已开启时长等于或大于该测试的预设测试时长,则确定该测试满足结束条件;结束该测试,并将该测试从该测试所在的测试层的测试队列中移除。
可选地,所述计算机可执行指令被所述处理器执行时,监控测试层的空闲用户流量的大小变化情况,包括:
监控测试层的流量队列保存的流量的大小变化情况;其中,每个测试层具备一个流量队列,所述流量队列用于保存对应测试层的空闲用户流量。
可选地,所述计算机可执行指令被所述处理器执行时,还包括:
在开启已创建测试之前,根据已创建测试所请求分配的用户流量的大小,从已创建测试所在的测试层的流量队列中获取用户流量,将获取的用户流量分配给已创建测试;
在已创建测试结束之后,释放分配至已创建测试的用户流量至已创建测试所在的测试层的流量队列,以便于从所述流量队列中获取该释放的流量开启测试层的其他测试。
本说明书一实施例提供的应用程序测试设备能够实现前述应用程序测试方法实施例中的各个过程,并达到相同的功能和效果,这里不再重复。
进一步地,本说明书另一个实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机可执行指令,所述计算机可执行指令被处理器执行时实现以下流程:
获取应用程序的测试层创建请求,根据所述测试层创建请求,为所述应用程序创建至少一个测试层;其中,所述测试层用于容纳为所述应用程序创建的测试,所述测试用于针对所述应用程序的同一测试项,向所述应用程序的不同用户提供不同的测试数据,以根据所述不同用户的反馈数据调整所述应用程序的与所述测试项相关的程序数据;位于同一测试层中的各个测试所针对的测试项属于同一项目类别;
获取应用程序的测试创建请求,根据所述测试创建请求,在所述测试层中创建测试;其中,所述测试创建请求中携带的测试所请求分配的用户流量的大小,大于测试所在的测试层的空闲用户流量的大小;
在创建测试层和测试之后,监控测试层的空闲用户流量的大小变化情况,根据已创建测试的最早开启时间、已创建测试所请求分配的用户流量的大小和已创建测试所在的测试层的变化后的空闲用户流量的大小,判断已创建测试中是否具有满足开启条件的测试,若具有,则开启满足开启条件的测试;
响应于用户终端发送的所述应用程序的测试请求,根据所述用户终端的用户标识和各个测试层的测试层标识,在已开启测试中确定所述用户所属的测试,向所述用户提供所述所属的测试所针对的测试项的测试数据,以根据所述用户的反馈数据调整所述应用程序的与所述所针对的测试项相关的程序数据。
可选地,所述计算机可执行指令被处理器执行时,根据已创建测试的最早开启时间、已创建测试所请求分配的用户流量的大小和已创建测试所在的测试层的变化后的空闲用户流量的大小,判断已创建测试中是否具有满足开启条件的测试,包括:
针对任意一个已创建测试,判断***时间是否到达或晚于该测试的最早开启时间,判断该测试所请求分配的用户流量的大小是否小于或等于该测试所在的测试层的变化后的空闲用户流量的大小;
若***时间到达或晚于该测试的最早开启时间,且,该测试所请求分配的用户流量的大小小于或等于该测试所在的测试层的变化后的空闲用户流量的大小,则确定该测试满足开启条件。
可选地,所述计算机可执行指令被处理器执行时,根据所述用户终端的用户标识和各个测试层的测试层标识,在已开启测试中确定所述用户所属的测试,包括:
针对任意一个测试层,根据所述用户终端的用户标识、该测试层的测试层标识和预设的哈希算法,计算得到哈希值;
获取该测试层的用户流量所在的桶的最大序号,计算所述哈希值相对于所述最大序号的余数;
若所述余数位于该测试层中的任意一个已开启测试所对应的桶序号区间内,则确定该测试为所述用户所属的测试;其中,测试所对应的桶序号区间为分配至该测试的用户流量所在的桶的序号所组成的序号区间。
可选地,所述计算机可执行指令被处理器执行时,还包括:
在创建测试之后,将已创建测试放入该测试所在的测试层的测试队列;其中,每个测试层具备一个测试队列;
在已创建测试开启后,若已创建测试的已开启时长等于或大于该测试的预设测试时长,则确定该测试满足结束条件;结束该测试,并将该测试从该测试所在的测试层的测试队列中移除。
可选地,所述计算机可执行指令被处理器执行时,监控测试层的空闲用户流量的大小变化情况,包括:
监控测试层的流量队列保存的流量的大小变化情况;其中,每个测试层具备一个流量队列,所述流量队列用于保存对应测试层的空闲用户流量。
可选地,所述计算机可执行指令被处理器执行时,还包括:
在开启已创建测试之前,根据已创建测试所请求分配的用户流量的大小,从已创建测试所在的测试层的流量队列中获取用户流量,将获取的用户流量分配给已创建测试;
在已创建测试结束之后,释放分配至已创建测试的用户流量至已创建测试所在的测试层的流量队列,以便于从所述流量队列中获取该释放的流量开启测试层的其他测试。
本说明书一实施例提供的存储介质能够实现前述应用程序测试方法实施例中的各个过程,并达到相同的功能和效果,这里不再重复。
其中,所述的计算机可读存储介质包括只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书的实施例而已,并不用于限制本文件。对于本领域技术人员来说,本说明书的实施例可以有各种更改和变化。凡在本文件的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本文件的权利要求范围之内。
Claims (10)
1.一种应用程序测试方法,其特征在于,包括:
获取应用程序的测试层创建请求,根据所述测试层创建请求,为所述应用程序创建至少一个测试层;其中,所述测试层用于容纳为所述应用程序创建的测试,所述测试用于针对所述应用程序的同一测试项,向所述应用程序的不同用户提供不同的测试数据,以根据所述不同用户的反馈数据调整所述应用程序的与所述测试项相关的程序数据;位于同一测试层中的各个测试所针对的测试项属于同一项目类别;
获取应用程序的测试创建请求,根据所述测试创建请求,在所述测试层中创建测试;其中,针对所述测试创建请求中携带的测试所请求分配的用户流量,所述请求分配的用户流量的大小大于测试所在的测试层的空闲用户流量的大小;
在创建测试层和测试之后,监控测试层的空闲用户流量的大小变化情况,根据已创建测试的最早开启时间、已创建测试所请求分配的用户流量的大小和已创建测试所在的测试层的变化后的空闲用户流量的大小,判断已创建测试中是否具有满足开启条件的测试,若具有,则开启满足开启条件的测试;
响应于用户终端发送的所述应用程序的测试请求,根据所述用户终端的用户标识和各个测试层的测试层标识,在已开启测试中确定所述用户所属的测试,向所述用户提供所述所属的测试所针对的测试项的测试数据,以根据所述用户的反馈数据调整所述应用程序的与所述所针对的测试项相关的程序数据;
在创建测试之后,将已创建测试放入该测试所在的测试层的测试队列;其中,每个测试层具备一个测试队列;在已创建测试开启后,若已创建测试的已开启时长等于或大于该测试的预设测试时长,则确定该测试满足结束条件;结束该测试,并将该测试从该测试所在的测试层的测试队列中移除。
2.根据权利要求1所述的方法,其特征在于,根据已创建测试的最早开启时间、已创建测试所请求分配的用户流量的大小和已创建测试所在的测试层的变化后的空闲用户流量的大小,判断已创建测试中是否具有满足开启条件的测试,包括:
针对任意一个已创建测试,判断***时间是否到达或晚于该测试的最早开启时间,判断该测试所请求分配的用户流量的大小是否小于或等于该测试所在的测试层的变化后的空闲用户流量的大小;
若***时间到达或晚于该测试的最早开启时间,且,该测试所请求分配的用户流量的大小小于或等于该测试所在的测试层的变化后的空闲用户流量的大小,则确定该测试满足开启条件。
3.根据权利要求1所述的方法,其特征在于,根据所述用户终端的用户标识和各个测试层的测试层标识,在已开启测试中确定所述用户所属的测试,包括:
针对任意一个测试层,根据所述用户终端的用户标识、该测试层的测试层标识和预设的哈希算法,计算得到哈希值;
获取该测试层的用户流量所在的桶的最大序号,计算所述哈希值相对于所述最大序号的余数;
若所述余数位于该测试层中的任意一个已开启测试所对应的桶序号区间内,则确定该测试为所述用户所属的测试;其中,测试所对应的桶序号区间为分配至该测试的用户流量所在的桶的序号所组成的序号区间。
4.根据权利要求1所述的方法,其特征在于,监控测试层的空闲用户流量的大小变化情况,包括:
监控测试层的流量队列保存的流量的大小变化情况;其中,每个测试层具备一个流量队列,所述流量队列用于保存对应测试层的空闲用户流量。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
在开启已创建测试之前,根据已创建测试所请求分配的用户流量的大小,从已创建测试所在的测试层的流量队列中获取用户流量,将获取的用户流量分配给已创建测试;
在已创建测试结束之后,释放分配至已创建测试的用户流量至已创建测试所在的测试层的流量队列,以便于从所述流量队列中获取该释放的流量开启测试层的其他测试。
6.一种应用程序测试装置,其特征在于,包括:
第一创建单元,用于获取应用程序的测试层创建请求,根据所述测试层创建请求,为所述应用程序创建至少一个测试层;其中,所述测试层用于容纳为所述应用程序创建的测试,所述测试用于针对所述应用程序的同一测试项,向所述应用程序的不同用户提供不同的测试数据,以根据所述不同用户的反馈数据调整所述应用程序的与所述测试项相关的程序数据;位于同一测试层中的各个测试所针对的测试项属于同一项目类别;
第二创建单元,用于获取应用程序的测试创建请求,根据所述测试创建请求,在所述测试层中创建测试;其中,针对所述测试创建请求中携带的测试所请求分配的用户流量,所述请求分配的用户流量的大小大于测试所在的测试层的空闲用户流量的大小;
测试开启单元,用于在创建测试层和测试之后,监控测试层的空闲用户流量的大小变化情况,根据已创建测试的最早开启时间、已创建测试所请求分配的用户流量的大小和已创建测试所在的测试层的变化后的空闲用户流量的大小,判断已创建测试中是否具有满足开启条件的测试,若具有,则开启满足开启条件的测试;
数据下发单元,用于响应于用户终端发送的所述应用程序的测试请求,根据所述用户终端的用户标识和各个测试层的测试层标识,在已开启测试中确定所述用户所属的测试,向所述用户提供所述所属的测试所针对的测试项的测试数据,以根据所述用户的反馈数据调整所述应用程序的与所述所针对的测试项相关的程序数据;
所述装置还包括队列控制单元,用于:在创建测试之后,将已创建测试放入该测试所在的测试层的测试队列;其中,每个测试层具备一个测试队列;在已创建测试开启后,若已创建测试的已开启时长等于或大于该测试的预设测试时长,则确定该测试满足结束条件;结束该测试,并将该测试从该测试所在的测试层的测试队列中移除。
7.根据权利要求6所述的装置,其特征在于,所述测试开启单元具体用于:
针对任意一个已创建测试,判断***时间是否到达或晚于该测试的最早开启时间,判断该测试所请求分配的用户流量的大小是否小于或等于该测试所在的测试层的变化后的空闲用户流量的大小;
若***时间到达或晚于该测试的最早开启时间,且,该测试所请求分配的用户流量的大小小于或等于该测试所在的测试层的变化后的空闲用户流量的大小,则确定该测试满足开启条件。
8.根据权利要求6所述的装置,其特征在于,所述数据下发单元具体用于:
针对任意一个测试层,根据所述用户终端的用户标识、该测试层的测试层标识和预设的哈希算法,计算得到哈希值;
获取该测试层的用户流量所在的桶的最大序号,计算所述哈希值相对于所述最大序号的余数;
若所述余数位于该测试层中的任意一个已开启测试所对应的桶序号区间内,则确定该测试为所述用户所属的测试;其中,测试所对应的桶序号区间为分配至该测试的用户流量所在的桶的序号所组成的序号区间。
9.根据权利要求6所述的装置,其特征在于,所述测试开启单元具体用于:
监控测试层的流量队列保存的流量的大小变化情况;其中,每个测试层具备一个流量队列,所述流量队列用于保存对应测试层的空闲用户流量。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括流量分配单元,用于:
在开启已创建测试之前,根据已创建测试所请求分配的用户流量的大小,从已创建测试所在的测试层的流量队列中获取用户流量,将获取的用户流量分配给已创建测试;
在已创建测试结束之后,释放分配至已创建测试的用户流量至已创建测试所在的测试层的流量队列,以便于从所述流量队列中获取该释放的流量开启测试层的其他测试。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010354098.6A CN111581087B (zh) | 2020-04-29 | 2020-04-29 | 应用程序测试方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010354098.6A CN111581087B (zh) | 2020-04-29 | 2020-04-29 | 应用程序测试方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111581087A CN111581087A (zh) | 2020-08-25 |
CN111581087B true CN111581087B (zh) | 2022-11-29 |
Family
ID=72111852
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010354098.6A Active CN111581087B (zh) | 2020-04-29 | 2020-04-29 | 应用程序测试方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111581087B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113411269B (zh) * | 2021-07-07 | 2022-05-17 | 杭州网易云音乐科技有限公司 | 限流控制方法、限流控制装置、存储介质及电子设备 |
CN115048284B (zh) * | 2022-03-24 | 2024-01-23 | 上海任意门科技有限公司 | 用于测试***的应用的方法、计算设备和存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104281611A (zh) * | 2013-07-08 | 2015-01-14 | 阿里巴巴集团控股有限公司 | 网站测试***中的用户流量分配方法及装置 |
CN104348679A (zh) * | 2013-08-08 | 2015-02-11 | 阿里巴巴集团控股有限公司 | 一种分桶测试的方法、装置和*** |
CN105610654A (zh) * | 2016-03-02 | 2016-05-25 | 合一网络技术(北京)有限公司 | 一种服务器、策略在线测试的方法及*** |
CN110034969A (zh) * | 2019-03-12 | 2019-07-19 | 平安城市建设科技(深圳)有限公司 | 网页测试方法、装置、设备及存储介质 |
WO2019192103A1 (zh) * | 2018-04-03 | 2019-10-10 | 平安科技(深圳)有限公司 | 并发访问控制方法、装置、终端设备及介质 |
CN110750436A (zh) * | 2018-07-23 | 2020-02-04 | 腾讯科技(深圳)有限公司 | 分层测试方法、装置、计算机可读介质及电子设备 |
CN110865937A (zh) * | 2019-11-08 | 2020-03-06 | 腾讯音乐娱乐科技(深圳)有限公司 | 一种应用测试方法、装置和存储介质 |
-
2020
- 2020-04-29 CN CN202010354098.6A patent/CN111581087B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104281611A (zh) * | 2013-07-08 | 2015-01-14 | 阿里巴巴集团控股有限公司 | 网站测试***中的用户流量分配方法及装置 |
CN104348679A (zh) * | 2013-08-08 | 2015-02-11 | 阿里巴巴集团控股有限公司 | 一种分桶测试的方法、装置和*** |
CN105610654A (zh) * | 2016-03-02 | 2016-05-25 | 合一网络技术(北京)有限公司 | 一种服务器、策略在线测试的方法及*** |
WO2019192103A1 (zh) * | 2018-04-03 | 2019-10-10 | 平安科技(深圳)有限公司 | 并发访问控制方法、装置、终端设备及介质 |
CN110750436A (zh) * | 2018-07-23 | 2020-02-04 | 腾讯科技(深圳)有限公司 | 分层测试方法、装置、计算机可读介质及电子设备 |
CN110034969A (zh) * | 2019-03-12 | 2019-07-19 | 平安城市建设科技(深圳)有限公司 | 网页测试方法、装置、设备及存储介质 |
CN110865937A (zh) * | 2019-11-08 | 2020-03-06 | 腾讯音乐娱乐科技(深圳)有限公司 | 一种应用测试方法、装置和存储介质 |
Non-Patent Citations (1)
Title |
---|
基于用户行为和会话的Web应用测试方法;武晋南等;《计算机工程》;20100420(第08期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111581087A (zh) | 2020-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108683818B (zh) | 呼叫中心分配坐席的方法、***、设备及存储介质 | |
CN107689953B (zh) | 一种面向多租户云计算的容器安全监控方法及*** | |
CN102929961B (zh) | 基于构建快速数据分级通道的数据处理方法及其装置 | |
CN111581087B (zh) | 应用程序测试方法和装置 | |
CN109981702B (zh) | 一种文件存储方法及*** | |
CN107018091A (zh) | 资源请求的调度方法和装置 | |
CN103701934A (zh) | 一种资源优化调度方法及虚拟机宿主机优化选择方法 | |
CN110569298A (zh) | 一种数据对接、可视化方法和*** | |
CN105763595A (zh) | 一种提高数据处理效率的方法及服务器 | |
CN111813573A (zh) | 管理平台与机器人软件的通信方法及其相关设备 | |
CN111984495A (zh) | 一种大数据监控方法、装置和存储介质 | |
CN109902919A (zh) | 服务器资产管理方法、装置、设备及可读存储介质 | |
CN104835063A (zh) | 一种电子商务平台通讯排队方法及*** | |
CN112579692A (zh) | 一种数据同步方法、装置、***、设备及存储介质 | |
CN111464331A (zh) | 一种线程创建的控制方法、***及终端设备 | |
CN108520401B (zh) | 用户名单管理方法、装置、平台及存储介质 | |
CN110262955A (zh) | 基于pinpoint的应用性能监控工具 | |
CN109992408B (zh) | 一种资源分配方法、装置、电子设备和存储介质 | |
CN113726856A (zh) | 基于微服务的调控画面综合数据轻量化交互方法及*** | |
CN103258389A (zh) | 自助终端上传文件的方法、***和自助终端 | |
CN114070707A (zh) | 一种互联网性能监控方法及*** | |
CN104378239A (zh) | 基于集群框架的快速可靠性指标统计***及方法 | |
CN107277143A (zh) | 一种资源匹配管理方法及装置 | |
CN110932935A (zh) | 资源控制方法、装置、设备及计算机存储介质 | |
CN110502346A (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 |