1. 移动端测试

移动端测试是什么?

移动应用服务,就是针对手机这种移动连接到互联网的业务,或者无线网卡业务而开发的应用程序服务。

1.1. 移动app特性

设备分类

  • 智能手机
  • 平板电脑
  • 智能手表

网络类型

  • 移动蜂窝网络-蜂窝组网结构的公众移动通信网络
  • WI-FI

系统平台

  • Android
  • IOS

1.2. 移动app的背景

传统PC互联网的瓶颈

  • 缺乏随时随地的优势,无法满足人们对移动交际,办公多媒体等强烈需求

智能移动端崛起

  • 易传播
  • 易携带
  • 智能移动端同样性能强悍

无线技术接入

  • 无线通信技术的发展,2g 、3g、4g、5g
  • Wi-Fi热点的普及
  • 家中常备路由器

1.3. 移动APP特性

互动性

移动设备的触摸屏提供更好的操作体验,APP提供更加丰富多彩的表现形式

精准性

APP是用户主动下载,传播性极高,容易分享到相同兴趣的目标群体,精准投放

创意性

PC电脑创造性太低,移动手机或平板的特性(相机、重力感应、VR、AR)等技术创意性更丰富

用户粘性

移动时代,手机不离身,上网时间更加碎片化

1.4. 移动APP测试与web测试区别

web测试

  • 网页屏幕大,输出信息更多
  • 测试地点固定,信号固定
  • 测试工具,键盘,鼠标
  • 鼠标点击测试,测试精准度高
  • PC端屏幕较大,网页布局较多

移动APP

  • 屏幕较小,需要输出重点信息
  • 测试网络环境变化较大
  • 弱网环境测试2g 、3g、4g、5g、wifi情况、app是否会卡死
  • 设备电量不足
  • 测试工具,键盘,触屏,电容笔,语音测试
  • 触屏测试尺度范围较大,点击误差大,出错率较高,是否支持双指放大,缩放
  • 移动端屏幕较窄,单列布局

1.5. APP测试方法

  • 功能测试
  • 专项测试
  • 稳定性测试
  • 兼容性测试
  • UI测试

专项测试-安装测试

  • 不同渠道获取软件程序,如各种应用商店
  • 软件是否兼容不同操作系统
  • 软件是否正常运行,是否出现闪退等问题
  • 安装进度是否可以取消,已安装的程序文件是否会回滚删除
  • 软件安装过程出现意外,如何恢复,如断电,意外重启
  • 软件兼容提示,如磁盘空间不足,权限不足
  • 安装过程是否需要联网
  • 用户无手册是否能够进行安装

专项测试-卸载测试

  • 直接删除软件文件夹是否有提示
  • 直接卸载软件是否有提示信息
  • 卸载软件是否完整,干净
  • 卸载过程如突然中断,如断电,死机,软件如何处理
  • 是否支持取消卸载
  • 是否提供了UI,引导用户取消卸载

专项测试-交互测试

  • 多个app是否可以同时运行
  • app前后端切换是否影响功能
  • app运行时打电话、发短信
  • app运行时,网络环境切换,2g、3g、4g、WIFI
  • http://mi.talkingdata.com/ 移动app数据网站

专项测试-升级测试

  • 客户端性版本是否提示更新
  • 升级包下载中断时候支持断点续传
  • 升级渠道验证
  • 跨版本升级可用性
  • 强制升级情况下,用户是否依旧能使用旧版本
  • 旧版本的兼容性

专项测试-性能测试

  • 边界测试:在边界压力(电量不足、存储空间不足、网络状态差)验证APP是否可正确响应
  • 压力测试:长时间操作下,系统软件资源占用是否正常
  • 响应能力:各类操作是否满足用户可以接收的响应时间要求
  • 消耗测试:正常运行软件时内存、CPU占用量、后台运行时占用量

1.6. UI测试

  • app屏幕布局是否合理,界面是否友好,是否符合用户习惯
  • 图形控件位置是否一致,是否自适应浏览器窗口,标签风格是否同意,图片分辨率,色彩是否和谐
  • 文字表达是否准确,是否有错字,编码是否统一,是否有敏感词汇

1.7. 异常测试

  • 热启动应用:应用由后台转化为前台,例如一边聊微信一边打王者荣耀,IOS和安卓都有应用后台功能
    • 应用在后台是否显示当前页面
    • 应用在后台转化为首页
  • 网络中断和恢复
    • 例如你坐地铁、信号很差,4g变为2g
    • 例如你在家wifi转化为4g,应用是否会崩溃,还是正常兼容
    • 例如IOS超过150M的应用,只能用wifi下载,4G无法下载
    • 是否支持断点续传
  • 电话和信息中断恢复
    • 电话:正在4g看电视,被电话打断,回到app是否正常继续播放或是回到app首页
    • 信息:正在玩游戏,弹出个微博消息,微信消息,是否影响游戏运转

