前 言 Preface
为什么要写这本书
早在2010年年底,我们团队就有出一本关于移动互联网测试书籍的计划(那时候移动互联网测试书籍基本没有),当时计划的内容涉及面比较广,涵盖测试设计、测试用例管理、测试流程、自动化测试、专项测试等领域。不过,由于各种原因被搁浅,确实有点儿可惜,否则移动互联网测试国内的第一本书当时就面世了。这次终于又有机会整理这些年的测试经验并形成一本书了,借此可以跟业界的同行一起交流切磋。
TMQ(Tencent Mobile Quality)腾讯移动品质中心,是腾讯内部最早专注于移动App测试的团队,在10余年的时间内承担了近10款业界领先产品的测试工作,为腾讯向移动方向转型提供了多项质量方案和关键专利。本书的作者都是TMQ平台的核心成员,服务于公司级的手机QQ浏览器、应用宝等项目,经过这几年在移动测试领域的探索与实践,摸索出了一些实实在在的实践经验。TMQ的老板鼓励我们把这些知识和经验编写成册,这样不仅能为公司内部提供好的产品服务,也能为业界同人提供参考,从而将知识更好地扩散出去。我们团队非常珍惜这次写书的机会,故组织了团队内Android自动化测试方面经验丰富的同学一起来编写。大家都是利用自己的业余时间总结各自擅长领域的经验和知识,且初稿经过6轮的内部评审(参加评审的同事超过30位),前后历时半年多才最终完成了本书的写作和修改,希望能给读者提供一本质量较高的专业书籍。
TMQ经过这几年的积累,在专项测试、精准测试体系及自动化测试方面都有比较多的精辟之作。基于此,我们分小组对这些知识进行了整理,形成了相应的知识库,完成了本系列丛书,包括《移动互联网App性能评测调优实践》《精准化测试白皮书》《腾讯Android自动化测试实战》3本书,其他两本也在同期编写出版工作中。希望TMQ平台出品的书籍能给予读者思路上的指导或者是技术上的解惑。
除封面署名外,参加本书编写的作者还有:陈航特、陈六四、邓曦、高苡新、林凯杰、刘洋、鲁万林、万宇、郑若琳、钟书成共12位作者(按姓氏拼音排序),都是来自腾讯移动端QQ浏览器及应用宝团队的骨干员工。
读者对象
本书是一本务实的书籍,案例都是作者们的第一手资料,对于软件质量保证方面的初学者,本书还提供了简短的案例以帮助其理解,循序渐进,掌握测试核心原理;对于有经验的同行,本书提供了经典案例帮助其提升与参考。这里根据行业实际需求给出了相应的用户群体:
对移动业务测试感兴趣的人;
对Android自动化测试感兴趣的人;
即将开展Android自动化测试的团队;
开设相关课程的院校师生。
本书特色
Android自动化测试经过这几年的发展,官方提供的开源自动化框架已经能非常好地支持终端的测试业务,但是如何利用、如何用好这些资源还是比较现实客观的问题,尤其是在小公司中,自动化测试方法的摸索及实施还存在一些困难,需要一定的投入才能得以真正应用。业界一些Android自动化测试方面的书籍很多都偏原理的介绍,而本书不仅深度解析这些框架的原理,还给出了手机QQ浏览器、应用宝项目中的典型案例,像最常见的App速度、要求较高的视频播放性能测试等,供需要实践的读者学习,这也是本书的重要特色之一。本书前半部分主要介绍业界流行的Android自动化框架的基础知识,聚焦工具框架的原理以及基础API使用、框架的二次开发改造(根据具体项目做相应修改),以及实践过程中一些共性问题的分享。如果读者已经掌握这些框架基础,那么对本书内容的理解就会更容易。同时读者可以重点关注本书中介绍的对框架进行二次开发的内容,并结合自己的实际项目考虑如何应用这些知识提升自己的工作效率;基础比较高的读者可跳过这部分直接阅读后半部分。后半部分通过一些实际案例来讲解自动化框架的应用,更强调系统性分析设计能力,包括需求的分析、工具选型、测试方案、代码覆盖率的应用等,覆盖功能测试、性能测试的具体实战案例。这部分对读者的技术能力要求相对更高一些,涉及的知识点的深度和广度要明显高于前半部分,需要进行Android App应用的性能速度测试的读者可以深入阅读,领会书中所提场景的测试设计与思路,进而掌握框架的精髓所在。在经典案例中也给出了很多具体实现思路的介绍与分析,让读者知其然、并知其所以然,同时各位作者也把项目测试工程代码加以整理,打包至TMQ后台,供读者下载,读者如有需要可以直接导入工程进行调试学习,以大大减少学习成本。读者可以根据自己的需求阅读相应章节的内容:如熟悉Java语言,又面临Debug未混淆被测App的情况,建议直接学习Robotium框架,因为Robotium操作简单、相关资料丰富,还能支持ant、maven打包,与jenkins结合较好;因Robotium不支持跨应用,所以对于需要支持跨应用的框架,读者可以阅读UIAutomator和Appium框架,其中Appium是借助WebDriver JSON协议实现的,能支持多种语言编写测试脚本;对于有一定经验的读者,在案例选择时可以结合Robotium和UIAutomator的优点一起使用,此时可直接阅读本书中的浏览器视频性能测试案例。
勘误和支持
本书作者分别在深圳、北京、成都、合肥四地办公,所以整个写作过程中异地沟通比较多,整书从选题至初稿形成,差不多花了5个月的时间,速度超过我们的预期,但由于作者的水平有限、异地交流、编写时间仓促等,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。为此,我们特意在TMQ的官网创建了一个在线支持:http://tmq.qq.com。你可以将书中的错误发布在新书勘误表页面中,我们将尽量在线上为读者提供最满意的解答。书中的全部源文件除可以从华章官方网站(http://www.hzbook.com)下载外,还可以从TMQ网站下载,我们也会将相应的错误及时更正。如果你有更多的宝贵意见,也欢迎发送邮件至邮箱dinahsheng@tencent.com,期待能够得到你们的真挚反馈。
致谢
感谢腾讯科技MIG无发研发部总经理冼文佟、助理总经理陈诚,正是他们鼓励我们多总结、多分享、把知识传播,我们才有了写书的想法。
感谢腾讯科技MIG无发研发部品质中心的总监廖志、李德广、张鼎,给我们提供TMQ这样好的一个人才培养平台,让我们不断成长和提升,同时也非常感谢他们在百忙之中指导我们写作。
感谢腾讯科技的同事们在整个写作过程中,帮我们多次进行内容及技术层面的审核指错,尤其是王琳同学,作为每章内容的第一位读者,给了很多好的建议和思路,其他同事也对本书的内容进行了细致的评审,他们是陆小三、吴景、柳炜、沈东雄等,在此一并谢过。
感谢腾讯科技的浏览器测试团队、应用宝测试团队,在我们编写过程中他们提供的工作支持,是我们得以这么快速完成的基础。
感谢同济大学朱少民教授给我们的专业指导和鼓励,让我们更有信心完成本书的编写。
感谢机械工业出版社华章公司的编辑杨福川、孙海亮,是他们多次给予我们指导及鼓励。
感谢我们的亲人在我们周末加班写作时给予的支持与理解,你们的支持是我们最大的动力!
谨以此书献给我们最亲爱的家人,以及热爱移动业务测试的朋友们!
丁如敏等
Contents 目 录
本书编委
序
前言
第4章 Monkey基本原理及扩展应用
4.1 Monkey基础知识
4.1.1 Monkey概况
4.1.2 Monkey参数
4.1.3 Monkey事件
4.1.4 Monkey环境搭建
4.1.5 Monkey启动
4.2 Monkey测试方法
4.2.1 Monkey测试实例
4.2.2 Monkey日志分析
4.3 Monkey的基本原理
4.3.1 Monkey代码框架
4.3.2 Monkey代码逻辑详解
4.4 Monkey扩展应用示例
4.4.1 Monkey代码重编译执行方法
4.4.2 Monkey截图优化
4.4.3 Monkey Wi-Fi自动重连优化
4.4.4 Monkey扩展应用的优点和缺点
4.5 本章小结
第5章 UIAutomator框架及实践
5.1 UIAutomator简介
5.2 UIAutomator解读
5.2.1 UIAutomator框架解读
5.2.2 UIAutomator原理解读
5.2.3 UIAutomator API解读
5.3 UIAutomator实战
5.3.1 UIAutomator快速上手
5.3.2 UIAutomator设计思想
5.3.3 UIAutomator实践案例
5.4 UIAutomator总结
5.4.1 UIAutomator代码规范及建议
5.4.2 UIAutomator技巧及封装
5.5 本章小结
第6章 Appium框架解析及实践
6.1 Appium框架概况
6.1.1 Appium架构原理
6.1.2 Appium框架的优缺点
6.2 Appium框架工作解析
6.2.1 Appium环境搭建
6.2.2 HelloWorld测试示例
6.2.3 Desired Capabilities的说明
6.2.4 Appium API的解读
6.3 Appium框架在腾讯地图中的实践
6.3.1 Appium接口的封装
6.3.2 测试脚本设计思想
6.3.3 Appium在腾讯地图中的测试实践
6.3.4 Hybrid App的测试方法
6.3.5 Appium脚本常见问题及处理方法
6.4 本章小结
第7章 Android App速度测试
7.1 速度测试场景
7.2 速度测试的六大方法
7.2.1 掐表计时法
7.2.2 打印日志计时法
7.2.3 图像分析计时法
7.2.4 Hook方案计时法
7.2.5 网络包分析法
7.2.6 各种速度测试方法的优缺点
7.3 手机QQ浏览器网页打开速度测试实践案例
7.3.1 确定关键指标
7.3.2 选择测试方法
7.3.3 整体方案
7.3.4 解决关键问题
7.3.5 速度优化效果
7.4 手机QQ浏览器多窗口按钮速度实践案例
7.4.1 为什么要做多窗口按钮速度测试
7.4.2 什么是多窗口按钮速度测试
7.4.3 多窗口按钮速度测试影响因素和测试方法
7.4.4 如何进行多窗口按钮速度测试
7.5 本章小结
第8章 视频性能测试案例
8.1 视频性能测试需求分析
8.2 视频首帧性能测试方案的设计思路
8.2.1 视频播放流程
8.2.2 设计思路
8.3 视频首帧性能测试方案的具体实现
8.3.1 开发工具准备
8.3.2 测试环境准备
8.3.3 工程部署
8.3.4 关键代码和难点分析
8.3.5 编译环境配置
8.3.6 工具安装
8.4 方案优缺点
8.5 本章小结
第9章 应用宝BVT测试案例
9.1 测试工程
9.1.1 测试工程概览
9.2.1 测试工程签名
9.2 测试用例
9.2.1 测试用例生命周期
9.2.2 测试用例编写
9.2.3 测试用例执行
9.2.4 测试用例管理
9.3 测试报告
9.3.1 Spoon介绍
9.3.2 结合Spoon的出错重试与截图
9.3.3 结合Spoon生成汇总报告
9.4 Robotium跨应用
9.4.1 UIAutomator Dump方式跨应用
9.4.2 UIAutomator结合Instrumentation模式
9.5 代码覆盖率
9.5.1 覆盖率定义
9.5.2 覆盖率工具
9.5.3 JaCoCo介绍与实践
9.5.4 BVT测试与覆盖率结合
9.5.5 指导建议
9.6 本章小结
第10章 兼容性测试实践
10.1 兼容性测试概述
10.2 兼容性测试方法
10.2.1 手动测试
10.2.2 自动化测试
10.2.3 云平台测试
10.3 兼容性测试思考
10.4 本章小结