一种测试方法、装置及计算机可读存储介质与流程

文档序号:29632975发布日期:2022-04-13 16:26阅读:50来源:国知局
一种测试方法、装置及计算机可读存储介质与流程

1.本技术涉及计算机领域,尤其涉及一种测试方法、装置及计算机可读存储介质。


背景技术:

2.自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常情况是在测试用例设计完成且评审通过之后,由测试人员根据测试用例描述的步骤进行一步步执行测试,得到实际结果与预期结果进行比较。自动化测试即把这个执行测试的过程代码化,通过自动化测试框架的管理,让机器运行测试步骤,从而对比实际结果与预期结果的过程。
3.在目前已知的一些自动化测试技术中,服务器只能执行一些逻辑比较简单的测试步骤,难以支持复杂的测试场景。


技术实现要素:

4.本技术提供一种测试方法、装置及计算机可读存储介质,通过代理脚本调用配置有逻辑较复杂的测试脚本的自动化测试服务,以实现对复杂测试场景的支持。
5.第一方面,本技术提供一种测试方法,该方法包括:第一服务器获取待测系统的标识;所述第一服务器基于预配置的代理脚本向第二服务器发送第一请求,所述第一请求包括所述待测系统的标识,以用于请求对所述待测系统进行自动化测试,所述第二服务器用于提供测试服务,所述测试服务包括对一个或多个系统进行自动化测试的服务,所述代理脚本用于调用所述第二服务器提供的所述测试服务。
6.基于上述方案,第一服务器通过运行预先配置的代理脚本,调用第二服务器上的测试服务来实现自动化测试。由于该测试服务中可以预先设置各种复杂的测试环境,可以实现对逻辑复杂的测试脚本的执行,在第一服务器基于代理脚本调用第二服务器上的自动化测试服务后,第二服务器便可执行预先配置的对应于待测系统的测试脚本,对待测系统进行测试,从而实现对复杂测试场景的支持。
7.可选地,所述第一服务器基于所述代理脚本向所述第二服务器发送第二请求,所述第二请求用于请求查询对所述待测系统的测试是否结束。
8.可选地,所述第一服务器基于所述代理脚本向所述第二服务器发送第三请求,所述第三请求用于请求查询对所述待测系统的测试结果,所述测试结果包括测试成功或测试失败。
9.可选地,所述第二服务器还提供自动化测试报告服务,所述自动化测试报告服务为基于自动化测试生成测试报告的服务,所述代理脚本还用于调用所述第二服务器的所述自动化测试报告服务;以及所述方法还包括:所述第一服务器基于所述代理脚本向所述第二服务器发送第四请求,所述第四请求用于请求生成测试报告,所述测试报告包含对所述待测系统的自动化测试的测试结果。
10.第二方面,本技术提供一种测试方法,该方法包括:第二服务器接收来自第一服务器的第一请求,所述第一请求包括待测系统的标识,用于请求对所述待测系统进行自动化
测试,所述第二服务器用于提供测试服务,所述测试服务包括对一个或多个系统的自动化测试服务;所述第二服务器基于所述待测系统的标识,从预先配置在所述测试服务中的一个或多个系统的测试脚本中,确定所述待测系统的测试脚本;所述第二服务器基于所述待测系统的测试脚本对所述待测系统进行测试,得到所述待测系统的测试报告原始文件。
11.基于上述方案,由于第二服务器提供的自动化测试服务中可以预先设置各种复杂的测试环境,可以实现对逻辑复杂的测试脚本的执行,第二服务器在接收到第一服务器发来的用于请求对待测系统进行自动化测试的请求后,第二服务器基于预先配置的对应于待测系统的测试脚本,对待测系统进行测试,从而实现对复杂测试场景的支持。
12.可选地,所述第二服务器接收来自所述第一服务器的第二请求,所述第二请求用于请求查询对所述待测系统的测试是否结束;在确定对所述待测系统的测试结束的情况下,所述第二服务器向所述第一服务器发送测试结束信息;或,在确定对所述待测系统的测试未结束的情况下,所述第二服务器向所述第一服务器发送测试未结束信息。
13.可选地,所述第二服务器接收来自所述第一服务器的第三请求,所述第三请求用于请求查询对所述待测系统的测试结果,所述测试结果包括测试成功或测试失败;在确定对所述待测系统的测试成功的情况下,所述第二服务器向所述第一服务器发送测试成功信息;或,在确定对所述待测系统的测试失败的情况下,所述第二服务器向所述第一服务器发送测试失败信息。
14.可选地,所述第二服务器还提供自动化测试报告生成服务,所述自动化测试报告服务为基于自动化测试生成测试报告的服务;以及,所述方法还包括:所述第二服务器接收来自所述第一服务器的第四请求,所述第四请求用于请求生成测试报告;所述第二服务器基于所述第四请求,对所述待测系统的测试报告原始文件进行解析,生成测试报告,所述测试报告包含对所述待测系统的自动化测试的测试结果。
15.可选地,所述测试服务由运行在所述第二服务器上的第一容器提供;以及,所述方法还包括:所述第二服务器将所述测试报告保存在第一预设目录下,所述第一预设目录是所述第一容器中的虚拟目录,所述第一预设目录挂载在所述测试服务的宿主机的固定目录下。
16.可选地,所述自动化测试报告生成服务由运行在所述第二服务器上的第二容器提供;以及,所述方法还包括:所述第二服务器基于所述自动化测试报告生成服务,响应于用户在浏览器上输入的第二预设目录的地址,将所述测试报告呈现在所述浏览器上,所述第二预设目录是保存在所述固定目录下的测试报告所映射到的目录。
17.第三方面,本技术提供了一种测试装置,包括用于实现第一方面以及第一方面任一种可能实现方式中的方法的模块,或,包括用于实现第二方面以及第二方面任一种可能实现方式中的方法的模块。应理解,各个模块可通过执行计算机程序来实现相应的功能。
18.第四方面,本技术提供了一种测试装置,包括处理器,所述处理器用于执行第一方面以及第一方面任一种可能实现方式中所述的测试方法,或,所述处理器用于执行第二方面以及第二方面任一种可能实现方式中所述的测试方法。
19.可选地,所述测试装置还可以包括存储器,用于存储计算机可读指令,所述处理器读取所述计算机可读指令使得所述管理装置可以实现上述各方面中描述的方法。
20.可选地,所述测试装置还可以包括通信接口,所述通信接口用于该装置与其它设
备进行通信,示例性地,通信接口可以是收发器、电路、总线、模块或其它类型的通信接口。
21.第五方面,本技术提供了一种芯片系统,该芯片系统包括至少一个处理器,用于支持实现上述第一方面以及第一方面任一种可能实现方式中所涉及的功能,或,用于支持实现上述第二方面以及第二方面任一种可能实现方式中所涉及的功能,例如,例如接收或处理上述方法中所涉及的请求和/或信息。
22.在一种可能的设计中,所述芯片系统还包括存储器,所述存储器用于保存程序指令和数据,存储器位于处理器之内或处理器之外。
23.该芯片系统可以由芯片构成,也可以包含芯片和其它分立器件。
24.第六方面,本技术提供了一种计算机可读存储介质,所述存储介质中存储有计算机可读指令,当所述计算机可读指令被计算机执行时,使得计算机实现第一方面以及第一方面任一种可能实现方式中的方法,或,使得计算机实现第二方面以及第二方面任一种可能实现方式中的方法。
25.应当理解的是,本技术的第三方面至第六方面与本技术的第一方面和第二方面的技术方案相对应,各方面及对应的可行实施方式所取得的有益效果相似,不再赘述。
附图说明
26.图1为适用于本技术实施例提供的测试方法的通信系统的示意图;
27.图2为本技术实施例提供的一种测试方法的示意性流程图;
28.图3为本技术实施例提供的一种测试装置的示意性框图;
29.图4为本技术实施例提供的另一种测试装置的示意性框图;
30.图5为本技术实施例提供的又一种测试装置的示意性框图。
具体实施方式
31.下面将结合附图,对本技术中的技术方案进行描述。
32.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本技术的一些方面相一致的装置和方法的例子。
33.为便于理解本技术实施例,以下对本技术中涉及到的一些术语或词汇作简单说明。
34.1、测试用例(test case):是指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。其内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,最终形成文档。简单地认为,测试用例是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,用于核实是否满足某个特定软件需求。
35.2、自动化测试:是把以人为驱动的测试行为转化为机器执行的一种过程。通常情况是在测试用例设计完成且评审通过之后,由测试人员根据测试用例描述的步骤进行一步步执行测试,得到实际结果与预期结果进行比较。自动化测试即把这个执行测试的过程代码化,通过自动化测试框架的管理,让机器运行测试步骤,从而对比实际结果与预期结果的过程。
36.3、持续集成(continuous integration,ci)/持续交付(continuous deployment,cd):ci是指在代码构建过程中持续地进行代码的集成、构建、以及自动化测试等,有了ci工具,我们可以在代码提交的过程中通过单元测试等尽早地发现引入的错误;cd是指代码构建完毕后,可以方便地将新版本部署上线,这样有利于快速迭代并交付产品。
37.4、gitlab(一种代码仓库管理系统)ci/cd:可以简称为gitlab ci,是一套基于gitlab的ci/cd应用,可以让开发人员通过“.gitlab-ci.yml”配置文件在项目中配置ci/cd流程,在有新的代码提交后,系统可以自动/手动地执行任务,完成ci/cd操作。
38.5、kubernetes:可以简称为k8s或kube,是一个开源的,用于管理云平台中多个主机上的容器化的应用,k8s的目标是让部署容器化的应用简单并且高效。
39.在目前已知的一些自动化测试技术中,服务器只能执行一些逻辑比较简单的测试步骤,难以支持复杂的测试场景。例如,在目前基于gitlab ci/cd的自动化测试方法中,是在gitlab ci/cd的“.gitlab-ci.yml”配置文件中添加一个测试(test)阶段的代码块,在该代码块中,用户能够编写测试命令,从而实现自动化测试。但这种方式,局限性较大,因为在“.gitlab-ci.yml”配置文件中编写的命令只能是逻辑比较简单的代码,例如,简单的“if/eles”逻辑判断,这种方式不支持编执行逻辑复杂的代码,例如,复杂的循环逻辑,也就不能支持复杂的自动化测试测试逻辑和场景。
40.因此,本技术提供一种测试方法、装置及计算机可读存储介质,通过在第二服务器上预先配置逻辑复杂的测试脚本,在已有的可实现自动化测试流程的第一服务器上运行代理脚本,调用第二服务器上的测试服务,以实现对逻辑复杂的测试脚本的执行,对待测系统进行测试,从而实现对复杂测试场景的支持。
41.下面将结合附图,对本技术中的技术方案进行描述。
42.图1为适用于本技术提供的测试方法的通信系统的示意图。
43.图1的通信系统中示出了服务器1和服务器2,服务器1与服务器2之间可以进行通信,其中,服务器1上可以运行有至少一个例如gitlab ci/cd的应用,并在该应用中配置代理脚本,该代理脚本用于调用服务器2提供的测试服务;服务器2上可以运行有至少一个例如k8s的应用,并在该应用中配置测试服务,该测试服务为对一个或多个系统进行自动化测试的服务。当用户在服务器1的gitlab ci/cd上提交了某个系统的代码后,就可以触发自动测试功能,服务器1就可以根据代理脚本中的逻辑调用服务器2上的测试服务,对提交了代码的系统进行自动化测试。
44.应理解,图1只是示例性的,在实际的应用场景中,服务器1和服务器2可以部署在不同的物理设备中,由不同的物理设备分别实现分别服务器1和服务器2各自的功能。其中,服务器1可以是一台服务器,也可以是多台服务器构成的服务器集群。服务器2可以是一台服务器,也可以是多台服务器构成的服务器集群。或者,服务器1和服务器2也可以合一部署在同一物理设备中,例如,可以部署在同一台服务器中,也可以分布式地部署在同一个服务器集群中,本技术实施例对此不作限定。
45.图2是本技术实施例提供的一种测试方法的示意性流程图。如图2所示,测试方法200包括步骤201至步骤204。下面对方法200中的各个步骤进行详细说明。
46.在步骤201中,第一服务器获取待测系统的标识。
47.示例性地,图1中示出的服务器1可以是第一服务器的一例,该第一服务器可以为
已有的可进行简单逻辑的自动化测试的服务器,例如为gitlab的服务器,该第一服务器上运行有gitlab ci/cd应用,gitlab ci/cd应用中管理着至少一个系统,当用户在gitlab ci/cd应用中更新了gitlab ci/cd应用管理的至少一个系统中的某个系统的代码时,就触发了gitlab ci/cd应用的自动测试功能,第一服务器可以获取到用户更新代码的这个系统得的标识。为了便于表述,本技术实施例中,将用户更新代码的系统称为待测系统。第一服务器可以获取用户更新代码的这个系统得的标识,也即,第一服务器可以获取待测系统的标识。
48.其中,被测系统的标识可以为被测系统的名称或者其他可以唯一标识该系统的信息,本技术对此不作限定。
49.在步骤202中,第一服务器基于预配置的代理脚本向第二服务器发送第一请求。相应地,第二服务器可以接收来自第一服务器的第一请求。
50.其中,第二服务器可以是本技术实施例中区别于第一服务器的又一服务器,例如图1中的服务器2。该第二服务器可以提供测试服务,该测试服务可以包括对一个或多个系统的自动化测试服务。不同于第一服务器,该第二服务器可提供的测试服务可以是逻辑复杂的测试脚本。该测试脚本可以是预先配置在第二服务器中的,与待测系统的标识相对应。
51.进一步地,第二服务器上的测试服务中还可以预先配置好各种测试场景所需的测试环境,以支持不同待测系统所需要的不同测试环境,例如,可以预先配置python(一种编程语言)等环境、各种依赖的包以及测试所需要引入的外部文件等,本技术对此不作限定。
52.示例性地,假设,第二服务器上运行有k8s应用,可以预先在k8s应用中部署测试服务。例如,测试服务的名称可以为“auto-test-service”,本技术对此不作任何限定。
53.在第一服务器获取到待测系统的标识后,可以向第二服务器发送包含有待测系统的标识的第一请求,以请求第二系统对该待测系统进行自动化测试。
54.在本技术实施例中,第一服务器向第二服务器发送第一请求的具体操作可通过执行预先配置在第一服务器上的代理脚本来实现。例如,可以在gitlab ci/cd的“.gitlab-ci.yml”配置文件中添加一个执行该代理脚本的test阶段,该代理脚本用于调用第二服务器提供的测试服务。
55.示例性地,假设该代理脚本的名称为“test-agent.sh”,在“.gitlab-ci.yml”配置文件中添加的内容可以为执行命令“/bin/bash~/test-agent.sh被测系统的标识”。
56.如果第一服务器向第二服务器发送第一请求失败,则可以认为test阶段执行失败,则ci/cd停止,本技术对此不作限定。
57.在步骤203中,第二服务器基于待测系统的标识,从预先配置在测试服务中的一个或多个系统的测试脚本中,确定待测系统的测试脚本。
58.示例性地,测试服务中可以提供执行测试用例接口,第二服务器接收到来自第一服务器的第一请求后,可以认为触发了该执行测试用例接口,第二服务器可以基于待测系统的标识确定待测系统的测试脚本。
59.测试服务中可以预先配置一个或多个系统的测试脚本。测试服务中可以包括预先配置有一个或多个系统的测试脚本的包,例如这个包的名称可以为“autotest”。“autotest”包中可以预先配置有第一服务器上的gitlab ci/cd应用管理的部分或全部系统的测试脚本。
60.在一种可能的实现方式中,在第二服务器上可以部署一个测试服务,这个测试服务中可以预先配置多个系统的测试脚本。在这种实现方式中,第二服务器可以根据待测系统的标识从这个测试服务中的“autotest”包中确定出与该待测系统对应的测试脚本。
61.在这种实现方式中,还可以部署多个该测试服务的副本,也即,部署多个备份测试服务,当主测试服务发生异常时,备份测试服务可以替代主测试服务,从而使得自动化测试功能更加稳定。
62.在另一种可能的实现方式中,在第二服务器上可以部署一个或多个测试服务,每个测试服务可以对应于第一服务器上的gitlab ci/cd应用管理的一个系统,每个测试服务中的“autotest”包中可以预先配置该测试服务所对应的待测系统的测试脚本。在这种可能的实现方式中,第二服务器可以根据待测系统的标识从这多个测试服务中确定与该待测系统对应的测试服务,就能确定出该待测系统对应的测试脚本。
63.在这种实现方式中,可以利用微服务多实例高并发的优势,使得自动化测试功能更加稳定,也就是说,如果与一个待测系统对应的测试服务发生了异常,不会对其他待测系统所对应的测试服务产生影响。
64.可选地,测试服务中可以包括预先配置有与一个或多个系统的测试脚本的包相关的配置包(例如,该配置包的名称可以为“config”,该包中可以包括配置类信息)、监控包(例如,该监控包的名称可以为“listeners”,该包中可以包括监控类信息)和工具包(例如,该工具包的名称可以为“utils”,该包中可以包括工具类信息)。本技术对此不作限定。
65.可选地,测试服务中可以包括预先配置有与一个或多个系统的测试脚本的包相关的定时包,例如,该定时包的名称可以为“schedules”,该定时包中可以包括一个或多个系统的定时测试任务。在这种实现方式中,除了用户通过在第一服务器上上传待测系统的代码来触发对待测系统的自动化测试外,还可以根据在定时包中预设的一个或多个系统的定时测试任务,对一个或多个系统进行自动化测试。
66.在步骤204中,第二服务器基于待测系统的测试脚本对待测系统进行测试,得到待测系统的测试报告原始文件。
67.在确定了待测系统的测试脚本后,第二服务器可以基于该待测系统的测试脚本对该待测系统进行测试,并在测试结束后得到待测系统的测试报告原始文件。其中,测试报告原始文件可以是javascript(一种具有函数优先的轻量级,解释型或即时编译型的编程语言,可简称为js)对象简谱(object notation)(json)格式,本技术对此不作限定。
68.示例性地,该测试服务可以是基于testng框架(一种自动测试框架)的开发的测试服务,在第二服务器确定出该待测系统的测试脚本后,第二服务器可以创建一个testng对象,使用这个testng对象执行该待测系统的测试脚本。
69.在这种实现方式中,每次触发执行测试用例接口,第二服务器都会单独启动线程创建一个testng对象,一个testng对象执行一个待测系统的测试脚本,从而可以保证待测系统的独立性和隔离性,使得对不同的测试系统的自动化测试互不影响。
70.基于上述方案,第二服务器提供的自动化测试服务中可以预先设置各种复杂的测试环境,可以实现对逻辑复杂的测试脚本的执行,第二服务器在接收到第一服务器发来的用于请求对待测系统进行自动化测试的请求后,第二服务器基于预先配置的对应于待测系统的测试脚本,对待测系统进行测试,从而实现对复杂测试场景的支持。
71.可选地,方法200还可以包括:第一服务器基于代理脚本向第二服务器发送第二请求,第二请求用于请求查询对待测系统的测试是否结束。相应地,第二服务器接收来自第一服务器的第二请求;在确定对待测系统的测试结束的情况下,第二服务器向第一服务器发送测试结束信息;或,在确定对待测系统的测试未结束的情况下,第二服务器向第一服务器发送测试未结束信息。
72.示例性地,测试服务中可以提供查询测试是否执行结束的接口,第一服务器向第二服务器发送第一请求后,可以向第二服务器发送第二请求,在第二服务器接收来自第一服务器的第二请求后,就可以认为触发了该查询测试是否执行结束的接口,第二服务器可以基于该接口判断对待测系统的测试是否结束。如果确定出对待测系统的测试执行结束,则可以向第一服务器发送测试结束信息;如果确定出对待测系统的测试执行未结束,则可以向第一服务器发送测试未结束信息。
73.可选地,如果第一服务器接收到来自第二服务器的测试未结束信息,第一服务器可以在预设时间段后再次向第二服务器发送第二请求。例如,预设时间段可以为1秒(second,s)、2s、3s、5s等等,本技术对此不作限定。
74.如果第一服务器向第二服务器发送第二请求失败,则可以认为test阶段执行失败,则ci/cd停止,本技术对此不作限定。
75.可选地,方法200还可以包括:第一服务器基于代理脚本向第二服务器发送第三请求,第三请求用于请求查询对待测系统的测试结果,测试结果包括测试成功或测试失败。相应地,第二服务器接收来自第一服务器的第三请求;在确定对待测系统的测试成功的情况下,第二服务器向第一服务器发送测试成功信息;或,在确定对待测系统的测试失败的情况下,第二服务器向第一服务器发送测试失败信息。
76.示例性地,测试服务中可以提供查询测试结果的接口,第一服务器向第二服务器发送第一请求后或第二请求后,可以向第二服务器发送第三请求,在第二服务器接收来自第一服务器的第三请求后,就可以认为触发了该查询测试结果的接口,第二服务器可以基于该接口判断对待测系统的测试结果。如果确定出对待测系统的测试执行成功,则可以向第一服务器发送测试成功信息;如果确定出对待测系统的测试执行失败,则可以向第一服务器发送测试未失败信息。
77.如果第一服务器向第二服务器发送第三请求失败,则可以认为test阶段执行失败,则ci/cd停止,本技术对此不作限定。
78.可选地,第二服务器还提供自动化测试报告服务,自动化测试报告服务为基于自动化测试生成测试报告的服务,代理脚本还用于调用第二服务器的自动化测试报告服务;以及方法200还包括:第一服务器基于代理脚本向第二服务器发送第四请求,第四请求用于请求生成测试报告,测试报告包含对待测系统的自动化测试的测试结果。相应地,第二服务器接收来自第一服务器的第四请求;第二服务器基于第四请求,对待测系统的测试报告原始文件进行解析,生成测试报告。
79.示例性地,测试服务中可以提供生成测试报告的接口,第一服务器向第二服务器发送第一请求后或第二请求或第三请求后,可以向第二服务器发送第四请求,在第二服务器接收来自第一服务器的第四请求后,就可以认为触发了该生成测试报告的接口,第二服务器可以基于该接口对待测系统的测试报告原始文件进行解析,生成测试报告。例如,假设
第二服务器得到待测系统的测试报告原始文件后,将待测系统的测试报告原始文件保存在“/allure-reports”目录下,第二服务器在接收到第三请求后,可以到“/allure-reports”目录下读取待测系统的测试报告原始文件,并对待测系统的测试报告原始文件进行解析,再进而生成测试报告。
80.需要说明的是,第二服务器对待测系统的测试报告原始文件进行解析后可以得到该待测系统的超文本标记语言(hyper text markup language,html)格式的测试报告,第二服务器可以将该待测系统的html格式的测试报告的内容放到最终的测试报告中,最终的测试报告就是生成的测试报告,最终的测试报告也是html格式,也就是说最终的测试报告中不仅可以包括该待测系统的测试报告中的内容,还可以包括对该待测系统进行测试之前,对其他系统测试后得到的其他系统的html格式的报告的内容。
81.可选地,测试服务可以由运行在第二服务器上的第一容器提供;以及,方法200还可以包括:第二服务器将测试报告保存在第一预设目录下,第一预设目录是第一容器中的虚拟目录,第一预设目录挂载在测试服务的宿主机的固定目录下。
82.在这种实现方式中,用户可以预先通过k8s存储卷挂载的方式对测试报告的保存地址进行配置,将第一预设目录挂载在测试服务的宿主机的固定目录下,测试服务的宿主机的固定目录,也就是,测试服务所运行在的实体设备的固定目录,第一预设目录和宿主机的固定目录都可以是用户预先配置的。第一预设目录可以是第一容器中的目录,例如可以是“/allure-reports”,本技术对此不作限定。
83.这样一来,可以实现对测试报告的持久化存储,因为,如果不挂载,那么每次在第一容器重启时,测试报告中的历史内容都会被清空,也即,每次重启都是测试报告的一次初始化状态,这样最终生成的测试报告中就只能保存对一个待测系统进行的一次测试的html格式的测试报告的内容了,历史内容不会被保存下来。
84.可选地,自动化测试报告生成服务由运行在第二服务器上的第二容器提供;以及,方法200还可以包括:第二服务器基于自动化测试报告生成服务,响应于用户在浏览器上输入的第二预设目录的地址,将测试报告呈现在浏览器上,第二预设目录是保存在所述固定目录下的测试报告所映射到的目录。
85.在这种实现方式中,用户可以预先通过k8s存储卷挂载的方式对测试报告的保存地址进行配置,将保存在所述固定目录下的测试报告映射到的第二预设目录下,第二预设目录可以是用户预先配置的。第二预设目录可以是第二容器中的目录,在第二容器中的环境是第一预设目录是第一容器中的目录,例如可以是“/allure-reports”,本技术对此不作限定。第二预设目录是第二容器中的目录,例如当第二容器的容器环境是tomcat(一种服务器)环境时,第二预设目录例如可以是“webapp”目录,本技术对此不作限定。
86.这样一来,每当对一个待测系统测试完成并得到该待测系统的html格式的测试报告后,该待测系统的html格式的测试报告的内容都会更新到最终的测试报告中,第二预设目录下的测试报告也会实时更新,当用户在浏览器中输入第二预设目录的地址查看测试报告时,就能看到最新的包括所有历史的测试报告内容的测试报告了。
87.可选地,测试服务还可以包括清除执行结果的接口。
88.在这种实现方式中,第一服务器可以向第二服务器发送第五请求,第五请求用于请求第二服务器清除测试报告中的指定的系统的历史的执行结果。第二服务器在接收到来
自第一服务器的第五请求后,可以认为触发了清除执行结果的接口,第二服务器可以清除指定的系统的自动化测试结果的历史内容,例如,案例总数、是否执行结束、成功案例数、失败案例数和跳过的案例数等,本技术对此不作限定。
89.基于上述方案,由于第二服务器提供的自动化测试服务中可以预先设置各种复杂的测试环境,可以实现对逻辑复杂的测试脚本的执行,第二服务器在接收到第一服务器发来的用于请求对待测系统进行自动化测试的请求后,第二服务器基于预先配置的对应于待测系统的测试脚本,对待测系统进行测试,从而实现对复杂测试场景的支持。并且,通过提供自动化测试报告服务,用户还可以对待测系统测试完成后的测试报告。
90.图3为本技术实施例提供的一种测试装置的示意性框图。
91.如图3所示,该测试装置300可以包括:获取模块310和发送模块320。该测试装置300可用于实现上述方法200中第一服务器的功能,其中,获取模块310可以用于获取待测系统的标识;发送模块320可以用于基于预配置的代理脚本向第二服务器发送第一请求,所述第一请求包括所述待测系统的标识,以用于请求对所述待测系统进行自动化测试,所述第二服务器用于提供测试服务,所述测试服务包括对一个或多个系统进行自动化测试的服务,所述代理脚本用于调用所述第二服务器提供的所述测试服务。
92.可选地,发送模块320还可以用于基于所述代理脚本向所述第二服务器发送第二请求,所述第二请求用于请求查询对所述待测系统的测试是否结束。
93.可选地,发送模块320还可以用于基于所述代理脚本向所述第二服务器发送第三请求,所述第三请求用于请求查询对所述待测系统的测试结果,所述测试结果包括测试成功或测试失败。
94.可选地,第二服务器还提供自动化测试报告服务,所述自动化测试报告服务为基于自动化测试生成测试报告的服务,所述代理脚本还用于调用所述第二服务器的所述自动化测试报告服务;以及发送模块320还可以用于基于所述代理脚本向所述第二服务器发送第四请求,所述第四请求用于请求生成测试报告,所述测试报告包含对所述待测系统的自动化测试的测试结果。
95.图4为本技术实施例提供的另一种测试装置的示意性框图。
96.如图4所示,该测试装置400可以包括:接收模块410、确定模块420和测试模块430。该测试装置400可用于实现上述方法200中第二服务器的功能,其中,接收模块410可以用于接收来自第一服务器的第一请求,所述第一请求包括待测系统的标识,用于请求对所述待测系统进行自动化测试,该测试装置400用于提供测试服务,所述测试服务包括对一个或多个系统的自动化测试服务;确定模块420可以用于基于所述待测系统的标识,从预先配置在所述测试服务中的一个或多个系统的测试脚本中,确定所述待测系统的测试脚本;测试模块430可以用于基于所述待测系统的测试脚本对所述待测系统进行测试,得到所述待测系统的测试报告原始文件。
97.可选地,接收模块410可以用于接收来自所述第一服务器的第二请求,所述第二请求用于请求查询对所述待测系统的测试是否结束;该测试装置400还可以包括发送模块440,该发送模块440可以用于向所述第一服务器发送测试结束信息或测试未结束信息。
98.可选地,接收模块410可以用于接收来自所述第一服务器的第三请求,所述第三请求用于请求查询对所述待测系统的测试结果,所述测试结果包括测试成功或测试失败;该
测试装置400还可以包括发送模块440,该发送模块440可以用于向所述第一服务器发送测试成功信息或测试失败信息。
99.可选地,该测试装置400还提供自动化测试报告生成服务,所述自动化测试报告服务为基于自动化测试生成测试报告的服务;以及接收模块410还可以接收来自所述第一服务器的第四请求,所述第四请求用于请求生成测试报告;该测试装置400还可以包括生成模块450,该生成模块450可以用于基于所述第四请求,对所述待测系统的测试报告原始文件进行解析,生成测试报告,所述测试报告包含对所述待测系统的自动化测试的测试结果。
100.可选地,所述测试服务由运行在该测试装置400的第一容器提供;以及,该测试装置400还包括保存模块460,该保存模块460可以用于将所述测试报告保存在第一预设目录下,所述第一预设目录是所述第一容器中的虚拟目录,所述第一预设目录挂载在所述测试服务的宿主机的固定目录下。
101.可选地,所述自动化测试报告生成服务由运行在该测试装置400上的第二容器提供;以及,该测试装置400还可以包括呈现模块470,该呈现模块470可以用于基于所述自动化测试报告生成服务,响应于用户在浏览器上输入的第二预设目录的地址,将所述测试报告呈现在所述浏览器上,所述第二预设目录是保存在所述固定目录下的测试报告所映射到的目录。
102.应理解,图3和图4中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。另外,在本技术各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
103.图5为本技术实施例提供的又一种测试装置的示意性框图。
104.如图5所示的测试装置500可以用于实现上述方法200中第一服务器或第二服务器的功能。该测试装置500可以为芯片系统。本技术实施例中,芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
105.如图5所示,该测试装置500可以包括至少一个处理器510,用于实现本技术实施例提供的方法200中第一服务器或第二服务器的功能。
106.示例性地,当该测试装置500用于实现本技术实施例提供的方法200中第一服务器的功能时,处理器510可以用于获取待测系统的标识;基于预配置的代理脚本向第二服务器发送第一请求,所述第一请求包括所述待测系统的标识,以用于请求对所述待测系统进行自动化测试,所述第二服务器用于提供测试服务,所述测试服务包括对一个或多个系统进行自动化测试的服务,所述代理脚本用于调用所述第二服务器提供的所述测试服务。具体参见方法示例中的详细描述,此处不做赘述。
107.示例性地,当该测试装置500用于实现本技术实施例提供的方法200中第二服务器的功能时,处理器510可以用于接收来自第一服务器的第一请求,所述第一请求包括待测系统的标识,用于请求对所述待测系统进行自动化测试,该测试装置500用于提供测试服务,所述测试服务包括对一个或多个系统的自动化测试服务;基于所述待测系统的标识,从预先配置在所述测试服务中的一个或多个系统的测试脚本中,确定所述待测系统的测试脚本;基于所述待测系统的测试脚本对所述待测系统进行测试,得到所述待测系统的测试报告原始文件。具体参见方法示例中的详细描述,此处不做赘述。
108.该测试装置500还可以包括至少一个存储器520,可以用于存储多个事务函数以及信息和/或数据。存储器520和处理器510耦合。本技术实施例中的耦合是装置、单元或模块之间的间接耦合或通信连接,可以是电性,机械或其它的形式,用于装置、单元或模块之间的信息交互。处理器510可能和存储器520协同操作。处理器510可能执行存储器520中存储的程序指令。所述至少一个存储器中的至少一个可以包括于处理器中。
109.该测试装置500还可以包括通信接口530,用于通过传输介质和其它设备进行通信,从而使得该测试装置500可以和其它设备进行通信,例如,当该测试装置500为图2中所示的第一服务器时,其它设备为图2中所示的第二服务器,当该测试装置500为图2中所示的第二服务器时,其它设备为图2中所示的第一服务器。所述通信接口530例如可以是收发器、接口、总线、电路或者能够实现收发功能的装置。处理器510可利用通信接口530收发请求和/或信息,并用于实现图2对应的实施例中所述服务器所执行的方法200。
110.本技术实施例中不限定上述处理器510、存储器520以及通信接口530之间的具体连接介质。本技术实施例在图5中以处理器510、存储器520以及通信接口530之间通过总线540连接。总线540在图5中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
111.本技术还提供了一种芯片系统,所述芯片系统包括至少一个处理器,用于实现上述图2所示实施例中所述第一服务器或第二服务器执行的方法中所涉及的功能。
112.在一种可能的设计中,所述芯片系统还包括存储器,所述存储器用于保存程序指令和数据,存储器位于处理器之内或处理器之外。
113.该芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
114.本技术还提供一种计算机程序产品,所述计算机程序产品包括:计算机程序(也可以称为代码,或指令),当所述计算机程序被运行时,使得计算机执行如图2所示实施例中第一服务器执行的方法或第二服务器执行的方法。
115.本技术还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序(也可以称为代码,或指令)。当所述计算机程序被运行时,使得计算机执行如图2所示实施例中第一服务器执行的方法或第二服务器执行的方法。
116.应理解,本技术实施例中的处理器可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
117.还应理解,本技术实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(static ram,sram)、动态随机存取存储器(dynamic ram,dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddr sdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synchlink dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,dr ram)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
118.本说明书中使用的术语“单元”、“模块”等,可用于表示计算机相关的实体、硬件、固件、硬件和软件的组合、软件、或执行中的软件。
119.本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各种说明性逻辑块(illustrative logical block)和步骤(step),能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。在本技术所提供的几个实施例中,应该理解到,所揭露的装置、设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
120.所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
121.另外,在本技术各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上单元集成在一个模块中。
122.在上述实施例中,各功能模块的功能可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令(程序)。在计算机上加载和执行所述计算机程序指令(程序)时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,dsl))或无线(例如红
外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,数字通用光盘(digital video disc,dvd))、或者半导体介质(例如固态硬盘(solid state disk,ssd))等。
123.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
124.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1