一种升级测试方法、装置、电子设备和存储介质
文献发布时间:2023-06-19 13:49:36
技术领域
本申请涉及通讯技术领域,具体涉及一种升级测试方法、装置、电子设备和存储介质。
背景技术
随着信息科技的发展以及互联网技术的迅速发展和普及,带来了电子产品的繁荣。电子产品不仅促进了信息科技领域的繁荣发展,还给人们的日常学习生活带来了便利,成为了人们日常学习生活不可或缺的一部分。
在现有技术中,对电子产品进行测试也是研发的一个重要的步骤,通过对产品继续测试可以规避很多产品在使用上的问题。例如,通过对产品进行升级测试,可以发现产品在升级时存在的问题,从而对产品进行优化。在对现有技术的实践中,本申请的发明人发现对产品进行升级测试存在鲁棒性较低的问题。
发明内容
本申请实施例提出了一种升级测试方法、装置、电子设备和存储介质,可以提高对产品进行升级测试的鲁棒性。
本申请实施例提供了一种升级测试方法,包括:
接收产品的升级测试触发指令;
根据所述升级触发指令,识别所述产品的升级路径;
在所述升级路径下确定所述产品的目标测试场景;
基于所述目标测试场景对所述产品在所述升级路径下进行测试处理,并生成所述产品的升级测试报告。
相应的,本申请实施例还提供了一种升级测试装置,包括:
接收单元,用于接收产品的升级测试触发指令;
识别单元,用于根据所述升级触发指令,识别所述产品的升级路径;
确定单元,用于在所述测试路径下确定所述产品的目标测试场景;
测试处理单元,用于基于所述目标测试场景对所述产品在所述升级路径下进行测试处理,并生成所述产品的升级测试报告。
在一实施例中,所述测试处理单元,包括:
第一获取子单元,用于获取所述测试场景的测试逻辑和测试逻辑点;
检测子单元,用于基于所述测试逻辑点,对所述产品在所述升级路径中的升级过程进行检测;
执行子单元,用于当检测到所述测试逻辑点时,对所述产品在所述测试逻辑点下执行所述测试逻辑。
在一实施例中,所述执行子单元,包括:
发送模块,用于当检测到所述测试逻辑点时,向网络控制平台发送网络异常触发指令;
接收模块,用于接收所述网络控制平台返回的网络异常触发成功指令;
第一升级处理模块,用于基于所述网络异常触发成功指令,对所述产品进行升级处理。
在一实施例中,所述执行子单元,包括:
第一获取模块,用于获取所述产品的升级文件;
压缩异常处理模块,用于对所述升级文件进行压缩异常处理,得到异常压缩文件;
第二升级处理模块,用于当检测到所述测试逻辑点时,基于所述异常压缩文件对所述产品进行升级处理。
在一实施例中,所述执行子单元,包括:
第二获取模块,用于获取所述产品的升级文件;
文件异常处理模块,用于对所述升级文件进行文件异常处理,得到异常升级文件;
第三升级处理模块,用于当检测到所述测试逻辑点时,基于所述异常升级文件对所述产品进行升级处理。
在一实施例中,所述测试处理单元,还包括:
监测子单元,用于当对所述产品在所述升级路径下进行测试处理时,对测试过程进行监测,得到升级测试信息;
生成子单元,用于基于所述升级测试信息生成所述升级测试报告。
在一实施例中,所述监测子单元,包括:
阶段标识符判别处理模块,用于对所述升级路径进行阶段标识符判别处理,根据判别结果生成所述阶段标识信息;
版本识别处理模块,用于对所述产品进行版本识别处理,得到所述版本信息;
功能校验处理模块,用于对所述产品进行功能校验处理,得到所述功能校验信息。
在一实施例中,所述识别单元,包括:
第二获取子单元,用于根据所述升级触发指令,获取升级路径清单,所述升级路径清单上包括至少一个预设升级路径;
解析子单元,用于对所述升级触发指令进行解析,得到升级设置信息和产品属性信息;
确定子单元,用于基于所述升级设置信息和所述产品属性信息,在所述至少一个预设升级路径中确定所述产品的升级路径。
在一实施例中,所述识别单元还包括:
测试检测子单元,用于对所述升级路径清单进行测试检测,得到测试检测结果;
更新子单元,用于当所述测试检测结果不符合预设检测条件时,将所述升级路径进行更新,得到更新后升级路径;
测试处理子单元,用于基于所述目标测试场景对所述产品在所述更新后升级路径下进行测试处理。
在一实施例中,所述确定单元,包括:
判断子单元,用于判断是否基于每个测试场景对所述产品在所述升级路径下进行测试处理;
筛选子单元,用于当存在至少一个未测试的测试场景时,从所述至少一个未测试的测试场景中筛选出所述目标测试场景。
相应的,本申请实施例还提供一种电子设备,所述电子设备包括存储器和处理器;所述存储器存储有计算机程序,所述处理器用于运行所述存储器内的计算机程序,以执行本申请实施例任一提供的升级测试方法。
相应的,本申请实施例还提供一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本申请实施例任一提供的升级测试方法。
本申请实施例可以接收产品的升级测试触发指令;根据所述升级触发指令,识别所述产品的升级路径;在所述升级路径下确定所述产品的目标测试场景;基于所述目标测试场景对所述产品在所述升级路径下进行测试处理,并生成所述产品的升级测试报告,从而提高对产品进行升级测试的鲁棒性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的升级测试方法的场景示意图;
图2是本申请实施例提供的升级测试方法的流程示意图;
图3是本申请实施例提供的升级测试方法的又一流程示意图;
图4是本申请实施例提供的升级测试方法的又一场景示意图;
图5是本申请实施例提供的升级测试方法的又一流程示意图;
图6是本申请实施例提供的升级测试装置的结构示意图;
图7是本申请实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,然而,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提出了一种升级测试方法,该升级测试方法可以由升级测试装置执行,该升级测试装置可以集成在电子设备中。其中,该电子设备可以包括终端以及服务器等中的至少一个。即该升级测试方法可以由终端执行,也可以由服务器执行。
其中,该终端可以包括个人电脑、平板电脑、智能电视、智能手机、智能家居、可穿戴电子设备、VR/AR设备、车载计算机等等。
其中,服务器可以为多个异构系统之间的互通服务器或者后台服务器,还可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、以及大数据和人工智能平台等基础云计算服务的云服务器等等。
在一实施例中,如图1所示,升级测试装置可以集成在终端或服务器等电子设备上,以实施本申请实施例提出的升级测试方法。具体地,电子设备可以接收产品的升级测试触发指令;根据升级触发指令,识别产品的升级路径;在测试路径下确定产品的目标测试场景;基于目标测试场景对产品在升级路径下进行测试处理,并生成产品的升级测试报告。
以下分别进行详细说明,需要说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。
本申请实施例将从升级测试装置集成在服务器的角度进行本申请实施例提出的升级测试方法进行描述。
如图2所示,提供了一种升级测试方法,具体流程包括:
101、接收产品的升级测试触发指令。
其中,产品可以包括按照特定顺序组织的计算机数据和指令的集合。例如,该产品可以是应用程序或者智能家居上的软件包,等等。
其中,应用程序包括完成某项或多项特定功能的计算机程序,它运行在交互模式,可以和应用程序的使用对象进行交互,具有可视的显示界面。
例如,应用程序可以包括各种终端上的应用软件。例如,应用程序可以包括各种手机软件(Application,APP)、平板电脑应用软件、笔记本电脑上的应用软件、个人计算机(PC,Personal Computer)上的应用软件,等等。
例如,应用程序可以包括浏览器、视频播放软件、游戏软件等等。
又例如,应用程序还可以包括小程序。其中,小程序(Mini Program)是一种不需要下载安装即可使用的应用程序。为了向用户提供更多样化的业务服务,开发者可为终端的应用(例如即时通信应用、购物应用、邮件应用等)开发相应的小程序,该小程序可作为子应用被嵌入至终端的应用中,通过运行应用内的子应用(即对应的小程序)能够为用户提供相应的业务服务。
其中,智能家居(smart home,home automation)是以住宅为平台,利用综合布线技术、网络通信技术、安全防范技术、自动控制技术、音视频技术将家居生活有关的设施集成,构建高效的住宅设施与家庭日程事务的管理系统,提升家居安全性、便利性、舒适性、艺术性,并实现环保节能的居住环境。
例如,智能家居的软件包可以包括智能电视、智能空调或智能冰箱等智能家居构成的家居系统,通过该软件包可以控制智能家居的功能以及模式,等等。
在一实施例中,开发人员会对产品的功能进行不断地优化,或者为产品开发出新的功能,此时便需要对产品进升级,从而使得产品的功能得到优化或者使得产品具有新的功能。
在一实施例中,为了对产品的升级过程进行测试,可以在服务器测模拟产品的升级过程。例如,开发人员可以产品进行升级触发模拟,此时,服务器可以接收到升级测试触发指令。
其中,可以有多种方式对产品进行升级触发。例如,当产品是应用程序时,用户可以触发应用程序上的升级控件,从而对产品进行升级触发。又例如,可以通过服务器对产品进行强制升级触发。又例如,当产品是智能家居的软件包时,由于智能家居会每隔一段时间就进行升级检测,因此,产品可以每隔一段时间便实现升级触发。
在一实施例中,在对产品进行升级测试时,可以通过多种自动化测试手段实现对产品的升级触发模拟,从而使得服务器接收到升级测试触发指令。
例如,产品是应用程序时,可以通过appium框架模拟用户触发应用程序上的升级控件。其中,appium是一个开源、跨平台的自动化测试工具,支持多个不同的操作系统,可以用于测试原生和轻量应用程序。
又例如,可以通过selenium模拟服务器对产品进行强制升级触发。其中,Selenium是一个用于Web应用程序测试的工具,Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。
102、根据升级触发指令,识别产品的升级路径。
在一实施例中,开发人员有可能在短时间对产品进行了多次优化。每次优化后,产品都会具有新的升级版本和升级版本对应的升级路径。当用户选择了其中一种升级版本之后,产品便会根据该升级版本对应的升级路径进行升级。
例如,开发人员在短时间内对产品进行3次优化,得到升级版本1、升级版本2和升级版本3,并且每个升级版本都有其对应的升级路径,并且对应的升级路径都不同。而当用户选择了其中一种升级版本之后,产品便会根据该升级版本对应的升级路径进行升级。
其中,升级路径包括产品的升级模式。
在一实施例中,升级路径具有多种多样。例如,如图4所示,升级路径可以包括依次升级路径、直升通道路径、跨单个版本升级路径、跨多个版本升级路径和回退再升级路径,等等。
其中,依次升级路径包括从当前版本依次升级到最新版本的一种升级模式。例如,当前版本为版本1,最新版本为版本5,则依次升级路径会从版本1升级到版本2,然后从版本2升级到版本3,然后从版本3升级到版本4,然后从版本4升级到版本5,从而实现从当前版本升级到最新版本。
其中,直通升级路径包括从当前版本直接升级到最新版本的一种升级模式。例如,当前版本为版本1,最新版本为版本5,直通升级路径会直接从版本1升级到版本5。
其中,跨单个版本升级路径包括从当前版本,依次跨单个版本升级到最新版本的一种升级模式。例如,当前版本为版本1,最新版本为版本5,跨单个版本升级路径会从版本1升级到版本3,然后再升级到版本5。
其中,跨多个版本升级路径包括从当前版本,跨多个版本进行升级的一种升级模式。例如,当前版本为版本1,最新版本为版本7,跨多个版本会从版本1升级到版本4,然后从版本4升级到版本7。
其中,回退再升级路径包括从当前版本升级到最新版本后,又回退到当前版本,再升级到最新版本的一种升级模式。例如,当前版本为版本1,最新版本为版本5,回退再升级路径会从版本1升级到版本5之后,会再回退到版本1,然后再升级到版本5。
在一实施例中,由于升级路径具有多种多样,所以升级测试装置可以根据升级触发指令,识别产品的升级路径,从而可以在该升级路径下确定产品的目标测试场景。
在一实施例中,有多种方式识别到产品的升级路径。
譬如,可以结合产品的当前版本和想要升级到的目标版本确定产品的升级路径。例如,产品的当前版本为版本1,目标版本为版本2,则可以确定产品的升级路径为直通升级路径或依次升级路径。
又譬如,可以结合产品的内存和/或升级的网速等因素确定产品的升级路径。例如,当产品的内存较多时,可以确定产品的升级路径为依次升级路径或跨单个版本升级。而当产品的内存较少时,可以确定产品的升级路径为直通升级路径或跨多个版本升级路径。又例如,当产品的升级网速较快时,可以采用直通升级路径。而当产品的升级网速较慢时,可以采用回退再升级路径或跨单个版本升级路径,等等。
103、在升级路径下确定产品的目标测试场景。
在一实施例中,为了提高升级测试的鲁棒性,在本申请实施例中提出了多个测试场景,并基于多个场景对产品进行升级测试。
其中,测试场景包括为了测试产品的功能或性能,开发人员设置的一种环境。例如,测试场景可以包括网络异常测试场景、压缩异常测试场景和文件异常测试场景,等等。
其中,网络异常测试场景可以包括在升级过程中,网络出现异常的场景。例如,网络异常场景可以包括断网、信号消失和弱网等等。
在一实施例中,在产品升级的过程中,往往会将原产品文件替换和更新为升级包中的升级文件,从而实现升级的过程。其中,产品文件和升级文件可以是产品运行相关服务和进程的依据。例如,产品文件和升级文件可以是应用程序包(Android applicationpackage,APK),等等。
在一实施例中,升级包中一般有多个升级文件,这些升级文件之间存在相互依赖的关系。如果升级包里的某个文件缺失,就会导致产品的某个服务或者某个进行出现问题,无法运行。因此,在产品升级时,往往会检查文件清单、文件内容、文件之间的依赖关系和核心文件,等等。
其中,文件异常测试场景可以包括在升级过程中,升级文件出现异常的场景。例如,文件异常测试场景可以包括升级包中缺失升级文件、升级文件之间的依赖关系存在异常、文件内容被篡改、文件清单缺失,等等。
在一实施例中,升级包往往是经过压缩的,因此需要对升级包进行压缩后,才可以原产品文件更新替换为升级文件。
其中,压缩异常测试场景包括将升级包进行压缩时出现异常的场景。例如,压缩异常测试场景可以包括升级包不完整、压缩格式不支持或压缩加密等等。
在一实施例中,为了升级测试了鲁棒性和可靠性,不同的升级路径都需要在所有的测试场景下进行测试。
其中,目标测试场景可以包括当前对产品在升级路径下进行测试的场景。例如,当基于压缩异常测试场景对产品在升级路径下进行测试时,压缩异常测试场景可以为目标测试场景。又例如,当基于文件异常测试场景对产品在升级路径下进行测试时,文件异常测试场景可以为目标测试场景。
在一实施例中,升级测试装置在确定产品的目标测试场景时,可以判断是否基于每个测试场景对产品在升级路径下进行测试处理。其中,当存在至少一个未测试的测试场景时,从至少一个未测试的测试场景中筛选出目标测试场景。具体的,步骤“在测试路径下确定产品的目标测试场景”,可以包括:
判断是否基于每个测试场景对产品在升级路径下进行测试处理;
当存在至少一个未测试的测试场景时,从至少一个未测试的测试场景中筛选出目标测试场景。
在一实施例中,可以有多种方式判断是否基于每个测试场景对产品在升级路径下进行测试处理。例如,当基于某个测试场景对产品在升级路径下进行测试处理时,可以为该测试场景添加已测试的标识,从而可以根据该标识判断是否基于每个测试场景对产品在升级路径下进行测试处理。又例如,可以讲测试场景都存储在测试库中,每测试完一个测试场景,便会从测试库中将该测试场景移除。因此,可以通过对测试库的测试场景数量进行判断,从而知道是否基于每个测试场景对产品在升级路径下进行测试处理。
在一实施例中,当存在至少一个未测试的测试场景时,可以从至少一个未测试的测试场景中筛选出目标测试场景。
例如,当测试场景是存储在测试库中时,可以按照测试场景在测试库中的存储顺序筛选出目标测试场景。譬如,测试场景包括网络异常测试场景、压缩异常测试场景和文件异常测试场景。这些测试场景在测试库中的存储顺序分别是网络异常测试场景、压缩异常测试场景和文件异常测试场景。因此,在筛选目标测试场景时,可以将网络异常测试场景确定为目标测试场景。
又例如,也可以随机从多个测试场景中筛选出目标测试场景。
104、基于目标测试场景对产品在升级路径下进行测试处理,并生成产品的升级测试报告。
在一实施例中,确定了目标测试场景后,可以基于目标测试场景对产品在升级路径下进行测试处理,并生成产品的升级测试报告。
例如,当目标测试场景是压缩异常测试场景时,可以基于压缩异常测试场景对产品在升级路径下进行测试处理。
又例如,当目标测试场景是网络异常测试场景时,可以基于网络异常测试场景对产品在升级路径下进行测试处理。
又例如,当目标测试场景是文件异常测试场景时,可以基于文件异常测试场景对产品在升级路径下进行测试处理。
在一实施例中,可以在基于目标测试场景对产品在升级路径下进行测试处理之后,生成产品的升级测试报告。还可以基于所有测试场景对产品在升级路径下进行测试处理后,生成产品的升级测试报告。
本申请实施例提出了一个升级测试方法,该方法可以接收产品的升级测试触发指令;根据升级触发指令,识别产品的升级路径;在升级路径下确定产品的目标测试场景;基于目标测试场景对产品在升级路径下进行测试处理,并生成产品的升级测试报告。通过本申请实施例提出的升级测试方法,可以在不同测试场景下对产品在不同升级路径下进行测试处理,提高了对产品进行升级测试的鲁棒性。
根据上面实施例所描述的方法,以下将举例作进一步详细说明。
本申请实施例将以升级测试方法集成在服务器上为例来介绍本申请实施例方法。具体的,如图3所示,本申请实施例提出的升级测试方法的流程可以包括:
201、服务器接收产品的升级测试触发指令。
例如,服务器可以对产品进行升级触发模拟。例如,可以通过selenium模拟服务器对产品进行强制升级触发。此时,服务器便会接收到产品的升级测试触发指令。
202、服务器根据升级触发指令,识别产品的升级路径。
在一实施例中,由于升级路径具有多种多样,因此可以将多个升级路径都存储在升级路径清单中。其中,升级路径清单是一种具有存储功能的数据结构。例如,该升级路径清单可以是数组,也可以是栈,等等。
在一实施例中,为了提高产品升级测试的鲁棒性,可以分别在各个不同的升级路径下对产品进行升级测试。因此,可以首先将需要测试的升级路径存储到升级路径清单中,并基于升级路径清单中的升级路径对产品进行升级测试。具体的,步骤“根据升级触发指令,识别产品的升级路径”,包括:
根据升级触发指令,获取升级路径清单,升级路径清单上包括至少一个预设升级路径;
对升级触发指令进行解析,得到升级设置信息和产品属性信息;
基于升级设置信息和产品属性信息,在至少一个预设升级路径中确定产品的升级路径。
其中,预设升级路径包括需要在该升级路径下对产品进行升级测试的路径。
在一实施例中,为了更好地对产品进行测试,在对产品升级过程中进行测试时,会模拟产品在进行升级时的环境。例如,升级设置信息和产品属性信息等等。
其中,升级设置信息包括用户在对产品升级时,用户会升级过程中对产品的设置。例如,当产品有多个更新版本时,用户可能会选择其中一个版本对产品进行升级,则升级设置信息可以包括用户选择升级的版本。又例如,在对产品进行升级时,用户会选择升级文件存储在设备中的哪个地方,则升级设置信息可以包括用户选择存储升级文件的地方。
其中,产品属性信息可以包括和产品自身相关的信息。例如,产品属性信息可以包括更新该产品需要多少流量、更新该产品需要多少存储空间,升级该产品需要什么权限,等等。
在一实施例中,可以对升级触发指令进行解析,从而得到升级设置信息和产品属性信息。例如,可以对升级触发指令进行遍历,从而得到升级设置信息和产品属性信息。
在一实施例中,在得到升级路径清单、升级设置信息和产品属性信息之后,可以基于升级设置信息和产品属性信息,在至少一个预设升级路径中确定产品的升级路径。
例如,可以基于升级设置信息,将其中一个预设升级路径确定为升级路径。然后,可以基于产品属性信息判断在该升级路径对产品进行升级是否合理。当合理时,可以将该升级路径确定为产品的升级路径。当不合理时,可以基于产品属性信息选择合适的升级路径。
在一实施例中,在识别出产品的升级路径之后,可以在该升级路径下确定产品的目标测试场景,并基于目标测试场景对产品在所述升级路径下进行测试处理,并生成产品的升级测试报告。
在一实施例中,由于为了提高产品升级测试的鲁棒性,可以分别在各个不同的升级路径下对产品进行升级测试。因此基于上述识别产品的升级路径的方法,步骤“基于目标测试场景对产品在升级路径下进行测试处理”之后,还包括:
对升级路径清单进行测试检测,得到测试检测结果;
当测试检测结果不符合预设检测条件时,将升级路径进行更新,得到更新后升级路径;
基于目标测试场景对产品在更新后升级路径下进行测试处理。
其中,对升级路径清单进行检测可以包括是否基于检测升级路径清单中的适合产品的升级路径对产品进行升级测试。
在一实施例中,在得到产品的产品属性信息之后,可以根据该产品属性信息选择出适合产品的升级路径。然后,在基于其中一个升级路径对产品进行升级测试之后,可以对该升级路径添加已测试标识。因此,在对升级路径清单进行测试检测时,可以检测升级路径是否都具有已测试标识。
其中,当测试检测结果不符合预设检测条件时说明升级路径清单中存在升级路径没有已测试标识时,说明可能还有升级路径没有测试。此时,可以从未测试的升级路径中任意选择一个升级路径作为更新后升级路径。然后,可以基于目标测试场景对产品在更新后升级路径下进行测试处理。
在一实施例中,还可以基于升级路径清单上的所有升级路径对产品进行升级测试。例如,当升级路径清单上包括7个升级路径时,可以分别基于该7个升级路径对产品进行升级测试,从而提高对产品进行升级测试的鲁棒性。
203、服务器在升级路径下确定产品的目标测试场景。
在一实施例中,服务器确定了产品的升级路径之后,还可以在该升级路径下确定目标测试产品,从而使得服务器可以基于该目标测试场景对产品在该升级路径下进行升级测试处理,并生成升级测试报告。
在一实施例中,由于会基于每个测试场景对产品进行升级测试处理,因此,在确定目标测试场景时,会判断是否基于每个测试场景对产品在升级路径下进行测试处理。当存在至少一个未测试的测试场景时,服务器可以从至少一个未测试的测试场景中筛选出目标测试场景。具体的,步骤“服务器在升级路径下确定产品的目标测试场景”,包括:
判断是否基于每个测试场景对产品在升级路径下进行测试处理;
当存在至少一个未测试的测试场景时,从至少一个未测试的测试场景中筛选出目标测试场景。
在一实施例中,可以通过多种方式判断服务器是否基于每个测试场景对产品在升级路径下进行测试处理。
例如,假如服务器将每个测试场景都存储在数组中。当服务器基于一个测试场景对产品进行测试处理时,可以将该测试场景从该数据中移除。因此,可以通过判断数据中测试场景的数量,从而判断是否基于每个测试场景对产品在升级路径下进行测试处理。例如,当数据中测试场景的数量不为零时,说明还没有基于每个测试场景对产品在升级路径下进行测试处理。又例如,当数据中测试场景的数量为零时,说明已经基于每个测试场景对产品在升级路径下进行测试处理。
又例如,当基于一个测试场景对产品进行测试处理时,可以为该测试场景添加已测试标识。因此,服务器可以通过已测试标识判断是否基于每个测试场景对产品在升级路径下进行测试处理。例如,当存在测试场景没有已测试标识时,说明还没有基于每个测试场景对产品在升级路径下进行测试处理。又例如,当所有的测试场景都具有已测试标识时,说明已经基于每个测试场景对产品在升级路径下进行测试处理。
在一实施例中,当存在至少一个未测试的测试场景时,服务器从至少一个未测试的测试场景中筛选出目标测试场景。例如,服务器可以随机从至少一个未测试的测试场景中筛选出目标测试场景。又例如,当测试场景是存储在数组或者栈等数据结构中时,服务器可以按照测试场景在数组或者栈中的存储顺序筛选出目标测试场景。
204、服务器基于目标测试场景对产品在升级路径下进行测试处理,并生成产品的升级测试报告。
在一实施例中,在服务器确定了目标测试场景之后,服务器可以基于目标测试场景对产品在升级路径下进行测试处理,并生成产品的升级测试报告。
在一实施例中,不同的测试场景会具有不同的测试逻辑和测试时间点,因此,服务器基于目标测试场景对产品在升级路径下进行测试处理时,服务器可以获取测试场景的测试逻辑和测试逻辑点,并基于该测试逻辑和测试逻辑点对产品进行测试处理。具体的,步骤“基于目标测试场景对产品在升级路径下进行测试处理”,包括:
获取测试场景的测试逻辑和测试逻辑点;
基于测试逻辑点,对产品在所述升级路径中的升级过程进行检测;
当检测到测试逻辑点时,对产品在测试逻辑点下执行测试逻辑。
其中,测试逻辑点包括对在产品升级的过程中,需要对产品进行升级测试的阶段。
在一实施例中,可以将产品的升级过程划分未多个阶段。例如,如图4所示,可以将产品的升级过程划分为检测阶段、下载阶段、校验阶段,等等。
其中,在检测阶段,集成了产品的设备会检测服务器的升级包,以及升级包里的信息,并且匹配型号、哈希、合法性校验等信息,确保升级包适合设备自己,升级包的哈希值是有效的,升级包是受信任的官方渠道发布的包等。
其中,在下载阶段,当设备确认升级包适合时,会触发下载逻辑,会从云端拉取升级包,拉取的过程中可能收到网络波动,因此还会做一些断点续传、分组下载拼接、超时重连等各种下载鲁棒性的机制。
其中,在校验阶段,当设备成功下载到升级包时,会对升级包做校验,例如对包的大小,包的内容,包文件数量的完整性等做校验,确保与官方发布的一致,并确保没有因为下载过程导致部分文件丢失、损坏等。
除此之外,升级过程中还有很多其他的阶段,例如压缩阶段(通过安全通道传输压缩密钥,对升级包进行拼接压缩)、备份阶段(对关键文件进行备份,以便升级过程中出错可以还原)、替换阶段(将升级包里面的文件替换掉系统已有的文件,实现文件更新)等等。
在一实施例中,每个阶段都可以对应一个测试逻辑点。例如,检测阶段可以是测试逻辑点1。又例如,下载阶段可以是测试逻辑点2。又例如,校验阶段可以是测试逻辑点3。又例如,压缩阶段可以是测试逻辑点4。又例如,备份阶段可以是测试逻辑点5,等等。
其中,测试逻辑可以包括基于测试场景对产品进行升级测试时,需要遵循的逻辑。例如,测试逻辑可以包括基于产品进行升级测试时,服务器需要执行的步骤。通过测试逻辑,服务器可以知道在该测试场景下该怎么对产品进行测试,从而实现对产品的自动化测试。
在一实施例中,当基于目标测试场景对产品在升级路径下进行测试处理时,服务器可以获取测试场景的测试逻辑和测试逻辑点。并基于测试逻辑点,对产品在升级路径中的升级过程进行检测。
在一实施例中,产品在升级的过程中,每进入一个阶段都会生成一个阶段标识符。例如,当产品在检测阶段时,会生成一个检测阶段标识符。又例如,当产品在下载阶段时,会生成一个下载阶段标识符,等等。当因此,服务器可以通过对阶段标识符进行检测。其中,当服务器检测到阶段标识符和测试逻辑点相匹配时,说明服务器可以开始对在该测试逻辑点下执行测试阶段。
在一实施例中,当测试场景是网络异常测试场景时,步骤“当检测到测试逻辑点时,对产品在测试逻辑点下执行测试逻辑”,可以包括:
当检测到测试逻辑点时,向网络控制平台发送网络异常触发指令;
接收网络控制平台返回的网络异常触发成功指令;
基于网络异常触发成功指令,对产品进行升级处理。
在一实施例中,由于网络异常测试场景可以包括断网、信号消失和弱网等等。其中,断网、信号消失和弱网等都是网络控制平台控制的。因此,当检测到测试逻辑点时,服务器可以向网络控制平台发送网络异常触发指令。然后,网络控制平台会基于网络异常触发指令进行网络异常处理。
其中,网络控制平台可以是路由器,等等。
例如,对于断网这种网络异常测试场景,服务器可以通过自动化脚本连接路由器后台,取消WAN口的连接,导致路由器没网,从而模拟产品在升级时遇到断网的场景。
又例如,对于信号消失这种网络异常测试场景,服务器可以通过自动化脚本连接路由器后台,将WiFi热点信号关闭,则产品也就无法找到热点。
又例如,对于弱网这种网络异常测试场景,服务器可以在路由器后台做网络速度的限制,以及丢包率的设置等操作。
当网络控制平台进行了网络异常处理之后,服务器可以接收到网络控制平台返回的网络异常触发成功指令,并基于网络异常触发成功指令,对产品进行升级处理。
在一实施例中,产品升级包一般都是通过打压缩包的形式传输给设备的,打成压缩包可以保证升级包的完整性,同时还能控制升级包的大小,减少网络传输需要的带宽和时间等,如果出现压缩包有问题等情况,智能设备就会压缩失败,接下来就会通过尝试不同的压缩格式,或者压缩包文件头进行修复等各种操作,做鲁棒性处理。
因此,当目标测试场景为压缩异常测试场景时,步骤“当检测到测试逻辑点时,对产品在测试逻辑点下执行所述测试逻辑”,包括:
获取产品的升级文件;
对升级文件进行压缩异常处理,得到异常压缩文件;
当检测到测试逻辑点时,基于异常压缩文件对产品进行升级处理。
在一实施例中,由于压缩异常测试场景可以包括错误的文件头格式压缩包,压缩包不完整,压缩格式不支持,压缩加密等各种形式的压缩问题。因此,可以获取产品的升级文件,对升级文件进行压缩异常处理,得到异常压缩文件。例如,服务器可以将升级文件打包成多种压缩格式的升级包(zip/rar/7z等)、在压缩时设置随机密码/错误密码/空密码、在压缩包生成后删除压缩包文件的部分字节使得压缩包不完整,通过分卷压缩生成分卷压缩包等等。
在一实施例中,服务器在得到异常压缩文件之后,当检测到测试逻辑点时,服务器可以基于异常压缩文件对产品进行升级处理。
在一实施例中,产品升级时,会用升级包里的文件对原有文件进行替换和更新,并使用这些新版本的文件运行相关的服务、进程。但是,一般升级包里会放置多个文件,多个文件存在相互依赖关系,如果升级包里某个文件缺失,就会导致某个服务/进程依赖出问题,无法运行。因此,产品升级时,往往会对比检查文件清单、文件内容、依赖关系检查、核心文件检查等等,因此需要基于文件缺失场景对产品做一些鲁棒性测试规避这种场景带来的影响。
具体的,当测试场景是文件异常测试场景时,步骤“当检测到测试逻辑点时,对产品在测试逻辑点下执行所述测试逻辑”,包括:
获取产品的升级文件;
对升级文件进行文件异常处理,得到异常升级文件;
当检测到测试逻辑点时,基于异常升级文件对产品进行升级处理。
在一实施例中,服务器可以获取产品的升级文件,然后对升级文件进行文件异常处理,得到异常升级文件。
例如,服务器可以在生成压缩包前进行操作之前,打包时就已经少打包了部分文件、或者打包的文件内容清单缺失、文件内容被篡改等。
接下来,当检测到测试逻辑点时,服务器可以基于异常升级文件对产品进行升级处理。
在一实施例中,服务器基于目标测试场景对产品进行测试处理之后,可以生成产品的升级测试报告。具体的,步骤“生成产品的升级测试报告”,包括:
当对产品在升级路径下进行测试处理时,对测试过程进行监测,得到升级测试信息;
基于升级测试信息生成升级测试报告。
其中,升级测试信息可以包括对产品进行升级测试的过程中,产品所反馈出来的各种测试结果。例如,升级测试信息可以包括阶段标识信息、版本信息、功能校验信息和内存信息,等等。
其中,阶段标识信息可以包括产品在升级过程中所经历的阶段。例如,阶段标识信息可以包括产品在升级过程中都经过了那些阶段,等等。通过阶段标识信息可以判断产品是否升级成功,当没有升级成功时,是在哪个阶段导致是升级失败,等等。
其中,版本信息包括升级测试前产品的版本和升级测试后产品的版本。例如,产品在升级测试前的版本为A,在升级测试后产品的版本是B,这与正常升级的效果一样,说明产品升级成功。
其中,功能校验信息包括在升级过程对产品的功能进行校验的结果。
在一实施例中,产品升级成功之后不仅是版本号变化,其实最本质的是产品的一些功能变化。因此,服务器通过一些预置的自动化测试用例,去校验升级后的功能是否还能够正常使用,也可以作为升级成功的判断依据之一。
在一实施例中,可以有多种方式对测试过程进行检测,从而得到升级测试信息。例如,可以利用perfdog等性能监控工具对产品进行检测,从而得到升级测试信息。又例如,可以利用free命令查看产品的内存信息,得到产品的升级测试信息。又例如,可以利用adb命令等获取产品的日志。一般的,产品的日志中记录了产品的版本和资源等情况,因此可以通过获取产品的日志得到升级测试信息。又例如,还可以通过kibana查看产品日志,从而得到产品的升级测试信息。
在一实施例中,当升级测试信息包括阶段标识信息、版本信息和功能校验信息时,步骤“当对产品在升级路径下进行测试处理时,对测试过程进行监测,得到升级测试信息”,包括:
对升级路径进行阶段标识符判别处理,根据判别结果生成所述阶段标识信息;
对产品进行版本识别处理,得到版本信息;
对产品进行功能校验处理,得到功能校验信息。
在一实施例中,在正常的升级场景下,服务器可以获取到各个阶段的阶段标志符,说明升级过程分别经历了那些阶段,以及这些阶段的处理结果。
例如,阶段标志符可以包括step-uncompress:begin和step-uncompress:success等等。其中,step-uncompress:begin可以表示产品进入了解压阶段。step-uncompress:success可以表示产品进入了解压成功阶段。
当目标测试场景对产品进行升级测试之后,就可以判断产品是否具有step-uncompress:begin和step-uncompress:success阶段标志符。
通过判断阶段标志符是否存在的这种方式,如果对产品进行升级的鲁棒性处理不够好,就会导致没有特定的标志符。例如缺少step-uncompress:begin就说明没有进入解压阶段,或者没有step-uncompress:success就说明没有解压成功。
在一实施例中,可以通过查看产品的日志,并对产品日志中的版本进行识别,得到版本信息。例如,通过查看产品的日志,知道产品从版本A变化到版本B。
在一实施例中,可以有多种方式对产品进行功能校验处理,得到功能校验信息。例如,服务器可以基于自动化测试框架触发产品功能,从而判断产品的功能能否正常执行并得到功能校验信息。
在一实施例中,在得到升级测试信息之后,可以基于升级测试信息生成升级测试报告。例如,服务器得到阶段标识信息、版本信息和功能校验信息之后,可以对阶段标识信息、版本信息和功能校验信息进行分析,并根据分析的结果生成测试报告。
在一实施例中,为了更清楚得说明本申请实施例提出的方法,本申请实施例提出的升级测试方法还可以如图5所示:
301、获取升级路径清单。
例如,升级路径清单上有5个升级路径。然后,可以随机从该5个升级路径中选择其中一个升级路径对产品进行升级测试。
302、判断本升级路径是否已完成鲁棒性测试。
判断在选择的升级路径下产品是否完成升级测试(相当于鲁棒性测试)。若该升级路径下产品已经完成了升级测试,则可以从剩下的升级路径中选择任意一个升级路径对产品进行升级测试。若在该升级路径下产品还没执行升级测试,则执行步骤303。
303、获取待测试的步骤/阶段。
例如,可以获取产品的升级阶段(相当于测试逻辑点)和测试步骤。然后,基于测试逻辑点,对产品在升级路径中的升级过程进行检测。当检测到测试逻辑点时,可以对产品在测试逻辑点下执行测试逻辑。
304、判断所有的鲁棒性场景是否已测试完。
在基于测试场景(相当于鲁棒性场景)对产品进行升级测试时,可以判断是否基于所有的测试场景对产品进行升级测试。
其中,若所有的测试场景都已测试完,则可以进行下一个阶段。例如,当所有的测试场景都测试完时产品处于校验阶段,则可以令产品从校验阶段进入备份阶段,等等。
其中,若还有测试场景未测试完,则可以获取未测试的测试场景。
305、获取鲁棒性场景。
306、正常升级过程中插入鲁棒性场景。
在升级测试的过程中,可以插入测试场景,使得可以基于测试场景对产品进升级测试。例如,如图4所示,可以从场景库中获取测试场景,并在升级测试中插入测试场景。
307、交叉对比正常升级结果以及鲁棒性场景下的测试结果。
例如,如图4所示,可以通过版本校验,资源消耗等不同的维度比较正常升级情况下和测试场景下的测试结果。
308、生成鲁棒性测试报告。
本申请实施例可以接收产品的升级测试触发指令;根据升级触发指令,识别产品的升级路径;在升级路径下确定产品的目标测试场景;基于目标测试场景对产品在升级路径下进行测试处理,并生成产品的升级测试报告。通过本申请实施例提出的升级测试方法,可以在不同测试场景下对产品在不同升级路径下进行测试处理,提高了对产品进行升级测试的鲁棒性。
为了更好地实施本申请实施例提供的升级测试方法,在一实施例中还提供了一种升级测试装置,该升级测试装置可以集成于电子设备中。其中名词的含义与上述升级测试方法中相同,具体实现细节可以参考方法实施例中的说明。
在一实施例中,提供了一种升级测试装置,该升级测试装置具体可以集成在电子设备,如图6所示,该升级测试装置包括:接收单元401、识别单元402、确定单元403和测试处理单元404,具体如下:
接收单元401,用于接收产品的升级测试触发指令;
识别单元402,用于根据所述升级触发指令,识别所述产品的升级路径;
确定单元403,用于在所述测试路径下确定所述产品的目标测试场景;
测试处理单元404,用于基于所述目标测试场景对所述产品在所述升级路径下进行测试处理,并生成所述产品的升级测试报告。
在一实施例中,所述测试处理单元404,包括:
第一获取子单元,用于获取所述测试场景的测试逻辑和测试逻辑点;
检测子单元,用于基于所述测试逻辑点,对所述产品在所述升级路径中的升级过程进行检测;
执行子单元,用于当检测到所述测试逻辑点时,对所述产品在所述测试逻辑点下执行所述测试逻辑。
在一实施例中,所述执行子单元,包括:
发送模块,用于当检测到所述测试逻辑点时,向网络控制平台发送网络异常触发指令;
接收模块,用于接收所述网络控制平台返回的网络异常触发成功指令;
第一升级处理模块,用于基于所述网络异常触发成功指令,对所述产品进行升级处理。
在一实施例中,所述执行子单元,包括:
第一获取模块,用于获取所述产品的升级文件;
压缩异常处理模块,用于对所述升级文件进行压缩异常处理,得到异常压缩文件;
第二升级处理模块,用于当检测到所述测试逻辑点时,基于所述异常压缩文件对所述产品进行升级处理。
在一实施例中,所述执行子单元,包括:
第二获取模块,用于获取所述产品的升级文件;
文件异常处理模块,用于对所述升级文件进行文件异常处理,得到异常升级文件;
第三升级处理模块,用于当检测到所述测试逻辑点时,基于所述异常升级文件对所述产品进行升级处理。
在一实施例中,所述测试处理单元404,还包括:
监测子单元,用于当对所述产品在所述升级路径下进行测试处理时,对测试过程进行监测,得到升级测试信息;
生成子单元,用于基于所述升级测试信息生成所述升级测试报告。
在一实施例中,所述监测子单元,包括:
阶段标识符判别处理模块,用于对所述升级路径进行阶段标识符判别处理,根据判别结果生成所述阶段标识信息;
版本识别处理模块,用于对所述产品进行版本识别处理,得到所述版本信息;
功能校验处理模块,用于对所述产品进行功能校验处理,得到所述功能校验信息。
在一实施例中,所述识别单元402,包括:
第二获取子单元,用于根据所述升级触发指令,获取升级路径清单,所述升级路径清单上包括至少一个预设升级路径;
解析子单元,用于对所述升级触发指令进行解析,得到升级设置信息和产品属性信息;
确定子单元,用于基于所述升级设置信息和所述产品属性信息,在所述至少一个预设升级路径中确定所述产品的升级路径。
在一实施例中,所述识别单元402还包括:
测试检测子单元,用于对所述升级路径清单进行测试检测,得到测试检测结果;
更新子单元,用于当所述测试检测结果不符合预设检测条件时,将所述升级路径进行更新,得到更新后升级路径;
测试处理子单元,用于基于所述目标测试场景对所述产品在所述更新后升级路径下进行测试处理。
在一实施例中,所述确定单元403,包括:
判断子单元,用于判断是否基于每个测试场景对所述产品在所述升级路径下进行测试处理;
筛选子单元,用于当存在至少一个未测试的测试场景时,从所述至少一个未测试的测试场景中筛选出所述目标测试场景。
具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。
通过上述的升级测试装置可以提高对产品进行升级测试的鲁棒性。
本申请实施例还提供一种电子设备,该电子设备可以包括终端或服务器;比如电子设备可以为服务器,如升级测试服务器等。如图7所示,其示出了本申请实施例所涉及的终端的结构示意图,具体来讲:
该电子设备可以包括一个或者一个以上处理核心的处理器501、一个或一个以上计算机可读存储介质的存储器502、电源503和输入单元504等部件。本领域技术人员可以理解,图7中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器501是该电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器502内的软件程序和/或模块,以及调用存储在存储器502内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。可选的,处理器501可包括一个或多个处理核心;优选的,处理器501可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户页面和应用程序等,调制解调处理器主要处理无线通讯。可以理解的是,上述调制解调处理器也可以不集成到处理器501中。
存储器502可用于存储软件程序以及模块,处理器501通过运行存储在存储器502的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器502可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器502可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器502还可以包括存储器控制器,以提供处理器501对存储器502的访问。
电子设备还包括给各个部件供电的电源503,优选的,电源503可以通过电源管理系统与处理器501逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源503还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该电子设备还可包括输入单元504,该输入单元504可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,电子设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,电子设备中的处理器501会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器502中,并由处理器501来运行存储在存储器502中的应用程序,从而实现各种功能,如下:
接收产品的升级测试触发指令;
根据所述升级触发指令,识别所述产品的升级路径;
在所述升级路径下确定所述产品的目标测试场景;
基于所述目标测试场景对所述产品在所述升级路径下进行测试处理,并生成所述产品的升级测试报告。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
根据本申请的一个方面,提供了一种计算机程序应用或计算机程序,该计算机程序应用或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例中各种可选实现方式中提供的方法。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过计算机程序来完成,或通过计算机程序控制相关的硬件来完成,该计算机程序可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请实施例还提供一种存储介质,其中存储有计算机程序,该计算机程序能够被处理器进行加载,以执行本申请实施例所提供的任一种升级测试方法中的步骤。例如,该计算机程序可以执行如下步骤:
接收产品的升级测试触发指令;
根据所述升级触发指令,识别所述产品的升级路径;
在所述升级路径下确定所述产品的目标测试场景;
基于所述目标测试场景对所述产品在所述升级路径下进行测试处理,并生成所述产品的升级测试报告。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
由于该存储介质中所存储的计算机程序,可以执行本申请实施例所提供的任一种升级测试方法中的步骤,因此,可以实现本申请实施例所提供的任一种升级测试方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上对本申请实施例所提供的一种升级测试方法、装置、电子设备和存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
- 一种升级测试方法、装置、电子设备和存储介质
- 升级测试方法、装置、电子设备及计算机可读存储介质