一种自动化测试方法及系统与流程

文档序号:29571795发布日期:2022-04-09 04:08阅读:93来源:国知局
一种自动化测试方法及系统与流程

1.本发明涉及软件测试技术领域,尤其涉及一种自动化测试方法及系统。


背景技术:

2.随着信息技术的飞速发展,软件产品的规模也越来越庞大,对软件质量的要求也在不断提高,传统手工测试过程已经越来越不适应发展的需要。当前引入软件测试的改进方法就是自动化测试。
3.自动化测试是软件测试的重要一环,现有技术在做自动化测试时通过是将自动化测试代码提交后经过人工检测后入库打包,再部署到测试环境中去运行。然而,当测试的自动化用例规模较大的时候,自动化管理员要审核代码,合入代码,还要部署环境,运行代码,工作量巨大,同时部署环境还要配置环境变量都是重复耗时的工作。而如今多数项目实行敏捷测试,版本迭代速度加快,人工打包部署工作每次重复枯燥,耗费大量时间。


技术实现要素:

4.本发明提供一种自动化测试方法及系统,以解决现有技术的自动化测试耗费时间量大的技术问题。
5.本发明第一方面提供的自动化测试方法,包括:
6.对应当前的测试项目,在测试项目对应的测试脚本文件被上传至测试平台中的代码托管平台后,使用测试平台中的持续集成工具将所述测试脚本文件推送至容器环境中部署并运行所述测试脚本文件,得到测试结果。
7.作为上述方案的改进,以提交事件触发测试项目的测试脚本文件生成;所述提交事件包括至少两个时,各个提交事件均对应生成有各个测试项目的测试脚本文件,在各个测试脚本文件被上传至测试平台中的代码托管平台后,使用测试平台中的持续集成工具将各个测试脚本文件推送至容器环境中部署后,并行运行各个测试项目对应的测试脚本文件,得到各个测试项目对应的测试结果。
8.作为上述方案的改进,在测试项目对应的测试脚本文件被上传至测试平台中的代码托管平台之前,还包括:
9.获取所述测试项目的开发脚本类型和预先确定的测试环境;
10.当所述测试环境支持所述开发脚本类型的脚本运行时,获取所述测试项目的开发脚本文件并将其作为测试脚本文件;
11.当所述测试环境不支持所述开发脚本类型的脚本运行时,获取所述测试项目的开发脚本文件并将其转换为在所述测试环境下可执行的测试脚本文件。
12.作为上述方案的改进,所述测试脚本文件包括测试脚本和所述测试脚本对应的配置信息文件,所述配置信息文件记录有其需要调用的测试脚本;
13.则,所述测试平台中的持续集成工具将所述测试脚本和所述配置信息文件推送至容器环境中部署后,根据所述配置信息文件调用所述测试脚本进行测试。
14.作为上述方案的改进,所述提交事件包括以下中的一种:
15.用户触发生成的项目测试指令;
16.根据预设的测试计划生成的项目测试指令;其中,所述测试计划为在指定的时间点时将所述测试项目上传至所述代码托管平台。
17.作为上述方案的改进,所述测试项目的测试类型为ui类型或api类型。
18.作为上述方案的改进,所述测试结果包括测试日志,测试报告和测试报告查询地址;
19.则,在得到测试结果之后,还包括:
20.按照预设的日志模板将所述测试日志进行可视化显示;
21.按照预设的报告模板将所述测试报告进行可视化显示;
22.按照预设的报告查询模板将所述报告查询地址进行可视化显示。
23.作为上述方案的改进,所述代码托管平台为gitlab,所述持续集成工具为gitlab-ci或jenkins。
24.作为上述方案的改进,所述容器为docker镜像。
25.本发明第二方面提供一种自动化测试系统,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面提供的自动化测试方法。
26.与现有技术相比,本发明提供的自动化测试方法和系统的有益效果如下:
27.本发明提供的自动化测试方法,其包括对应当前的测试项目,在测试项目对应的测试脚本文件被上传至测试平台中的代码托管平台后,使用测试平台中的持续集成工具将所述测试脚本文件推送至容器环境中部署并运行所述测试脚本文件,得到测试结果。本发明通过代码托管平台、持续化集成工具以及容器技术实现测试脚本的自动提交、自动构建、自动部署和自动测试,提高了自动化测试的代码质量,并减少了自动化部署的工作量,从而能够节省时间,提升测试效率。相应地,本发明还提供了一种自动化测试系统。
附图说明
28.图1是本发明提供的自动化测试方法的一个实施例的流程图。
具体实施方式
29.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
30.以下对本发明出现的关键技术语进行定义:
31.代码托管平台:代码仓库管理系统的代码托管平台,如git、gitlab和码云等。
32.jenkins:一个开源的、提供友好操作界面的持续集成工具,起源于hudson,主要用于持续、自动的构建/测试软件项目、监控外部任务的运行)。jenkins用java语言编写,可在tomcat等流行的servlet容器中运行,也可独立运行。
33.gitlab-ci:gitlab内置的持续集成工具,其工作原理是将小的代码块推送到代码
托管平台的代码库中,并且每次推送时,都要运行一系列脚本来构建、测试和验证代码更改,然后再将其合并到主分支中。
34.容器:容器是轻量级的操作系统虚拟化,同时是一个开源的应用容器运行环境搭建平台,可以让开发者以便捷方式打包应用到一个可移植的容器中,然后安装至任何运行linux或windows等系统的服务器上。目前容器技术有很多种,最常用的是docker,它是一个开源的引擎,可以很轻松的创建一个容器。
35.本技术实施例中的自动化测试方法在一个测试平台上执行,所述测试平台部署在终端上。所述测试平台包括代码托管平台和持续集成工具等。其中,所述代码托管平台用于下载并提交脚本;所述持续集成工具用于脚本的自动部署和自动测试。此外,所述测试平台还包括可视化测试管理平台。所述可视化测试管理平台为开发人员预先构建好的测试项目管理平台。所述可视化测试管理平台集成有多个测试项目,所述测试项目是开发人员根据测试需求预先采用编程语言创建的。基于该可视化测试管理平台,测试人员或非测试人员可以根据测试需求在可视化界面上选择相应的测试项目进行测试。可视化测试管理平台还支持测试项目的增删查改操作和测试计划的制定操作,测试计划的制定操作如指定测试项目在预设的时间点自动启动测试流程。
36.可视化测试管理平台可以通过捕捉可视化界面的页面元素(如按钮、表单或菜单等),并监控用户对不同界面元素所执行的操作(例如点击、键盘输入、选择选项等),获取用户所选择的测试项目信息并生成对应的脚本文件,执行代码提交命令将脚本提交到测试平台中的代码托管平台后,触发测试平台中的持续集成工具将脚本推送至预先建立的容器环境中运行测试脚本,从而实现自动化测试的功能。
37.请参阅图1,图1是本发明提供的自动化测试方法的一个实施例的流程图。
38.具体的,所述方法由测试平台执行,包括s11:
39.s11,对应当前的测试项目,在测试项目对应的测试脚本文件被上传至测试平台中的代码托管平台后,使用测试平台中的持续集成工具将所述测试脚本文件推送至容器环境中部署并运行所述测试脚本文件,得到测试结果。
40.具体的,所述测试项目为开发人员预先采用编程语言开发的源码,在进行测试项目的创建时,应先对测试项目的环境进行配置,如测试项目上传到代码托管平台的路径,用于接收测试结果的服务器的服务器端口等,由于其为现有技术,这里不再作过多的赘述。
41.在一些实施例中,所述测试项目可以关联多个测试场景,如测试项目“用户关系管理平台”可以关联测试场景“活动维护”,“用户指标”和“卡券维护”等,在对各测试场景创建时,应对各测试场景进行配置,如配置测试场景的测试类型(ui或api)和接口服务地址等。在对测试项目进行测试时,会调用对应的接口服务地址对各测试场景进行测试。
42.在一些实施例中,所述代码托管平台为gitlab,所述持续集成工具为gitlab-ci。
43.具体的,在测试项目开始测试前,代码托管平台gitlab应当预先配置好容器环境,该容量环境能够同时兼容多种测试类型的脚本文件的执行,如ui脚本和api脚本。
44.具体的,测试平台通过执行git push命令将测试脚本文件上传到gitlab,gitlab将检测到测试脚本文件,并触发该项目设置的gitlab-ci;gitlab-ci将其部署到预先建立的容器环境中并在该容器环境中执行测试脚本文件,生成测试结果。
45.可选的,所述持续集成工具也可以使用jenkins。
46.在一些实施例中,所述容器为docker镜像。在具体实施时,在docker环境下,下载预设的各服务的官方镜像,以生成对应的容器。
47.基于上述实施例提供的技术方案,其通过代码托管平台、持续化集成工具以及容器技术实现测试脚本的自动提交、自动构建、自动部署和自动测试,提高了自动化测试的代码质量,并减少了自动化部署的工作量,从而能够节省时间,提升测试效率。
48.在一种可选的实施方式中,以提交事件触发测试项目的测试脚本文件生成;即本发明实施例中在测试平台生成一个提交事件时,即自动生成一个测试项目的测试脚本文件;
49.需要说明的是,用户每选择一个测试项目运行,即生成一个提交事件。所述提交事件可以通过监控用户在可视化测试管理平台界面中的操作获取,也可以是测试平台通过监控对应的测试计划任务获取,如定时上传的测试项目在达到指令时间点会自动获取该测试项目的信息。
50.此外,在本发明实施例中可以同时生成多个提交事件,例如,可视化测试管理平台界面中部署有多个测试项目列表,当用户同时选中多个测试项目提交时,即形成多个提交事件。
51.进一步的,所述提交事件包括至少两个时,各个提交事件均对应生成有各个测试项目的测试脚本文件,在各个测试脚本文件被上传至测试平台中的代码托管平台后,使用测试平台中的持续集成工具将各个测试脚本文件推送至容器环境中部署后,并行运行各个测试项目对应的测试脚本文件,得到各个测试项目对应的测试结果。
52.具体的,当测试平台监控到提交事件至少有2个时,说明此时至少有2个测试项目在请求测试。为了提高测试的效率,测试平台会将多个请求测试的测试项目上传到代码托管平台中并触发持续集成工具将测试项目送往预先建立好的容器环境中部署,并对多个测试项目对应的测试脚本文件进行并行测试,相比于串行测试的方式,并行运行测试脚本文件能够节省测试时间,提高了测试效率。
53.在一种可选的实施方式中,在测试项目对应的测试脚本文件被上传至测试平台中的代码托管平台之前,还包括:
54.获取所述测试项目的开发脚本类型和预先确定的测试环境;
55.当所述测试环境支持所述开发脚本类型的脚本运行时,获取所述测试项目的开发脚本文件并将其作为测试脚本文件;
56.当所述测试环境不支持所述开发脚本类型的脚本运行时,获取所述测试项目的开发脚本文件并将其转换为在所述测试环境下可执行的测试脚本文件。
57.可以理解的是,开发人员在开发测试项目所采用的脚本语言可能在测试环境下是无法编译运行。为了保证测试项目能够顺利执行,测试项目最终生成的测试脚本文件的脚本类型应当与测试环境(即容器的运行环境)匹配。示例性地,当容器的运行环境为linux或unix系统环境,测试项目开发时采用的是python脚本语言或java脚本语言时,则应将其转换为能在linux系统环境可执行的shell脚本文件。
58.在一种可选的实施方式中,所述测试脚本文件包括测试脚本和所述测试脚本对应的配置信息文件,所述配置信息文件记录有其需要调用的测试脚本;
59.则,所述测试平台中的持续集成工具将所述测试脚本和所述配置信息文件推送至
容器环境中部署后,根据所述配置信息文件调用所述测试脚本进行测试。
60.示例性的,若所述测试脚本文件为shell格式脚本文件时,且代码托管平台采用gitlab和持续集成工具gitlab-ci。此时测试项目生成的测试脚本文件包括了.sh脚本文件与.gitlab-ci.yml文件,.sh脚本文件即为测试脚本,.gitlab-ci.yml文件为配置信息文件。
61.具体的,.gitlab-ci.yml是用来指定构建、测试和部署流程、以及持续集成触发条件的脚本。在.gitlab-ci.yml文件中,定义有要运行的测试脚本,定义包含的依赖项,选择要按顺序运行的命令和要并行运行的命令,定义要在何处部署应用程序,以及指定是否要自动运行脚本或手动触发脚本。当测试脚本文件上传至到代码托管平台gitlab的仓库时,gitlab将检测到该文件,并使用名为gitlab runner的工具运行测试脚本。示例性的,以测试项目“用户关系管理平台”关联的测试场景“活动维护”,“用户指标”和“卡券维护”为例,示出测试项目“用户关系管理平台”上生成的配置信息文件(仅示出部分配置信息),其中,定义了测试类型和测试需要调用的测试脚本:
62....
63.auto-test-api:
64.stage:itd/qa-test-image:build_83699
65.tags:
[0066]-deploy-ci
[0067]
script:
[0068]-bash xiaomi/urm/用户关系管理平台[urm]_api_us002_用户指标.sh
[0069]-bash xiaomi/urm/用户关系管理平台[urm]_api_us001_卡券维护.sh
[0070]-bash xiaomi/urm/用户关系管理平台[urm]_api_us003_活动维护.sh
[0071]
...
[0072]
在一种可选的实施方式中,所述提交事件包括以下中的一种:
[0073]
用户触发生成的项目测试指令;
[0074]
根据预设的测试计划生成的项目测试指令;其中,所述测试计划为在指定的时间点时将所述测试项目上传至所述代码托管平台。
[0075]
示例性的,用户可以在可视化测试管理平台的可视化界面上选择相应的测试项目并点击运行,即生成了一个项目测试指令。此外,在集成测试平台还设置有测试计划,在达到预设的时间点时,会自动触发项目测试指令的生成。
[0076]
在一种可选的实施方式中,所述测试项目的测试类型为ui类型或api类型。
[0077]
在本发明实施例中,测试项目的类型可以为ui类型或者api类型,以实现多种测试场景的应用。如当一个或多个测试项目只想介入ui/api自动化测试,只需通过集成测试平台执行上述实施例的s11步骤,即可得到最后的测试结果。本发明实施例还支持不同测试类型项目的同步测试,如当一个或多个测试项目想同时介入ui与api自动化测试时,通过集成测试平台选择相应测试类型的测试项目,点击运行即可。
[0078]
在一种可选的实施方式中,所述测试结果包括测试日志,测试报告和测试报告查询地址;
[0079]
则,在得到测试结果之后,还包括:
[0080]
按照预设的日志模板将所述测试日志进行可视化显示;
[0081]
按照预设的报告模板将所述测试报告进行可视化显示;
[0082]
按照预设的报告查询模板将所述报告查询地址进行可视化显示。
[0083]
具体的,持续集成工具在完成项目测试时,会根据项目创建时配置的服务器端口将测试报告上传至对应的报告服务器,报告服务器将测试结果发送到可视化测试管理平台的可视化界面中显示,以在可视化界面上显示测试日志,测试报告和测试报告,报告模板或日志模板可以预先设定。
[0084]
在一些实施例中,可以在项目测试通过时,将该测试项目部署到产品环境中,也即本发明实施例的测试平台还设置了持续交付的机制,持续交付是在持续集成的进一步扩展,能够实现测试项目的自动交付。
[0085]
本发明第二方面提供一种自动化测试系统,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如上述实施例提供的自动化测试方法,例如图1所述的s11。
[0086]
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1