C/S架构之App测试常见方法

备注:将会随着经验,后期不断进行更新维护。


App测试系统

Android:华为、oppo、小米、三星等
iOS:iphone


App测试方式

真机连接测试
电脑手机模拟器:夜神,游戏多开等
云测试平台,一般用于app兼容性测试:WeTest、baiduMTC等
monkey,稳定性测试


APP的Crash 与 ANR

1.Crash即崩溃,应用程序在使用过程中,非正常退出
    (1)空指针 功能未实现
    (2)APP和系统版本不兼容 系统版本太旧
    (3)APP版本太旧 获取不到APP资源库
    (4)弱网 网络传输数据 导致丢包 引发闪退
2.ANR (Application Not Responding)即闪退,应用程序无响应,卡死
    (1)网络、后台接口无响应、前端请求错误
    (2)在主线程(UI线程)里面做了太多的阻塞耗时操作,         例如文件读写, 数据库读写, 网络查询等等.
    (3)CPU满负荷、内存原因


APP测试与web测试的区别

1.功能测试方面
在流程和功能测试上是没有区别的。系统测试和一些细节可能会不一样
2.系统架构方面
web测试只要更新了服务器端,客户端就会同步会更新。而且客户端是可以保证每一个用户的客户端完全一致的。但是app端是不能够保证完全一致的,除非用户更新客户端。如果是app下修改了服务端意味着客户端用户所使用的核心版本都需要进行回归测试一遍。
3.性能方面
web页面可能只会关注响应时间,而app则还需要关心流量、电量、CPU这些
4.兼容方面
web是基于浏览器的,所以更倾向于浏览器和电脑硬件,电脑系统的方向的兼容,不过一般还是以浏览器的为主。而浏览器的兼容则是一般是选择不同的浏览器内核进行测试
(IE chrome Firefox);app的测试则必须依赖phone或者是pad,不仅要看分率,屏幕尺寸,还要看设备系统。系统总的来说也就分为Android和iOS,不过国的Android的定制系统太多,也是比较容易出现问题的(可以考虑云测试平台)
5.app专项测试
(1)异常场景测试:中断,来电,短信,关机,重启等
(2)弱网络测试:弱网测试是app测试中必须执行的一项测试。包含弱网和网络切换测试。需要测试弱网所造成的用户体验,重点要考虑回退和刷新是否会造成二次提交。需要测试丢包,延时的处理机制。避免用户的流失。
(3)安装、更新、卸载:除了常规的安装、更新、卸载还要考虑到异常场景。包括安装
时的中断、弱网、安装后删除安装文件,更新的强制更新与非强制更新、增量包
更新、断点续传、弱网,卸载后删除app相关的文件等
(4)界面操作:现在app产品的用户都是使用的触摸屏手机,所以测试的时候还要注意手势,横竖屏切换,多点触控,事件触发区域等测试


APP测试方法

1.APP的GUI测试
    (1)横竖屏 设计规范 字体 输入法 界面美观
    (2)pad分辨率
    (3)导航测试:按钮、对话框、列表和窗口等;或在不同的连接页面之前需要导航
    (4)图形测试
    (5)内容信息测试
2.APP功能测试
    (1)安装、卸载、升级测试:
            1.1游戏 增量包 打补丁
            1.2安装 卸载 再安装(oracle注册表)
    (2)升级、更新测试:
        选择升级
        强制升级
            2.1之前app有致命bug需要紧急升级
            2.2灰度用户,VIP定制
         升级安装意外情况的测试(如死机、断电、重启)
         升级界面的UI测试,对比dome图或设计图
         不同操作系统间的升级测试
         测试升级后的功能是否与需求说明一致
     (3)卸载测试
     (4)UI测试
             导航测试
             图形测试
             内容测试
     (5)功能测试
             软件运行
             前后台切换
             免登录
             数据更新
             离线游览
             APP更新
             定位、照相机
             时间测试
             PUSH测试
                   安装APP弹窗如:是否允许获取地理位置、是否允许推送
                    APP消息推送,如:微博通知
