一、积极推进数字化转型的方正证券
在面临着数字化、信息化大潮的冲击时,作为我国金融行业的重要组成部分,券商应以开放包容的姿态,快速转变自身的经营理念,把高新技术尽快融入到服务投资者的产品中去。而方正证券金融科技工程院在券商数字化转型中,一直是勇于尝试,敢于探索,充分利用金融科技持续赋能业务创新的典范。近年来,方正证券金融科技工程院借鉴互联网、券商同行及开源社区的经验,结合自身研发特点和质量保障具体要求,在接口、性能、UI自动化、App兼容性测试、安全代码扫描以及多环境持续部署流水线等方面积极探索,形成了一套灵活高效的解决方案和工具平台,旗下的小方App更是借此机会与同行朋友们分享一些方正证券在实际工作中数字化技术应用的独特心得。
二、运用最新科技提高日常工作效率
关于券商数字化转型的理论有很多,但真正把科技与日常工作相结合,发挥新技术的积极作用,为券商自身降本增效,才是把理论落到了实处。而方正证券的数字化实践,已经应用于实际工作流程并且相当成熟了。以下是一些实例的分享:
1、接口自动化方面,我们基于开源的PyTest扩展并封装了方正接口自动化测试框架,运用到16个项目组的接口测试中。该框架通过协议适配支持HTTP,Dubbo和恒生T2接口;数据与测试代码解耦实现数据驱动的测试,只需编写json或excel数据文件即可快速添加修改接口正反例;通过灵活的前置处理、数据关联及描述性验证点等,支持复杂定制逻辑和多接口联动测试;围绕Jenkins融入持续交付流程,实现接口用例集的每日自动回归;邮件通知开发测试相关人员,测试报告一目了然,快速定位失败日志。
框架集中维护和优化,测试人员关注各自业务服务的待测接口用例,效率大幅提升。以小方为例,我们在3个月内(非全职)就整理完成了存量200多个接口的近千条用例编写;新增组件的接口先通过YAPI测试验证,正式发版后1-2周内扩充到稳定接口用例集,纳入自动回归,持续测试。
2、性能压测方面,我们研制开发了以JMeter为核心、容器化调度的动态压力测试云服务平台。各业务条线测试人员从繁冗易错的测试准备中解放出来,秒级发起所需规模的压测负载,平台实时提供性能指标和各项监控数据,辅助生成性能测试报告、定位性能瓶颈和验证系统优化效果。
该平台在研究所、零售柜台、产品中心、小方手机App、财务办公等10多个项目中成功推广运用,一年时间里实施了各类性能场景450个,成功执行1800多次,累计执行时长近400万VuM(虚拟用户*分钟),显著提升了性能测试执行和问题诊断的效率,从而保障上线业务的高效可靠运行。该系统荣获深交所金融科技中心2020研究课题评选先进奖,现已成为方正证券统一的性能压测服务平台。
3、App兼容性测试方面,我们基于降本增效的综合考量,选择与云测试领域的引领者--Testin(云测)紧密合作。通过定制维护兼容性测试脚本,覆盖Android 600款机型和iOS 100款真机,在每个正式发版前进行安装、启动、登录及主要功能场景的遍历测试。针对测试过程中的应用闪退、崩溃、功能异常以及UI不适配等问题进行收集,提供包含机型硬件配置信息、问题日志、截图、问题描述、错误原因以及CPU/内存消耗等性能指标在内的详细测试数据报告,快速帮助我司解决机型兼容性的问题,减少因兼容性问题导致用户流失。
4、UI自动化方面,以Testin(云测)兼容性测试服务为基础,我们继续引进了Testin(云测)新一代基于AI技术的UI自动化解决方案,建设小方功能自动化用例集,提升功能回归测试的执行效率。
Testin(云测)基于AI的移动端自动化测试平台具有如下特点:
* 脚本开发基于自然语言,可读性和易用性强,学习成本低;
* 设备资源共享,动态分配,设备使用效率高;
* 基于OCR和图像识别AI引擎,一套脚本实现安卓/iOS跨平台执行,大大减少了脚本编写和维护的成本;
在自动化落地实践过程中,小方自动化团队按以下图示步骤完成自动化转化和使用:
前期,依靠Testin(云测)成熟的方案,我们快速完成了私有化部署、团队组建、集中培训等工作。在自动化脚本开发团队组建过程中,采用技术+业务相结合的模式,相互交流沟通,融合促进,提升了后续脚本开发的效率。基于自然语言开发的平台脚本,简单易上手。历经8小时左右的培训,团队所有成员就都掌握了脚本开发技巧。
中期是脚本开发阶段,我们选取每次封板回归测试都会覆盖的交易回归用例集作为自动化转化的首要目标。在脚本开发调试中,我们实现了数据自动初始化工具,按小时自动调用,保持自动化所需数据的稳定性,为自动化成功率提供坚实的基础;利用平台OpenAPI接口,构建调度任务,分批按自定义频次完成自由调度、批量替换应用版本、及邮件通知等功能。
在此阶段,我们每日监控执行成功率的变化,对失败脚本进行分析,解决包括脚本健壮、平台bug、新的数据需求等各种问题。
后期为稳定回归和自动化提效阶段。当自动化脚本经过数十次跑测达到稳定状态,即加入稳定用例集,进入自动化常态化回归,保障被测应用功能的稳定性。
同时,稳定自动化用例集也运用到发版前的回归测试中,有效地替代了手工测试,提升了整体测试效率。
截止到目前,小方App的UI自动化已积累开发1600多条用例脚本,构建实时任务9400条,覆盖交易、理财、会员、订单等多个模块,稳定用例集常态化运行,主要成效如下:
* 质量保障 - 通过UI自动化常态化执行,定期回归,确保了小方App核心功能的稳定性;
* 质量提升 - UI自动化执行从功能、性能、UI多个层面发现产品缺陷,并验证问题的修复,大大促进了小方App的质量提升;
* 提效 - UI自动化在回归测试中试点推广,释放了回归测试环节35%的手工工作量(约8.75人天)。后续随着更多模块用例的推出,例行执行将进一步被云测自动化覆盖,测试人员则有更多精力转向场景优化、复杂数据验证和系统稳定性提升等工作。
小方App用实践证明,基于云测AI技术的UI自动化,相比传统手工执行更加简单快速可靠,捕捉人工容易忽视的缺陷。我们将不断加大投入,在更多业务线推广运用。
三、“进击的小方”是投资者信赖的平台
5G时代,投资者都渴望通过智能手机的方寸空间,就能掌控证券交易的全部过程。这就对券商App的功能、交互、性能等方面提出了更高的要求。作为触达投资者最多的桥梁,也作为方正证券的移动端门面,小方App一定要拥有全面贴心的功能及卓越飞速的性能。为此,方正证券金融科技工程院的小伙伴们付出了多年的心血,把小方App打造成数一数二的券商全能型服务软件。
1、功能全面的券商App
从诞生伊始,小方App就秉承着创新服务的原则,根据时代的需求及投资者的需要,阶段性推出了策略、交易工具、行情工具、选股工具、风险防控、智能搜索、资产配置等各方面和投资者息息相关的功能。以下介绍三种对投资者极具价值的功能。
(1)、为客户精准画像 - 服销机器人
小方App服销机器人(小方必应)合理运用大数据技术,精准描绘客户立体画像,全方位了解客户,深度洞察客户诉求及投资偏好,有的放矢地主动向客户推送大盘动态、自选资讯、适合客户的理财产品及投资方式。打造更具质量,更具温度的陪伴服务。小方站在未来财富管理的视角,打造具有券商特色的线上服务,以客户为中心,逐渐帮助客户建立对财富管理的认知。在交易行情上,在扩展品种的同时重点为客户理财做搭桥牵线,如在指数页面可以很便利的去购买相关的开放式基金。在投资理财上,通过7*24小时基金下单、基金定投等功能,为客户提供更丰富、更适合自己的产品。
(2)、精准的智能投顾 -“股市三笔钱“:骑牛均线、网格大师、指数大师:
主打 “股市三笔钱”概念,即骑牛均线、网格大师、指数大师等智能投顾产品,不同于常见的基于具体标的展开的资产配置策略,它们分别覆盖熊市长线建仓、震荡市行情起伏、牛市右侧趋势三种常见行情,在不同时期可以给各个策略赋予不同权重,构建配置组合,以应对千变万化的市场行情。
(3)、智能风险防控产品 - 避险宝:
避险宝产品监控范围涵盖所有A股,每半小时更新风险监控数据,通过深度学习以及数理统计对每只股票进行风险评估,给出三个风险等级危险、警惕、注意,帮助客户规避个股风险,及时躲避爆雷股票。主要分为以下四个维度监控:
a. 信息披露风险,主要为公告风险,包括股权质押平仓、监管处罚、减持预披露等;
b. 股东行为风险包括质押风险、限售解禁、股东减持、高管减持等;
c. 财务异常风险包括业绩风险、偿债风险、资金风险、资产结构不佳等;
d. 分析师评估风险则追踪近一周机构评级意见,从而判断个股风险。
而其它如智能交易工具产品 - 条件单;智能日内择时产品 - 分时宝;智能行情工具产品 - Level2 Plus;智能选股工具;智能搜索工具;智能资产配置工具等,小方App也应有尽有,全面的功能充分满足了数字时代投资者的多样性需求。
2、加大研发力度提升小方性能
小方App问世之初,也因移动设备配置较低等原因,出现稳定性较差及卡顿等状况。这些问题得到了方正证券软件研发人员的足够重视,通过启动移动端极速项目,使小方App的性能得到了全面的优化。
我们研究了小方App遇到的实际问题,从快--操作流畅,加载快,响应快、稳--运行稳定,不崩溃,不卡顿、省--省电量,省流量、小--安装包体积小 这四个方向突破,力求打造一款高性能的应用。
第一步:发现问题缜密分析
首先我们使用了APM、Systrace、Traceview、Android Profiler、Leakcanary、Hierarchy Viewer等一系列的移动端性能分析工具,针对内存、卡顿、CPU、网络四个方面展开分析。
(1)内存占用:内存在任何软件、操作系统上都是稀缺的资源,尤其是在移动端操作系统物理内存有限的情况下显得更加珍贵,移动设备会为每个APP分配一定的内存,用于APP的正常运行。分配内存的大小在不同厂商、不同机型不尽相同,但是都有上限,所以内存资源不可以无限制使用的。内存使用如果超出了这个上限,那么就会发生OOM(内存溢出),进而导致应用的崩溃。
通常造成OOM有两个原因:内存泄漏和常驻内存过多(如高分辨率的图片等)。我们以Android Profiler和Leakcanary这两个工具为例,简单看一下如何对APP运行时期的内存进行分析。
上图左侧Android Profiler截图展示了APP当前运行时间点的内存占用情况,包括APP运行时占有的内存总量以及各种类型的内存占用情况。使用Android Profiler再配合图中右侧Leakcanary工具,根据页面的生命周期加上内存快照,可以轻松找出内存泄漏,并且分析出调用栈,帮助开发人员定位内存泄漏的具体位置。
(2)卡顿:当前的移动设备上,主流机型的屏幕刷新率一般为60FPS,这就引出了屏幕刷新的Vsync机制,系统每隔16ms(1000ms/60帧)发出Vsync信号,触发对UI进行渲染,从而要求CPU和GPU在16ms之内计算出完成的一帧,否则就会出现卡顿的情况,甚至出现肉眼明显可见的掉帧情况。
(3)CPU使用分析:CPU过度消耗的分析一般需要借助工具,找出耗时的方法,我们还是以Android Profiler工具为例进行分析,参考下图:
黄色部分为系统方法,绿色部分为自研方法,我们更多关注绿色部分。从图中可以清晰地发现每个方法的耗时、调用次数和调用关系,从而定位存在性能问题的方法,这些往往就是造成卡顿、加载慢的原因。
(4)网络:随着移动网络的不断进化,客户端网络逐渐升级到Wifi、5G,流量也不断变多,价格也越来越低。虽然移动端的网络条件变得越来越好,但是不代表网络的性能体验可以不重视,很多网络指标,如果技术人员不加以关注,APP在弱网时的体验、流量消耗方面就会表现不佳,从而造成不同程度的客户流失。我们应该对流量消耗、大体积API、大体积图片等网络指标予以关注。
网络问题的分析与解决,往往采用监控加抓包的方式,使用监控平台监控整体网络情况,还可以监控每个网络请求的具体情况。
第二步:寻根究底理清思路
了解了产生性能问题的原因,掌握了出现问题时的一些通用解决办法,我们根据小方APP中的实际问题,逐渐理清了解决思路。
(1)布局:页面布局尽量简单、层级要少,这样会减少页面在初始化时布局加载的时长,并且减少过多渲染,增加流畅度;合理使用merge、viewStub、include等标签,按需加载布局,不需要的布局初始化的时候不予加载
(2)合理使用异步:减少主线程的压力,避免主线程进行复杂的逻辑计算、耗时操作,减少卡顿的情况
(3)懒加载:布局使用stub标签,在需要展示的时候才进行加载;组件在需要展示的时候再进行初始化,不占用主流程加载时间
(4)网络:
l 请求合并:多个请求合并为一个进行请求,尤其是一个页面如果请求过多,更应该考虑合并;
l 减小请求数据大小:对数据进行合理的压缩等
l 连接复用:开启keep-alive节省建连时间
l 缓存:合理利用缓存规则,对重复的请求或某一个时间段的请求使用缓存
(5)代码:删除冗余代码与资源;注意代码保护,降低崩溃率;养成良好的习惯,申请的内存资源及时释放,减少内存泄漏
第三部分: 落足实处成果喜人
经过上面的分析和研究,小方App决定优先从启动速度、包大小、核心页面加载速度三个方面进行了优化。
(1)App启动:
l 对三方库、二方库等内容的初始化进行多线程处理
l 对启动流程中无需等待的网络请求进行多线程处理
l 对耗时操作放在非UI线程
l sp文件过大,读取耗时,单独创建sp文件,单独保存初始化需要读取的sp字段
(2)APP包大小:
l 无用代码、资源删除:不再需要的业务代码与资源做删除处理,没有引用关系的资源文件进行删除处理
l 图片压缩:移动端由于屏幕大小原因,分辨率低于pc显示器,不需要很高分辨率的图片,对图片进行压缩可以节省大量的空间
l 无用、重复功能三方库删除
(3)核心页面的加载:
l 布局文件中不需要在进入页面就展示的view使用viewStub标签,按需加载,减少页面加载时长
l 删除页面不再使用的代码与布局,去掉代码中重复的逻辑
l 第一屏不需要展示的组件进行懒加载,在tab切换的时候进行加载
l 对初始化进行多线程处理,不需要实时获取结果的移至非UI线程进行初始化
在我们研发人员持续不断的辛勤努力下,经过十多个版本的迭代和优化,小方App的性能得到了充分的优化与改善,大大提升了投资者使用时的产品体验。
四、一粒水珠也能折射数字化的光彩
多年来的探寻求索,让方正证券深刻认识到,只有把数字化的思维方式融入到管理与经营中去,把科技转化为一线生产力,为投资者带来精准的投资策略及完美的使用体验,为券商本身的降本增效服务,才是券商数字化转型的最终目的。在当前数字化、信息化的海洋里,我们的经验也许只是一粒水珠,但也折射出迷人的光芒。方正证券金融科技工程院小伙伴们雄厚的研发实力及精益求精的敬业精神,以及引入Testin云测等优质服务商保障软件测试工作的举措,都为券商行业的数字化转型沉淀下宝贵的经验。
数字化转型的道路上,不可能一帆风顺,但只要我们心怀梦想,披荆斩棘,勇往直前,相信作为传统行业之一的券商,一定能够把契合的科技转化为生产能力,快速适应金融环境的变化,用心打造投资者信赖的券商服务平台,为祖国、为投资者做出应有的贡献。