一种软件升级方法和系统.pdf

上传人:xia****o6 文档编号:1285778 上传时间:2018-04-12 格式:PDF 页数:14 大小:954.72KB
返回 下载 相关 举报
摘要
申请专利号:

CN201510568047.2

申请日:

2015.09.08

公开号:

CN106502713A

公开日:

2017.03.15

当前法律状态:

公开

有效性:

审中

法律详情:

公开

IPC分类号:

G06F9/445; G06F11/36

主分类号:

G06F9/445

申请人:

中兴通讯股份有限公司

发明人:

时元龙

地址:

518057 广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦

优先权:

专利代理机构:

深圳鼎合诚知识产权代理有限公司 44281

代理人:

薛祥辉;李发兵

PDF下载: PDF下载
内容摘要

本发明提供的软件升级方法,应用于通信领域。启动升级插件;升级插件接收升级命令,下载待升级软件对应的软件安装包;升级插件运行安装命令,根据软件安装包完成待升级软件的升级安装;升级插件运行启动命令,启动升级后的软件;升级插件运行测试命令,对升级后的软件进行功能测试。与现有技术相比,通过升级插件执行相应的命令来进行软件自动完成软件升级过载中的下载、安装、启动和测试等步骤,避免人手动去完成升级过载中各步骤,可以代替人手动去自动完成软件升级,降低了软件的使用和维护成本,提高了用户体验度。

权利要求书

1.一种软件升级方法,其特征在于,包括:
启动升级插件;
所述升级插件接收升级命令,下载所述待升级软件对应的软件安装包;
所述升级插件运行安装命令,根据所述软件安装包完成所述待升级软件的
升级安装;
所述升级插件运行启动命令,启动升级后的软件;
所述升级插件运行测试命令,对升级后的软件进行功能测试。
2.如权利要求1所述的软件升级方法,其特征在于,在启动升级插件
之前,还包括:在待升级软件中嵌入升级插件。
3.如权利要求2所述的软件升级方法,其特征在于,所述在待升级软
件中嵌入升级插件包括:
解析所述待升级软件的启动命令,将所述升级插件嵌入到所述启动命令的
环境变量中;

将所述升级插件加入到启动脚本中,将所述启动脚本嵌入所述待升级软件
中。
4.如权利要求2所述的软件升级方法,其特征在于,所述启动升级插
件包括:在待升级软件启动后,进入所述待升级软件主程序之前,启动所述升
级插件。
5.如权利要求1所述的软件升级方法,其特征在于,所述升级插件接
收待升级软件的触发命令包括:
所述升级插件接收外界的升级命令;

所述升级插件检测所述待升级软件是否发布新的软件安装包,如果有,则
触发升级命令。
6.如权利要求1所述的软件升级方法,其特征在于,所述对升级后的
软件进行功能测试包括:
调用所述升级插件中的测试工具对升级后的软件进行功能测试;

通过所述升级插件调用第三方测试软件对升级后的软件进行功能测试。
7.如权利要求1-6任一项所述的软件升级方法,其特征在于,所述对
升级后的软件进行功能测试包括:所述升级插件调用图形界面的类加载器。
8.如权利要求7所述的软件升级系统,其特征在于,所述升级插件调
用图形界面的类加载器包括:所述升级插件调用所述待升级软件自身的图形界
面的类加载器或调用所述待升级软件所在系统的父类加载器。
9.一种软件升级系统,其特征在于,包括启动模块和升级插件:
所述启动模块用于启动升级插件;
所述升级插件用于接收升级命令,下载所述待升级软件对应的软件安装包;
运行安装命令,根据所述软件安装包完成所述待升级软件的升级安装;运行启动
命令,启动升级后的软件;以及运行测试命令,对升级后的软件进行功能测试。
10.如权利要求9所述的软件升级系统,其特征在于,还包括嵌入模块,
所述嵌入模块用于在启动升级插件之前,在待升级软件中嵌入升级插件。
11.如权利要求10所述的软件升级系统,其特征在于,所述嵌入模块还
用于:
解析所述待升级软件的启动命令,将所述升级插件嵌入到所述启动命令的
环境变量中;

