11. 客户端冒烟自动化流程设计开发
背景
本章节给大家分享我在工作中所开发的客户端冒烟自动化测试流程建设相关内容。这项开发工作的背景诞生于车企无穷无尽的回归要求。在车载软件的交付过程中回归的几种场景场景有:
1.车企验收后代码不断的变更;这个测试过程在车企的测试流程当中,不在b站的测试流程中,可能存在影响主app功能的质量风险
2.车机系统升级,一般来说车机系统一直在不停的升级更新;例如验收过程中就可能出现10+次的代码变更;
3.性能优化工作的持续进行,这是车载软件特有的或者说是b站车载测试的一大工作事项;为了满足上车的要求,性能测试在不断持续的进行;
4.testing分支上不断的代码合入;
基于上述的变更,车企对我们的每次交付也要求有主流程的功能回归,而这部分工作如果单纯依靠人力投入,那么将是投入收益比不是很高的回归工作,会有潜在的人力资源的浪费;且由于重复劳动在,难免会导致工作兴趣度的持续下降;最后可能也保证不了回归的质量。
基于此,希望能够设计一套适合车载业务交付的ui自动化测试流程。
方案设计
在ui驱动上选择使用的是uiautomator2;在具体的测试驱动以及校验驱动上 依然选择的是python的pytest框架以及原生assert语句支持。
具体的在以往我们做自动化测试在ui侧所遇到的痛点问题,诸如
1.case稳定性不如ui文档性高,存在概率性失败
2.部分case无法自动化 需要手工验证
3.部分校验点可能无法完全保证校验通过之后就没有问题
所以在ui自动化的定位上,更多的是将其定位为冒烟自动化测试;并且为了保证冒烟结果的完整性,会完整的会写自动化的测试结果,并重新人工二次确认执行失败的case。
同时为了运行结果能直接交付车企,定制化了使用excel进行冒烟用例的维护以及case的维护,并编写了pytest插件,在运行完成时即可直接产生可交付的测试报告。
Excel格式如下:
代码格式如下:
插件代码:
Case的执行方式:
pytest . --smokeTestCase /Users/lujuan/IdeaProjects/autotest-bilibili-car/uitest/test_case/bilibili_things_smoke_unlogin_cases.xlsx
同时在刚开始写代码的时候为了批量生成case的空壳,也编写了对应的py脚本进行生成。
在整个框架的迭代的过程中,也不断丰富框架的功能,比如编写case失败时的执行钩子可以用来做失败时的页面截图,从而便于在ui自动化运行之后查看失败现场 快速定位问题。
收益呈现
后来为了增加ui自动化的执行频次,本地也是做了相应的持续集成,从而实现了每天能够定时的打包然后执行相应的自动化。
那在整体的执行过程 通过ui自动化帮助我们发现了8例问题。
其中包含2例服务端问题,诸如评论子列表不展示(第三方依赖的接口返回的子评论数据变化);fm推荐列表不停地加载分页最后会提示加载异常(算法侧对pagesize过大的请求直接返回-500)
6例客户端问题,主要比如图片升级导致
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
本专栏专注于从零到1的接口自动化测试框架开发过程分享、Android端专项测试技术分享,服务端专项测试技术分享 以及 基于开源框架进行二次开发的经验分享