1.8. 更新测试

app更新卸载

  • 升级,app功能性升级,是否正常下载
    • 临近版本升级 1.1 -> 1.2
    • 跨版本升级 1.1 -> 1.9,保证升级后app可用
  • 安装
    • 纯净环境安装(首次安装)
    • 卸载后留存了资料,再次安装
    • 覆盖安装,保整安装文件完整性
  • 卸载
    • 正常卸载
    • 多次卸载
    • 保证需要清理的文件清空,需要保留的数据文档存在

1.9. app健康测试

  • 健壮性测试
    • 手机资源消耗(内存、cpu使用率负载情况)
    • 流量消耗,移动数据流量的消耗高低,例如你开发的app图片、视频非常消耗流量,可能面临卸载。需要图片、数据等进行压缩传输
    • 崩溃恢复测试:app闪退、app终止运行后,是否自动重启,手动重启后是否可用

1.10. app自动化测试

  • 通过场景和数据的预设,把以人为驱动的测试行为转化为机器执行的一种过程。
    • app设计了500条测试用例,需要2个人一周时间完成,而用脚本可以节省70%的时间
    • 自动化效率更高
    • 失误率更低
  • 不是所有的功能都适合自动化

1.11. 安全测试

  • 通过安全监测工具,进行嗅探
  • 防止黑客
  • 常见攻击手段
  • 常见漏洞攻击

1.12. 移动自动化工具

Robotium

  • 支持java
  • 仅支持android
  • 不支持跨应用

Macaca

  • 支持java、python、node.js
  • 支持android和ios
  • 支持跨应用

Appium

  • 支持java、c#、python、php、perl、ruby、Node.js
  • 支持android和ios
  • 支持跨应用

选择何种工具?

  • 是否支持navtive、webview
  • 是否支持toast
  • 是否支持跨应用

1.13. Appium环境搭建

  • appium是开源的移动端自动化测试框架;
  • appium可以测试原生的、混合的、以及移动端的web项目;
  • appium可以测试ios,android应用(当然了,还有firefox os);
  • appium是跨平台的,可以用在osx,windows以及linux桌面系统上;

Appium是node.js的express框架写的Http Server

Appium使用webdriver的json wire协议来驱动Apple系统的UIAutomation库、Android系统的UIAutomator框架。

脚本->appium server -> UIautomator -> app上执行,创建bootstrap.jar

脚本<- appium server <-selendroid

1.13.1. Appium安装

下载完毕后,安装完成桌面会生成一个紫色的appium 图标,双击打开

默认显示监控的 host 和 port ,这和 Appium-Server中是一致的。点击 “Start Server V 1.7.1” 按钮启动服务。

现在启动 启动你的移动设备(真机或模拟器),编写 Appium 自动化测试脚本,可以通过Appium-desktop 来运行测试了。

1.13.2. 安装python操作appium的模块

安装方式,需要提前装好python3以及pip3软件包管理工具

pip3 install -i https://pypi.douban.com/simple appium-python-client

1.13.3. 准备appium客户端

在appium server 与手机端建立会话关系时,手机端需要告诉服务端设备相关的一些参数,根据这些参数服务端可以做出相应的处理。

from appium import webdriver
import time
#在appium server 与手机端建立会话关系时,手机端需要告诉服务端设备相关的一些参数,
# 根据这些参数服务端可以做出相应的处理。
desired_caps = {}
# 设备系统
desired_caps['platformName'] = 'Android'
# 设备系统版本号
desired_caps['platformVersion'] = '6.0.1'
# 设备名称,必须有! 
desired_caps['deviceName'] = 'Android Emulator'
#desired_caps['app'] = r'D:\test\test.apk' #被测试的APP在电脑的路径

# 应用的包名,在参数中如果添加了应用的安装路径,就可以不用写包名和启动的activity参数
desired_caps['appPackage'] = 'com.android.calculator2'
desired_caps['appActivity'] = '.Calculator'
driver = webdriver.Remote(' http://127.0.0.1:4723/wd/hub', desired_caps)
time.sleep(5)
driver.quit()

参数解释

desired_caps是一个字典,用于在appium server 与手机端建立会话关系时,手机端需要告诉服务端设备相关的一些参数,根据这些参数服务端可以做出相应的处理。

通用参数:

安卓参数:

iOS专用参数:

results matching ""

    No results matching ""