《移动App测试实战》——导读-阿里云开发者社区

开发者社区> 华章出版社> 正文

《移动App测试实战》——导读

简介: 首先我们会介绍一下典型的互联网产品的研发流程。就我们工作过的几家公司,每家都有一些不同,但是核心的做法其实非常类似。并不是简单地套用敏捷等流程方法,而是经过不断实践的摸索和调整,各家都找到一些适合产品特定以及互联网快速迭代要求的流程做法。

717c5158646515cf0e7ecc0396f029d7cd414dd3

前  言

现在已经是移动互联网的时代,借助手机等移动设备,人们可以完成资讯的获取、社交、游戏,以及日常生活的各种应用,甚至很多工作的开展。有很多新兴的移动互联网公司在崛起,也有很多传统的IT公司在转型,更有大量传统行业的企业在借助移动互联网拓展自己的业务。对IT技术人员而言,这是一个非常好的时代,有大量的工作机会,因为有大量的移动互联网相关系统的研发需求。当然,这也意味着有很多新的技术和方法要去学习。有很多的研发人员快速转型到移动互联网领域,有大量的移动互联网产品被开发出来。在这个过程中,也会面临一个问题,那就是产品质量的参差不齐。在某种程度上,因为移动设备的特点,比如屏幕相比PC较小、电量有限、移动网络状况复杂,以及设备性能的问题,移动互联网产品对质量的要求其实更高。有过相关研发经验的人应该能体会,快速开发一个可用的移动App并不难,但是做一个高质量的App其实是一件非常有挑战的事情。
这本书写作的初衷就是希望给移动互联网产品的研发团队,包括测试团队,一个基于大量一线实践的比较系统性的参考。
我们毕业后工作的几家公司都比较重视产品质量,对测试的投入都比较大,对人员的要求也比较高,使得我们有机会比较系统地实践专业的测试工作。另一方面,近几年我们接触了很多规模较小的软件研发组织,甚至是一些创业公司,他们的团队和业务在快速发展,有非常强烈的意愿去深入了解体系化的测试和质量提升工作是如何开展的,但常常会感到一些迷茫。之前我们写过一些博客文章和培训材料,并参加了一些业界的技术交流,得到了非常多的正面反馈,让我们觉得这件事有价值,对同行们可能也有一些帮助。一两次的技术交流和零散的讨论总觉得不够系统,说不清楚。那不如写一本书吧,正好这些都是我们自己做过的事情,有过一些实践经验,也踩过一些坑。

本书的内容组织

基于以上的出发点,我们希望比较系统地介绍整个移动App的测试,其实广泛一点来讲是质量保证的工作,因为这本书里介绍的不少实践已经超出了单纯的测试的范畴。
首先我们会介绍一下典型的互联网产品的研发流程。就我们工作过的几家公司,每家都有一些不同,但是核心的做法其实非常类似。并不是简单地套用敏捷等流程方法,而是经过不断实践的摸索和调整,各家都找到一些适合产品特定以及互联网快速迭代要求的流程做法。这些也是后面讨论一些质量实践的基础。在第1章的第二部分我们介绍了功能测试中的一些实践,包括测试用例的设计和评审,以及测试进度的管理。
第2章介绍了自动化的方法,包括接口层面的自动化,这里我们重点介绍了一种实践过的轻量级方案,以及App UI层面的自动化,分布介绍了Android和iOS用到的一些技术方案。
第3章介绍了性能测试的方法,包括Web前端的性能,为了介绍这部分的性能问题,也介绍HTTP协议相关的知识,以及常用的测试方法。第二部分是App端的性能,包括Android和iOS内存相关的问题,以及内嵌Web组件的性能分析。最后介绍了后台服务的性能测试,包括了压力场景的建模、测试工具的介绍以及测试数据的收集和分析。
第4章重点介绍了几个针对App的测试方法,包括兼容性测试、流量测试、电量测试、弱网络测试、稳定性测试、安全测试和环境相关测试。这些方法,由于都是针对某个特殊方面或者问题的,所以我们统称为专项测试。
第5章介绍了代码静态扫描、代码覆盖率分析、接口Mock方法和AOP测试方法,这些是测试方法中非常有效的补充,我们称之为辅助测试方法。
第6章介绍了发布过程中的质量保证活动,包括持续集成的实践,以及发布环境的质量包括,包括发布系统的介绍。另外还专门讨论了内测和灰度这两个互联网产品比较常用的方法。
第7章介绍了质量的度量和推动方法。包括我们常用的一些质量分析的维度,QA的角色和所做的工作,并专门讨论跨团队的质量推动。
第8章介绍了一些发布之后的质量管理工作,包括继续进行一些模块之间的交叉测试,发现一些之前没有发现的问题。另外,介绍了互联网产品的一些常见的监控维度,并重点介绍了适合测试团队开展的接口方面的自动化监控的实践做法。最后,讨论了关于外部用户问题反馈的收集和跟进的一些常见的做法。
第9章,最后,作为在软件测试领域工作多年的专业人员,我们也想借这个机会讨论一些我们对于软件测试、测试人员以及团队的看法和思考。因为前面介绍的所有实践,都是这些人做出来的。
关于内容本身,如果只用一个词来形容其特点,我想那就是实战。除了个别知识点补充了一点点介绍性材料,这本书几乎所有的内容都是我们在真实的项目中实践过的,有很多材料都是直接来自真实的项目(当然做了一些敏感信息的过滤)。我们的原则是宁愿不全面,也不想误导。因为工作久了,我们发现有很多的理论似是而非,怎么说都有道理,比如凭空讨论一个企业应该专注一个领域还是应该多元化经营?这样的讨论可能会一直绕圈子,给不了真正有价值的参考;还不如介绍几个真实的企业是做什么的,处于什么样的状况,有什么优势,遇到什么实际问题,是怎么处理的。软件测试,甚至整个软件研发,都属于工程实践的范畴,最终是要有实际的产出,不是凭空的理论,所以我们觉得也应该用实践的态度来对待知识经验的分享。
谁适合阅读本书
说实话,在给这本书起名的时候我们有一些纠结,因为内容是围绕着一个移动App测试的各个方面来讲解的,但是有经验的读者会发现,这里介绍的测试技术和质量流程对于其他互联网产品同样适用。比如一些自动化和性能测试的方法,以及代码静态分析和覆盖率等技术手段,还有质量度量和推动的实践,都不局限于移动互联网方面,我们甚至觉得并不局限在互联网方面。就我们个人的经历而言,我们曾经参与过大型电信系统的开发,企业级服务器软件的测试,以及PC客户端的产品,后来转型到互联网领域,有很多在之前领域里好的实践可以被借鉴和应用,只不过要考虑实际产品和项目的特点来调整,我想反之也是一样。所以请大家不要被互联网或者所谓的互联网思维束缚,不是触了网就立即如何。我们仍然需要理解每一个技术的原理和优缺点,对于每一个质量提升的实践也是一样,然后结合自己所在项目的实践,优化和调整,这样会更加有效果。