3.性能测试
     (1)性能指标:CPU、内存、流量、电量、流畅度等、开发日志的查看、Crash日志查看、网络数据包的抓取、真机代码耗时统计等。
     (2)极限测试
          运行APP手机突然断电
          允许APP断掉网络
     (3)响应能力测试
          APP安装、卸载的响应时间
          APP各类功能性操作影响时间
     (4)压力测试
          APP反复安装卸载,查看系统是否正常
          其他功能模块反复进行操作,查看系统资源
     (5)monkey
          什么是Monkey,常用命令,使用步骤,操作演示
     (6)Benchmark测试
          与同一类型竞争产品相互对比测试等
     (7)性能评估
          评估典型用户应用场景下,系统资源的使用情况
4.APP接口测试
     (1)app接口分类:协议类(http/https等)、webservice类(soap请求)、webservice接口会比http慢一些,因为要进行xml解析;webservice 可以被http所替代,现在大多数开放平台都是http实现的
     (2)http和https区别
     (3)fiddler手机抓包
     (4)可以采用itest框架进行测试、最方便采用thhpclient进行测试
5.APP自动化测试
     (5)Appium工作原理,appium-Android环境搭建,常用工具,控件定位:.APP测试常用五大定位
find by “class” (andorid上可以是class)
find by “id”(android上是控件的resource id)
accessibility id((android上是控件的content_desc))
driver.find_element_by_name(“9”) text、真机自动化实战
6.APP安全测试
     (1)客户端、数据传输、服务端
通讯安全性、软件权限、安装与卸载安全性、数据安全性、人机接口安全性
7.APP兼容性测试
     (1)不同操作系统和对应系统的不同版本
     (2)可以用云测试平台
     (3)与各种设备是否兼容,若有夸系统支持则是否在各系统下,各种行为是否一致
     (4)与本地及主流App是否兼容
     (5)基于开发环境和生产环境的不同,检验在各种网络连接下(wifi、GSM、GPRS、EDGE、WCDMA、CDMA1x、CDMA2000、HSPDA等)
APP数据和应用是否正确
8.APP网络测试
(1)断网测试、弱网测试、4G网络测试
(2)功能是否正常、对应的提示是否合理、数据传递是否正常(丢包)
(3)网络切换 好—差 差—好
(4)网络恢复 无–有(功能实现是否是及时)
9.交叉事件测试
     (1)多个App同时允许是否影响正常功能
     (2)App允许前/后台切换是否影响正常功能
     (3)App运行时拨打/接听电话
     (4)App运行时发送/接收信息
     (5)App运行时发送/接收邮件
     (6)App运行时浏览网络
     (7)App运行时切换网络(2G、3G、WIFI)
     (8)App运行时使用蓝牙传送/接收数据
     (9)App运行时使用相机、计算机等手机自带设备
10.硬件环境测试
     (1)手势操作测试
     (2)网络环境
     (3)服务器,对分支、异常流有返回值。此块测试可以采用itest框架进行测试。最方便的是采用httpclient进行接口测试
     (4)客户端数据库测试
              一般的增删查改测试,或者查看数据库跟前端数据是否存储正常
            一般查看数据库是否有做限制如类型,必填项等等,
            当表不存在能否自动创建,当数据库表被删除能否在自建,数据是否还能自动从服务端获取
            在业务需要从服务端取回数据保存到客户端的时候,客户端还能否将数据保存到本地
            当业务需要从客户端取数据时,检查客户端数据存在时,App数据能否自动从客户端数据取出,还是仍然会从服务端获取
            检查客户端数据不存在时,App数据能否自动从服务端保存到客户端
            当业务对数据进行修改、删除后,客户端和服务能否会有相应的更新
11.用户体验性测试
     (1)是否有空数据界面设计,引导用户去执行操作
     (2)是否滥用用户引导
     (3)是否有不可点击的,如果按钮呈现不可用,一定要灰掉或者删除
     (4)菜单层级是否太深
     (5)交互流程分支是否太多
     (6)相关选项是否离的很远
     (7)一次是否载入太多的数据
     (8)界面中按钮可点击范围是否适中
     (9)标签页是否跟内容没有从属关系,当切换标签的时候,内容跟着切换
     (10)操作应该有主次从属关系
     (11)是否定义Back的逻辑。设计软硬件交互时,Back键应具体定义
     (12)是否有横屏模式的设计,应用一般需要支持横屏模式,既自适应设计