3x3 移动app快速迭代与发布
TRANSCRIPT
![Page 1: 3x3 移动app快速迭代与发布](https://reader030.vdocuments.site/reader030/viewer/2022021415/58ce807e1a28ab210a8b565f/html5/thumbnails/1.jpg)
3x3: 移动App快速迭代与发布
Keqiu Hu
![Page 2: 3x3 移动app快速迭代与发布](https://reader030.vdocuments.site/reader030/viewer/2022021415/58ce807e1a28ab210a8b565f/html5/thumbnails/2.jpg)
自我介绍
LinkedIn 移动基础设施组
移动(iOS, Android)基础库,工具
持续交付流水线 - 3x3
![Page 3: 3x3 移动app快速迭代与发布](https://reader030.vdocuments.site/reader030/viewer/2022021415/58ce807e1a28ab210a8b565f/html5/thumbnails/3.jpg)
规模 - iOS150+ 开发人员
20+ App,70+ 库
2000 commits/月 -> 发布
60000 个diff代码提交
4,000,000 行代码 (55% Swift)
![Page 4: 3x3 移动app快速迭代与发布](https://reader030.vdocuments.site/reader030/viewer/2022021415/58ce807e1a28ab210a8b565f/html5/thumbnails/4.jpg)
3x3 是啥
一天至少部署/交付 3 次
开发人员commit代码到内部发布最多3小时
![Page 5: 3x3 移动app快速迭代与发布](https://reader030.vdocuments.site/reader030/viewer/2022021415/58ce807e1a28ab210a8b565f/html5/thumbnails/5.jpg)
3x3 之前
移动App: 一个月发布一次
移动服务器端:一周部署一次
![Page 6: 3x3 移动app快速迭代与发布](https://reader030.vdocuments.site/reader030/viewer/2022021415/58ce807e1a28ab210a8b565f/html5/thumbnails/6.jpg)
3x3 之前
移动App: (> 一个月)发布一次
移动服务器端:(> 一周)部署一次
![Page 7: 3x3 移动app快速迭代与发布](https://reader030.vdocuments.site/reader030/viewer/2022021415/58ce807e1a28ab210a8b565f/html5/thumbnails/7.jpg)
为什么要3x3快速迭代 A/B测试
确保交付流水线的可靠性
![Page 8: 3x3 移动app快速迭代与发布](https://reader030.vdocuments.site/reader030/viewer/2022021415/58ce807e1a28ab210a8b565f/html5/thumbnails/8.jpg)
如何达成3x3 手动测试
测试部署全自动化
![Page 9: 3x3 移动app快速迭代与发布](https://reader030.vdocuments.site/reader030/viewer/2022021415/58ce807e1a28ab210a8b565f/html5/thumbnails/9.jpg)
挑战 1 - 可靠性
单元测试
页面布局测试
情景(UI)测试
![Page 10: 3x3 移动app快速迭代与发布](https://reader030.vdocuments.site/reader030/viewer/2022021415/58ce807e1a28ab210a8b565f/html5/thumbnails/10.jpg)
页面布局测试
![Page 11: 3x3 移动app快速迭代与发布](https://reader030.vdocuments.site/reader030/viewer/2022021415/58ce807e1a28ab210a8b565f/html5/thumbnails/11.jpg)
情景(UI)测试
![Page 12: 3x3 移动app快速迭代与发布](https://reader030.vdocuments.site/reader030/viewer/2022021415/58ce807e1a28ab210a8b565f/html5/thumbnails/12.jpg)
挑战 1 - 可靠性
企业Beta 版本测试
![Page 13: 3x3 移动app快速迭代与发布](https://reader030.vdocuments.site/reader030/viewer/2022021415/58ce807e1a28ab210a8b565f/html5/thumbnails/13.jpg)
挑战 1 - 可靠性
服务端控制的A/B测试
![Page 14: 3x3 移动app快速迭代与发布](https://reader030.vdocuments.site/reader030/viewer/2022021415/58ce807e1a28ab210a8b565f/html5/thumbnails/14.jpg)
挑战2 - 速度
编译器
![Page 15: 3x3 移动app快速迭代与发布](https://reader030.vdocuments.site/reader030/viewer/2022021415/58ce807e1a28ab210a8b565f/html5/thumbnails/15.jpg)
挑战2 - 速度
优化测试框架
![Page 16: 3x3 移动app快速迭代与发布](https://reader030.vdocuments.site/reader030/viewer/2022021415/58ce807e1a28ab210a8b565f/html5/thumbnails/16.jpg)
挑战2 - 速度
分布式测试
![Page 17: 3x3 移动app快速迭代与发布](https://reader030.vdocuments.site/reader030/viewer/2022021415/58ce807e1a28ab210a8b565f/html5/thumbnails/17.jpg)
挑战3 - 稳定性
测试框架与基础设施的稳定性
编译发布工具与机器的稳定性
![Page 18: 3x3 移动app快速迭代与发布](https://reader030.vdocuments.site/reader030/viewer/2022021415/58ce807e1a28ab210a8b565f/html5/thumbnails/18.jpg)
挑战3 - 稳定性
测试框架与基础设施的稳定性
![Page 19: 3x3 移动app快速迭代与发布](https://reader030.vdocuments.site/reader030/viewer/2022021415/58ce807e1a28ab210a8b565f/html5/thumbnails/19.jpg)
挑战3 - 稳定性
测试框架与基础设施的稳定性
- 更稳定的API
![Page 20: 3x3 移动app快速迭代与发布](https://reader030.vdocuments.site/reader030/viewer/2022021415/58ce807e1a28ab210a8b565f/html5/thumbnails/20.jpg)
挑战3 - 稳定性
测试框架与基础设施的稳定性
- 稳定的测试套装
99.9%1000 = ?
99% 95% 90% 80% 50%
![Page 21: 3x3 移动app快速迭代与发布](https://reader030.vdocuments.site/reader030/viewer/2022021415/58ce807e1a28ab210a8b565f/html5/thumbnails/21.jpg)
挑战3 - 稳定性
测试框架与基础设施的稳定性
- 测试质量 = 产品质量
![Page 22: 3x3 移动app快速迭代与发布](https://reader030.vdocuments.site/reader030/viewer/2022021415/58ce807e1a28ab210a8b565f/html5/thumbnails/22.jpg)
挑战3 - 稳定性
测试框架与基础设施的稳定性
- 测试质量 = 产品质量
Flaky Tests Are Worse Than No Tests
![Page 23: 3x3 移动app快速迭代与发布](https://reader030.vdocuments.site/reader030/viewer/2022021415/58ce807e1a28ab210a8b565f/html5/thumbnails/23.jpg)
挑战3 - 稳定性
测试框架与基础设施的稳定性
- 代码守卫
![Page 24: 3x3 移动app快速迭代与发布](https://reader030.vdocuments.site/reader030/viewer/2022021415/58ce807e1a28ab210a8b565f/html5/thumbnails/24.jpg)
挑战3 - 稳定性
工具及机器的稳定性
![Page 25: 3x3 移动app快速迭代与发布](https://reader030.vdocuments.site/reader030/viewer/2022021415/58ce807e1a28ab210a8b565f/html5/thumbnails/25.jpg)
挑战3 - 稳定性
工具及机器的稳定性
- 机器池守卫
![Page 26: 3x3 移动app快速迭代与发布](https://reader030.vdocuments.site/reader030/viewer/2022021415/58ce807e1a28ab210a8b565f/html5/thumbnails/26.jpg)
挑战3 - 稳定性
工具及机器的稳定性
- 分布式测试的不稳定性 95% -> 95%10 = 60%
![Page 27: 3x3 移动app快速迭代与发布](https://reader030.vdocuments.site/reader030/viewer/2022021415/58ce807e1a28ab210a8b565f/html5/thumbnails/27.jpg)
挑战3 - 稳定性
工具及机器的稳定性
- 分布式测试的不稳定性 95% -> 95%10 = 60%
![Page 28: 3x3 移动app快速迭代与发布](https://reader030.vdocuments.site/reader030/viewer/2022021415/58ce807e1a28ab210a8b565f/html5/thumbnails/28.jpg)
总结
产品的快速迭代
全自动化测试环境
高稳定性的编译测试部署系统
![Page 29: 3x3 移动app快速迭代与发布](https://reader030.vdocuments.site/reader030/viewer/2022021415/58ce807e1a28ab210a8b565f/html5/thumbnails/29.jpg)
Reference工具及机器的稳定性
- https://engineering.linkedin.com/blog/2016/04/3x3--ios-build-speed-and-stability
- https://engineering.linkedin.com/blog/2015/12/test-stability---how-we-make-ui-tests-stable
- https://engineering.linkedin.com/blog/2016/02/3x3--speeding-up-mobile-releases
- https://engineering.linkedin.com/blog/2015/12/managing-ios-continuous-integration-at-enterprise-scale
- http://screenrant.com/guardians-of-the-galaxy-video-interview-vin-diesel/