阿里巴巴技术质量新人手册5-成为测试多面手
移动应用分类&特点
Web App
Web App 就是用 H5 开发的应用,在移动端浏览网站应用。优点是开发和发布成本低,直接服务端发布,迭代速度快;缺点是性能和体验比较差,加载速度慢。
Native App
传统的原生 App 开发模式,有 Android 和 iOS 两大系统,需要基于各自的平台,用特殊的开发语言开发对应的应用。
Hybrid App
混合模式移动应用,介于 Web App、Native App 这两者之间的 App 开发技术,兼具“Native App 良好交互体验的优势”和“Web App 跨平台开发的优势”。
WEEX
WEEX:Weex 致力于使开发者能基于通用跨平台的 Web 开发语言和开发经验,来构建 Android、iOS 和 Web 应用。简单来说,在集成了 WeexSDK 之后,你可以使用 JavaScript 语言和前端开发经验来开发移动应用。
小程序
小程序:小程序是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开应用。也体现了“用完即走”的理念,用户不用关心是否安装太多应用的问题。应用将无处不在,随时可用,但又无需安装卸载。
All in one:H5、WEEX、Native 和小程序
阿里大部分应用,比如手淘,仿佛一只航母,将 H5、WEEX、Native 和小程序集于一身,各司其职。
移动应用测试流程
- 静态测试包括需求分析、需求测试、需求建模;
- 测试计划包括测试范围、测试策略、执行计划;
- 测试设计包括功能测试以及其他测试类型的方案设计;
- 功能测试需要在迭代中改变测试重点和风险分析。
- 特别强调的是对于集团要求的稳定性压倒一切,务必进行稳定性测试、性能测试、安全测试和适配测试。
移动应用测试方法&工具&平台
移动应用测试方法
测试方法 | 方法介绍 |
---|---|
真机测试 | 下载对应的安装包安装,执行对应的测试。 |
模拟测试 | mock 测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。 |
流量测试 | 目前的网络类型包含 2G\3G\4G\wifi,其中还有不同运营商的区分,我们在 APP 的使用中经常遇到大资源,重复请求,调用响应慢,调用失败等各种情况。在不同的网络类型之下,我们不仅要控制流量使用,还需要加快请求的响应。流量测试可以给我们带来什么?1.可以让我们很清楚的知道用户在某种场景下使用我们的产品需要消耗多少流量。2.流量数据分析可以指导我们去做优化;比如 cgi 的调用和参数设置是否合理,有些资源或者配置是否可以本地化?3.流量的优化可以带来速度的优化;减少 tcp 数据包的个数,或者直接减少请求数都可以带来速度的优化。 |
耗电测试 | App 使用过程中的电量测试,慎重检查 App 的电量使用,以免导致用户手机耗电发热,带来不良体验。 |
中断测试 | 中断测试指运行中被其他任务或意外事件等情况终止退出,相应的测试即为中断测试。中断测试有人为中断,新任务中断,以及意外中断等几种情况,通过中断测试,确认 App 的恢复情况。 |
性能测试 | 性能测试主要关注:CPU、内存、FPS 和响应时间。 |
兼容性测试 | 移动端兼容性测试,主要测试 App 在 Android 不同的设备 OPPO、VIVO、HUAWEI 等设备,在 Android 不同的系统 4.X、5.X、6.X、7.X、8.X 等系统的兼容性,确认是否有功能、性能和稳定性问题;App 在 iOS 不同的设备 iPhone6、iPhone7、iPhoneX 等设备,在 iOS 不同的系统 9.X、10.X、11.X、12.X、13.X 等系统的兼容性,确认是否有功能、性能和稳定性问题。 |
弱网络测试 | 弱网测试主要在宽带、丢包、延时的弱网环境中,验证客户端的展示、以及丢包、延时的处理机制,确认是否有功能、性能和稳定性问题。 |
压力测试 | 通过对 CPU、内存、存储等加压,确认是否有功能、性能和稳定性问题。 |
移动应用测试工具介绍
工具 | 工具介绍 |
---|---|
ADB | ADB 常用指令: 1. 获取序列号:adb get-serialno 2. 查看连接计算机的设备:adb devices 3. 重启机器:adb reboot 4. 重启到 bootloader,即刷机模式:adb reboot bootloader 5. 重启到 recovery,即恢复模式:adb reboot recovery 6. 查看 log:adb logcat 7. 终止 adb 服务进程:adb kill-server 8. 重启 adb 服务进程:adb start-server 9. 获取机器 MAC 地址:adb shell cat /sys/class/net/wlan0/address 10. 获取 CPU 序列号:adb shell cat /proc/cpuinfo 11. 安装 APK:adb install//比如:adb install baidu.apk 其余命令查看文档:https://blog.csdn.net/ekeuy/article/details/43112645 |
Monkey | Monkey 官网 |
自动化框架 | AppiumATX |
打包工具 | 各公司都有自己的打包平台,通常会和持续集成平台结合在一起 |
设备管理平台 | 设备使用,可以建立设备实验室来管理 |
Mock 工具 | 通过 Charles 进行 Mock 测试,或者通过 Mock 平台进行 mock 测试 |
经验集 - 工具平台操作实战
本章通过实战案例,对移动应用测试流程、工具、平台进行更为详尽的介绍。
如何通过 Charles 进行 Mock 测试?
- charles 的作用
Charles 是在 Mac 下常用的网络封包截取工具,在做客户端测试时,我们为了调试与服务器端的网络通讯协议,查看在不同场景下,前端 request 和后端 response 是否正确,常常需要截取网络封包来分析。
- charles 的原理
Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。
基于安全性考虑,我们的项目目前也在逐渐从 HTTP 转向 HTTPS,HTTPS 协议是在 HTTP 协议的基础上,添加了 SSL/TLS 握手以及数据加密传输,那么 charles 如何做到解密 https 请求的呢?首先需要了解 HTTPS 的通信过程:
- https 通信原理
-
第一步:client 向 server 发出加密通信的请求,包括支持的协议版本和加密方法等;
-
第二步:server 回应,发出确认协议版本和所使用的加密方法,以及 server 端证书(带公钥);
-
第三步:client 进行证书的校验,查看证书是否是信任机构颁发的,证书没有问题,客户端就会从证书中取出服务器的公钥,然后根据携带的随机数生成密码,使用公钥加密;
-
第四步:client 把加密的密码发给 server;
-
第五步:server 用自己的私钥对该加密内容进行解密,验证密码的真实性;
-
第六步:服务器握手结束通知,表示服务器的握手阶段已经结束;
-
第七步:客户端解密并计算握手消息的 HASH 值,如果与服务端发来的 HASH 一致,此时握手过程结束;
-
第八步:使用公钥,进行加密通信。
- charles 抓取 https 包
使用 charles 抓 https 包时, https 连接旁边都有一个锁的图标,看不到具体的请求和返回,如下图所示。
img
根据上面所说的 https 的通信原理,SSL 代理需要安装证书,在客户端和服务端相互信任之后,才能进行加解密的通信,才能捕获信息。那么 mac 上的 charles 就相当于服务端,需要有合法的证书,且该证书受客户端信任。下面介绍证书的安装和信任过程。
安装证书过程
第一步:mac 上安装 Charles 证书,添加完成以后还要将其设置为「始终信任」
第二步:手机上下载
img
安装完成以后,iOS 可以在 设置 -> 通用 -> 描述文件与设备管理 里看到 Charles 相关证书,然后信任它。
第三步:开启 SSL 代理,设置域名白名单
只有发到这个域名下的请求,才可以被解析
- charles 的常用功能:抓包
第一步:手机连接代理
第二步:mac 上点击“allow”,允许连接
第三步:查看抓包
- mock 数据
在测试前端展示的各种场景时,如果后端接口的返回值不满足前端场景要求,则可以使用 charles 做 mock 数据,屏蔽掉后端的真正返回值,而使用自己预先准备好的返回值。
- DNS 欺骗
作用相当于配置 hosts 文件,把域名解析到指定的 IP。
点击 Tools -> DNS Spoofing
- 域名重定向
charles 可以重定向域名。点击 Tools -> Map Remote 比如,预发和线上代码是通过域名来区别的,而请求中的 cookie 等参数难以构造时,可以直接使用线上版本访问,避免自己构造请求参数,然后通过连接 charles 代理,把正式环境的 url 转为预发环境的 url