天天看点

APP测试理论知识

  1. 什么是移动测试
    1. 移动端测试是指移动应用进行的测试,对移动应用的业务、兼容性、健壮性等一系列需求验证
  2. 移动端测试分类
    1. APP功能测试
    2. APP自动化测试(本阶段学习)
    3. APP安全测试(数据、adb相关命令)
    4. 扩展
      1. 接口测试
      2. 性能测试
        1. 客户端(应用本身性能测试  monkey)
        2. 服务器(压力测试、响应时间)
  3. APP功能测试
    1. 业务逻辑正确性测试
      1. 产品文档
    2. 兼容性测试
      1. 系统版本
        1. 安卓:定制版和官方版本
          1. 定制版:华为、oppo、vivo、小米、三星
          2. 官方版本:5.1、7.1.1、6.0、8.0、27
        2. Ios:官方版
          1. 12.1、11.4.1、12.0.1
      2. 分辨率
        1. 1920*1080 1280*720、2280*1080
      3. 网络情况
        1. Wifi
        2. 4G
      4. 以上数据来源:   
        1. 腾讯移动分析:https://mta.qq.com/mta/data/device/os
        2. 移动观象台:mi.talkingdata.com
        3. 百度
    3. 异常测试
      1. 热启动
        1. 将应用置于后台一段时间,再将应用从后台切换到前台,关注:切换到前台后,是否保留置于后台界面
        2. 冷启动
          1. 应用在后台未运行,重新启动应用
      2. 网络切换&中断恢复
        1. 网络切换:wifi<=>4G<=>3G
        2. 中断恢复:网络下载中断,是否继续可恢复下载
      3. 电话&信息中断恢复
        1. 说明 :电话信息对移动应用的影响,
        2. 关注:在使用应用中,有电话或信息打断正在使用的应用,打断之后,应用保留来电之前的界面
    4. 升级&安装卸载测试
      1. 升级:
        1. 相邻版本:如5.0.1升级到5.0.1
        2. 夸级版本:如果5.0.1升级到7.0
          1. 关注:版本差距大的,功能模块相关比较大,是否能正常安装
      2. 安装:
        1. 首次安装:
          1. 关注:配置数据是否正常处理、依赖插件是否能自动安装
        2. 卸载后安装(非首次安装):
          1. 关注:如果安装之前是保留之前版本配置数据,是否能自动检测到并且正常安装
      3. 卸载:
        1. 首次卸载
          1. 如果选择保留配置数据,配置数据是否保留
        2. 非首次卸载
          1. 如果不保留配置数据,配置数据或应用文件是否删除干净
    5. 健壮性测试
      1. 手机资源消耗
        1. 资源指的是CPU、内存、电量
        2. 资源测试工具:360、腾讯GT
      2. 流量消耗
        1. 检测应用以流量的消耗
      3. 崩溃恢复等测试
        1. 应用在崩溃后,能重新启动
        2. 崩溃:借用monkey工具
  4. APP自动化测试(本阶段学习)
    1. 概念
      1. 让程序代替人为对移动应用功能验证的过程
      2. 并不是所有的应用功能都适合进行自动化
  5. APP安全测试
    1. 通过安全测试技术,保证APP尽可能的不存在安全漏洞
    2. 中小型公司:云测平台(testin云测,阿里云)
    3. 中型公司:云测平台、安全测试人员
    4. 大型公司:安全测试团队
    5. 如果自己考虑安全方面的知识可参考的网址:http://netsecurity.51cto.com/art/201712/561665.htm
  6. 环境搭建
    1. Java
    2. AndroidSDK
    3. 模拟器
    4. 扩展:path环境:
      1. 输入命令时,首先搜索是否为内部命令(cd\dir\ipconfig)
      2. 搜索是否为本地当前目录下可执行文件
      3. 搜索path内的路径(以分号做分隔)
  7. Java环境
    1. 安装JDK,默认安装即可
    2. 将安装文件添加到paht变量中(参考讲义)
    3. 验证:cmd输入java-version显示信息
  8. androidSDK(安卓开发工具包)
    1. 为什么要搭建SDK
    2. 移动端定位工具uiautomatorviewe
    3. 如何搭建
      1. ..\android-SDK\tools
      2. ..\android-SDK\platform-tools
      3. 将以上两个路径添加到path环境变量中即可
    4. 如何验证
      1. 打开cmd输入adb version显示响应的版本号
  9. 模拟器
    1. 为什么安装模拟器
      1. 移动应用就是测试以移动手机内APP,APP必须安装到手机内
      2. 移动自动化核心目标是测试移动应用的功能,本质上模拟器或真机是没有区别的
    2. 如何安装
      1. 执行genymotion-2.11.0-vbox.exe(是一集合程序,包含genymotion和virtualbox)->不需要更改配置,直接下一步默认安装
      2. 安装完genymotion继续等待,会提示安装virtualbox,继续安装,期间会提示安装oracle插件
    3. 说明:
      1. geymotion:加载virtualbox设置虚拟机
      2. virtualbox:导入离线安卓镜像文件
  10. ADB命令(安卓 调式 工具)
    1. 为什么要学习ADB命令
      1. 功能测试操作APP应用时,记录的日志都需要通过 ADB来获取
      2. 自动化执行时,有些必传的参数,需要ADB命令来获取
    2. Adb全名andorid debug bridge,是一个debug工具
      1. 为何称之为bridge      
      2. 因为adb是一个标准的c\s结构的工具,是要连接开发电脑和调试手机的
    3. ADB通讯原理
      1. Client:客户端发送adb命令à开发电脑中
      2. Server:监听客户端发送adb命令及手机内守护进程返回的结果à开发电脑中
      3. Daemon:守护进程,在手机或模拟器中,主要用来接收server发送的命令à手机中
    4. 三者之间的通信原理图
    5. Client<->server<->daemon
  11. Adb常用命令
    1. Adb –help:帮助命令(--help可以忽略)
    2. Adb start -server:启动服务程序
    3. Adb kill -server:关闭服务程序
    4. 提示:启动服务程序、关闭服务程序正常情况下,不需要人为操作,只要发送adb命令会自动开启
    5. 注:当adb服务出现死机状态,需要人为杀掉,就要用到adb kill-server
    6. Adb devices:获取设备号
      1. 目的
        1. 查看模拟器或真机是否和电脑连接
        2. 跑自动化脚本时,需要获取设备号(设备号为必传参数)
    7. 查看获取系统版本
      1. Adb shell getprop ro.build.version.release
      2. 提示:自动化必传参数(技巧:可以随便编写版本号,运行一次,系统报错,在错误信息中可以查看到正确的版本号)
    8. Adb push:将文件发送到手机
      1. 格式:adb push 电脑路径\文件名称.后缀名 /sdcard
      2. 如:adb push E:\lili \a.txt /sdcard
    9. Adb pull:从手机中获取文件到本地电脑
      1. 格式:adb pull sdcard /手机文件.后缀名c:\新建文件夹
        1. 如:adb pull sdcard/a.txt E:\lili
      2. 提示:输入adb命令时,注意是否在本地电脑目录下,而不是在手机路径下
    10. Adb logcat :查看手机实时运行日志
      1. 使用
        1. Adb logcat > 日志保存路径
          1. 如:Adb logcat > E:\lili.a.txt
          2. 查看:一般搜索err
    11. 手机shell命令行
      1. Adb shell
      2. adb shell dumpsys window windows | findstr usedApp:查看获取APP包名、启动名
      3. 包名:app应用唯一标识符(一般采用反向域名)
        1. 如:www.baidu.com 反向域名:com.baidu.www
      4. 启动名:页面的标识符(不是唯一的)
        1. 命令:adb shell dumpsys  window windows | findstr usedApp
        2. 查找:com.android.settings/.SubSettings
          1. .com.android.settings:包名
          2. ..SubSettings:启动名
    12. 安装apk文件
      1. 命令:adb install apk路径
      2. 如:adb install E:\lili\ak.apk
    13. 卸载apk文件
      1. 命令:adb uninstall 包名
      2. 如:adb uninstall com.vcooline.ailke
      3. 提示:安装APK时,文件名称应该避免中文
    14. Apk启动时间
      1. 命令:adb shell am start -w 包名/启动名
      2. 关注 :TotalTime时间(总时间)
  12. 常用移动应用自动化测试工具
    1. Robotium
      1. 支持语言:JAVA
      2. 支持:android系统
      3. 不支持跨应用
    2. Macaca
      1. 支持语言:java、python、node.js
      2. 支持android系统和ios系统
      3. 支持跨应用
      4. 不选理由:参考资料少、使用量少
    3. Appium(本阶段学习)
      1. 支持语言:java、c#、python、php、perl、ruby、node.js
      2. 支持android系统和ios系统
      3. 支持跨应用
    4. 扩展:
      1. 自动化工具选择参考条件
        1. 是否支持跨应用(A应用内调用B应用)
        2. 是否支持native与webview
          1. Native:使用安卓或IOS系统原生控件,完成APP
          2. Webview:使用html完成的控件
        3. 是否支持toast消息获取
          1. Toast:一种黑底白字提示框(有时间限制)
  13. Appium背景介绍
    1. 开源、跨平台的测试框架,可以用来测试原生及混合的移动端应用
    2. 由nodejs的express框架写的http server
    3. 安卓uiautomator框架
  14. Appium环境搭建
    1. 安装Appium服务器 Appium-desktop-1.2.7.exe
      1. 或者安装:npm install -m appium命令版服务端,需要科学上网
    2. 安装Appium python API库
      1. 命令:pip3 install Appium-Python-Client ==0.26
      2. 验证:pip3 show Appium-python-Client
        1. 进入python 进行导包 from Appium import webdriver不报错就可以