目录
前言:
高复用性自动化脚本设计实践是一种以提高代码复用性和可维护性为目标的自动化脚本设计方法。在这种方法中,我们将使用一些通用的设计原则和最佳实践,以确保我们的脚本能够在不同的场景中被多次使用,同时还能够保持良好的可读性和可维护性。
1 痛点
随着运输业务场景的不断丰富和自动化脚本量的不断累积,日常在 review 用例时发现,目前大家仍停留在针对需求定制化用例编写,无法提高用例可复用性和可编排性。当业务流程中间某一环节发生变化时,不但需要重新修改脚本,还会影响当前应用其他用例执行结果。所以,如何设计高复用性脚本成为目前自动化建设的关键节点。
设计理论
理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后将通过表达式引擎解析表达式并取得正确的值,通过事件解析引擎解析用户自定义事件并完成事件的绑定,完成解析赋值以及事件绑定后进行视图的渲染,最终将目标页面展示到屏幕。从设计稿出发,提升页面搭建效率,亟需解决的核心问题有:
2.1 设计理念
根据面向对象程序设计理念,设计者应遵循高内聚与低耦合原则,通常程序结构中各模块的内聚程度越高,模块间的耦合程度就越低。高内聚意味着一个类所能提供的功能应该是相关的,即一个类不要设计得包括很多互不相干的功能,低耦合代表要合理规划模块的颗粒度,即要保证一个模块可独立存在,降低模块之间复杂依赖关系。
2.2 策略模式
策略模式定义了一系列的算法,将每一组相关的算法封装起各个策略分支,从而将分支相关的代码隐藏起来,并且使它们之间可以相互替换。策略模式让算法的变化不会影响到使用算法的客户,希望可以提高程序的可扩展性。
解决思路
理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后将通过表达式引擎解析表达式并取得正确的值,通过事件解析引擎解析用户自定义事件并完成事件的绑定,完成解析赋值以及事件绑定后进行视图的渲染,最终将目标页面展示到屏幕。从设计稿出发,提升页面搭建效率,亟需解决的核心问题有:
3.1 基本思路
根据运输业务同一个流程存在不同场景,如询价服务接上游下发询价单节点,需要区分来源执行不同逻辑,目前设计五个算法能力,根据后期业务不断扩展,还会有更多算法加入进来,这个时候需要考虑一个好的结构对代码进行优化。可能前期大家通过 if...elif...else 分支语句就可实现,但在考虑系统的健壮性和可维护性,这里就不能大量使用 if 分支语句。因为每一种算法能力的代码量极大且算法参数几十个,在随着更多上游接入可能存在十几个甚至更多 else 分支,很容易顾此失彼,牵一发而动全身。所以,利用策略模式设计一系列算法,再供用例拼装调用,提高代码的可读性和可复用性。
3.2 方案分析
优点:
-
代码解耦,便于维护;
-
避免使用难以维护的多重条件选择语句;
-
可以运行时动态切换算法;
-
开闭原则。无须对上下文代码进行修改,就可以添加新的代码。
缺点:
-
如果算法逻辑,较为固定,不经常修改,使用策略模式只会增加代码量
-
必须知道所有的具体