将所述升级插件加入到启动脚本中,将所述启动脚本嵌入所述待升级软件
中。
12.如权利要求10所述的软件升级系统,其特征在于,所述启动模块还
用于在待升级软件启动后,进入所述待升级软件主程序之前,启动所述升级插
件。
13.如权利要求9所述的软件升级系统,其特征在于,所述升级插件还
用于:
接收外界的升级命令;

检测所述待升级软件是否发布新的软件安装包,如果有,则触发升级命令。
14.如权利要求9所述的软件升级系统,其特征在于,所述升级插件还
用于:
调用自身的测试工具对升级后的软件进行功能测试;

调用第三方测试软件对升级后的软件进行功能测试。
15.如权利要求9-14任一项所述的软件升级系统,其特征在于,所述升
级插件还用于调用图形界面的类加载器。
16.如权利要求15所述的软件升级系统,其特征在于,所述升级插件还
用于调用所述待升级软件自身的图形界面的类加载器或调用所述待升级软件所
在系统的父类加载器。

说明书

一种软件升级方法和系统

技术领域

本发明涉及通信领域,具体涉及一种软件升级方法和系统。

背景技术

在软件使用的过程中,软件的升级是一个比较繁琐的过程,主要是涉及软
件的下载、安装(或升级)、启动、功能测试,目前都是通过人手动去完成这些
步骤,需要投入人力和时间。这种情况在大型软件中尤为明显,因为随着功能
的不断增加,会导致很多版本出现,这些版本中大部分流程是大同小异的,专
门投入人力去做升级工作比较耗费时间和机器资源,而且发现问题的周期长,
人不像机器可以不间断的工作。

发明内容

本发明要解决的主要技术问题是,提供一种软件升级方法和系统,解决现
有中需要人手动升级时操作繁琐以及浪费人力的问题。

为解决上述问题,本发明提供一种软件升级方法,包括:

启动升级插件;

所述升级插件接收升级命令,下载所述待升级软件对应的软件安装包;

所述升级插件运行安装命令,根据所述软件安装包完成所述待升级软件的
升级安装;

所述升级插件运行启动命令,启动升级后的软件;

所述升级插件运行测试命令,对升级后的软件进行功能测试。

在本发明的一种实施例中,在启动升级插件之前,还包括:在待升级软件
中嵌入升级插件。

在本发明的一种实施例中,所述在待升级软件中嵌入升级插件包括:

解析所述待升级软件的启动命令,将所述升级插件嵌入到所述启动命令的
环境变量中;


将所述升级插件加入到启动脚本中,将所述启动脚本嵌入所述待升级软件
中。

在本发明的一种实施例中,所述启动升级插件包括:在待升级软件启动后,
进入所述待升级软件主程序之前,启动所述升级插件。

在本发明的一种实施例中,所述升级插件接收待升级软件的触发命令包括:

所述升级插件接收外界的升级命令;


所述升级插件检测所述待升级软件是否发布新的软件安装包,如果有,则
触发升级命令。

在本发明的一种实施例中,所述对升级后的软件进行功能测试包括:

调用所述升级插件中的测试工具对升级后的软件进行功能测试;


通过所述升级插件调用第三方测试软件对升级后的软件进行功能测试。

在本发明的一种实施例中,所述对升级后的软件进行功能测试包括:所述
升级插件调用图形界面的类加载器。

在本发明的一种实施例中,所述升级插件调用图形界面的类加载器包括:
所述升级插件调用所述待升级软件自身的图形界面的类加载器或调用所述待升
级软件所在系统的父类加载器。

为解决上述问题,本发明还提供一种软件升级系统,包括启动模块和升级
插件:

所述启动模块用于启动升级插件;

所述升级插件用于接收升级命令,下载所述待升级软件对应的软件安装包;
运行安装命令,根据所述软件安装包完成所述待升级软件的升级安装;运行启动
命令,启动升级后的软件;以及运行测试命令,对升级后的软件进行功能测试。

在本发明的一种实施例中,还包括嵌入模块,所述嵌入模块用于在启动升
级插件之前,在待升级软件中嵌入升级插件。

