CN116225377A - 一种跨平台小程序的统一开发方法、装置和电子设备 - Google Patents
一种跨平台小程序的统一开发方法、装置和电子设备 Download PDFInfo
- Publication number
- CN116225377A CN116225377A CN202211576451.0A CN202211576451A CN116225377A CN 116225377 A CN116225377 A CN 116225377A CN 202211576451 A CN202211576451 A CN 202211576451A CN 116225377 A CN116225377 A CN 116225377A
- Authority
- CN
- China
- Prior art keywords
- service
- applet
- code
- platform
- probe
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及程序开发技术领域,具体涉及一种跨平台小程序的统一开发方法、装置和电子设备,采用独特的以代码分层、功能与代码动态关联为核心,结合代码探针、条件编译等技术,实现小程序在各大平台的统一开发,让项目管理统一、集中,从而更加高效、集约,以及每次迭代开发或修复bug时精准定位影响的功能模块,包含直接影响和由于修改代码被其他代码调用的调用链而波及的较隐蔽的间接影响,彻底解决跨平台的兼容性问题,实现每次代码修改时自动识别波及范围,不仅精准确定了跨平台兼容性范围,同时能精准定位因调用关联关系导致的修改一处功能而影响的其他功能,节省了开发、测试资源,也保证的小程序应用的上线质量,便于跨平台扩展。
Description
技术领域
本发明涉及程序开发技术领域,尤其涉及一种跨平台小程序的统一开发方法、装置和电子设备。
背景技术
小程序作为一种轻量级的移动应用,因其使用简单、无需单独安装、可以依托其所在宿主平台强大资源获取流量等优势,已成为一种移动应用的普遍载体,被广泛应用,但随之也带来一系列问题,因为小程序是寄宿在各个平台上,而各大平台所从事的领域、成熟度及出于维护自身利益的考虑,提供的平台上小程序开发语言虽然统一使用Javascript,但具体开发用到的特性、组件等有很多不同,甚至完全一样的功能逻辑的api(ApplicationProgramming Interface,应用程序编程接口)大到使用流程、小到函数名称均不相同,为了解决这些跨平台存在的兼容性问题,许多开发团队采用每一个宿主平台都单独开发一套小程序代码,但目前市场上较大主流小程序宿主平台有微信、支付宝、钉钉、百度、飞书、快应用等,每个平台的用户有都自己特定的庞大用户群体,都是小程序运营方所渴望获得的潜在客户,这样话导致开发工作量相当于乘以数倍,而且这还不包括一系列其他影响面相对小一些平台;另外,一个应用多套代码也造成维护困难,迭代开发和修复bug的工作量也是相当于倍增的,不仅导致大量的人力、财力投入,也是与敏捷迭代的目标严重相违背的。
目前,市场上针对前述问题也有一些公司做一些尝试,比如有一些开发框架实现跨微信、钉钉等少量平台,其他平台还是需要单独开发代码,而且,最重要的是后期迭代开发、修复代码bug时,无法精确知道因修改代码会波及哪些相关功能及哪些平台会存在兼容性问题。这些都没有从根本上解决问题,具体而言这一领域目前存在以下问题:
1、各平台小程序运行环境由不同平台所在公司管理和维护,虽然他们底层都是基于Javascript的解释器内核,但越往上添加、修改自有的特性就越五花八门,特别是涉及各平台的认证、授权及小程序与外部交互等领域,各平台的机制和流程本身相差很大,需要不同代码实现,如前所述,开发多套代码工作量大且后续维护工作量倍增,如果简单的把多平台的多套代码放在一个开发环境的工程里,相当于代码堆砌,问题依然存在。
2、即使小程序应用的第一个版本花费大量精力通过人工尝试、验证、修改再尝试多轮迭代实现一套代码跨多个平台,但后续迭代开发和修复bug时只要进行修改代码,必须将前面的人工尝试、验证、修改再尝试的费时费力的跨平台兼容性开发再走一遍,否则没有人工验证的平台小程序可能就存在兼容性问题,会在上线后爆发出问题,修复这个问题时反过来可能又会影响之前验证过的平台小程序,有陷入顾此失彼式恶性循环的风险;缺少跨平台小程序应用生命周期内每次修改的精准、自动定位可能存在兼容性问题乃至业务功能问题的方法论和科学流程。
3、小程序每次迭代开发过程中无法量化开发人员和测试人员的工作量,可能在业务上类似的两个功能,前者只需修改一次而无跨平台兼容性问题要处理,而后者因存在跨平台兼容性问题而需要修改多处,工程量可能相差很大,对于测试工作来说也类似,这些都需要一种精准量化方式提供。
发明内容
本发明提供了一种跨平台小程序的统一开发方法、装置和电子设备,精准确定了跨平台兼容性范围,节省了开发、测试资源,保证的小程序应用的上线质量,便于跨平台扩展。
本说明书实施例提供一种跨平台小程序的统一开发方法,包括:
构建小程序框架,所述小程序框架包括业务层、调用层、程序部署层;
在测试环境下对所述业务层、所述调用层、所述程序部署层中存在的所有运行模块加入探针代码,动态收集探针代码发送的业务运行轨迹数据;
基于所述业务运行轨迹数据建立所述业务层中业务功能与所述探针代码的动态关联关系;
当对所述小程序进行迭代开发和/或修复程序漏洞时,根据业务功能与所述探针代码的动态关联关系自动分析出业务波及范围和/或兼容性波及范围;
对所述业务波及范围内的业务功能进行回归测试和/或对所述兼容性波及范围所对应的平台进行兼容性测试,基于测试结果更新所述小程序。
优选的,所述在测试环境下对所述业务层、所述调用层、所述程序部署层中存在的所有运行模块加入探针代码,包括:
基于条件编译,结合操作员配置时传递的参数在测试环境下的函数和/或语句执行前、后插入探针代码。
优选的,所述动态收集探针代码发送的业务运行轨迹数据,包括:
执行探针代码,利用所述探针代码发送业务执行时产生的业务运行轨迹数据,所述业务运行轨迹数据至少包含类名、函数名及行号。
优选的,所述根据业务功能与所述探针代码的动态关联关系自动分析出业务波及范围和/或兼容性波及范围,包括:
构建所述小程序的丛林;
以所述业务功能与所述探针代码的动态关联关系为基线确定所述丛林的范围;
当引入新的代码和/或加入新的业务功能在所述丛林范围内时,于所述丛林范围内确定业务波及范围和/或兼容性波及范围;
当引入新的代码和/或加入新的业务功能超出所述丛林范围时,确定新代码与原始代码的依赖关系、影响因素,基于所述依赖关系、影响因素对所述丛林范围进行扩张,于扩张后的所述丛林范围内确定业务波及范围和/或兼容性波及范围。
优选的,所述构建所述小程序的丛林,包括:
以业务页面为树根,根据业务页面引用的脚本代码、业务运行轨迹数据构造一个个功能树;
当业务页面为单页面时,以单一页面上的功能区域为根构造功能树;
基于所述功能树构建所述小程序的丛林。
优选的,确定新代码与原始代码的依赖关系,包括:
对所述新的代码和/或加入新的业务功能进行词法分析、语法分析以构建出抽象语法树,形成JSON格式的数据结构;
分析所述数据结构对原代码的调用层级,所述新代码与原始代码的依赖关系的大小随所述调用层级的高低成正比。
优选的,所述基于测试结果更新所述小程序,包括:
当所述测试结果显示测试正常时,利用以条件编译为核心的编译路由进行代码打包,生成相应平台的小程序部署包。
本说明书实施例还提供一种跨平台小程序的统一开发装置,包括:
框架构建模块,用于构建小程序框架,所述小程序框架包括业务层、调用层、程序部署层;
探针加入模块,用于在测试环境下对所述业务层、所述调用层、所述程序部署层中存在的所有运行模块加入探针代码,动态收集探针代码发送的业务运行轨迹数据;
关联模块,用于基于所述业务运行轨迹数据建立所述业务层中业务功能与所述探针代码的动态关联关系;
波及范围分析模块,用于当对所述小程序进行迭代开发和/或修复程序漏洞时,根据业务功能与所述探针代码的动态关联关系自动分析出业务波及范围和/或兼容性波及范围;
测试模块,用于对所述业务波及范围内的业务功能进行回归测试和/或对所述兼容性波及范围所对应的平台进行兼容性测试,基于测试结果更新所述小程序。
一种电子设备,其中,该电子设备包括:
处理器以及存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行上述任一项所述的方法。
一种计算机可读存储介质,其中,所述计算机可读存储介质存储一个或多个指令,所述一个或多个指令当被处理器执行时,实现上述任一项所述的方法。
本发明采用独特的以代码分层、功能与代码动态关联为核心,结合代码探针、条件编译等技术,实现小程序在各大平台的统一开发,让项目管理统一、集中,从而更加高效、集约,以及每次迭代开发或修复bug时精准定位影响的功能模块,包含直接影响和由于修改代码被其他代码调用的调用链而波及的较隐蔽的间接影响,彻底解决跨平台的兼容性问题,实现每次代码修改时自动识别波及范围,不仅精准确定了跨平台兼容性范围,同时能精准定位因调用关联关系导致的修改一处功能而影响的其他功能,节省了开发、测试资源,也保证的小程序应用的上线质量,便于小程序进行跨平台扩展,且边际成本极低。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本说明书实施例提供的一种跨平台小程序的统一开发方法的原理示意图;
图2为本说明书实施例提供的一种跨平台小程序的统一开发分层结构图;
图3为本说明书实施例提供的业务功能与代码之间的关联关系图;
图4为本说明书实施例提供的一种跨平台小程序的统一开发装置的结构示意图;
图5为本说明书实施例提供的一种电子设备的结构示意图;
图6为本说明书实施例提供的一种计算机可读介质的原理示意图。
具体实施方式
现在将参考附图更全面地描述本发明的示例性实施例。然而,示例性实施例能够以多种形式实施,且不应被理解为本发明仅限于在此阐述的实施例。相反,提供这些示例性实施例能够使得本发明更加全面和完整,更加便于将发明构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的元件、组件或部分,因而将省略对它们的重复描述。
在符合本发明的技术构思的前提下,在某个特定的实施例中描述的特征、结构、特性或其他细节不排除可以以合适的方式结合在一个或更多其他的实施例中。
在对于具体实施例的描述中,本发明描述的特征、结构、特性或其他细节是为了使本领域的技术人员对实施例进行充分理解。但是,并不排除本领域技术人员可以实践本发明的技术方案而没有特定特征、结构、特性或其他细节的一个或更多。
附图中所示的图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
术语“和/或”或者“及/或”包括相关联的列出项目中的任一个或多者的所有组合。
参照图1为本说明书实施例提供的一种跨平台小程序的统一开发方法的原理示意图,包括:
S101:构建小程序框架,所述小程序框架包括业务层、调用层、程序部署层;
在本发明较佳的实施例中,首先,将小程序应用在架构设计阶段进行黑白分层,指导思想为从上到下为业务层1、调用层2、程序部署层3三种,业务层1记为白模块,白模块为与具体宿主平台无关的业务代码或通用代码,程序部署层3记为黑模块,黑模块为与宿主平台相关的代码,业务层1与程序部署层3之间设置调用层2进行衔接,调用层2记为灰模块,如图2所示所示,这从技术上采用分层模式的软件架构风格,同时结合了小程序应用的业务特点。一般来说,小程序应用不断迭代开发主要是针对业务功能的新增、修改、删除等,对应的主要是上层白模块的新增、修改、删除,更改频繁;而黑模块的新增、修改、删除随着所在宿主平台的版本升级改动而改动,没有升级就无需改动,较少更改;中间的灰模块则是在上层白模块需要调用下层新的黑模块或其特性时才会新增、修改。这样,白模块均不用考虑跨平台兼容性问题,它只能调用其他白模块和灰模块,不能够直接调用平台相关的黑模块。具体实现上,黑模块对于白模块来说是不可知的,黑模块的所提供的功能会全都封装在灰模块中,具体封装的某个功能的黑模块是每个平台一个。
以往市场上的跨几个宿主平台的小程序应用终究还是分离式的,除了需求是一样的,后续的开发、测试直到交付都是分离的,犹如从需求原点发散出去的各条射线,每条射线上工作流程几乎没有交叉,所以总的工作量依然很大,而本发明通过代码黑白分层、功能与代码的动态关联,各平台从需求到开发、测试、交付乃至下一个迭代周期,横向是关联的一个整体,跨平台的相同、相异部分都清晰标识,有无跨平台兼容性问题及兼容性涉及的平台数量都是自动标识出来的,这样项目管理就无需按平台细分,兼容性问题作为一般性问题融入一般开发问题集合之中,让项目管理统一、集中,从而更加高效、集约。
S102:在测试环境下对所述业务层、所述调用层、所述程序部署层中存在的所有运行模块加入探针代码,动态收集探针代码发送的业务运行轨迹数据;
进一步地,所述在测试环境下对所述业务层、所述调用层、所述程序部署层中存在的所有运行模块加入探针代码,包括:
基于条件编译,结合操作员配置时传递的参数在测试环境下的函数和/或语句执行前、后插入探针代码。
进一步地,所述动态收集探针代码发送的业务运行轨迹数据,包括:
执行探针代码,利用所述探针代码发送业务执行时产生的业务运行轨迹数据,所述业务运行轨迹数据至少包含类名、函数名及行号。
在本发明较佳的实施例中,对小程序所有模块(白模块、灰模块、黑模块)加入探针代码,目的是为了在测试环境动态获取业务运行轨迹数据及其与业务功能模块的对应关系。采用两种技术分别应对不同层次的模块:AOP(Aspect Oriented Programming,面向切面编程)函数级和语句级,后者比前者更精细但更复杂一些,对于灰模块需要采用后者,因为同一个函数里会调用不同平台的代码,必须精确到语句级;而白模块和黑模块一般到函数级。利用探针处理工具、条件编译等技术,根据操作员配置而传递过来的参数在源代码里测试环境下的函数和/或语句调用或执行前、后插入探针代码,其中函数级采用Javascript自带的AOP支持语法快速实现,探针代码实现代码执行时,同时发送业务运行轨迹数据到自研平台并保存至数据库,业务运行轨迹数据的数据结构包含类名、函数名及行号等关键位置信息,从而实现将类、函数的运行时调用关系准确的记录下来。因为探针代码会使得打包部署包增大,同时运行时会有一定性能损失,所以仅在测试环境进行,生产环境则通过条件编译实现无探针打包和部署。
S103:基于所述业务运行轨迹数据建立所述业务层中业务功能与所述探针代码的动态关联关系;
在本发明较佳的实施例中,有了探针代码,在小程序应用业务功能管理平台建立好小程序应用的所有业务功能,初始化时在测试环境运行每个业务功能,动态收集探针代码发送的业务运行轨迹数据,从而实现两者的关联,图3为函数级的关联示意图,示意图中,业务功能01与函数b→函数d→函数e→函数f代码调用链进行关联,而业务功能2与函数c→[函数f,函数h→函数g]代码调用链进行关联,它们之间还共享了函数f,为后续基于代码修改自动获得业务波及范围提供支持。通过小程序框架分层、业务功能与业务运行轨迹数据的动态关联,各平台从需求到开发、测试、交付乃至下一个迭代周期,横向是关联的一个整体,跨平台的相同、相异部分都清晰标识,跨平台兼容性问题及兼容性涉及的平台数量都是自动标识出来的,项目管理无需按平台细分,兼容性问题作为一般性问题融入一般开发问题集合之中,让项目管理统一、集中,从而更加高效、集约。
S104:当对所述小程序进行迭代开发和/或修复程序漏洞时,根据业务功能与所述探针代码的动态关联关系自动分析出业务波及范围和/或兼容性波及范围;
在本发明较佳的实施例中,当对小程序进行迭代开发和/或修复程序漏洞时,如:修改了图3中函数d的代码,就会得知业务功能01受到影响,若修改了函数f,则业务波及范围为业务功能01和业务功能02。通过上述方式实现根据业务功能与探针代码的动态关联关系自动分析出业务波及范围和/或兼容性波及范围,精准确定了跨平台兼容性范围,同时能精准确定位因调用关联关系导致的修改一处功能而影响的其他功能。这样大大节省了开发、测试资源,也保证的小程序应用的上线质量。
S105:对所述业务波及范围内的业务功能进行回归测试和/或对所述兼容性波及范围所对应的平台进行兼容性测试,基于测试结果更新所述小程序。
在本发明较佳的实施例中,如:修改了图3中函数d的代码,就会得知业务功能01受到影响,需要进行回归测试,而其他业务功能不受影响,无需处理;若修改了函数f,则业务波及范围为业务功能01和业务功能02,两者都需要回归测试。而且对于开发分工较细的情况下,由于函数d或函数f被修改的情况下,若调用它们的代码是其他开发人员,尽管他没有修改代码,由于调用关系也属于代码层面被波及范围,也需要进行单元测试等,以免因调用出错导致自身代码出现问题。另外,可根据修改代码及波及的代码是否属于灰模块或黑模块而决定跨平台兼容波及范围,若是黑模块则提醒其对应宿主平台需要进行兼容性的测试;若是灰模块,该灰模块涉及的所有平台需要进行兼容性测试。因此,灰模块一般在测试环境下添加探针代码是语句级,就是为了更精准定位波及范围,同时,一般灰模块都是代码量较少的衔接代码,以便尽量使得每次修改波及范围较少涉及到灰模块。通过上述方式实现每次代码修改的自动识别波及范围,不仅精准确定了跨平台兼容性范围,同时也能精准确定位因调用关联关系导致的修改一处功能而影响的其他业务功能,大大节省了开发、测试资源,也保证的小程序应用的上线质量。
进一步地,所述基于测试结果更新所述小程序,包括:
当所述测试结果显示测试正常时,利用以条件编译为核心的编译路由进行代码打包,生成相应平台的小程序部署包。
在本发明较佳的实施例中,灰模块是用于衔接白模块与黑模块的,一般来说,灰模块是1:N对应N个平台的相应黑模块,它们之间通过编译路由技术生成相应平台的小程序部署包,发布到相应平台。编译路由以条件编译为核心,扩充一些参数传递,下面是一个条件编译示例:
#ifdef MP-WEXIN
微信平台专用代码
#elseifdef ALIPAY
支付宝平台专用代码
#elseifdef DINGDING
钉钉平台专用代码
#elseifdef BAIDU
钉钉平台专用代码
#elseifdef FEISHU
飞书平台专用代码
#else
报错或警示(无匹配平台)
#endif
代码打包时先基于条件编译传入值保留相应代码而剔除其他平台代码,为了在生成的结果代码中既能显式查看路由结果而又不污染代码,转换时将条件编译语法转换成前端开发语言中的注释,在Javascript中使用“//注释”,css中使用“/*注释*/”,而对于一些成熟的开发框架,如VUE.JS,则使用其自有的注释“<!--注释-->”。
本发明不仅解决初始版本小程序应用的跨平台开发,更重要的是覆盖整个小程序后续不断迭代的全生命周期,而且迭代版本越多、时间越久所产生的累积效益越大。一般来说,小程序应用作为应用软件的一种,第一个版本上线后随着市场、使用方面的反馈及技术的发展,会不断迭代,互联网等领域许多大型应用是每0.5~1个月迭代周期,bug修复更是频繁修改,存在高密度的迭代开发,而本发明实现每次代码修改的自动识别波及范围,不仅精准确定了跨平台兼容性范围,同时能精准定位因调用关联关系导致的修改一处功能而影响的其他功能,大大节省了开发、测试资源,也保证的小程序应用的上线质量。
在本发明较佳的实施例中,小程序应用中代码量最大的白模块可以复用,仅修改灰模块(也主要是添加相应新增平台的判断分支)、添加新平台的黑模块,工作量很小;然后在新平台上运行一遍以初始化数据,采集到新平台的功能与代码的关联关系,并根据运行业务运行轨迹数据动态优化代码结构,如:检测到程序开发不规范直接跨越灰模块调用黑模块等。这样新平台就融入进来,后续流程保持原有。这种扩展极其灵活,边际成本极低,极大地方便了小程序应用进行更多跨平台的扩展。
进一步地,所述根据业务功能与所述探针代码的动态关联关系自动分析出业务波及范围和/或兼容性波及范围,包括:
构建所述小程序的丛林;
以所述业务功能与所述探针代码的动态关联关系为基线确定所述丛林的范围;
当引入新的代码和/或加入新的业务功能在所述丛林范围内时,于所述丛林范围内确定业务波及范围和/或兼容性波及范围;
当引入新的代码和/或加入新的业务功能超出所述丛林范围时,确定新代码与原始代码的依赖关系、影响因素,基于所述依赖关系、影响因素对所述丛林范围进行扩张,于扩张后的所述丛林范围内确定业务波及范围和/或兼容性波及范围。
进一步地,确定新代码与原始代码的依赖关系,包括:
对所述新的代码和/或加入新的业务功能进行词法分析、语法分析以构建出抽象语法树,形成JSON格式的数据结构;
分析所述数据结构对原代码的调用层级,所述新代码与原始代码的依赖关系的大小随所述调用层级的高低成正比。
在本发明较佳的实施例中,丛林统计算法以第一次建立的业务功能与探针代码的动态关联关系为基线,确定了丛林的范围,后续在该范围内的修改会被判断为对丛林中功能树的修改,而无需因为部分代码增加了就认为增加了新的功能树;超出基线范围的代码会被认为丛林的扩张,超出基线范围的判断会综合考虑新的代码与原始代码的调用或依赖关系、新的代码的加入日期等因素,其中依赖关系因新的代码尚未运行,故采用基于AST(Abstract Syntax Tree,抽象语法树)技术,通过对新的代码进行词法分析、语法分析之后构建出抽象语法树,形成JSON格式的数据结构,在此基础上分析获得其对原始代码的调用及调用层次,调用层次越高代表新的代码与原始代码的依赖越大,越低则依赖越小,因为越低层次的代码越远离具体业务逻辑而越接近平台提供的API(Ap plication ProgrammingInterface,应用程序编程接口)接口。从两方面考虑:一方面是调用原始代码属于白模块、灰模块、黑模块中的哪一种,灰模块、黑模块是远离具体业务逻辑的;另一方面对于调用原始代码白模块的,要结合所调用白模块在原始代码中的调用入度情况,入度越大通用性越强,也越远离具体业务逻辑,比如网络通信模块等。通过上述的丛林统计算法识别新的业务功能,或者技术人员引入新的开源代码,进而识别出丛林范围内业务波及范围和/或兼容性波及范围,以提醒开发人员进行相应的初始化关联。
进一步地,所述构建所述小程序的丛林,包括:
以业务页面为树根,根据业务页面引用的脚本代码、业务运行轨迹数据构造一个个功能树;
当业务页面为单页面时,以单一页面上的功能区域为根构造功能树;
基于所述功能树构建所述小程序的丛林。
在本发明较佳的实施例中,小程序应用做迭代开发时经常会加入新的业务功能,或者技术人员引入新的开源代码等,这样都会在原有代码库中加入新的孤立代码,没有与新增或现有业务功能关联,这时,通过利用丛林统计算法判断是否是新加代码而通过相应软件平台提示开发人员进行相应的初始化关联。丛林统计算法以页面为树根,根据页面引用的Javascript代码及获取的业务运行轨迹数据,构造一个个功能树,许多这样的功能树构成整个小程序应用的丛林,对于SPA(single-page application,单页面应用),则以单一页面上的功能区域为根构造相应树,这对于框架化前端开发来说,SPA主页面的不同区域分离开发很为普遍。同时,人工可以干预丛林中功能树的构成,比如某个页面人为分成两棵树更便于管理,这在业务功能与探针代码建立动态关系前对小程序应用的业务功能进行划分时进行操作。通过上述方式实现丛林统计算法中丛林的确定,便于识别新的业务功能,或者技术人员引入新的开源代码,为后续识别丛林范围内业务波及范围和/或兼容性波及范围提供理论依据。
图4为本说明书实施例提供的一种跨平台小程序的统一开发装置的结构示意图,包括:
框架构建模块201,用于构建小程序框架,所述小程序框架包括业务层、调用层、程序部署:;
探针加入模块202,用于在测试环境下对所述业务层、所述调用层、所述程序部署层中存在的所有运行模块加入探针代码,动态收集探针代码发送的业务运行轨迹数据;
关联模块203,用于基于所述业务运行轨迹数据建立所述业务层中业务功能与所述探针代码的动态关联关系;
波及范围分析模块204,用于当对所述小程序进行迭代开发和/或修复程序漏洞时,根据业务功能与所述探针代码的动态关联关系自动分析出业务波及范围和/或兼容性波及范围;
测试模块205,用于对所述业务波及范围内的业务功能进行回归测试和/或对所述兼容性波及范围所对应的平台进行兼容性测试,基于测试结果更新所述小程序。
本发明实施例的装置的功能已经在上述的方法实施例中进行了描述,故本实施例的描述中未详尽之处,可以参见前述实施例中的相关说明,在此不做赘述。
基于同一发明构思,本说明书实施例还提供一种电子设备。
下面描述本发明的电子设备实施例,该电子设备可以视为对于上述本发明的方法和装置实施例的具体实体实施方式。对于本发明电子设备实施例中描述的细节,应视为对于上述方法或装置实施例的补充;对于在本发明电子设备实施例中未披露的细节,可以参照上述方法或装置实施例来实现。
参照图5为本说明书实施例提供的一种电子设备的结构示意图。下面参照图5来描述根据本发明该实施例的电子设备300。图5显示的电子设备300仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图5所示,电子设备300以通用计算设备的形式表现。电子设备300的组件可以包括但不限于:至少一个处理单元310、至少一个存储单元320、连接不同装置组件(包括存储单元320和处理单元310)的总线330、显示单元340等。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元310执行,使得所述处理单元310执行本说明书上述处理方法部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元310可以执行如图1所示的步骤。
所述存储单元320可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)3201和/或高速缓存存储单元3202,还可以进一步包括只读存储单元(ROM)3203。
所述存储单元320还可以包括具有一组(至少一个)程序模块3205的程序/实用工具3204,这样的程序模块3205包括但不限于:操作装置、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线330可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备300也可以与一个或多个外部设备400(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备300交互的设备通信,和/或与使得该电子设备300能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口350进行。并且,电子设备300还可以通过网络适配器360与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器360可以通过总线330与电子设备300的其它模块通信。应当明白,尽管图5中未示出,可以结合电子设备300使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID装置、磁带驱动器以及数据备份存储装置等。
通过以上的实施方式的描述,本领域的技术人员易于理解,本发明描述的示例性实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个计算机可读的存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、或者网络设备等)执行根据本发明的上述方法。当所述计算机程序被一个数据处理设备执行时,使得该计算机可读介质能够实现本发明的上述方法,即:如图1所示的方法。
参照图6为本说明书实施例提供的一种计算机可读介质的原理示意图。
实现图1所示方法的计算机程序可以存储于一个或多个计算机可读介质上。计算机可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的装置、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行装置、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
综上所述,本发明可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)等通用数据处理设备来实现根据本发明实施例中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,本发明不与任何特定计算机、虚拟装置或者电子设备固有相关,各种通用装置也可以实现本发明。以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种跨平台小程序的统一开发方法,其特征在于,包括:
构建小程序框架,所述小程序框架包括业务层、调用层、程序部署层;
在测试环境下对所述业务层、所述调用层、所述程序部署层中存在的所有运行模块加入探针代码,动态收集探针代码发送的业务运行轨迹数据;
基于所述业务运行轨迹数据建立所述业务层中业务功能与所述探针代码的动态关联关系;
当对所述小程序进行迭代开发和/或修复程序漏洞时,根据业务功能与所述探针代码的动态关联关系自动分析出业务波及范围和/或兼容性波及范围;
对所述业务波及范围内的业务功能进行回归测试和/或对所述兼容性波及范围所对应的平台进行兼容性测试,基于测试结果更新所述小程序。
2.如权利要求1所述的一种跨平台小程序的统一开发方法,其特征在于,所述在测试环境下对所述业务层、所述调用层、所述程序部署层中存在的所有运行模块加入探针代码,包括:
基于条件编译,结合操作员配置时传递的参数在测试环境下的函数和/或语句执行前、后插入探针代码。
3.如权利要求1所述的一种跨平台小程序的统一开发方法,其特征在于,所述动态收集探针代码发送的业务运行轨迹数据,包括:
执行探针代码,利用所述探针代码发送业务执行时产生的业务运行轨迹数据,所述业务运行轨迹数据至少包含类名、函数名及行号。
4.如权利要求1所述的一种跨平台小程序的统一开发方法,其特征在于,所述根据业务功能与所述探针代码的动态关联关系自动分析出业务波及范围和/或兼容性波及范围,包括:
构建所述小程序的丛林;
以所述业务功能与所述探针代码的动态关联关系为基线确定所述丛林的范围;
当引入新的代码和/或加入新的业务功能在所述丛林范围内时,于所述丛林范围内确定业务波及范围和/或兼容性波及范围;
当引入新的代码和/或加入新的业务功能超出所述丛林范围时,确定新代码与原始代码的依赖关系、影响因素,基于所述依赖关系、影响因素对所述丛林范围进行扩张,于扩张后的所述丛林范围内确定业务波及范围和/或兼容性波及范围。
5.如权利要求4所述的一种跨平台小程序的统一开发方法,其特征在于,所述构建所述小程序的丛林,包括:
以业务页面为树根,根据业务页面引用的脚本代码、业务运行轨迹数据构造一个个功能树;
当业务页面为单页面时,以单一页面上的功能区域为根构造功能树;
基于所述功能树构建所述小程序的丛林。
6.如权利要求4所述的一种跨平台小程序的统一开发方法,其特征在于,确定新代码与原始代码的依赖关系,包括:
对所述新的代码和/或加入新的业务功能进行词法分析、语法分析以构建出抽象语法树,形成JSON格式的数据结构;
分析所述数据结构对原代码的调用层级,所述新代码与原始代码的依赖关系的大小随所述调用层级的高低成正比。
7.如权利要求1所述的一种跨平台小程序的统一开发方法,其特征在于,所述基于测试结果更新所述小程序,包括:
当所述测试结果显示测试正常时,利用以条件编译为核心的编译路由进行代码打包,生成相应平台的小程序部署包。
8.一种跨平台小程序的统一开发方法,其特征在于,包括:
框架构建模块,用于构建小程序框架,所述小程序框架包括业务层、调用层、程序部署层;
探针加入模块,用于在测试环境下对所述业务层、所述调用层、所述程序部署层中存在的所有运行模块加入探针代码,动态收集探针代码发送的业务运行轨迹数据;
关联模块,用于基于所述业务运行轨迹数据建立所述业务层中业务功能与所述探针代码的动态关联关系;
波及范围分析模块,用于当对所述小程序进行迭代开发和/或修复程序漏洞时,根据业务功能与所述探针代码的动态关联关系自动分析出业务波及范围和/或兼容性波及范围;
测试模块,用于对所述业务波及范围内的业务功能进行回归测试和/或对所述兼容性波及范围所对应的平台进行兼容性测试,基于测试结果更新所述小程序。
9.一种电子设备,其中,该电子设备包括:
处理器以及存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行根据权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,其中,所述计算机可读存储介质存储一个或多个指令,所述一个或多个指令当被处理器执行时,实现权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211576451.0A CN116225377A (zh) | 2022-12-08 | 2022-12-08 | 一种跨平台小程序的统一开发方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211576451.0A CN116225377A (zh) | 2022-12-08 | 2022-12-08 | 一种跨平台小程序的统一开发方法、装置和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116225377A true CN116225377A (zh) | 2023-06-06 |
Family
ID=86572035
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211576451.0A Pending CN116225377A (zh) | 2022-12-08 | 2022-12-08 | 一种跨平台小程序的统一开发方法、装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116225377A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117555535A (zh) * | 2024-01-09 | 2024-02-13 | 云筑信息科技(成都)有限公司 | 一种React框架中实现多环境代码复用方法 |
-
2022
- 2022-12-08 CN CN202211576451.0A patent/CN116225377A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117555535A (zh) * | 2024-01-09 | 2024-02-13 | 云筑信息科技(成都)有限公司 | 一种React框架中实现多环境代码复用方法 |
CN117555535B (zh) * | 2024-01-09 | 2024-05-14 | 云筑信息科技(成都)有限公司 | 一种React框架中实现多环境代码复用方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Ciccozzi et al. | Execution of UML models: a systematic review of research and practice | |
US7895565B1 (en) | Integrated system and method for validating the functionality and performance of software applications | |
US10572249B2 (en) | Software kit release management | |
US11733975B1 (en) | System and method for migrating legacy software to a system common architecture | |
US20070011669A1 (en) | Software migration | |
CN106909510A (zh) | 一种获取测试用例的方法以及服务器 | |
Imtiaz et al. | A systematic literature review of test breakage prevention and repair techniques | |
Obbink et al. | An extensible approach for taming the challenges of JavaScript dead code elimination | |
EP2557499A1 (en) | A system and method for automatic impact variable analysis and field expansion in mainframe systems | |
CN103186463B (zh) | 确定软件的测试范围的方法和系统 | |
CN112148278A (zh) | 可视化的区块链智能合约框架及智能合约开发部署方法 | |
CN116225377A (zh) | 一种跨平台小程序的统一开发方法、装置和电子设备 | |
US11740875B2 (en) | Type inference in dynamic languages | |
US20180239603A1 (en) | Software Development Estimating Based on Functional Areas | |
Caldeira et al. | Unveiling process insights from refactoring practices | |
Liu et al. | Towards understanding bugs in python interpreters | |
Malhotra et al. | A defect tracking tool for open source software | |
Bindu Bhargavi et al. | A survey of the software test methods and identification of critical success factors for automation | |
Capuano et al. | A Graph-Based Java Projects Representation for Antipatterns Detection | |
CN101876936A (zh) | 一种业务测试方法 | |
Frechette et al. | Regression Test Reduction for Object‐Oriented Software: A Control Call Graph Based Technique and Associated Tool | |
Jyoti | A Systematic Review and Comparative study of existing testing techniques for Aspect-oriented software systems | |
Pusuluri | Software testing Concepts and tools | |
Angerer et al. | An experiment comparing lifted and delayed variability-aware program analysis | |
Herzig et al. | Mining the Jazz repository: Challenges and opportunities |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |