本技术涉及计算机,特别涉及一种用于saas软件的考试系统跨版本升级方法及系统。
背景技术:
1、在软件即服务(saas)领域,为了帮助客户快速熟悉和掌握系统功能,特别是新功能的体验、理解和掌握,开发者通常会开发一套仿真软件测评试题系统(简称“考试系统”)。该考试系统与saas软件的生产系统相辅相成,用于模拟saas软件的生产系统中业务功能的主流程,使得客户快速上手和培训演示。
2、现有的saas软件,生产系统会定期进行版本迭代升级,通常周期为两周一次,但是迭代升级的新功能并不一定是考试系统所必须的(例如不涉及业务流程的迭代升级)。当前如果考试系统跟随生产系统每次同步进行升级,会需要额外的维护工作,同时导致系统不稳定。
3、因此,如何减少考试系统的迭代升级次数,保持考试系统的稳定性,避免因频繁升级带来的系统不稳定和维护成本增加是亟需解决的一件事。
技术实现思路
1、本技术实施例提供了一种用于saas软件的考试系统跨版本升级方法及系统。为了对披露的实施例的一些方面有一个基本的理解,下面给出了简单的概括。该概括部分不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围。其唯一目的是用简单的形式呈现一些概念,以此作为后面的详细说明的序言。
2、第一方面,本技术实施例提供了一种用于saas软件的考试系统跨版本升级方法,方法包括:
3、统计当前时刻与目标时刻之间对应的生产系统的版本迭代升级的总次数,目标时刻为考试系统最后一次版本升级的历史时刻,生产系统属于saas软件,考试系统用于模拟生产系统中业务功能的主流程;
4、当总次数大于预设次数阈值时,获取距离当前时刻最近的一次版本迭代升级中生产系统对应的最新的jar文件和apk文件,并基于jar文件和apk文件对考试系统的历史应用程序进行升级;
5、在考试系统的数据库中,按照版本号和变更时间执行存储在sql审计平台中的数据库脚本序列,得到执行结果,并校验执行结果与生产系统的数据库的实际数据库结构ddl是否一致,数据库脚本序列中各数据库脚本是生产系统在当前时刻与目标时刻之间每次版本迭代更新时变更的数据库脚本;
6、如果是,通过apollo配置管理服务,将生产系统数据库的全量数据迁移至考试系统的数据库,以升级考试系统的数据库。
7、可选的,方法还包括:
8、从生产系统获取更新的目标题库;
9、基于目标题库,创建考试轨迹,考试轨迹是模拟真实考试过程中考生与考试系统交互的一系列操作和系统响应的记录;
10、根据考试轨迹,在回放系统中模拟考试系统的多场考试,得到每场考试的模拟结果;考试轨迹是预先将标准的考试全过程采用流量回放技术录制得到的,回放系统是复制考试系统的真实考试环境得到的;
11、在每场考试的模拟结果指示每场考试无异常且考试结果与预设分值一致的情况下,将考试系统的历史题库替换为目标题库,以升级考试系统的题库。
12、可选的,按照版本号和变更时间执行存储在sql审计平台中的数据库脚本序列,得到执行结果,包括:
13、计算当前时刻与目标时刻的时间范围;
14、从sql审计平台中,获取时间范围内生产系统每次版本迭代更新时变更的数据库脚本,得到数据库脚本序列,数据库脚本序列中各数据脚本携带脚本标识,数据库脚本序列中各数据脚本为新增、修改、删除表结构的操作;
15、根据各数据脚本携带的脚本标识,从预先建立的脚本标识与版本号、变更时间之间的映射关系中,获取对应的版本号和变更时间;
16、基于各数据脚本携带的脚本标识对应的版本号或变更时间,将数据库脚本序列进行排序,以保证执行顺序与实际版本迭代顺序一致;
17、执行排序后的数据库脚本序列,得到当前数据库结构ddl;
18、将当前数据库结构ddl作为执行结果。
19、可选的,按照以下步骤生成预先建立的脚本标识与版本号、变更时间之间的映射关系,包括:
20、通过预设监听器,实时监听sql审计平台中是否存入新的目标数据库脚本;
21、在监听到sql审计平台中存入新的目标数据库脚本的情况下,创建目标数据库脚本的脚本标识;
22、获取生产系统版本迭代更新时赋予目标数据库脚本的版本号、变更时间;
23、存储目标数据库脚本的脚本标识、目标数据库脚本的版本号以及变更时间之间的映射关系。
24、可选的,执行结果包括当前数据库结构ddl;
25、校验执行结果与生产系统的数据库的实际数据库结构ddl是否一致,包括:
26、使用编程语言中的文件读取功能,打开并读取当前数据库结构ddl的内容,得到第一ddl内容;
27、使用编程语言中的文件读取功能,打开并读取生产系统的数据库的实际数据库结构ddl的内容,得到第二ddl内容;
28、分析第一ddl内容与第二ddl内容的数据格式;
29、基于数据格式,通过预设解析库对第一ddl内容与第二ddl内容进行内容解析处理,得到当前数据库结构ddl对应的第一解析数据、实际数据库结构ddl对应的第二解析数据;
30、遍历第一解析数据与第二解析数据中每个数据库对象的对象信息;
31、基于每个数据库对象的对象信息,判定执行结果与生产系统的数据库的实际数据库结构ddl是否一致。
32、可选的,预设解析库包括json解析库以及xml解析库,json解析库为python编程语言中的json模块,xml解析库为python编程语言中的xml.etree.elementtree模块;
33、基于数据格式,通过预设解析库对第一ddl内容与第二ddl内容进行内容解析处理,包括:
34、在数据格式为json格式的情况下,初始化json模块;
35、基础初始化的json模块将第一ddl内容与第二ddl内容解析为编程语言中的数据结构;或者,
36、在数据格式为xml格式的情况下,初始化xml.etree.elementtree模块;
37、基于初始化的xml.etree.elementtree模块将第一ddl内容与第二ddl内容解析为树状结构。
38、可选的,遍历第一解析数据与第二解析数据中每个数据库对象的对象信息,包括:
39、在第一解析数据或者第二解析数据为数据结构的情况下,遍历第一解析数据或者第二解析数据中的每个键值对,作为第一解析数据与第二解析数据中每个数据库对象的对象信息,每个键值对的键用于表示数据库对象的名称,键值对的值用于表示数据库对象的ddl定义;或者,
40、在第一解析数据或者第二解析数据为树状结构的情况下,遍历第一解析数据或者第二解析数据中的每个数据库对象节点;
41、获取每个数据库对象节点的节点名称和属性,作为第一解析数据与第二解析数据中每个数据库对象的对象信息,节点名称用于表示数据库对象的名称,属性用于表示数据库对象的ddl定义。
42、可选的,基于每个数据库对象的对象信息,判定执行结果与生产系统的数据库的实际数据库结构ddl是否一致,包括:
43、针对第一解析数据中每个数据库对象的对象信息,获取该对象信息的数据库对象的第一名称以及第一ddl定义;
44、针对第二解析数据中每个数据库对象的对象信息,获取该对象信息的数据库对象的第二名称以及第二ddl定义;
45、将每个第一名称与每个第二名称进行比较,以判断是否存在与每个第一名称相匹配的第二名称;
46、如果是,将每个第一ddl定义与每个第二ddl定义进行比较,以判断是否存在与每个第一ddl定义相匹配的第二ddl定义;
47、如果是,确定执行结果与生产系统的数据库的实际数据库结构ddl一致;
48、如果否,确定执行结果与生产系统的数据库的实际数据库结构ddl不一致。
49、可选的,基于目标题库,创建考试轨迹,包括:
50、获取针对目标题库预先设计的至少一个考试流程,每个考试流程覆盖目标题库中各种题型及操作;
51、基于至少一个考试流程,通过自动化测试工具模拟真实考试过程中考生与考试系统交互的一系列操作;
52、记录每一步操作的系统响应结果;
53、存储每一步操作及每一步操作的系统响应结果之间的对应关系;
54、将对应关系按照时间的先后顺序进行排序,得到排序结果;
55、将排序结果作为考试轨迹。
56、第二方面,本技术实施例提供了一种用于saas软件的考试系统跨版本升级系统,系统包括:
57、统计模块,用于统计当前时刻与目标时刻之间对应的生产系统的版本迭代升级的总次数,目标时刻为考试系统最后一次版本升级的历史时刻,生产系统属于saas软件,考试系统用于模拟生产系统中业务功能的主流程;
58、上线发布模块,用于当总次数大于预设次数阈值时,获取距离当前时刻最近的一次版本迭代升级中生产系统对应的最新的jar文件和apk文件,并基于jar文件和apk文件对考试系统的历史应用程序进行升级;
59、执行模块,用于在考试系统的数据库中,按照版本号和变更时间执行存储在sql审计平台中的数据库脚本序列,得到执行结果,并校验执行结果与生产系统的数据库的实际数据库结构ddl是否一致,数据库脚本序列中各数据库脚本是生产系统在当前时刻与目标时刻之间每次版本迭代更新时变更的数据库脚本;
60、迁移模块,用于如果是,通过apollo配置管理服务,将生产系统数据库的全量数据迁移至考试系统的数据库,以升级考试系统的数据库。
61、本技术实施例提供的技术方案可以包括以下有益效果:
62、在本技术实施例中,一方面,通过统计当前时刻与目标时刻之间对应的生产系统的版本迭代升级的总次数,并与预设次数阈值进行比较,当生产系统的版本迭代升级总次数超过这个阈值时,才对考试系统进行一次集中升级,减少了考试系统的迭代升级次数,升级次数的减少导致了更少的系统变动和更低的出错概率,从而减少因频繁升级带来的系统不稳定风险。另一方面,通过获取距离当前时刻最近的一次版本迭代升级中生产系统对应的最新的jar文件和apk文件进行升级,同时对考试系统的数据库进行升级,通过集中处理生产系统在当前时刻与考试系统最后一次升级时刻之间所有的版本迭代变更,使得考试系统实现了跨版本的升级,跨版本升级的能力极大地提高了考试系统的升级效率和灵活性。
63、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本技术。
1.一种用于saas软件的考试系统跨版本升级方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
3.根据权利要求1所述的方法,其特征在于,所述按照版本号和变更时间执行存储在sql审计平台中的数据库脚本序列,得到执行结果,包括:
4.根据权利要求3所述的方法,其特征在于,按照以下步骤生成预先建立的脚本标识与版本号、变更时间之间的映射关系,包括:
5.根据权利要求1所述的方法,其特征在于,所述执行结果包括当前数据库结构ddl;
6.根据权利要求5所述的方法,其特征在于,所述预设解析库包括json解析库以及xml解析库,所述json解析库为python编程语言中的json模块,所述xml解析库为python编程语言中的xml.etree.elementtree模块;
7.根据权利要求6所述的方法,其特征在于,所述遍历所述第一解析数据与所述第二解析数据中每个数据库对象的对象信息,包括:
8.根据权利要求5所述的方法,其特征在于,所述基于所述每个数据库对象的对象信息,判定所述执行结果与所述生产系统的数据库的实际数据库结构ddl是否一致,包括:
9.根据权利要求2所述的方法,其特征在于,所述基于所述目标题库,创建考试轨迹,包括:
10.一种用于saas软件的考试系统跨版本升级系统,其特征在于,所述系统包括: