一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种应用程序兼容性自动化测试方法和系统与流程

2021-11-27 00:48:00 来源:中国专利 TAG:


1.本发明涉及it与软件开发,更具体地,涉及应用程序兼容性自动化测试方法和系统。


背景技术:

2.数据显示,自2017年以来,中国智能手机用户数量呈现逐渐上涨的趋势,预计2020年中国智能手机市场保有量将到达781.7百万户,其中android手机用户约占总数的87%,达680.1百万户。据不完全统计,目前市面上的android设备已有上千款。由于android系统的开源性,每个android手机厂商都可以对手机系统进行不同程度的定制,即针对android源码的不同程度修改,这导致android生态的碎片化问题非常严重,一旦代码对某类接口调用错误或有所遗漏,apk就会抛出各种异常,影响用户体验,并给公司所有者带来负面影响。碎片化问题的本质为不同android系统的兼容性不同。即便是搭载完全相同的硬件设备,不同手机厂商在硬件处理速度、运行速度、软件兼容上都有所区别。
3.兼容性测试可以有效地解决android生态下的碎片化问题。所谓兼容,是指硬件之间、软件之间、硬件与软件之间的配合程度。而兼容性测试,是指测试指定软件在特定的硬件平台上,不同软件之间、不同操作系统、不同网络环境下能否正常运行的测试。兼容性测试一直以来都被认为是一项高成本、高耗时、高人力、低成效的测试工作,但兼容性测试又是一项必须要执行的测试项目,因为测试场景中不同的机型、系统、网络环境、厂商、数据兼容以及不兼容的场景都需要覆盖。
4.影响兼容性测试的主要因素有:
5.(1)未考虑旧版本的特性,只可在特定系统版本实现,即未考虑向下兼容;
6.(2)网络环境:不同网络环境(尤其是弱网、无网等环境)下,部分sdk在调用超时的情况下未进行容错处理,导致引发crash;
7.(3)手机硬件:因厂商、型号、系列不同,其硬件配置参差不齐。
8.目前的兼容性测试主要有手动测试、自动化测试以及云平台测试三种方式。
9.手动测试就是测试人员在有限多个手机终端上手工操作进行测试。这这种测试方法不需要搭建测试环境,但只可针对选择的终端测试,无法并行测试,且浪费测试人力;
10.自动化测试主要是利用私有设备云对被测应用进行安装、卸载等测试。这种测试方案需预先配置设备云,需占用部分服务器资源,但可进行并行化测试,可节省测试人员投入。
11.云平台测试主要是利用现有的公有设备云服务器平台,通过上传应用,选择云平台上提供相关服务进行的测试。这种三方提供的测试服务可以有效地进行兼容性测试,但存在安全风险。
12.因此,针对现有兼容测试覆盖不够广泛、存在安全风险等现象,为扩展兼容测试覆盖面、提高测试效率,希望提供一种改进的应用程序兼容性自动化测试方法。


技术实现要素:

