1、美团酒旅客户端自动化测试实践目录 CONTENTS01.背景02.技术方案03.系统建设04.落地与规划01背景自动化测试伴随公司成长的复杂度提升特性特性特性特性应用框架特性特性特性特性特性特性特性特性业务发展需求迭代人员迭代体验优化特性特性兼容通过个人能力保证质量越来越难整体优化风险变高自动化测试日常开发的困扰需求开发整体需求不可追溯实现方式不统一影响面难以评估测试case描述过于抽象技术改进这是啥!看不懂!改不动!自动化测试自动化测试的目标需求大道重构保证日常迭代开发质量技术改进做到不错不漏提升老化车辆的行驶速度为车辆检修提供说明书高效完整客观02技术方案自动化测试测试全景图case维护c
2、ase管理case编写case关联case执行case选取编译部署执行结果分析bug提报bug跟踪重运行聚合分析自动化测试case选取基础sdk单元测试覆盖sdk全部功能正确可用业务主流程集成测试保证主流程可用测试粒度宏观介观人力投入微观用户伤害肉体损伤财产损失精神伤害难以完全覆盖 容忍基线测试方案的容忍基线自动化测试case选取单元测试功能测试兼容、稳定性测试性能测试回归测试接口与API测试业务逻辑测试场景测试埋点测试截屏测试Monkey测试性能测试全链路回归测试case编写测试框架基础设施case管理持续集成测试环境自动化测试功能测试用例用户操作网络请求本地上下文测试用例:进入页面执行操作
3、观察结果UI呈现网络请求UI呈现自动化测试初版方案ViewViewModelModelViewdatabindingPresenterModeluser eventsupdates viewupdates modelstate-change events通过触发函数(信号)模拟行为模拟iOSandroidUI呈现验证内存状态(信号)方法调用(参数)网络请求验证方法调用(参数)与实现方案绑定、需要重构抗重构能力差 验证能力有欠缺 代码量大可读性差自动化测试迭代方案ViewViewModelModelViewdatabindingPresenterModeluser eventsupdates v
4、iewupdates modelstate-change events通过触发函数(信号)模拟行为模拟iOSandroidUI呈现验证截图对比网络请求验证方法调用(参数)内存状态(信号)方法调用(参数)自动化测试第三版方案行为模拟UI呈现验证截图对比网络请求本地存储验证方法调用(参数)网络请求对比函数(信号)触发手势触发本地存储对比自动化测试Android实践技术选型测试工具运行环境Mock方式主要优势主要问题RoboletricJVM通过Shadow类及PowerMock可以Mock所有涉及的类 执行速度高效需要构造大量Shadow类 执行逻辑与真实环境存在差异 只能通过属性检查UI 手势受
5、限Espresso真机通过Mockito手势比较完备、有较强拓展性 具有一定的执行中Mock能力 同时支持页面级和流程级测试无法Mock静态方法和final类 在生命周期执行中缺乏Mock能力 UiAutomator Robotium Appium 真机通过代码内置Debug能力及外部Mock Server完全支持黑盒测试 支持跨应用测试(Robotium除外)可Mock范围有限 测试需要走完整流程,执行效率低自动化测试iOS实践技术选型测试工具Mock方式主要优势主要问题KIFOHHTTPStubs OCMock简单,适合快速开发 版本覆盖广 像用户一样操作查找与操作绑定,不灵活 查找方式单
6、一,代码改造成本高 EarlGreyOHHTTPStubs OCMock同步 可见性检查 像用户一样操作 查找与操作分离,更加灵活工具链相对缺失 Appium 通过代码内置Debug能力及外部Mock Server完全支持黑盒测试 支持跨应用测试 工具链完善可Mock范围有限 测试需要走完整流程,执行效率低 Python脚本,学习成本自动化测试Mock上下文系统对象方法APK对象方法APKfinal类、静态方法系统静态方法Mockito静态插桩静态方法及final类暂不处理生命周期内返回值mock启动待测App替换App持有对象测试执行启动待测页面替换页面持有对象执行测试制作Mock对象设置插