豆瓣iOS自动化测试实践和经验
###豆瓣iOS自动化测试实践与经验####持续构建iOS应用的重要性与实践在当前快速迭代的产品开发环境中,持续构建(CI/CD)对于提高软件质量、加快迭代速度至关重要。豆瓣通过实施持续构建流程改进了其iOS应用的测试流程。传统流程中存在的问题包括:UED和PM难以在测试阶段进行无缝介入;编译打包过程未纳入测试管理;测试人员难以建立被测应用与其版本号之间的关联;整体流程执行繁琐。 **解决方案:** 1. **工具化和自动化:**引入Jenkins + hockey等工具来自动化构建、测试及分发流程。 2. **具体步骤:** -下载最新的代码仓库。 -使用Xcode集成工具自动生成ipa文件。 -将生成的ipa文件复制到hockey指定目录,以便于测试人员获取最新构建的应用版本。这样的改进使得开发人员能够更加专注于编码,同时也大大提升了测试效率和质量。 #### iOS自动化测试工具评估为了找到最适合自身需求的自动化测试工具,豆瓣对其所需工具的特点进行了明确: - **框架结构:**需要符合xUnit标准框架。 - **UI识别:**提供扩展库以支持UI元素识别。 - **启动方式:**支持命令行启动。 - **测试结果:**输出XML或HTML格式的结果,或提供自定义结果输出的方法。根据这些要求,豆瓣对比了多种自动化测试工具: - **商业工具**(如DeviceAnywhere、QTP等)虽然功能强大,但成本较高。 - **单元测试工具**(如OCUnit、GTM、GHUnit)适用于底层逻辑测试,但对于UI层面的测试能力较弱。 - **验收测试工具**(如UISpec、Frank、KIF)更适合界面交互测试,但开源工具通常在稳定性、技术支持方面有所不足。 **最终选择UI Automation:** - **框架结构:**采用OCUnit作为基础框架。 - **UI识别:**提供了原生API和多种UI识别方式。 - **命令行启动:**支持命令行启动测试。 - **测试结果集成CI:**可以输出用于持续集成的测试报告。尽管UI Automation存在一些局限性,但通过自定义扩展(如使用Tuneup.js或Jasmine与UI Automation结合),豆瓣成功地满足了自身的需求。 #### Ynm3k的介绍与功能为了解决UI Automation的一些不足,豆瓣开发了一套内部使用的自动化测试框架——Ynm3k。 **Ynm3k的特点:** - **框架结构:**引入YUItest,实现了更清晰的测试用例组织方式。 - **UI识别:**设计了Finder组件,提供类似Selenium的UI识别接口,简化了UI元素的定位过程。 - **命令行启动:**提供了更友好的shell脚本,方便执行测试。 - **测试结果输出:**通过YUItest结合特定方法,生成XML格式的测试报告。 - **Monkey测试:**模仿Android Monkey的思路,开发了iOSMonkey,用于随机健壮性测试。 **Ynm3k的使用:** - **下载:**访问GitHub页面下载Ynm3k源码。 - **环境初始化:**执行`setup.sh`脚本完成环境配置。通过Ynm3k,豆瓣实现了高效、灵活的iOS自动化测试流程,显著提高了测试质量和效率。豆瓣在iOS自动化测试方面的实践不仅展示了如何通过持续集成优化开发流程,而且还分享了在工具选择和自研框架上的宝贵经验。这对于其他同样面临自动化测试挑战的企业具有重要的参考价值。
3.56MB
文件大小:
评论区