CN114706773A - 自动化测试方法、设备及可读存储介质 - Google Patents
自动化测试方法、设备及可读存储介质 Download PDFInfo
- Publication number
- CN114706773A CN114706773A CN202210341660.0A CN202210341660A CN114706773A CN 114706773 A CN114706773 A CN 114706773A CN 202210341660 A CN202210341660 A CN 202210341660A CN 114706773 A CN114706773 A CN 114706773A
- Authority
- CN
- China
- Prior art keywords
- test
- script
- server
- tested
- pool
- 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.)
- Pending
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 531
- 238000013515 script Methods 0.000 claims abstract description 378
- 238000000034 method Methods 0.000 claims description 42
- 230000004044 response Effects 0.000 claims description 23
- 230000002159 abnormal effect Effects 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 11
- 238000012216 screening Methods 0.000 claims description 6
- 238000009827 uniform distribution Methods 0.000 abstract description 5
- 238000009826 distribution Methods 0.000 description 38
- 230000010354 integration Effects 0.000 description 20
- 238000012545 processing Methods 0.000 description 14
- 230000002085 persistent effect Effects 0.000 description 11
- 230000008569 process Effects 0.000 description 10
- 230000003068 static effect Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 230000009471 action Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000007689 inspection Methods 0.000 description 3
- 238000013468 resource allocation Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000013522 software testing Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/3688—Test management for test execution, e.g. scheduling of test suites
-
- 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/3696—Methods or tools to render software testable
Abstract
本申请公开了一种自动化测试方法、设备及可读存储介质,每次对软件进行自动化测试时,服务器确定出本次需要执行的测试脚本以得到待测试脚本池。每个分布式机器每次向服务器请求一个测试脚本并执行,直到执行完待测试脚本池中的所有测试脚本。采用该种方案,由于每个分布式机器每次仅请求一个测试脚本,保证各分布式机器同时或在同一时间段内执行完测试脚本,从而保证测试资源分配均匀,实现提高软件自动化测试效率的目的。
Description
技术领域
本申请涉及软件自动化测试技术领域,特别涉及一种自动化测试方法、设备及可读存储介质。
背景技术
近年来,软件规模不断扩大,复杂度不断增加,软件质量和可靠性受到越来越多的重视。软件测试技术是保证软件质量的最直接、最有效的手段。
目前,通常利用自动化测试框架对软件进行自动化测试,分布式自动化测试框架是一种常见的自动化测试框架。软件自动化测试过程中,调度中心采用静态分发模式向分布式机器下发测试脚本。静态分发模式的分发策略包括固定分发和随机分发。其中,固定分发是指:将待执行的测试脚本分成多个组,每个分布式机器执行一组测试脚本。这样一来,开始测试时,分布式机器就知道要执行哪些测试脚本。随机分发是指:将待执行的测试脚本随机分发给多个分布式机器。同理,开始测试时,每个分布式机器就知道要执行哪些测试脚本。
一般而言,不同测试脚本的执行时长不同。当测试脚本数量级过大时,若采用静态分发模式下发测试脚本,则软件测试过程中容易出现有些分布式机器测试脚本执行完毕、有些分布式机器测试脚本还在执行的情况,这种情况也称之为测试资源分配不均。显然,测试资源分配不均会导致软件自动化测试速度慢的问题。
发明内容
本申请提供一种自动化测试方法、设备及可读存储介质,通过动态分发模式下发测试脚本,保证各分布式机器在同一时间段内完成测试脚本运行,从而保证测试资源分配均匀,实现提高软件自动化测试的速度的目的。
第一方面,本申请实施例提供一种自动化测试方法,应用于服务器,该方法包括:
确定本次测试需要执行的测试脚本以得到待测试脚本池;
每次接收到来自分布式机器的测试请求后,向所述分布式机器发送携带单个测试脚本的测试响应,所述单个测试脚本是所述待测试脚本池中的、待运行的测试脚本,所述分布式机器是多个分布式机器中的任意一个分布式机器。
第二方面,本申请实施例提供一种自动化测试方法,应用于多个分布式机器中的任意一个分布式机器,所述方法包括:
多次向服务器发送测试请求,每次发送的测试请求用于请求待测试脚本池中的单个测试脚本;
接收来自所述服务器的、携带所述单个测试脚本的测试响应;
执行所述单个测试脚本。
第三方面,本申请实施例提供一种自动化测试方法,应用于部署了持续集成工具的电子设备,所述方法包括:
利用持续集成工具向服务器发送配置文件,以使得所述服务器根据所述配置文件确定待测试脚本池,所述配置文件用于指示本次测试的测试脚本的特征;
接收来自所述服务器的配置响应。
第四方面,本申请实施例提供一种电子设备,包括:处理器、存储器及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时使得所述电子设备实现如上第一方面或第一方面各种可能的实现方式所述的方法、第二方面或第二方面各种可能的实现方式所述的方法、第三方面或第三方面各种可能的实现方式所述的方法。
第五方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,所述计算机指令在被处理器执行时用于实现如上第一方面或第一方面各种可能的实现方式所述的方法、第二方面或第二方面各种可能的实现方式所述的方法、第三方面或第三方面各种可能的实现方式所述的方法。
第六方面,本申请实施例提供一种包含计算程序的计算机程序产品,所述计算机程序被处理器执行时实现如上第一方面或第一方面各种可能的实现方式所述的方法、第二方面或第二方面各种可能的实现方式所述的方法、第三方面或第三方面各种可能的实现方式所述的方法。
第七方面,本申请实施例提供一种自动化测试系统,包括:
电子设备,用于创建串行任务队列,所述串行任务队列包括依次执行的创建待测试脚本池的任务、由各分布式机器执行单个测试脚本的任务以及由电子设备生成测试报告的任务,向服务器发送配置文件,并在各分布式机器执行完待测试脚本池中的测试脚本后,根据所述待测试脚本池中各测试脚本的测试结果,生成测试报告;
服务器,用于根据所述配置文件确定出待测试脚本池,每次接收到来自分布式机器的测试请求后,从所述待测试脚本池中确定出单个测试脚本,并发送给所述分布式机器;
分布式机器,用于每次向所述服务器请求单个测试脚本并运行,所述分布式机器至少为两个。
本申请实施例提供的自动化测试方法、设备及可读存储介质,每次对软件进行自动化测试时,服务器确定出本次需要执行的测试脚本以得到待测试脚本池。每个分布式机器每次向服务器请求一个测试脚本并执行,直到执行完待测试脚本池中的所有测试脚本。采用该种方案,由于每个分布式机器每次仅请求一个测试脚本,保证各分布式机器同时或在同一时间段内执行完测试脚本,从而保证测试资源分配均匀,实现提高软件自动化测试速度的目的。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的自动化测试系统的架构示意图;
图2是本申请实施例提供的自动化测试方法的流程图;
图3是本申请实施例提供的自动化测试方法的过程示意图;
图4为本申请实施例提供的一种自动化测试装置的示意图;
图5为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
软件自动化测试过程中,通过执行多个测试脚本以对软件进行测试。随着软件的功能和需求的增多,软件自动化测试需要执行成千上万个测试脚本。目前通过静态分发模式向分布式机器下发测试脚本。静态分发模式包括固定分发方式和随机分发方式。
假设一共有100个测试脚本,10个分布式机器,则固定分发方式是指:将100个测试脚本分成10组,假设100个测试脚本的编号为case1-case100,则第一组为测试脚本为case1-case10,分配给第一个分布式机器,第二组测试脚本为case11-case20,分配给第二个分布式机器……,第十组测试脚本为case91-case100,分配给第10个分布式机器。对于每个分布式机器而言,其依次执行一组测试脚本中的每个测试脚本。但是,整体而言,10个分布式机器并行执行10组测试脚本。由于各测试脚本的执行时长不同,比如,有些测试脚本的执行时长是1小时,有些测试脚本的执行时长是半小时,因此,不同分布式机器执行完测试脚本所需的总时长不同。例如,有些分布式机器执行完一组测试脚本的时长是6小时,有些分布式机器执行完一组测试脚本的时长是8小时。显然,最后两小时,有些分布式机器处于空闲状态,有些分布式机器处于忙碌状态。这种状况称之为测试资源分配不均。
随机分发是指:将100个测试脚本随机的分配给10个分布式机器,比如,将case1、case3、case15、……case19这一组测试脚本分配给第一个分布式机器。随机分发仅仅是打乱测试脚本的顺序,分配给每个分布式机器的测试脚本的编号不连续,各分布式机器开始测试时,就已经知道要执行哪些测试脚本。因此,同样存在测试资源分配不均的问题。
而且,通过静态分发模式下发测试脚本还可能存在大批量测试脚本执行失败的问题。例如,一个分布式机器被分配了一组测试脚本,该组测试脚本包含60个测试脚本。分布式机器依次执行该些测试脚本,假设执行第六个测试脚本时,分布式机器发生死机、硬盘空间不足、软件环境故障等问题,则包括第六个测试脚本在内的55个测试脚本都无法执行,导致软件自动化测试出现问题。
基于此,本申请实施例提供一种自动化测试方法、设备及可读存储介质,通过动态分发模式下发测试脚本,保证各分布式机器在同一时间段内执行完测试脚本,从而保证测试资源分配均匀,实现提高软件自动化测试的速度的目的。
图1是本申请实施例提供的自动化测试系统的架构示意图。请参照图1,该自动化测试系统包括服务器11、电子设备12和多个分布式机器13。服务器11和电子设备12建立网络连接,服务器11还与各个分布式机器13建立网络连接。
服务器11也称之为调度中心、分发调度中心等。服务器11可以是硬件也可以是软件。当服务器11为硬件时,该服务器11为单个服务器或多个服务器组成的分布式服务器集群。当服务器11为软件时,可以为多个软件模块或单个软件模块等,本申请实施例并不限制。
本申请实施例中,服务器11可以是基于Python Django框架实现的超文本传输协议(Hyper Text Transfer Protocol,HTTP)服务器等。
电子设备12为部署了持续集成工具的电子设备,可以是台式机、笔记本电脑等,测试人员在电子设备12上输入本次测试需执行的测试脚本的特征等,电子设备12利用持续集成工具创建串行任务队列,生成配置文件并发送给服务器11,以使得服务器11从多个测试脚本中筛选出符合特征的测试脚本,从而得到待测试脚本池。其中,串行任务队列包括依次执行的创建待测试脚本池的任务、由各分布式机器执行单个测试脚本的任务以及由电子设备生成测试报告的任务。创建好串行任务队列后,这些任务依次执行,上一个任务执行完毕后自动触发下一个任务。需要说明的是,由于分布式机器的数量比较多,这些分布式机器执行单个测试脚本时是并行执行的。
分布式机器13是用于执行测试脚本的设备,可以是虚拟机(Virtual Machine,VM)等。多个分布式机器13并行执行测试脚本。每个分布式机器13执行完一个测试脚本后,向服务器11请求下一个测试脚本。相对于静态分发模式而言,这种每次仅请求单个测试脚本的方式,称之为动态分发模式。
下面,基于图1所示架构对本申请实施例所述的自动化测试方法进行详细说明。示例性的,请见图2。
图2是本申请实施例提供的自动化测试方法的流程图,本实施例是从服务器和分布式机器交互的角度说明。本实施例包括:
201、服务器确定本次测试需要运行的测试脚本以得到待测试脚本池。
本申请实施例中,通过自动化测试方法对软件进行测试,软件例如为NGINX、CADDY等部署在linux上的软件。一般而言,软件版本的更新迭代,需要通过多次自动化测试才能不断的发现问题并优化。每次测试时,服务器确定出本次测试需要执行的测试脚本从而得到待测试脚本池。待测试脚本池中的测试脚本为本次测试过程中,分布式机器执行的测试脚本。例如,服务器将本地预先存储的所有测试脚本作为待测试脚本池中的测试脚本。再如,服务器随机从所有测试脚本出抽取预设数量的测试脚本作为待测试脚本池中的测试脚本。再如,总共有4000个测试脚本,本次需要执行内核相关的测试脚本,则服务器从4000个测试脚本中筛选出内核相关的200个测试脚本,从而得到测试脚本池。
202、服务器接收到来自分布式机器的测试请求。
开始测试时,各分布式机器向服务器发送测试请求以请求单个测试脚本,即每发起一个测试请求,仅请求一个测试脚本。
203、服务器向分布式机器发送携带单个测试脚本的测试响应。
服务器每次仅向分布式机器响应一个测试脚本。例如,初始创建好待测试脚本池后,各分布式机器向服务器发起测试请求。服务器向各分布式机器发送测试脚本,不同分布式服务器的测试脚本不同。各分布式机器接收到单个的测试脚本后,并行执行测试脚本。分布式机器每次执行完测试脚本后,再向服务器发送测试请求以请求下一个测试脚本,直到服务器发送完所有的测试脚本。
204、执行所述单个测试脚本。
根据上述可知:分布式机器每次仅能请求到一个测试脚本。相对于静态分发模式而言,这种每次仅请求单个测试脚本的方式,称之为动态分发模式。
基于动态分发模式,每个分布式机器每次执行完一个测试脚本后,才请求下一个测试脚本。这样一来,就能够达到测试资源均匀分配的目的。例如,待测试脚本池中一共有20个测试脚本,其中10个测试脚本的执行时长均为1小时,另外10个测试脚本的执行时长均为半个小时。倘若采用现有的固定分发方式,将执行时长为1小时的测试脚本分配给分布式机器a,将执行时长为半小时的测试脚本分配给分布式机器b,则分布式机器a执行测试脚本的总时长为10小时,分布式机器b执行测试脚本的总时长为5个小时。显然,这样会导致资源分配不均。采用随机分发方式同样会导致资源分配不均匀。
而本申请实施例中,同样是20个测试脚本,由于每个分布式机器每次仅请求一个测试脚本,执行完该测试脚本后,才请求下一个测试脚本并执行。20个测试脚本的整个执行时长为15小时,因此,2个分布式机器并行执行,大约需要8个小时就能够执行完所有的测试脚本从而完成软件自动化测试。
需要说明的是,上述仅是以待测试脚本池中共有20个测试脚本、2个分布式机器为例对本申请进行说明,并不构成对本申请实施例的限制。实际中,待测试脚本池中测试脚本的数量级庞大,可以是几百个或几千个等,分布式机器的数量也不止两个。例如,一个实施例中,待测试脚本池中共有3000个测试脚本,一共有60个分布式机器执行该些测试脚本。
另外,还需要说明的是,基于动态分发模式,各分布式机器同时或在同一时间段内执行完测试脚本。其中,在同一时间段内执行完测试脚本是指:假设分布式机器1最先执行完测试脚本,分布式机器N最后执行完测试脚本,则最先执行完测试脚本的时间点和最后执行完测试脚本的时间点之间的时长不会超过半小时。为了保证测试脚本的执行时长的差值比较小,测试脚本设计时必须遵循一定的规范,比如,超过1小时的测试脚本会被拆分成多个测试脚本,使得待测试脚本池中执行时间最长的测试脚本和执行时间最短的测试脚本的执行时长的差值不会超过半小时等。
本申请实施例提供的自动化测试方法,每次对软件进行自动化测试时,服务器确定出本次需要执行的测试脚本以得到待测试脚本池。每个分布式机器每次向服务器请求一个测试脚本并执行,直到执行完待测试脚本池中的所有测试脚本。采用该种方案,由于每个分布式机器每次仅请求一个测试脚本,保证各分布式机器同时或在同一时间段内执行完测试脚本,从而保证测试资源分配均匀,实现提高软件自动化测试速度的目的。
可选的,上述实施例中,步骤201之前还包括:
200、服务器接收电子设备发送的配置文件。
电子设备上部署持续集成工具,每次测试之前,电子设备利用持续集成工具创建串行任务队列,所述串行任务队列包括依次执行的创建待测试脚本池的任务、由各分布式机器执行单个测试脚本的任务以及由电子设备生成测试报告的任务。创建好串行任务队列后,电子设备向服务器发送配置文件。服务器接收到配置文件后,根据所述配置文件指示的特征确定待测试脚本池。之后,服务器向电子设备发送配置响应,该配置响应用于指示服务器是否创建好待测试脚本池。
示例性的,测试人员在电子设备上输入本次测试需执行的测试脚本的特征等,电子设备根据用户的输入生成配置文件,并将配置文件发送给服务器,以使得服务器从多个测试脚本中筛选出符合特征的测试脚本,从而得到待测试脚本池。由于每次测试的需求不同,测试人员的输入不同,因此,服务器可以根据配置文件定制化的灵活构建待测试脚本池。
一种方式中,配置文件指示待测试脚本池中的测试脚本所在的目录,服务器获取位于所述文件目标下的测试脚本,以得到所述待测试脚本池;或者,配置文件指示测试脚本包含的字符串等,服务器从所有候选测试脚本中按字符串过滤等,从而得到待测试脚本池。采用该种方案,通过定制化待测试脚本池,实现准确、灵活测试软件的目的。
另一种方式中,配置文件直接指定本次测试需要执行的测试脚本的列表,列表中包含本次测试的测试脚本的标识,服务器从所有测试脚本中找出相应标识的测试脚本,从而得到待测试脚本池。例如,配置文件指示编号为奇数的测试脚本,则服务器从所有测试脚本中确定出编号为奇数的测试脚本得到待测试脚本池。
又一种方式中,配置文件指示上次测试执行失败的测试脚本。相邻两次测试分别为上次测试和本次测试,上次测试脚本池中有100个测试脚本,其中20个测试脚本执行失败。对软件进行改进或对该20个测试脚本进行优化后,测试人员通过配置文件指示重新执行该20个测试脚本,则服务器根据该20个测试脚本生成待测试脚本池。采用该种方案,通过快捷分布式重跑上次测试失败的部分测试脚本,实现提高软件自动化测试的目的。
又一种方式中,配置文件指示某些特殊脚本仅在特殊机器上执行。例如,测试脚本为内核相关的测试脚本,分布式机器为内核版本较高的分布式机器。服务器从所有测试脚本中确定出内核相关的测试脚本,从而得到待测试脚本池。内核版本较高的分布式机器每次请求一个测试脚本并执行,从而完成软件测试。
需要说明是,虽然上述各个方式独立,但是本申请实施例并不限制,其他可行的实现方式,可以对上述各种方式或过滤逻辑进行组合,从而实现对软件的多样化组合测试。
采用该种方案,通过多样化定制本次测试需要执行的测试脚本,灵活度高,实现方便快捷的自动化测试软件的目的。
可选的,上述实施例中,从分布式机器的角度而言,本次测试过程中,分布式机器多次向服务器发送测试请求,每次发送的测试请求用于请求待测试脚本池中的单个测试脚本。分布式机器可按照如下逻辑多次发送测试请求:确定出所述待测试脚本池生成后,向所述服务器发送第一个测试请求。之后,分布式机器自接收到第一个测试请求对应的测试响应开始,每次执行完最近一次发起的测试请求对应的单个测试脚本后,向所述服务器发送下一个测试请求。
示例性的,待测试脚本池生成之后,若分布式机器软硬件正常,则第一次向服务器发送测试请求,该测试请求为第一个测试请求。分布式机器每次得到测试脚本后,执行该测试脚本。执行完毕后发起下一个测试请求。
采用该种方案,服务器采用动态分发模式下发测试脚本,确保测试脚本会按照总执行时长均匀的分布到所有的分布式机器上,避免测试资源分配不均的情况。
可选的,上述实施例中,分布式机器每次向服务器发送测试请求之前,先确定自身软硬件是否异常。若所述软硬件正常,则向所述服务器发送所述测试请求。若软件和/或硬件异常,则分布式机器向所述服务器发送指示信息,所述指示信息用于指示所述分布式机器异常。之后,分布式机器结束自身的测试任务,以使得所述服务器停止向所述分布式机器下发测试脚本。
示例性的,分布式机器每次向服务器发送测试请求之前,检视自身条件是否满足执行测试脚本的条件。自身条件包括软件条件和硬件条件,比如硬盘空间是否足够、软件环境是否正常等。若软硬件异常,则向服务器发送指示消息,以使得服务器知道分布式机器异常,不再向分布式机器下发测试脚本。待分布式机器排除异常后,比如人工处理异常完毕后,再触发分布式机器继续向服务器发送调度请求,参与本次测试任务。例如,一共有50个分布式机器,其中一个分布式机器执行完第5个测试脚本后,发现硬盘空间不足,则向服务器发送指示信息,并结束测试任务。这时候,参与本次测试的分布式机器的数量为49。10分钟后,测试人员通过硬盘整理等排除异常,并触发分布式机器继续向服务器发送调度请求,使得参与本次测试的分布式机器的数量重新回到50。
另外,相较于静态分发模式,动态分发模式结合分布式机器每次发送测试请求前的自我检视,能够避免大批量测试脚本执行失败的问题。以本次测试需要执行20个测试脚本、一共有两个分布式机器为例,倘若采用静态分发模式,则每个分布式机器预先通过固定分发方式或随机分发方式分配一组测试脚本,一组测试脚本例如包含10个测试脚本。假设一个分布式机器执行第2个测试脚本时,软件环境故障或硬件故障,则第2个测试脚本以及后面的8个测试脚本,共9个测试脚本都无法执行,从而出现批量测试脚本执行失败的情况。而本申请实施例中,由于采用动态分发模式,分布式机器每次仅请求一个测试脚本,当分布式机器执行完第1个测试脚本后,请求第2个测试脚本时,通过自我检视确定出软硬件有问题,则向服务器发送指示信息,并结束测试任务,而服务器继续采用动态分发模式向另一个分布式机器发送测试脚本。假设另一个分布式机器执行完第6个测试脚本后,之前异常的分布式机器排除异常,则这两个分布式机器继续从服务器请求测试脚本,直到执行完10个测试脚本。倘若之前异常的分布式机器没有排除异常,则另一个分布式机器独自完成10个测试脚本的执行。
采用该种方案,动态分发模式结合分布式机器每次发送测试请求前的自我检视,能够避免大批量测试脚本执行失败的问题,提高软件自动化测试的速度。
可选的,上述实施例中,每个分布式机器每次执行完测试脚本后,都会生成测试结果。当服务器下发完测试脚本池中的所有测试脚本后,电子设备获取各分布式机器每次执行单个测试脚本的测试结果,以得到所述待测试脚本池中各测试脚本的测试结果。之后,电子设备根据所述待测试脚本池中各测试脚本的测试结果,生成测试报告。
示例性的,电子设备具备生成配置文件和汇总各分布式机器的测试结果得到测试报告的功能。当本次测试的所有测试脚本执行完毕后,电子设备从各个分布式机器获取测试结果。或者,一个分布式机器每次执行完一个测试脚本后,将该测试脚本的测试结果发送给电子设备,电子设备汇总本次测试的所有测试结果从而得到测试报告并输出,供测试人员分析。
需要说明的是,虽然此处是部署了持续集成工具的电子设备汇总测试结果得到测试报告。但是,本申请实施例并不限制,其他可行的实现方式中,还可以是其他电子设备汇总本次测试的所有测试结果从而得到测试报告,该电子设备和生成配置文件的电子设备上独立的设备。
采用该种方案,每次测试结束时,电子设备汇总本次测试的所有测试结果从而得到测试报告,供测试人员分析,速度快、效率高,且便于用户查看测试报告。
可选的,上述实施例中,自动化测试包括三个任务:创建待测试脚本池的任务、各分布式机器执行单个测试脚本的任务、生成测试报告的任务。其中,各分布式机器执行单个测试脚本的任务阶段,多个分布式机器并行执行测试脚本。但是,从整体而言,该三个任务是串行任务。电子设备上的持续集成工具用于串联这三个任务,使得这三个任务有序的、自动化的依次进行。
采用该种方案,通过利用持续集成工具串联自动化测试测试过程中的任务,保证自动化测试有序、自动的执行,提高软件自动化测试的效率。
下面,以部署在电子设备上的持续集成工具为Jenkins为例,对本申请实施例所述的自动化测试方法进行详细说明。示例性的,请参照图3。图3是本申请实施例提供的自动化测试方法的过程示意图。
请参照图3,配置文件的生成和测试报告的生成由电子设备执行,分布式测试子任务0至分布式测试子任务n分别映射至分布式机器1至分布式机器n。
软件自动化测试包括三个任务:创建待测试脚本池的任务、各分布式机器执行单个测试脚本的任务、生成测试报告的任务。电子设备用于生成配置文件和测试报告,电子设备上部署的持续集成工具为Jenkins,该持续集成工具配合Jenkins插件Join Trigger,来实现各个任务的串联。串联之后,三个任务依次执行。其中,创建待测试脚本池的任务阶段包括如下步骤:
301、电子设备向服务器发送配置文件。
电子设备基于测试人员输入的测试参数等生成配置文件并发送给服务器。
当服务器为HTTP服务器时,电子设备向服务器发送的配置请求例如可以是开始(start)请求,该开始请求携带配置文件。
302、服务器返回配置响应。
服务器根据配置文件创建待测试脚本池并返回配置响应。当服务器成功创建出待测试脚本池时,服务器向电子设备返回的配置响应例如是200状态码。当服务器创建待测试脚本池失败时,例如,服务器上没有符合配置文件指示的特征的测试脚本,则服务器向电子设备返回的配置响应可以是状态码404、状态码503等。
执行测试脚本阶段,各分布式机器并行执行测试脚本且每次仅请求一个测试脚本。任意一个分布式机器的动作如下:
303、分布式机器检视软硬件是否正常,若软硬件正常,则执行步骤304;若软件和/或硬件不正常,则执行步骤308。
304、分布式机器请求测试脚本。
本步骤包括如下子步骤:
3041、分布式机器向服务器发送测试请求。
示例性的,当服务器为基于HTTP协议的服务器时,该测试请求例如为HTTP请求。
3042、分布式机器接收来自服务器的测试响应。
该测试响应携带一个测试脚本。
305、分布式机器确定测试脚本内容是否为空,若测试脚本内容不为空,则执行步骤306;若测试脚本内容为空,则执行步骤307。
示例性的,若测试脚本内容不为空,则说明待测试资源池中还存在未执行的测试脚本,若测试脚本内容为空,则说明待测试资源池中的测试脚本都下发完毕,不存在待执行的测试脚本。
306、分布式机器执行测试脚本,之后返回步骤303。
307、分布式机器结束测试任务。
308、分布式机器向服务器发送指示信息,以指示服务器自身软硬件异常。
同时,分布式机器结束当前的测试子任务。当测试人员排除异常后,分布式机器再次加入以参与本次测试。
当所有的分布式机器都结束测试任务后,电子设备基于持续集成工具自动触发创建测试报告的任务。创建过程中,电子设备汇总所有分布式机器的测试结果,从而得到测试报告。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
图4为本申请实施例提供的一种自动化测试装置的示意图。该自动化测试装置400包括:处理模块41、接收模块42和发送模块43。
当自动化测试装置400集成在服务器上时,各模块作用如下:
处理模块41,用于确定本次测试需要执行的测试脚本以得到待测试脚本池;
接收模块42,用于接收到来自分布式机器的测试请求;
发送模块43,用于在所述接收模块42每次接收到来自分布式机器的测试请求后,向所述分布式机器发送携带单个测试脚本的测试响应,所述单个测试脚本是所述待测试脚本池中的、待运行的测试脚本,所述分布式机器是多个分布式机器中的任意一个分布式机器。
一种可行的实现方式中,所述接收模块42,用于接收电子设备利用持续集成工具发送的配置文件,所述配置文件用于指示本次测试的测试脚本的特征;
所述处理模块41,用于从多个测试脚本中筛选出符合所述特征的测试脚本,以得到待测试脚本池。
一种可行的实现方式中,所述处理模块41,用于当所述配置文件指示重跑失败版本时,从上次测试的待测试脚本池中筛选出执行失败的测试脚本,以得到本次测试的待测试脚本池。
一种可行的实现方式中,所述处理模块41,用于当所述配置文件指示测试脚本所在的文件目录时,获取位于所述文件目标下的测试脚本,以得到所述待测试脚本池;当所述配置文件指示测试脚本包含的字符串时,从候选测试脚本中筛选出包含所述字符串的测试脚本以得到所述待测试脚本池。
一种可行的实现方式中,所述接收模块42在所述处理模块41确定本次测试需要运行的测试脚本以得到待测试脚本池之后,还用于接收所述分布式机器的指示信息,所述指示信息用于指示所述分布式机器异常。
本申请实施例提供的自动化测试装置,可以执行上述实施例中服务器的动作,其实现原理和技术效果类似,在此不再赘述。
当自动化测试装置400集成在分布式机器上时,各模块作用如下:
发送模块43,用于多次向服务器发送测试请求,每次发送的测试请求用于请求待测试脚本池中的单个测试脚本;
接收模块42,用于接收来自所述服务器的、携带所述单个测试脚本的测试响应;
处理模块41,用于执行所述单个测试脚本。
一种可行的实现方式中,所述处理模块41,还用于在所述发送模块43每次发送测试请求之前,确定自身软硬件是否异常;
所述发送模块43,用于若所述处理模块41确定出所述软硬件正常,则向所述服务器发送所述测试请求。
一种可行的实现方式中,所述发送模块43,还用于若所述软硬件异常,则向所述服务器发送指示信息,所述指示信息用于指示所述分布式机器异常,以使得所述服务器停止向所述分布式机器下发测试脚本。
一种可行的实现方式中,所述发送模块43,用于在所述处理模块41确定出所述待测试脚本池生成后,向所述服务器发送第一个测试请求,并自所述接收模块42接收到第一个测试请求对应的测试响应开始,在所述处理模块41每次执行完最近一次发起的测试请求对应的单个测试脚本后,向所述服务器发送下一个测试请求。
本申请实施例提供的自动化测试装置,可以执行上述实施例中分布式机器的动作,其实现原理和技术效果类似,在此不再赘述。
当自动化测试装置400集成在部署了持续集成工具的电子设备上时,各模块作用如下:
处理模块41,用于创建串行任务队列,所述串行任务队列包括依次执行的创建待测试脚本池的任务、由各分布式机器执行单个测试脚本的任务以及由电子设备生成测试报告的任务;
发送模块43,用于向服务器发送配置文件,以使得所述服务器根据所述配置文件执行创建待测试脚本池的任务,所述配置文件用于指示本次测试的测试脚本的特征;
接收模块42,用于接收来自所述服务器的配置响应。
一种可行的实现方式中,所述持续集成工具用于串联创建所述待测试脚本池的任务、各分布式机器执行单个测试脚本的任务、生成测试报告的任务。
一种可行的实现方式中,处理模块41,用于在所述接收模块42接收来自所述服务器的配置响应之后,获取各分布式机器每次执行单个测试脚本的测试结果,以得到所述待测试脚本池中各测试脚本的测试结果;根据所述待测试脚本池中各测试脚本的测试结果,生成测试报告。
本申请实施例提供的自动化测试装置,可以执行上述实施例中部署了持续集成工具的电子设备的动作,其实现原理和技术效果类似,在此不再赘述。
图5为本申请实施例提供的一种电子设备的结构示意图。如图5所示,该电子设备500例如为上述的服务器、分布式机器或者部署了持续集成工具的电子设备,该电子设备500包括:
处理器51和存储器52;
所述存储器52存储计算机指令;
所述处理器51执行所述存储器52存储的计算机指令,使得所述处理器51执行如上服务器、分布式机器或者部署了持续集成工具的电子设备实施的自动化测试方法。
处理器51的具体实现过程可参见上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
可选地,该电子设备500还包括通信部件53。其中,处理器51、存储器52以及通信部件53可以通过总线54连接。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,所述计算机指令被处理器执行时用于实现如上服务器、分布式机器或者部署了持续集成工具的电子设备实施的自动化测试方法。
本申请实施例还提供一种计算机程序产品,该计算机程序产品包含计算机程序,计算机程序被处理器执行时实现如上服务器、分布式机器或者部署了持续集成工具的电子设备实施的自动化测试方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。
Claims (14)
1.一种自动化测试方法,其特征在于,应用于服务器,所述方法包括:
确定本次测试需要执行的测试脚本以得到待测试脚本池;
每次接收到来自分布式机器的测试请求后,向所述分布式机器发送携带单个测试脚本的测试响应,所述单个测试脚本是所述待测试脚本池中的、待运行的测试脚本,所述分布式机器是多个分布式机器中的任意一个分布式机器。
2.根据权利要求1所述的方法,其特征在于,所述确定本次测试需要运行的测试脚本以得到待测试脚本池,包括:
接收电子设备发送的配置文件,所述配置文件用于指示本次测试的测试脚本的特征;
从多个测试脚本中筛选出符合所述特征的测试脚本,以得到待测试脚本池。
3.根据权利要求2所述的方法,其特征在于,所述从多个测试脚本中筛选出符合所述特征的测试脚本,以得到待测试脚本池,包括:
当所述配置文件指示重跑失败版本时,从上次测试的待测试脚本池中筛选出执行失败的测试脚本,以得到本次测试的待测试脚本池。
4.根据权利要求2所述的方法,其特征在于,所述从多个测试脚本中筛选出符合所述特征的测试脚本,以得到待测试脚本池,包括:
当所述配置文件指示测试脚本所在的文件目录时,获取位于所述文件目标下的测试脚本,以得到所述待测试脚本池;
当所述配置文件指示测试脚本包含的字符串时,从候选测试脚本中筛选出包含所述字符串的测试脚本以得到所述待测试脚本池。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述确定本次测试需要运行的测试脚本以得到待测试脚本池之后,还包括:
接收所述分布式机器的指示信息,所述指示信息用于指示所述分布式机器异常。
6.一种自动化测试方法,其特征在于,应用于多个分布式机器中的任意一个分布式机器,所述方法包括:
多次向服务器发送测试请求,每次发送的测试请求用于请求待测试脚本池中的单个测试脚本;
接收来自所述服务器的、携带所述单个测试脚本的测试响应;
执行所述单个测试脚本。
7.根据权利要求6所述的方法,其特征在于,所述多次向服务器发送测试请求,包括:
每次发送测试请求之前,确定自身软硬件是否异常;
若所述软硬件正常,则向所述服务器发送所述测试请求。
8.根据权利要求7所述的方法,其特征在于,还包括:
若所述软硬件异常,则向所述服务器发送指示信息,所述指示信息用于指示所述分布式机器异常,以使得所述服务器停止向所述分布式机器下发测试脚本。
9.根据权利要求6-8任一项所述的方法,其特征在于,所述多次向服务器发送测试请求,包括:
确定出所述待测试脚本池生成后,向所述服务器发送第一个测试请求;
自接收到第一个测试请求对应的测试响应开始,每次执行完最近一次发起的测试请求对应的单个测试脚本后,向所述服务器发送下一个测试请求。
10.一种自动化测试方法,其特征在于,应用于电子设备,所述方法包括:
创建串行任务队列,所述串行任务队列包括依次执行的创建待测试脚本池的任务、由各分布式机器执行单个测试脚本的任务以及由电子设备生成测试报告的任务;
向服务器发送配置文件,以使得所述服务器根据所述配置文件执行创建待测试脚本池的任务,所述配置文件用于指示本次测试的测试脚本的特征;
接收来自所述服务器的配置响应。
11.根据权利要求10所述的方法,其特征在于,所述接收来自所述服务器的配置响应之后,还包括:
获取各分布式机器每次执行单个测试脚本的测试结果,以得到所述待测试脚本池中各测试脚本的测试结果;
根据所述待测试脚本池中各测试脚本的测试结果,生成测试报告。
12.一种自动化测试系统,其特征在于,包括:
电子设备,用于创建串行任务队列,所述串行任务队列包括依次执行的创建待测试脚本池的任务、由各分布式机器执行单个测试脚本的任务以及由电子设备生成测试报告的任务,向服务器发送配置文件,并在各分布式机器执行完待测试脚本池中的测试脚本后,根据所述待测试脚本池中各测试脚本的测试结果,生成测试报告;
服务器,用于根据所述配置文件确定出待测试脚本池,每次接收到来自分布式机器的测试请求后,从所述待测试脚本池中确定出单个测试脚本,并发送给所述分布式机器;
分布式机器,用于每次向所述服务器请求单个测试脚本并运行,所述分布式机器至少为两个。
13.一种电子设备,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时使得所述电子设备实现如权利要求1至11任一所述的方法。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至11任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210341660.0A CN114706773A (zh) | 2022-03-29 | 2022-03-29 | 自动化测试方法、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210341660.0A CN114706773A (zh) | 2022-03-29 | 2022-03-29 | 自动化测试方法、设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114706773A true CN114706773A (zh) | 2022-07-05 |
Family
ID=82172722
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210341660.0A Pending CN114706773A (zh) | 2022-03-29 | 2022-03-29 | 自动化测试方法、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114706773A (zh) |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7657789B1 (en) * | 2005-06-10 | 2010-02-02 | Microsoft Corporation | Multi-machine testing system and method for testing software |
CN102214139A (zh) * | 2011-06-01 | 2011-10-12 | 北京航空航天大学 | 一种面向分布式系统的自动化测试的执行控制与调度方法 |
CN103455425A (zh) * | 2013-09-25 | 2013-12-18 | 中国银行股份有限公司 | 一种分布式测试系统及方法 |
US20160004628A1 (en) * | 2014-07-07 | 2016-01-07 | Unisys Corporation | Parallel test execution framework for multiple web browser testing |
CN109800145A (zh) * | 2018-12-13 | 2019-05-24 | 深圳壹账通智能科技有限公司 | 脚本执行方法、装置、计算机设备及存储介质 |
CN111651350A (zh) * | 2020-05-29 | 2020-09-11 | 泰康保险集团股份有限公司 | 测试用例处理方法、装置、设备及计算机可读存储介质 |
CN111813687A (zh) * | 2020-07-20 | 2020-10-23 | 网易(杭州)网络有限公司 | 测试方法、装置、控制终端、测试设备及存储介质 |
CN112131107A (zh) * | 2020-09-16 | 2020-12-25 | 北京海益同展信息科技有限公司 | 一种测试任务执行方法、装置、电子设备及存储介质 |
CN112286806A (zh) * | 2020-10-28 | 2021-01-29 | 成都佰维存储科技有限公司 | 自动化测试方法、装置、存储介质及电子设备 |
CN112965895A (zh) * | 2021-02-07 | 2021-06-15 | 卫宁健康科技集团股份有限公司 | 桌面应用程序自动化测试方法、装置、设备及存储介质 |
CN113010417A (zh) * | 2021-03-02 | 2021-06-22 | 中国工商银行股份有限公司 | 基于自动化测试的脚本执行方法及装置 |
CN113535590A (zh) * | 2021-08-20 | 2021-10-22 | 北京沃东天骏信息技术有限公司 | 程序测试方法和装置 |
CN114050989A (zh) * | 2022-01-12 | 2022-02-15 | 航天中认软件测评科技(北京)有限责任公司 | 基于云计算技术的分布式测试执行方法 |
-
2022
- 2022-03-29 CN CN202210341660.0A patent/CN114706773A/zh active Pending
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7657789B1 (en) * | 2005-06-10 | 2010-02-02 | Microsoft Corporation | Multi-machine testing system and method for testing software |
CN102214139A (zh) * | 2011-06-01 | 2011-10-12 | 北京航空航天大学 | 一种面向分布式系统的自动化测试的执行控制与调度方法 |
CN103455425A (zh) * | 2013-09-25 | 2013-12-18 | 中国银行股份有限公司 | 一种分布式测试系统及方法 |
US20160004628A1 (en) * | 2014-07-07 | 2016-01-07 | Unisys Corporation | Parallel test execution framework for multiple web browser testing |
CN109800145A (zh) * | 2018-12-13 | 2019-05-24 | 深圳壹账通智能科技有限公司 | 脚本执行方法、装置、计算机设备及存储介质 |
CN111651350A (zh) * | 2020-05-29 | 2020-09-11 | 泰康保险集团股份有限公司 | 测试用例处理方法、装置、设备及计算机可读存储介质 |
CN111813687A (zh) * | 2020-07-20 | 2020-10-23 | 网易(杭州)网络有限公司 | 测试方法、装置、控制终端、测试设备及存储介质 |
CN112131107A (zh) * | 2020-09-16 | 2020-12-25 | 北京海益同展信息科技有限公司 | 一种测试任务执行方法、装置、电子设备及存储介质 |
CN112286806A (zh) * | 2020-10-28 | 2021-01-29 | 成都佰维存储科技有限公司 | 自动化测试方法、装置、存储介质及电子设备 |
CN112965895A (zh) * | 2021-02-07 | 2021-06-15 | 卫宁健康科技集团股份有限公司 | 桌面应用程序自动化测试方法、装置、设备及存储介质 |
CN113010417A (zh) * | 2021-03-02 | 2021-06-22 | 中国工商银行股份有限公司 | 基于自动化测试的脚本执行方法及装置 |
CN113535590A (zh) * | 2021-08-20 | 2021-10-22 | 北京沃东天骏信息技术有限公司 | 程序测试方法和装置 |
CN114050989A (zh) * | 2022-01-12 | 2022-02-15 | 航天中认软件测评科技(北京)有限责任公司 | 基于云计算技术的分布式测试执行方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102214139B (zh) | 一种面向分布式系统的自动化测试的执行控制与调度方法 | |
CN106970880B (zh) | 一种分布式自动化软件测试方法及系统 | |
WO2019037203A1 (zh) | 应用程序的性能测试方法、装置、计算机设备和存储介质 | |
US20150100832A1 (en) | Method and system for selecting and executing test scripts | |
US20150100829A1 (en) | Method and system for selecting and executing test scripts | |
CN107590075B (zh) | 一种软件测试方法及装置 | |
CN102868573B (zh) | Web服务负载云测试方法和装置 | |
US20150100830A1 (en) | Method and system for selecting and executing test scripts | |
US20150100831A1 (en) | Method and system for selecting and executing test scripts | |
CN108270837B (zh) | 一种利用闲置资源的分布式任务调度方法及系统 | |
WO2017193737A1 (zh) | 一种软件测试方法及系统 | |
CN110389903B (zh) | 测试环境部署方法和装置、电子设备和可读存储介质 | |
US10146674B2 (en) | Plugin-based software verification system | |
CN110659198A (zh) | 应用程序的测试用例执行方法、装置和软件测试系统 | |
CN112862098A (zh) | 一种集群训练任务处理的方法及系统 | |
CN111159046A (zh) | 测试方法、装置、电子设备、系统和存储介质 | |
CN112650676A (zh) | 软件测试方法、装置、设备及存储介质 | |
CN112631919A (zh) | 一种对比测试方法、装置、计算机设备及存储介质 | |
CN113434283B (zh) | 服务调度方法及装置、服务器、计算机可读存储介质 | |
WO2019117767A1 (en) | Method, function manager and arrangement for handling function calls | |
Gaisbauer et al. | Vats: Virtualized-aware automated test service | |
CN114706773A (zh) | 自动化测试方法、设备及可读存储介质 | |
CN115292164A (zh) | 基于VirtualBox的分布式自动化测试方法 | |
CN114238091A (zh) | 一种常驻型交互式服务集群测试方法及系统 | |
CN114924971A (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 |