如何打造高质量的 Electron 应用
如果无法正常显示,请先停止浏览器的去广告插件。
1. 如何打造高质量的 Electron 应用
叙南
语雀前端工程师
2. 目录
01 语雀是什么
02 为什么选择 Electron
03 质量与稳定性方案的探索
3. /01
语雀是什么
4. 专业的云端知识库
像书一样的知识库
专业好用的编辑器
安静愉悦的团队协同
5. 语雀桌面端
借助系统能力
提供好用的个人笔记工具
带来更沉浸的创作体验
6. /02
为什么选择 Electron
7. 团队技术背景
Web 技术栈 跨端诉求 有成熟产品
需要贴合团队的 Web 技术 创业团队,希望更少的人力投入 需要有专人维护,并且有成熟产品在使用
尽可能代码复用,尤其是编辑器
8.
9. 语雀桌面端架构
GUI 管理 发布工具 数据能力
应用管理 研发支撑 场景服务
编辑器 目录 业务组件
桌面应用
跨端能力
基础设施
语雀云服务
10. Electron 带来的质量和稳定性挑战
安全性要求更高
代码质量要求更严格 问题排查成本更大 发版频率低 业务链路更⻓ 包安全
代码集成多 和系统交互多 本地数据安全
11. /03
质量和稳定性探索
12. 语雀研发流程
产品设计
系统分析
研发
测试
代码评审
发布
监控
13. 语雀研发流程
产品设计
系统分析
研发
测试
代码评审
发布
工程师是质量稳定性的一号位
监控
14. 语雀研发流程
产品设计
系统分析
研发 测试
代码质量 测试覆盖度
代码评审
发布 监控
触达率 & 稳定性 异常发现
工程师是质量稳定性的一号位
15. 语雀研发流程
产品设计
系统分析
研发 测试
代码质量 测试覆盖度
单元测试 增量覆盖率
代码评审
发布 监控
触达率 & 稳定性 异常发现
动态更新
灰度能力
工程师是质量稳定性的一号位
全链路日志
16. 单元测试
编码成本高 效果不持续 ⻛格各异
写单测太复杂,大家不愿意写 覆盖率逐渐降低,价值逐渐弱化 可维护性差
17. 降低编写单测的成本
18. 降低编写单测的成本
1. 数据模拟,快速初始化业务数据
19. 降低编写单测的成本
1. 数据模拟,快速初始化业务数据
2. 提供组件渲染能力,可以模拟 store 和 props
20. 降低编写单测的成本
1. 数据模拟,快速初始化业务数据
2. 提供组件渲染能力,可以模拟 store 和 props
3. Mock 所有的系统依赖,只关心调用链路
21. 降低编写单测的成本
1. 数据模拟,快速初始化业务数据
2. 提供组件渲染能力,可以模拟 store 和 props
3. Mock 所有的系统依赖,只关系调用链路
4. 足够丰富的断言能力
…
22. 单测逐步标准化
23. 保障单测效果
24. 保障单测效果
1. 覆盖率卡点,提供测试报告
25. 保障单测效果
1. 覆盖率卡点,提供测试报告
26. 保障单测效果
1. 覆盖率卡点,提供测试报告
2. 增量覆盖率方案,逐步提升覆盖率
代码覆盖率
Git di
信息
27. 单元测试还远远不够
1. 单测覆盖率高 != 集成测试没问题
2. 单测覆盖率高 != 测试过程不会遗漏
28. 如何保证集成测试的代码覆盖率
29. 单测覆盖率计算方案
AST 解析
30. 运行时尝试
执行测试用例
测试包生成插桩代码
测试结束生成本次覆盖率
31. 统计增量覆盖率结果
行列对比计算
运行时覆盖率
增量执行覆盖率
Git Diff 信息
32.
33. 代码质量保障
单元测试 集成测试覆盖率
保障编码质量 保障代码测试覆盖率,避免遗漏 case
34. 端稳定性
包安全 数据安全 更新能力 日志监控
Web 安全 本地存储加固 动态更新 全链路日志
分发防篡改 离线数据防丢 灰度机制 异常监控 & 上报
公证 & 签名 存储脱敏 回滚能力 业务大盘
监控报警
语雀云服务
35. 全链路日志的诉求
操作链路⻓ 安全性要求高
涉及到端上的进程通信与本地数据库操作 避免泄漏
36. 桌面端日志采集
日志脱敏
数据库操作
发起请求
批量上报
Render Process
traceId
服务端
网络请求
业务日志
本地存储
Main Process
按类型区分
按日期滚动
37. 端 - 端日志链路
分析
线上感知
桌面端
服务端
大盘
SLS
报警
采集
持久化存储分析
日志
ODPS 离线存储
38. 采集的日志类型
1. 前端异常上报
39. 采集的日志类型
1. 前端异常上报
2. Webview 报错
40. 采集的日志类型
1. 前端异常上报
2. Webview 报错
3. 业务异常
41. 报错日志排查
42. 业务情况分析
43. /04
未来的探索
44. UI 自动化
在测试包注入执行脚本,确保真实环境
可模拟弱网,编辑器保存等特殊情况
⻓期运行,可用于洞察性能问题
45. UI 自动化
在测试包注入执行脚本,确保真实环境
可模拟弱网,编辑器保存等特殊情况
⻓期运行,可用于洞察性能问题
46. 我对质量和稳定性的看法
开发是质量的一号位 渐进增强,重在坚持 方案和实际业务场景结合
通过工程手段尽可能提前规避问题 单测、日志监控都是⻓期投资 没有银弹
47. 谢谢观看