本申请涉及测试技术领域,尤其涉及一种业务测试方法及装置。
背景技术:
随着互联网和计算机技术的迅速发展,越来越多的业务交互通过互联网进行。一般的业务交互过程是:用户向业务服务器发送业务请求,业务服务器响应于该业务请求,进行相应的业务处理,然后将业务处理结果返回给用户。
业务的提供方为了提高业务交互过程中的服务质量,经常针对业务服务器进行业务测试,并根据测试结果对业务服务器的业务功能或性能进行改进。比如,常见的测试可以包括压力测试、负载测试、功能测试等。在现有技术中,具体进行业务测试时,一般是分别模拟每个场景,并分别在模拟出的每个场景下进行业务测试(也即,进行单场景业务测试),获得测试结果。
但是,在实际应用中,不同业务有不同的场景,每种业务自身也可以有不止一种场景,从而一项真实业务交互通常并不一定只在单个场景下进行,而可能是在由多个场景组成的复合场景下进行的,因此,通过现有技术中的业务测试方法,获得的测试结果难以反映真实业务交互时业务服务器的业务功能或性能表现,实用性较差。
技术实现要素:
本申请实施例提供一种业务测试方法及装置,用以解决通过现有技术中的业务测试方法,获得的测试结果难以反映真实业务交互时业务服务器的业务功能或性能表现,实用性较差的问题。
本申请实施例提供的一种业务测试方法,包括:
获取根据真实业务交互生成的业务日志生成的测试模板,所述测试模板反映所述真实业务交互对应的业务信息和交互过程信息;
根据所述测试模板和预定测试数据,生成业务测试任务;
执行所述业务测试任务,获得业务测试结果。
本申请实施例提供的一种业务测试装置,包括:
获取模块,用于获取根据真实业务交互生成的业务日志生成的测试模板,所述测试模板反映所述真实业务交互对应的业务信息和交互过程信息;
生成模块,用于根据所述测试模板和预定测试数据,生成业务测试任务;
测试模块,用于执行所述业务测试任务,获得业务测试结果。
本申请实施例通过上述至少一种技术方案,由于业务测试任务是基于真实业务交互生成的,因此,通过执行该业务测试任务,获得的测试结果可以反映真实业务交互时业务服务器的业务功能或性能表现,实用性较好。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例提供的业务测试方法的过程;
图2为本申请实施例提供的在实际应用下,一种可以用于实施本申请的方案的系统的结构图;
图3为本申请实施例提供的,利用图2中的系统对本申请的方案的实施流程;
图4为本申请实施例提供的业务测试装置结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请实施例中,所述的真实业务交互可以指:一个真实用户或多个真实用户在一段时间内与业务服务器之间的业务交互。
在相关技术中,在进行业务测试时,对单场景的模拟比较简单,而在需要对复合场景进行模拟时,则需要对历史业务数据进行统计分析,得出各业务以及各业务的各场景所占比例,这种统计分析很困难,而且,即使确定出了比例,对于用于业务测试的各业务请求,也难以按照真实业务交互的过程生成以及发送,因此,也会导致背景技术中提到的问题。
为了解决上述的问题,在本申请实施例中,可以绕开各种复杂的统计分析,直接根据真实业务交互的业务日志,对真实业务交互的过程进行还原,则无论是单场景,还是复合场景,都可以比较真实地进行模拟,进而可以进行业务测试,获得实用性较好的测试结果。需要说明的是,本申请的方案既适用于压力测试、负载测试等性能方面的测试,也适用于功能方面的测试。下面对本申请的方案进行具体说明。
图1为本申请实施例提供的业务测试方法的过程,该过程的执行主体可以是一般的终端或服务器,也可以是专用于测试的终端或服务器。所述终端包括但不限于:个人计算机、手机、平板电脑、智能手表、车载移动台等;所述服务器包括但不限于:个人计算机、大中型计算机、计算机集群等。执行主体并不构成对本申请的限定。
图1中的过程具体可以包括以下步骤:
S101:获取根据真实业务交互生成的业务日志生成的测试模板,所述测试模板反映所述真实业务交互对应的业务信息和交互过程信息。
所述真实业务交互可以是在任意时段内进行的,可以是由任意数量的用户参与的,本申请实施例对此并不做限定。在实际应用中,可以根据测试需求,确定与测试需求匹配的时段,然后,获取根据在匹配的时段内的真实业务交互生成的业务日志生成的测试模板,用于后续步骤,这样的话,获取的测试结果更符合真实状况,实用性也更高。
例如,假定根据测试需求,要对某业务进行压力测试。历史业务数据统计表明,晚上8点至9点是该业务的高峰时段,在该高峰时段内,针对该业务与业务服务器进行业务交互的用户数量是最多的。则可以认为,在实际应用中,业务服务器压力最大的时段即为该高峰时段,因此,可以将该高峰时段确定为与测试需求匹配的时段。
在本申请实施例中,对根据真实业务交互,生成业务日志的方法并不做限定。一般的,业务服务器针对与各用户的业务交互过程,都会记录相应的业务日志,可以直接将该业务日志用于实施本申请的方案,这样可以减少本申请的方案的实施成本;当然,也可以针对本申请的方案,专门对业务日志的格式进行预先定义,使得业务日志至少包括与本申请的方案所需的信息字段即可,这样可以提高后续解析业务日志的效率。
在本申请实施例中,业务日志中可以记录与该业务交互过程相关的信息,如业务类型、业务参数、业务交互时间等,其中,业务参数包括但不限于服务器标识、业务请求号、用户标识、用于记录业务资源的参数,等等。
进一步地,根据业务日志,可以还原真实业务交互过程。还原的真实业务交互过程可以用步骤S101中生成的测试模板进行格式化表示。还原的真实业务交互过程主要可以包含如下两部分信息:
第一部分,真实业务交互对应的业务信息。业务信息可以反映真实业务交互所涉及的业务本身的信息,其可以是业务类型、业务参数、以及对业务参数进行转换后生成的动态业务参数等。
第二部分,真实业务交互对应的交互过程信息。真实业务交互可以涉及至 少一条业务请求的消息和/或对应的响应消息,交互过程信息可以反映真实业务交互所涉及的这些消息之间的逻辑顺序和收发时间顺序。
S102:根据所述测试模板和预定测试数据,生成业务测试任务。
在本申请实施例中,所述预定测试数据可以包括模板赋值数据和/或测试需求数据。
模板赋值数据可以用于填充测试模板,填充后测试模板可以作为可执行的任务;进一步地,测试需求数据可以用于指示该可执行的任务的具体执行方式,如,在什么时间开始执行、由几个任务执行器执行、该可执行的任务的并发执行数量,等等。
S103:执行所述业务测试任务,获得业务测试结果。
在本申请实施例中,执行业务测试任务,具体可以是:根据业务测试任务,模拟一个或多个用户,在指定的时间,向业务服务器发送指定的业务请求。其中,用户的数量和业务请求的数量均取决于业务测试任务,各业务请求可以是相互独立的,也可以是有依赖关系的。
业务测试任务可以单线程执行,也可以多线程执行。进一步地,当多线程执行时,可以单机多线程执行,也可以多机多线程执行,业务测试任务可以被按照预定分配方式,分配给各个线程执行。
在本申请实施例中,业务测试结果可以是在执行业务测试任务的过程中,业务服务器返回的业务处理结果,也可以是对业务处理结果进行分析后获得的分析结果。
通过上述方法,由于业务测试任务是基于真实业务交互生成的,因此,通过执行该业务测试任务,获得的测试结果可以反映真实业务交互时业务服务器的业务功能或性能表现,实用性较好。
为了便于理解,对图1中的步骤进一步地进行说明。
在本申请实施例中,测试模板可以是预先生成的,也可以是在执行步骤S101时实时地生成的。生成测试模板的设备可以是图1中步骤的执行主体, 也可以是其他设备,如业务服务器或用户终端等。
对于步骤S101,可以按照如下方法,根据真实业务交互生成的业务日志生成测试模板:获取根据真实业务交互生成的业务日志,所述业务日志包含一条或多条日志记录;通过对各所述日志记录进行解析,以及参数转换,生成测试模板,所述测试模板反映所述真实业务交互对应的业务信息和交互过程信息。
在本申请实施例中,每一条日志记录可以对应于某个用户发送的一个业务请求,该日志记录中可以记录该业务请求的相关信息,所述相关信息可以包括:业务类型、业务参数和业务交互时间;其中,业务交互时间可以指发送业务请求的时间,也可以指业务服务器在接收到该业务请求后写下该日志记录的时间。
在生成测试模板的过程中,可能要对业务参数中的某些参数进行转换。这些参数可以是与真实用户具有关联关系的参数,如用户标识,也可以是用于标识真实业务请求的参数,如业务请求号、当前时间、业务交互时间,等等。需要转换的原因是:若不对这些参数进行转换,就直接用在测试模板中,则可能会扰乱真实用户的数据。
根据上面的分析,通过对各所述日志记录进行解析,以及参数转换,生成测试模板,具体可以包括:对各所述日志记录进行解析,获得各所述日志记录包含业务类型、业务参数和业务交互时间;将获得的各业务参数中的指定参数转换为动态业务参数,将获得的各业务类型、所述各业务参数中未被转换的参数,以及转换得到的各动态业务参数作为所述真实业务交互对应的业务信息;将获得的各业务交互时间转换为相对时间,将各所述相对时间,以及各所述相对时间与所述业务信息的对应关系作为所述真实业务交互对应的交互过程信息;根据所述真实业务交互对应的业务信息和交互过程信息,生成测试模板。
各动态业务参数可以在生成业务测试任务时,再实时地赋值(也即,将真实用户用虚拟用户替代),通过这样的方式,可以根据真实用户与业务服务器 之间的交互,用虚拟用户来模拟替代真实用户,与业务服务器进行交互。下面举例对上述的参数转换进行说明。
例如,假定业务参数中包含有名称为“用户A”用户标识,则可以将该用户标识转换为动态业务参数“$user_no”,需要说明的是,“$user_no”只是该动态业务参数的名称的一个示例。在实际应用中,该动态业务参数的名称不与任一真实用户的用户标识相同即可。
类似的,可以将业务参数中包含的业务请求号转换为动态业务参数“$unique_no”,可以将当前时间转换为动态业务参数“$current_time”,等等。当然,“$unique_no”、“$current_time”也是动态业务参数的名称示例。
除了业务参数以外,还可以将各业务交互时间转换为相对时间,以便于后续根据各相对时间相互之间的时间顺序,执行为各相对时间模拟生成的业务请求。举例进行和说明。
例如,假定第一条日志记录包含的业务交互时间为10:00:00.000(时间的年月日部分在此省略,未示出)。则可以将其转换为相对时间0毫秒(ms),进而可以将其他的日志记录包含的业务交互时间,以第一条日志记录的相对时间为基准,也相应地转换为相对时间(也即,与第一条日志记录的相对时间相差的时间长度)。假定另一条日志记录包含的业务交互时间为10:00:02.000,则可以转换为相对时间2000ms。
按照上面的方法,根据每条日志记录,可以分别生成与该日志记录对应的一组特定数据,该组特定数据可以包括:该条日志记录包含的业务类型和业务参数、转换得到的动态业务参数、转换得到的相对时间。根据各条日志记录的顺序,相应地对根据各条日志记录生成的各组特定数据进行组织,可以生成测试模板。
在本申请实施例中,对于步骤S102,预定测试数据可以包括模板赋值数据和测试需求数据;根据所述测试模板和预定测试参数,生成业务测试任务,具体可以包括:根据所述模板赋值参数,为所述测试模板中的动态业务参数赋 值;根据所述测试需求数据和赋值后的所述测试模板,生成业务测试任务。下面分别对模板赋值数据、测试需求数据进行说明。
在获取测试模板后,可以通过对测试模板进行数据赋值填充,模拟出真实业务交互的过程,用于填充测试模板的这部分数据即可以是模板赋值数据。
例如,对于动态业务参数“$user_no”,可以生成虚拟的用户标识作为模板赋值数据,对“$user_no”进行赋值。具体的,可以将测试模板中的“$user_no”替换为虚拟的用户标识。当然,虚拟的用户标识可以有多个,对于每一个真实用户的用户标识,可以分别生成一个虚拟的用户标识进行替换。
需要说明的是,本申请实施例对生成模板赋值数据的方式并不做限定。在实际应用中,可以采用随机数发生器或随机字符串发生器,生成模板赋值数据,也可以根据其他规则,生成模板赋值数据。
测试需求数据则可以用于指定后续测试时的相关需求。一般地,相关需求可以是:开始进行业务测试的时间,要进行的业务测试所属的测试类型(可以属于压力测试、负载测试等),根据业务测试所属的测试类型对测试模板或填充后的测试模板进行的调整(若属于压力测试或负载测试,在进行业务测试时,可以将模拟的业务交互的过程对应的业务量放大若干倍,如将业务量复制生成多个副本,从而可以并行地请求业务服务器进行处理),对测试环境的需求(如测试脚本语言类型、测试设备的操作系统等),等等。
在本申请实施例中,对于步骤S102,执行所述业务测试任务,获得业务测试结果,具体可以包括:针对所述业务测试任务包含的所述相对时间,根据所述相对时间对应的业务类型、业务参数和赋值后的动态业务参数,生成对应的业务请求;根据所述业务测试任务包含的测试需求数据和所述相对时间,向业务服务器发送生成的业务请求,获得业务服务器响应于所述业务请求,返回的业务处理结果;根据所述业务处理结果,确定业务测试结果。
对于根据真实业务交互生成的业务日志,每一条日志记录可以对应于真实用户发送的一个业务请求。相应地,在基于该业务日志,生成的业务测试任务 中,也包含了用于模拟真实用户发送的各业务请求,生成业务测试用的各业务请求的数据,也即,赋值后的上述的各组特定数据。进一步地,可以按照业务测试任务包含的各相对时间的顺序,向业务服务器发送各相对时间对应的、业务测试用的各业务请求。由此可见,执行业务测试任务的过程,是对真实业务交互过程的还原和模拟,因此,可以认为获得业务测试结果可以反映业务服务器在真实业务交互中的功能和性能表现。
在本申请实施例中,真实业务交互可能涉及多个真实用户,则业务测试任务也可能涉及多个虚拟用户。各真实用户与业务服务器之间的交互是相互独立的,则各真实用户可以并行地向业务服务器发送业务请求。
因此,在执行业务测试任务时,可以对业务测试任务进行拆分或复制,并分配给一个或多个任务执行器共同执行。其中,每个任务执行器可以单线程执行业务测试任务,也可以多线程执行业务测试任务,每个线程可以分别负责为一个虚拟用户生成以及发送业务请求。
根据上面的说明,对于步骤S103,执行所述业务测试任务,具体可以包括:按照预定分配方式,将所述业务测试任务分配给一个或多个任务执行器,以便于所述任务执行器根据所述业务测试任务包含的所述相对时间,执行所述业务测试任务。本申请实施例对分配方式并不做限定,可以按照虚拟用户与县城之间的对应关系分配,也可以平均分配,等等。
在实际应用中,为了提高测试效率,分配业务测试任务的这部分工作可以由专门的调度模块或调度装置完成。
在本申请实施例中,各任务执行器在执行任务时,相互之间可以保持时间同步,这样的话,可以保证各业务请求是按照真实业务交互下的发送顺序,发送给业务服务器的。
具体的,任务执行器对于分配给自己的任务,可以计算当前时间与测试需求数据指定的、开始进行业务测试的时间之间的差值,当该差值不小于任务对应的相对时间时,即可以开始执行该任务。其中,分配给任务执行器的任务可 以是步骤S102中的业务测试任务中的一部分,也可以是该业务测试任务的副本,后一种情况一般适用于压力测试或负载测试,在后一种情况下,在进行业务测试时,业务服务器受到的压力可以大于在真实业务交互中受到的压力。
进一步地,在实际应用中,还可能存在这样的情况:一个业务请求的生成需要依赖于另一个业务请求的响应结果。对于这种情况,本申请的方案同样适用。
具体的,可以根据所述另一个业务请求的响应结果,生成模板赋值数据,再生成新的业务测试任务并执行,在执行新的业务测试任务的过程中,生成依赖于所述另一个业务请求的响应结果的业务请求,并将该业务请求发送给业务服务器。可以看到,在这种情况下,在执行步骤S103的过程中,也可以再次执行步骤S102。
基于以上对图1中的步骤的说明,本申请实施例还提供了在实际应用中,一种可以用于实施本申请的方案的系统的结构图,如图2所示。
图2中的系统主要包括:业务生成装置、测试模板生成装置、业务测试任务执行装置。箭头方向表示本申请的方案的流程方向,圆柱形表示在流程中生成的数据。利用该系统对本申请的方案的实施流程如图3所示,具体可以包括以下步骤:
S301:业务日志生成装置根据业务服务器(或对应的应用客户端,以下省略)与真实用户之间的真实业务交互生成业务日志。
需要说明的是,在实际应用中,业务日志也可以由业务服务器直接生成,在这种情况下,业务日志生成装置可以只用于获取业务日志即可。
S302:测试模板生成装置从业务日志生成装置获取业务日志(具体由业务日志获取模块执行),并通过对业务日志进行解析(具体由业务日志解析模块执行)和转换(具体由业务日志转换模块)执行,生成测试模板;
S303:测试执行装置从测试模板生成装置获取测试模板,以及获取模板赋值数据和测试需求数据,并根据这三者生成业务测试任务,将生成的业务测试 任务通过调度模块调度分配给任务执行器执行;
S304:任务执行器(一共N个,N不小于1)执行任务,生成以及发送相应的业务请求给业务服务器,获得业务服务器返回的业务处理结果;
S305:测试执行装置根据业务处理结果,确定测试结果。
需要说明的是,图2只是可用于实施本申请的方案的系统的结构图的示例,本申请实施例对可用于实施本申请的方案的系统的结构并不做限定。
以上为本申请实施例提供的业务测试方法,基于同样的思路,本申请实施例还提供相应的业务测试装置,如图4所示。
图4为本申请实施例提供的业务测试装置结构示意图,具体包括:
获取模块401,用于获取根据真实业务交互生成的业务日志生成的测试模板,所述测试模板反映所述真实业务交互对应的业务信息和交互过程信息;
生成模块402,用于根据所述测试模板和预定测试数据,生成业务测试任务;
测试模块403,用于执行所述业务测试任务,获得业务测试结果。
通过上述的装置,由于业务测试任务是基于真实业务交互生成的,因此,通过执行该业务测试任务,获得的测试结果可以反映真实业务交互时业务服务器的业务功能或性能表现,实用性较好。
所述装置还包括:
模板模块404,用于根据真实业务交互生成的业务日志生成测试模板;
所述模板模块404具体用于:获取根据真实业务交互生成的业务日志,所述业务日志包含一条或多条日志记录;通过对各所述日志记录进行解析,以及参数转换,生成测试模板,所述测试模板反映所述真实业务交互对应的业务信息和交互过程信息。
所述模板模块404具体用于:对各所述日志记录进行解析,获得各所述日志记录包含业务类型、业务参数和业务交互时间;将获得的各业务参数中的指定参数转换为动态业务参数,将获得的各业务类型、所述各业务参数中未被转 换的参数,以及转换得到的各动态业务参数作为所述真实业务交互对应的业务信息;将获得的各业务交互时间转换为相对时间,将各所述相对时间,以及各所述相对时间与所述业务信息的对应关系作为所述真实业务交互对应的交互过程信息;根据所述真实业务交互对应的业务信息和交互过程信息,生成测试模板。
所述预定测试数据包括模板赋值数据和测试需求数据;
所述生成模块402具体用于:根据所述模板赋值参数,为所述测试模板中的动态业务参数赋值;根据所述测试需求数据和赋值后的所述测试模板,生成业务测试任务。
所述测试模块403具体用于:针对所述业务测试任务包含的所述相对时间,根据所述相对时间对应的业务类型、业务参数和赋值后的动态业务参数,生成对应的业务请求;根据所述业务测试任务包含的测试需求数据和所述相对时间,向业务服务器发送生成的业务请求,获得业务服务器响应于所述业务请求,返回的业务处理结果;根据所述业务处理结果,确定业务测试结果。
所述测试模块403具体用于:按照预定分配方式,将所述业务测试任务分配给一个或多个任务执行器,以便于所述任务执行器根据所述业务测试任务包含的所述相对时间,执行所述业务测试任务。
具体的上述如图4所示的装置可以位于终端、服务器上。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/ 或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒 体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。