目  录

前言
第1章 产品功能测试概述
1.1 互联网产品常见的研发流程
1.2 测试用例设计和评审
1.3 测试进度管理
1.3.1 测试进度报告
1.3.2 测试完成报告
1.3.3 系统化的方法
1.4 本章小结

第2章 功能测试自动化
2.1 轻量接口自动化测试
2.1.1 JMeter关于自动化方面的特性介绍
2.1.2 基于JMeter的轻量接口自动化实践
2.2 App UI层面的自动化
2.2.1 Android的UI自动化技术
2.2.2 iOS的UI自动化技术
2.3 本章小结

第3章 性能测试
3.1 Web前端性能测试
3.1.1 HTTP性能相关的技术要点
3.1.2 Web前端性能测试方法
3.2 App端性能测试
3.2.1 Android内存问题分析
3.2.2 iOS内存问题分析
3.2.3 App内嵌Web组件的性能分析
3.3 后台服务性能测试
3.3.1 压力场景的建模
3.3.2 测试工具
3.3.3 测试数据的收集
3.3.4 分析和报告
3.4 本章小结
第4章 专 项 测 试
4.1 兼容性测试
4.1.1 兼容性测试的准备和手工测试
4.1.2 基于UI自动化脚本的云测试方案
4.2 流量测试
4.2.1 Android App特有的流量测试方法
4.2.2 iOS App特有的流量测试方法
4.2.3 通用的流量测试方法
4.2.4 常见的流量节省方法
4.3 电量测试
4.3.1 Android电量测试方法
4.3.2 iOS电量测试方法
4.4 弱网络测试
4.4.1 借助手机自带的网络状况模拟工具
4.4.2 基于代理的弱网络的模拟
4.5 稳定性测试
4.5.1 基于Monkey的稳定性测试
4.5.2 Android 的ANR
4.5.3 基于模糊测试思路的稳定性测试方法探索
4.6 安全测试
4.6.1 安装包测试
4.6.2 敏感信息测试
4.6.3 软键盘劫持
4.6.4 账户安全
4.6.5 数据通信安全
4.6.6 组件安全测试
4.6.7 服务端接口测试
4.7 环境相关的测试
4.7.1 干扰测试
4.7.2 权限测试
4.7.3 边界情况
4.7.4 Android定位测试
4.8 本章小结
第5章 辅助测试方法
5.1 代码静态扫描
5.1.1 针对Android的静态代码扫描
5.1.2 针对iOS的静态代码扫描和分析
5.2 代码覆盖率分析
5.2.1 Android代码覆盖率技术方案
5.2.2 iOS代码覆盖率技术方案
5.2.3 代码覆盖率的应用实践
5.3 接口Mock方法
5.3.1 常见的接口异常模拟方法
5.3.2 使用Fiddler作为Mock Serve
5.3.3 基于FiddlerCore二次开发的Mock工具
5.4  AOP测试方法
5.4.1  Android AOP测试实践
5.4.2  iOS AOP测试实践
5.5 本章小结
第6章 发布过程中的质量管理
6.1 持续集成
6.1.1 持续集成简介
6.1.2 持续集成实践
6.2 发布环节的质量把控
6.2.1 后台服务的发布
6.2.2 App的发布
6.3 内测
6.3.1 内测的范围
6.3.2 内测的实施
6.4 灰度
6.4.1 Android App的灰度方法
6.4.2 iOS App的灰度方法
6.5 本章小结
第7章 质量的度量和推动
7.1 质量的度量和推动概念
7.1.1 质量数据的度量
7.1.2 质量推动的活动
7.2 QA的角色
7.3 跨团队的质量推动
7.3.1 开发自测
7.3.2 设计走查
7.3.3 产品走查
7.4 本章小结
第8章  发布之后的质量管理
8.1 发布后的交叉测试
8.2 线上监控
8.2.1 监控类型介绍
8.2.2 接口自动化监控
8.3 外部用户问题反馈的收集和跟进
8.4 本章小结
第9章  关于软件测试和测试团队
9.1 测试是否必需
9.2 专职测试人员的价值
9.3 测试团队和发展
9.4 本章小结

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

华章出版社

官方博客
官网链接