在本发明的一种实施例中,所述嵌入模块还用于:

解析所述待升级软件的启动命令,将所述升级插件嵌入到所述启动命令的
环境变量中;


将所述升级插件加入到启动脚本中,将所述启动脚本嵌入所述待升级软件
中。

在本发明的一种实施例中,所述启动模块还用于在待升级软件启动后,进
入所述待升级软件主程序之前,启动所述升级插件。

在本发明的一种实施例中,所述升级插件还用于:

接收外界的升级命令;


检测所述待升级软件是否发布新的软件安装包,如果有,则触发升级命令。

在本发明的一种实施例中,所述升级插件还用于:

调用自身的测试工具对升级后的软件进行功能测试;


调用第三方测试软件对升级后的软件进行功能测试。

在本发明的一种实施例中,所述升级插件还用于调用图形界面的类加载器。

在本发明的一种实施例中,所述升级插件还用于调用所述待升级软件自身
的图形界面的类加载器或调用所述待升级软件所在系统的父类加载器。

本发明的有益效果是:

本发明提供的软件升级方法,启动升级插件;升级插件接收升级命令,下载
待升级软件对应的软件安装包;升级插件运行安装命令,根据软件安装包完成待
升级软件的升级安装;升级插件运行启动命令,启动升级后的软件;升级插件
运行测试命令,对升级后的软件进行功能测试。与现有技术相比,通过升级插
件执行相应的命令来进行软件自动完成软件升级过载中的下载、安装、启动和
测试等步骤,避免人手动去完成升级过载中各步骤,可以代替人手动去自动完
成软件升级,降低了软件的使用和维护成本,提高了用户体验度。

附图说明

图1为本发明实施例一提供的软件升级方法流程图;

图2为本发明实施例一提供的软件升级方法中升级插件结构示意图;

图3为本发明实施例二提供的软件升级方法流程图;

图4为本发明实施例二提供的软件升级系统结构图一;

图5为本发明实施例二提供的软件升级系统结构图二。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对
本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是
本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域
普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于
本发明保护的范围。

实施例一:

本申请实施例的软件升级方法,如图1所示,该方法包括:

步骤S101:启动升级插件;

在该步骤中,可以是在待升级软件启动后,进入待升级软件主程序之前,
即在待升级软件刚刚启动,还没进入运行中就启动升级插件,当然该升级插件
也可以在进入主程序之后启动,也可以一直处于启动状态,还可以通过触发指
令触发其启动。

步骤S102:升级插件接收升级命令,下载待升级软件对应的软件安装包;

在该步骤中,具体的可以是升级插件接收外界的升级命令;优选的,可以
是或升级插件检测待升级软件是否发布新的软件安装包,如果有,则触发升级
命令。这样就可以避免实现实时对待升级软件进行检测升级。具体的下载软件,
可以是通过远程下载,也可以是通过本地下载,具体下载过载中自动进行软件
升级包的移动,拷贝,删除和解压等。

步骤S103:升级插件运行安装命令,根据软件安装包完成待升级软件的升级
安装;

在该步骤中,自动完成待升级软件的升级,具体自动完成对该软件安装包
的解压,安装,以及为了节约占用空间,安装完后自动对该软件安装包进行删
除,为了保证实时更新,这里的软件安装包优选该待升级软件对应的最新版本
的软件安装包。

步骤S104:升级插件运行启动命令,启动升级后的软件;

在该步骤中,在完成软件升级后,不用人去选择是否启动,自动对升级后
的软件进行启动。

步骤S105:升级插件运行测试命令,对升级后的软件进行功能测试。

在该步骤中,具体的,调用升级插件中的测试工具对升级后的软件进行功
能测试;或通过升级插件调用第三方测试软件对升级后的软件进行功能测试。
这里调用过程中,第三方测试软件可以是本地的测试软件,也可以远端的测试
软件,升级插件中的测试工具,具体使用过程中,涉及到待升级软件的相关权
项等可以采用远程服务,具体远程服务包括ssh服务和telnet服务,ssh为服
务提供的外部主接口,ssh调用命令行接口,实现自动化测试整个过程的调度工
作。进一步,如果在测试过载中会用过图形界面时,可以改升级插件会调用图
形界面的类加载器,具体的,升级插件可以使调用待升级软件自身的图形界面
的类加载器,如果自身没有,还可以调用待升级软件所在系统的父类加载器。