13.提供本发明内容以便以简化形式介绍将在以下具体实施方式中进一步的描述一些概念。本发明内容并非旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
14.本发明提出一种基于持续集成工具和容器化的应用程序兼容性自动化测试方法。通过部署容器,针对特定需求启动多个容器镜像,创建自动化测试脚本;实现快速部署、快速测试,输出测试报告。
15.为了解说方便,以下将以jenkins和docker为例来描述本发明的实施方式,但本领域技术人员可以理解,本发明同样适用于其他的持续集成工具,以及其他的容器化模块。此外,本发明也不仅仅适用于android系统的应用程序兼容性测试,也可以适用于任何存在类似兼容性测试需求的操作系统。
16.将docker容器技术与自动化测试技术相结合,利用docker快速部署、环境共生的特性,同时在安装docker的宿主机上启动多个appuim容器节点,可做到并行的自动化测试,节省大量的服务器资源。利用jenkins持续集成工具,通过服务器扩展或模拟器连接不同终端机型,实现自动编译、自动安装、自动执行,达到兼容测试的目的。
17.根据本发明的一个方面,提供了一种应用程序兼容性自动化测试方法,其中所述方法包括:
18.经由服务器扩展接口连接多个待测试终端设备;
19.在宿主机上安装容器化模块,基于所述容器化模块配置多个容器镜像并且启动所述容器镜像,每一个容器镜像与一个待测试终端设备相连,并且每一个容器镜像包括一个或多个自动化测试模块以及自动化测试脚本;
20.利用持续集成工具来进行自动编译、打包;
21.利用所述持续集成工具来进行自动代码走查;
22.利用所述持续集成工具来将应用程序自动安装到所述多个待测试终端设备;
23.利用所述持续集成工具来调用所述容器镜像中的自动化测试脚本以进行自动化测试;以及
24.输出测试结果。
25.根据本发明的一个实施例,所述利用所述持续集成工具来调用所述容器镜像中的自动化测试脚本以进行自动化测试进一步包括:利用所述持续集成工具调用所述容器镜像中的自动化测试模块进行应用程序稳定性测试和应用程序兼容性测试。
26.根据本发明的进一步实施例,调用所述容器镜像中的自动化测试模块进行应用程序稳定性测试和应用程序兼容性测试进一步包括:
27.调用所述容器镜像中的monkey模块来进行应用程序稳定性测试和冒烟测试;以及
28.调用所述容器镜像中的appium模块来进行应用程序兼容性测试,其中所述appium模块使用python语言实现自动化测试脚本的录制及编写。
29.根据本发明的进一步实施例,所述容器镜像是一个可执行的包,其中包括运行应用程序所需要的所有内容,包含代码、运行时间、库、环境变量、和配置文件。
30.根据本发明的进一步实施例,所述持续集成工具是jenkins,并且所述容器化模块是docker模块。
31.根据本发明的另一方面,提供了一种应用程序兼容性自动化测试系统,其中所述系统包括:
32.布置有持续集成工具的一台或多台服务器,其中所述一台或多台服务器包括其上安装有容器化模块的宿主机;以及
33.多个待测试终端设备,所述多个待测试终端设备经由扩展接口连接到所述宿主机,其中所述持续集成工具被配置成:
34.通过所述容器化模块配置多个容器镜像并且启动所述容器镜像,每一个容器镜像与一个待测试终端设备相连,并且每一个容器镜像包括一个或多个自动化测试模块以及自动化测试脚本,
35.利用所述持续集成工具来进行自动编译、打包、自动代码走查、以及将应用程序自动安装到所述多个待测试终端设备;
36.利用所述持续集成工具来调用所述容器镜像中的自动化测试脚本以进行自动化测试;以及
37.输出测试结果。
38.根据本发明的一个实施例,所述利用所述持续集成工具来调用所述容器镜像中的自动化测试脚本以进行自动化测试进一步包括:利用所述持续集成工具调用所述容器镜像中的自动化测试模块进行应用程序稳定性测试和应用程序兼容性测试。
39.根据本发明的进一步实施例,调用所述容器镜像中的自动化测试模块进行应用程序稳定性测试和应用程序兼容性测试进一步包括:
40.调用所述容器镜像中的monkey模块来进行应用程序稳定性测试和冒烟测试;以及
41.调用所述容器镜像中的appium模块来进行应用程序兼容性测试,其中所述appium模块使用python语言实现自动化测试脚本的录制及编写。
42.根据本发明的进一步实施例,所述容器镜像是一个可执行的包,其中包括运行应用程序所需要的所有内容,包含代码、运行时间、库、环境变量、和配置文件。
43.根据本发明的进一步实施例,所述持续集成工具是jenkins,并且所述容器化模块是docker模块。
44.与现有技术中的方案相比,本发明所提供的应用程序兼容性自动化测试方法和系统至少具有以下优点:
45.(1)相对于重复枯燥的手动测试任务进行了自动化改造。自动化的成本在于自动化程序的编写和维护,而收益在于节省了手动执行用例的时间。简而言之,如果收益大于成本,测试任务就有价值自动化,否则受益的只是测试人员的自动化技能得到了提升。利用docker的快速部署、环境共享等特性,可以大大减少自动化的成本,使很多原本没有价值自动化的测试任务变为了有价值自动化的任务,大大提升了项目效率;
46.(2)与云平台测试相比较,选择云平台上提供相关服务进行的测试,这种三方提供的测试服务可以有效地进行兼容性测试,但存在安全风险。而本发明恰恰能够加强测试流程以及开发代码的安全性;
47.(3)与目前市面比较流行的自动化测试进行对比,目前主流的自动化测试主要还是利用私有设备云对被测应用包进行安装、卸载等场景进行测试。这种测试方法需预先配置设备云和占用部分服务器资源,虽然可以并行化测试和减少测试环节和节省人力成本,
但是本发明docker虽然本身并不会直接加速测试执行,在串行执行测试时,在容器中执行测试反而会带来约5%左右的性能衰减,但我们可以充分利用docker快速部署、环境共享等特性,同时配合容器云来快速提供所需的测试资源,以应对测试任务的峰值。如果忽略环境部署时间,当每个测试用例粒度无限小且能提供丰富的测试资源时,将持续减小测试执行所需的时间。
48.通过阅读下面的详细描述并参考相关联的附图,这些及其他特点和优点将变得显而易见。应该理解,前面的概括说明和下面的详细描述只是说明性的,不会对所要求保护的各方面形成限制。
附图说明
49.为了能详细地理解本发明的上述特征所用的方式,可以参照各实施例来对以上简要概述的内容进行更具体的描述,其中一些方面在附图中示出。然而应该注意,附图仅示出了本发明的某些典型方面,故不应被认为限定其范围,因为该描述可以允许有其它等同有效的方面。
50.图1是根据本发明的一个实施例的用于应用程序兼容性自动化测试系统的示例架构图。
51.图2是根据本发明的一个实施例的通过docker容器化进行固定场景兼容性测试的方法的流程图。
52.图3是根据本发明的一个实施例的测试框架部分的实现的示例架构图。
具体实施方式
53.下面结合附图详细描述本发明,本发明的特点将在以下的具体描述中得到进一步的显现。
54.图1是根据本发明的一个实施例的用于应用程序兼容性自动化测试系统100的示例架构图。如图1中所示,本发明的自动化测试系统100包括:宿主机和多个待测试终端设备。该宿主机被配置成利用持续集成工具、安装在所述宿主机上的容器化模块、以及自动化测试模块来进行自动化测试。
55.持续集成工具(例如,jenkins)用于实现持续集成,包括对每个版本提交的代码调用sonarqube静态代码走查;走查结果通过后自动打包成安装包文件(例如android系统的apk文件);调用adb自动安装到不同版本的待测试终端设备(例如,android终端设备)上;在apk安装成功后调用docker容器中的测试脚本、monkey和appium进行兼容性和稳定性测试;以及在测试结果后自动生成测试报告供人工检查测试结果是否满足要求。
56.容器化模块(例如,docker模块)用于搭建待测试终端设备运行需要的docker环境,包含monkey,appium应用、以及使用python编写的兼容性测试脚本,并对部署好的docker环境构建镜像,通过镜像可以启动一个容器,一个镜像是一个可执行的包,其中包括运行应用程序所需要的所有内容,包含代码、运行时间、库、环境变量、和配置文件。
57.自动化测试模块包括例如appium模块和monkey模块,其中appium模块使用python语言实现自动化测试脚本的录制及编写,monkey模块进行app的冒烟测试和稳定性测试。
58.多个待测试终端设备经由服务器扩展usb接口连接到宿主机以实现apk多机型兼
容性测试。
59.在该系统所运用的技术中,docker是一个开放源代码软件项目,让应用程序部署在软件货柜下的工作可以自动化进行,借此在操作系统上,提供一个额外的软件抽象层,以及操作系统层虚拟化的自动管理机制。可以将docker理解为轻量级虚拟机,复用更方便,更快捷,利用率更高,性能开销更小。将我们想要的docker环境构建成镜像,运行时直接拉取镜像部署。python是一种易理解,易维护的解释性脚本语言。广泛应用于各种领域和行业,被大量用户欢迎。在人工智能,大数据应用等目前具有发展前景的行业中应用非常广泛。jenkins是一款用于持续、自动构建项目的持续集成(ci)工具,可在容器中或独立运行。与版本管理工具(scm),如svn,git结合使用,使用maven,ant等构建工具进行构建。monkey是一款稳定性与压力测试工具。可以通过发送伪随机的用户事件,在模拟器和真实设备中运行,模拟用户操作。appium是一个支持多种语言的跨平台的自动化测试框架。它使用webdriver协议驱动ios,android和windows应用程序。
60.图2是根据本发明的一个实施例的通过docker容器化进行固定场景兼容性测试的方法200的流程图。
61.方法200开始于步骤201,经由服务器扩展usb接口连接多款待测试android机型。
62.步骤202,在宿主机上安装docker模块,基于docker模块配置容器镜像,方便快速部署固定场景的自动化模块。
63.步骤203,利用jenkins拉取代码仓库最新代码进行自动编译、打包;如果编译、打包失败,则直接结束后续步骤,进行修复,修复完成后从步骤201重新开始执行。
64.步骤204,利用jenkins调用sonarque进行自动代码走查;如果代码走查发现存在致命bug,则直接结束后续步骤,进行修复,修复完成后从步骤201重新开始执行。
65.步骤205,利用jenkins调用adb命令进行app自动安装;如果安装失败,需要分析原因,如果是所有机型都安装失败,则考虑app自身原因;如果某些机型安装失败,则考虑机型兼容性原因。修复完成后,从步骤201重新开始执行。
66.步骤206,利用jenkins调用docker容器中monkey模块进行app稳定性测试;如果测试过程出现crash事件,需要分析原因,如果是所有机型都出现,则考虑app自身原因;如果某些机型出现,则考虑机型兼容性原因。修复完成后,从步骤201重新开始执行。
67.步骤207,利用jenkins调用docker容器中appuim模块进行app兼容性测试;进行各种固定场景的兼容性测试,如果测试过程出现异常事件,需要分析原因,如果是所有机型都出现,则考虑app自身原因;如果某些机型出现,则考虑机型兼容性原因。修复完成后,从步骤1重新开始执行。
68.方法200利用docker快速部署、环境共生的特性,在安装docker模块的宿主机上启动多个appuim容器节点,做到并行的自动化测试,从而相对于直接调用自动化测试模块进行兼容性测试的方法节省了大量的服务器资源。
69.图3是根据本发明的一个实施例的测试框架部分的实现300的示例架构图。在实现300中,在docker主机上基于docker模块配置容器镜像,并且通过镜像启动一个容器,一个镜像是一个可执行的包,其中包括运行应用程序所需要的所有内容,包含代码、运行时间、库、环境变量、和配置文件。在容器镜像上预设所要执行的测试用例,其中整体测试数据统一由csv文件管理,使用unittest组织用例,其中使用python对常用的组件和元素进行封
装,例如使用python来实现关键字驱动框架,在该关键字驱动框架中的测试用例被分为四个不同的部分,即测试步骤、测试步骤中的对象、测试对象执行的动作、测试对象需要的数据,这四个部分均可以通过excel表格进行维护,并且测试脚本由python编写,其分层结构有case、log、config、report以及data等。通过读取配置文件中的内容运行测试用例,把要执行的命令封装到bat文件中,通过jenkins持续集成的方式运行测试用例,在python模块上输出运行日志和测试结果,支持用例failed(失败)时自动截屏。
70.以上所已经描述的内容包括所要求保护主题的各方面的示例。当然,出于描绘所要求保护主题的目的而描述每一个可以想到的组件或方法的组合是不可能的,但本领域内的普通技术人员应该认识到,所要求保护主题的许多进一步的组合和排列都是可能的。从而,所公开的主题旨在涵盖落入所附权利要求书的精神和范围内的所有这样的变更、修改和变化。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献