《移动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 本章小结

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
2月前
|
Java 测试技术 Maven
JAVA单元测试概念与实战
单元测试是软件开发中的一个测试方法,用于验证软件代码中最小的、独立的单元是否按照预期工作。在Java中,这通常指的是单个的方法或者一个类的个别功能。单元测试的目的是隔离代码的每个部分,并确保各个部分是正确的。
51 4
|
8天前
|
XML 数据格式 Python
App测试中,强制等待和隐式等待谁更强?
本文介绍了在自动化脚本中添加等待以确保与应用程序同步的重要性。由于应用响应时间的不确定性,适当等待能防止脚本在操作未完成前继续执行,提高测试稳定性。等待包括强制等待(如`time.sleep()`)、隐式等待(全局设置查找元素的等待时间)和显式等待(根据预期条件等待)。示例代码展示了如何在Python的Appium测试中应用这些等待策略,以优化脚本的可靠性和与应用的同步。
21 0
|
30天前
|
XML 测试技术 数据格式
解决 App 自动化测试的常见痛点
在App自动化测试中,常见挑战包括启动加载慢和弹框干扰。为处理弹框,可以创建一个黑名单列表,遍历并点击消除。使用`handleAlertByPageSource()`方法结合`getPageSource()`判断弹框元素在当前页面的存在性,提高效率。对于首页加载延迟,使用显示等待特定元素如`user_profile_container`,但需注意弹框可能阻止元素定位。因此,结合PageSource判断首页元素和弹框,确保加载完成判断的准确性。通过这样的优化,能更有效地处理自动化测试中的中断问题。
19 1
|
1月前
|
监控 安全 Shell
深入探究App压力测试的关键要点:从零开始学习Monkey
Monkey是Google的自动化测试工具,用于模拟用户随机事件以测试应用的稳定性和压力。它可以在模拟器或设备上运行,通过随机点击发现潜在问题。
26 1
|
1月前
|
测试技术 Android开发
快速上手App自动化测试利器,Toast原理解析及操作实例
`Toast`是Android中的轻量级通知,短暂显示在屏幕任意位置,1-2秒后自动消失,不获取焦点且不可点击。Appium通过uiautomator2在控件树中处理Toast。在测试中,可设置隐式等待,利用XPath或Accessibility ID定位Toast元素进行检测和验证。示例代码展示了如何初始化driver,点击触发Toast,以及如何定位并读取Toast文本。
24 3
|
1月前
|
开发框架 移动开发 JavaScript
SpringCloud微服务实战——搭建企业级开发框架(四十六):【移动开发】整合uni-app搭建移动端快速开发框架-环境搭建
正如优秀的软件设计一样,uni-app把一些移动端常用的功能做成了独立的服务或者插件,我们在使用的时候只需要选择使用即可。但是在使用这些服务或者插件时一定要区分其提供的各种服务和插件的使用场景,例如其提供的【uni-starter快速开发项目模版】几乎集成了移动端所需的所有基础功能,使用非常方便,但是其许可协议只允许对接其uniCloud的JS开发服务端,不允许对接自己的php、java等其他后台系统。
145 2
|
1月前
|
运维 数据库
Powershell实战:测试网络请求两个命令介绍
【2月更文挑战第11篇】 Test-Connection 命令将 Internet 控制消息协议 (ICMP) 回显请求数据包或 ping 发送给一台或多台远程计算机并返回回显响应回复。 我们可以使用该命令确定是否可通过 IP 网络ping通特定的计算机。
|
2月前
|
算法 Java Android开发
安卓逆向 -- 实战某峰窝APP(静态分析)
安卓逆向 -- 实战某峰窝APP(静态分析)
26 0
|
2月前
|
网络协议 算法 Android开发
安卓逆向 -- 实战某峰窝APP(动态分析)
安卓逆向 -- 实战某峰窝APP(动态分析)
32 4
|
2月前
|
测试技术 API Python
Python自动化测试:unittest与pytest的实战技巧
Python自动化测试:unittest与pytest的实战技巧

热门文章

最新文章