在上述不再S101之前,还包括在待升级软件中嵌入升级插件。具体的解析
待升级软件的启动命令,将升级插件嵌入到启动命令的环境变量中;或将升级
插件加入到启动脚本中,将启动脚本嵌入待升级软件中。应该理解为,其他可
以将升级插件嵌入待升级软件中的方法都可以实现。这里的升级插件可以是一
个软件,也可以是一个程序,具体的形式不限,能够实现对待升级软件进行自
动升级即可。当然,该升级插件可以不嵌入到待升级软件中,可以单独的存在
去控制待测软件升级过程中的各步骤完成自动升级。当然,还可以只将升级插
件的部分组件插入到待升级的软件中,例如将升级插件的代理组件。

值得注意的是,本实例中的升级插件可以基于各种平台的开发,如图2所
示,为该升级插件的结构示意图,优选的采用面向Java的动态模型系统(Open
Service Gateway Initiative,OSGi)进行该升级插件开发。即基于apache fliex
项目的OSGI框架实现,提供的功能形成代码并编译后的输出物主要为符合OSGi
规范的插件bundle。本实施例所涉及的bundle的功能分为基本组件、嵌入式组
件和命令行组件三部分,除了嵌入式组件的工具软件和控制台以外,其余均为
OSGi bundle。本实施例将每个零散的步骤拆分为一个动作,这些动作形成代码
后变成一个可执行的命令,将这些子命令组合就可以代替使用人操作,从而实
现软件升级的自动化。具体的串行流程通过一个命令行框架来实现,对于界面
安装和界面功能测试方面,可以使用第三方的自动化测试工具或者内嵌自动化
测试jar文件包嵌入到被测试软件中,对于后者,用guitest命令作为辅助实
现内嵌功能。这里的命令可以一个单独的命令,也可是多个命令的集合。例如,
利用java代理(agent)功能,即一个main方法执行之前的一个拦截器
(interceptor),将guitest嵌入到被测试软件的jvm中。guitest agent是一个
java类加载器,用于将自动化测试相关的类加载到被测试软件的java进程中,
并提供一个远程调用接口执行可编程的测试用例脚本。远程调用接口提供一个
可配置的入口参数,使用反射的方式调用嵌入到被测试软件的测试软件包的主
方法。

实施例二:

本申请实施例的软件升级方法,如图3所示,该方法包括:

步骤S201:在被测试软件中嵌入升级插件;

在该步骤中,具体的,可以是将升级插件agent附加到被测试软件的jdk
中,实现方法如下,解析被测试软件的启动命令,找到JAVA_HOME的位置,将
agent.jar拷贝到$JAVA_HOME/jre/lib/ext目录下(即将agent.jar使用JVM的
扩展类加载器加载),然后将-javaagent:$JAVA_HOME\jre\lib\ext\agent.jar
附加到java命令启动参数中。也可以直接定制被测试软件的启动脚本,将加入
了javaagent的脚本放到被测试软件中。这里的被测试软件即为待升级软件的
一种实例。值得注意的是,这里只是将升级插件的部分组件嵌入到被测软件中,
具体的,在测试过程中还可在升级后的被测软件中嵌入相关测试组件,例如嵌
入被测软件图形界面测试的部分的组件到被测软件中。

步骤S202:启动升级插件;

在该步骤中,具体的,先执行脚本启动主入口类;然后,主入口类首先从
配置文件目录中加载配置信息,用于初始化OSGI框架;接着,启动OSGI框架,
加载系统目录下基本服务,这些服务按照以下顺序启动。即启动,命令行服务、
SSH服务、自动化测试服务,telnet服务。同时OSGI框架会监控deploy目录,
如有bundle加入则自动加载并启动。OSGI框架根据bundle的启动情况,更新
启动结果。当基础的服务启动失败时,引用此服务的bundle也会启动失败,因
此将这些基础服务放到系统目录下,以免出现外部干扰导致程序崩溃无法使用。
所有bundle的状态更新完成后,启动本地控制台,此控制台与telnet服务是
平级的,其内容为通过ssh客户端登录到SSH服务端,执行命令行的调用。完
成启动,命令行框架进入命令待执行状态。

