zoukankan      html  css  js  c++  java
  • 移动端测试

    移动数据平台:

    TalkingData 移动观象平台

    App 功能测试

    业务逻辑正确性测试:一句产品文档设计测试用例,加上隐性需求用例

    兼容性测试:

    系统版本:

    android :4.4 5.0 6.0 7.0

    iOS:原生系统:5.0

    屏幕分辨率:

    720 * 1280, 1920*1080 图片(根据分辨率做一些图片)

    网络状态:

    2g,3g,4g,5g wifi

    异常测试:

    热启动应用:应用由后台转换为前台的过程

    考虑:1.仍然展示退到后台时的页面

    2.希望初始化首页

    网络切换和终端回复

    1.网络切换:wifi->2g , 4g->3g 应用正常可用状态

    2.终端恢复:4g->断网->4g,(下载2M 应用,1M断网.恢复网络(断点续传))

    电话和信息中断恢复

    电话:看视频->电话接10分钟->返回视频 app

    信息:玩游戏->通知栏一个消息->不影响游戏体验

    升级安装卸载测试:

    升级: 临近版本升级(1.0>1.1)

    跨版本升级(1.0->1.7)

    保证升级后App可用状态

    安装测试: 首次安装

    卸载后安装

    覆盖安装

    保证app安装后可用,安装文件齐全​

    卸载测试: 正常卸载

    卸载后安装再卸载

    保证卸载后,需要清理的文件全部清空,需要保留的文件存在

    健壮性测试:

    手机资源消耗:cpu,内存,耗电测试

    流量消耗:数据流量,加载图片瞬间小号20M 图片压缩,数据压缩

    崩溃恢复: app闪退,提示终止运行等等,保证自启动可用,手动启动可用

    App 自动化测试

    通过场景和数据的预设,把以认为驱动的测试行为转化为机器执行的一种过程

    并不是所有功能都能进行自动化

    例子: app 设计 500 条测试用例 2个人 5天 用例中有300条是主流业务可以通过脚本实现完成

    优点:

    1. 高效

    2. 不需要人工干预

    3. 回归测试

    安全测试: 通过一些安全测试工具

    2.1 主流的移动端自动化工具

    • Robotium

      • 支持语言 Java

      • 仅 Android 系统

      • 不支持跨应用

    • Macaca

      • 支持语言:Java,Python,Node.js

      • Android,iOS

      • 支持跨应用

    • Appium 开源

      • 支持语言: Java,C#,Python, php, perl, ruby, Node.js

      • Android ,iOS

      • 支持跨应用

    自动化工具的关注点
    1. 是否支持native,webview

    2. 是否支持获取toast

    3. 是否支持跨应用

    2.2 Appium 环境搭建

    2.2.1 Appium 客户端安装

    2.2.1.1 Appium 背景介绍

    1. 官网: www.appium.io ,由SauceLab 公司开发

    2. Appium 是由nodejs 的express框架编写的Http Server,Appium 使用WebDriver 的json wire 协议,来驱动 Apple 系统的UIAutomation,Android 系统的UIAutomator

    2.2.1.2 安装方式

    1.运行 Appium-desktopx........1.2.7.exe

    Host:127.0.0.1
    Port:4723

    2.2.2 Appium-python 库安装

    • 命令行安装

    pip install Appium-Python-Client
    • 安装包安装

      前提:python 已安装 setuptools 包

      安装setuptools :

      1. 解压setuptools-38.2.4.zip

      2. 进入解压后文件夹执行:python setup.py install

      3. 等俺安装完成无错误信息即可

      安装Appium-Python-Client

      1. 解压Appium-Python-Client-0.25.tar.gz

      2. 进入解压后文件夹执行命令:python setup.py install

      3. 等待安装完成,无错误信息即可

    bootstrap.jar-->UIAutomator(官方自动化测试框架)

    android 模拟器:https://www.genymotion.com/download

    • 声明手机驱动对象

    只有声明驱动对象我们才可以让手机完成脚本的操作

    driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)
    # 手机启动参数
    desired_caps: 负责启动服务端时的参数设置,appium server 与手机端建立会话关系时,
    desired_caps常用参数 
    platformName 平台的名称:iOS,Android,or Firefox Os
    platformVersion 设备系统版本号
    deviceName 设备号iOS:instruments -s devices,Android: adb devices (随便写)
    app 安装文件路径:/abs/path/to/my.apk or http://myapp.com/app
    appActivity 启动的Activity
    appPackage 启动的包

    脚本内启动其他app

    driver.start_activity(appPackage,appActivity)

    关闭app

    driver.close_app() #关闭当前操作的app,不会关闭驱动对象

    关闭驱动对象

    driver.quit()

    关闭服务:adb kill-server
    获取设备号:adb devices
    获取系统版本:adb shell getprop ro.build.version.release

    发送文件到手机:adb push 电脑端文件存储路径 手机端要存储路径
    拉取文件从手机:adb pull 手机端存储文件路径 电脑端需要存储路径

    查看手机运行日志: adb logcat | grep 包名

    手机shell 命令行: adb shell

    获取app包名和启动名(手机必须打开对应app):adb shell dumpsys window windows | grep mFocusedApp

    安装apk到手机: adb install ,apk文件存储路径
    卸载app从手机: adb uninstall 包名

    获取app启动时间: adb shell am start -W 包名/启动名
    TotalTime:app 自身启动时间
    WaitTime:系统启动应用时间

    安装apk:

    driver.install_app("apk所在路径")

    卸载app:

    driver.remove_app("nameless.cp")

    判断app是否安装在手机(存在返回True,不存在返回False)

    boolean = driver.is_app_installed("nameless.cp")

    判断通讯录:

    boolean = driver.is_app_installed("com.android.contacts")

    发送文件到手机:

    imprt base64

    with open(".test.txt",'r') as f:
    data = str(base64.b64encode(f.read().encode('utf-8')),'utf-8')
    driver.push_file(path,data)
    参数:
    path: 手机设备上的路径(例如:/sdcard/a.txt)
    data: 文件内数据,要求base64编码
    Python3.x 中字符都为unicode编码,而b64encode函数的参数为byte类型,需要先转码;生成的数据为byte类型,需要将byte转换回去.
    从手机中拉取文件数据
    import base64
    data = driver.pull_file(path) #返回数据为base64编码
    print(str(base64.b64decode(data),'utf-8')) #base64编码
    参数:
    path:手机上的路径

    拉取手机上文件数据并复制生成文件到电脑端

    from appium import webdriver
    from time import sleep
    import base64

    # 启动参数
    desired_caps = {}
    # 设备信息
    desired_caps['platformName'] = 'Android'
    desired_caps['platformVersion'] = '7.0'
    desired_caps['deviceName'] = 'hePhone'

    # 相关操作 app信息
    desired_caps['appPackage'] = 'com.android.launcher3'
    desired_caps['appActivity'] = '.Launcher'

    # 声明手机驱动对象
    driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)

    sleep(1)
    #
    # driver.start_activity("com.android.contacts",".activities.PeopleActivity")
    #
    # sleep(3)
    #
    # #关闭app
    # driver.close_app()

    # with 文件操作的方法
    # 发送电脑端文件到手机上
    # with open("./heheda.txt", 'r') as f:
    #     data = str(base64.b64encode(f.read().encode('utf-8')), 'utf-8')
    #     driver.push_file("/sdcard/heheda.txt", data)

    # #拉取手机上文件数据
    # data= driver.pull_file("/sdcard/heheda.txt")
    # da = str(base64.b64decode(data),"utf-8")
    # print(da)

    #拉取手机上文件数据并复制生成文件到电脑端
    data = driver.pull_file("/sdcard/heheda.txt")
    newf = open('gegeda.txt','w')
    newf.write(str(base64.b64decode(data),'utf-8'))
    newf.close()



    sleep(1)
    driver.quit()

    capabilities 启动参数列表 (网上查)

    API 基础获取屏幕内元素

    获取当前屏幕内元素结构

    driver.page_source

     

     

  • 相关阅读:
    06 Python字符编码与文件处理
    05 基本数据类型+五大数据类型
    04 Python入门学习-流程控制(if else elif while for)
    《算法导论》学习总结 — XX.第22章 图的基本算法
    Google在KDD2013上关于CTR的一篇论文
    二项堆
    B树、B+树、B*树
    mysql sql语句大全
    红黑树
    《算法导论》学习总结 — 13. 第13章 红黑树(2)
  • 原文地址:https://www.cnblogs.com/521world/p/11256568.html
Copyright © 2011-2022 走看看