步骤S203:完成软件升级,对软件进行测试。

在该步骤中,具体的,当被测试软件启动后,主方法(main方法)调用之前,
agent会被加载,agent会将自动化测试相关class加载,如果软件有图形界面
则这些class的类加载器会继承图形界面的类加载器,没有图形界面则继承系
统类加载器,通过这种方式将guitest嵌入到被测试软件的进程中,由于类加
载器不同,guitest可以访问其父类加载器,但父类加载器无法访问guittest,
从而避免了guitest本身对被测试软件的影响。

在上述步骤S202中,具体的,命令行服务包括命令行可以查看OSGI bundle
的状态也可以调用自动化测试服务模块发布的服务及插件提供服务,并发布一
个命令行调用接口服务给SSH服务调用。支持将命令写到文本文件中进行批量
调用执行。SSH服务包括SSH服务端,相关的配置属性从配置文件目录中读取,
兼容ssh1和ssh2协议,可以使用任意支持ssh1和ssh2的ssh客户端登陆。SSH
服务主要调用命令行服务模块发布的服务。自动化测试服务包括软件使用流程
的各个子环节的详细实现,如下载版本,调用自动化测试工具执行版本安装。
自动化测试服务的组件启动完成后向命令行服务注册命令接口,以便被命令行
框架调用。telnet服务包括调用ssh客户端登陆到ssh服务中,telnet服务端
完成了ssh的鉴权工作,登陆到telnet时不需要鉴权。

进一步,该升级插件具体的结构包括:

lib为一个目录,主要包括主入口,控制台、guitest agent组件。

bin为一个目录,其内容为脚本,用于调用本软件的主入口类,向用户展
示控制台,进入命令待执行状态。

etc为一个目录,其内容为本软件中涉及的配置文件,如OSGi框架的配置
文件,ssh服务的端口,鉴权信息等配置文件。

deploy为一个目录,扩展接口的一部分,即热部署插件,OSGI框架会自动
扫描此目录,只要有OSGi bundle的插件拷贝进来即可自动安装和启动,并使
用插件中的服务。

testcenter为一个目录,扩展接口的一部分,即嵌入式软件工具,事实上
被测试软件也可以被看作一个嵌入工具。这里内嵌了一个基于java的图形界面
自动化测试模块,用于软件人员编写界面测试用例,根据模板文件定义界面原
素类型(type)、名称(name)、索引(index)来唯一定位具体的界面元素,据此查
找到该元素的坐标位置,再调用鼠标移动事件去操作该坐标的界面元素。

system为一个目录,提供OSGI框架的bundle、命令集合(文件处理,传输
服务,本地命令)bundle,命令行bundle和远程控制bundle及guitest bundle。

下面以以安装一个网管软件为例,所有的操作由升级插件调用命令完成:

双击启动命令启动升级插件,软件启动成功后,进行命令行状态。根据相
关命令进行升级操作,例如:

Ftpget本地路径ftp路径//下载软件安装包

unzip软件安装包路径//解压

guitestattach解压后安装包路径/setup.bat//将guitest agent嵌入到
网管软件安装启动命令中

exec解压后安装包路径/setup.bat.//本地命令启动网管安装,guitest
agent会把嵌入的java图形界面相关jar嵌入到安装界面的java进程中

guitest网管软件安装的自动化测试脚本//这个自动化测试脚本,就是
点击安装步骤的下一步按钮之类的

exec网管服务端路径/console.bat//启动网管服务端

guitestattach网管客户端路径/client.bat//将guitest agent嵌入到
网管客户端启动命令中

exec网管客户端路径/client.bat//启动客户端

guitest客户端功能测试脚本//进行功能测试

其中可以不用嵌入的方式,直接调用第三方自动化测试工具,这种情况,
guitestattach就变成了调用第三方工具的启动命令,如exec第三方工具路径
/run.bat。这里将升级软件部分组件嵌入到待升级软件是“guitest命令”的功
能(如网管客户端安装完成后,将java界面操作工具<即图形界面操作的一系
列jar包>嵌入到网管客户端中,双击client.exe<或client.bat/client.sh>,
网管客户端启动之后,guitest工具就会自动加载。)不是将整个升级插件的嵌
入到被测试软件中,只是在需要对网管客户端进行界面操作时,将java界面操
作工具嵌入到客户端中。并且,这里的java界面操作工具,可以使用第三方已
经有的,也可以使用此升级插件中提供的内嵌的java界面操作工具。

从上面的描述中,可以看出,本实施例实现了如下的效果:通过执行定制
化的命令和命令组合之间的协作,将软件使用过程中的步骤流程化,结合已有
的自动化测试工具或内嵌的自动化测试组件,实现自动完成人工操作的功能,
本发明降低了软件的使用和维护成本,由于可以远程控制和脚本化,因此也可
以协助维护人员做一些流程性的工作。

实施例三:

本实施例提供一种软件升级系统400,如图4所示,包括启动模块401和升
级插件402:其中,启动模块401用于启动升级插件402;升级插件402用于接
收升级命令,下载待升级软件对应的软件安装包;运行安装命令,根据软件安装
包完成待升级软件的升级安装;运行启动命令,启动升级后的软件;以及运行
测试命令,对升级后的软件进行功能测试。

本实施例还提供一种软件升级系统400,如图5所示,还包括嵌入模块403,
嵌入模块用于在启动升级插件402之前,在待升级软件中嵌入升级插件402。

进一步,嵌入模块403还用于:解析待升级软件的启动命令,将升级插件
402嵌入到启动命令的环境变量中;或将升级插件402加入到启动脚本中,将启
动脚本嵌入待升级软件中。

进一步,启动模块401还用于在待升级软件启动后,进入待升级软件主程
序之前,启动升级插件402。

进一步,升级插件402还用于:接收外界的升级命令;或检测待升级软件
是否发布新的软件安装包,如果有,则触发升级命令。

进一步,升级插件402还用于:调用自身的测试工具对升级后的软件进行
功能测试;或调用第三方测试软件对升级后的软件进行功能测试。

进一步,升级插件402还用于调用图形界面的类加载器。具体的,升级插
件402还用于调用待升级软件自身的图形界面的类加载器或调用待升级软件所
在系统的父类加载器。

值得注意的是,本实例中的各个模块在实现其功能时,会对应使用到上述
实例中的一个或多个组件以及对应的功能。

本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来
指令相关硬件完成,上述程序可以存储于计算机可读存储介质中,如只读存储
器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或
多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形
式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式
的硬件和软件的结合。

以上实施例仅用以说明本发明的技术方案而非限制,仅仅参照较佳实施例
对本发明进行了详细说明。本领域的普通技术人员应当理解,可以对本发明的
技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,均
应涵盖在本发明的权利要求范围当中。

一种软件升级方法和系统.pdf_第1页
第1页 / 共14页
一种软件升级方法和系统.pdf_第2页
第2页 / 共14页
一种软件升级方法和系统.pdf_第3页
第3页 / 共14页
点击查看更多>>
资源描述

《一种软件升级方法和系统.pdf》由会员分享,可在线阅读,更多相关《一种软件升级方法和系统.pdf(14页珍藏版)》请在专利查询网上搜索。

本发明提供的软件升级方法,应用于通信领域。启动升级插件;升级插件接收升级命令,下载待升级软件对应的软件安装包;升级插件运行安装命令,根据软件安装包完成待升级软件的升级安装;升级插件运行启动命令,启动升级后的软件;升级插件运行测试命令,对升级后的软件进行功能测试。与现有技术相比,通过升级插件执行相应的命令来进行软件自动完成软件升级过载中的下载、安装、启动和测试等步骤,避免人手动去完成升级过载中各步骤。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1