• 移动端测试的学习


    一.移动端测试知识概览

    1.移动端测试是什么?

    移动端测试是指对移动应用进行的测试,即实体的特性满足需求的程度.

    2.移动端测试分类

            app功能测试

                    1.业务逻辑正确性测试

                            产品文档

                    2.兼容性测试

                              1.系统版本
                              2.分辨率
                              3.网络情况

                    3.异常测试

                             1.热启动应用
                              2.网络切换&中断恢复
                              3.电话&信息中断恢复

                    4.升级&安装卸载测试

                    5.健壮性测试

                              1.手机资源消耗
                              2.流量消耗
                              3.崩溃恢复等测试

    app自动化测试

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

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

    app安全测试

            通过安全测试技术,保证app尽可能的不存在安全漏洞.

    市场招聘如何?

            互联网移动场景下业务的爆发,导致移动端开发和测试人员需求量增大,市场很缺移动端的人才。

    二.第一阶段移动端测试环境搭建

            移动端自动化测试的基础环境配置

    1.1 安装Java环境
      Android应用为例讲解,需要安装java环境
    1.2 SDK环境
      Android依赖SDK的环境
    1.3 模拟器环境
      考虑大家连接真机不方便,所以采用模拟器替代

    三.主流的移动端自动化工具

    Robotium
        1.支持语言:Java

        2.仅支持Android系统

        3.不支持跨应用
    Macaca
        1.支持语言:Java,Python,Node.js

        2.支持Android和iOS系统

        3.支持跨应用
    Appium
        1.支持语言:Java,C#,Python,php,perl,ruby,Node.js

        2.支持Android和iOS系统

        3.支持跨应用
    自动化工具选择的关注点
        1.是否支持native,webview

        2.是否支持获取toast

        3.是否支持跨应用

    四.Appium环境搭建

            Appium客户端安装

      Appium背景介绍                  

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

      2.Appium是由nodejs的express框架写的Http Server,Appium使用WebDriver的json wire协议,
        来驱动Apple系统的UIAutomation库、Android系统的UIAutomator框架
    2.2.1.2 Appium桌面客户端安装方式

      1. 运行appium-desktop-Setup-1.2.7.exe,默认安装即可
      2. 启动客户端,按图片步骤 1 -> 2 -> 3 -> 4 设置

     启动appium界面

    3. 启动成功展示如下图

     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.等待安装完成,无错误信息即可

    五.Appium入门的第一个例子

    第一个例子

    手机驱动对象

      驱动对象会帮助我们完成手机和脚本之间交互.
    导入driver对象

      from appium import webdriver
    声明手机驱动对象

        只有声明驱动对象我们才可以让手机完成脚本的操作,声明的方法如下:

        driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)  # 声明对象后会直接启动参数中的应用

        desired_caps: ???
    手机启动参数
        desired_caps:负责启动服务端时的参数设置,appium server 与手机端建立会话关系时,根据这些参数服务端可以做出相应的处理
        desired_caps常用参数:
        platformName         平台的名称:iOS, Android, or FirefoxOS
        platformVersion      设备系统版本号
        deviceName           设备号 IOS:instruments -s devices,Android: adb devices
        app                  安装文件路径:/abs/path/to/my.apk or http://myapp.com/app
        appActivity          启动的Activity
        appPackage           启动的包
        unicodeKeyboard      unicode设置(允许中文输入)
        resetKeyboard        键盘设置(允许中文输入)
        # server 启动参数
        desired_caps = {}
        desired_caps['platformName'] = 'Android' 
        desired_caps['platformVersion'] = '5.1'
        desired_caps['deviceName'] = '192.168.56.101:5555'
        desired_caps['appPackage'] = 'com.android.settings'
        desired_caps['appActivity'] = '.Settings'
        desired_caps['unicodeKeyboard'] = True
        desired_caps['resetKeyboard'] = True
    脚本内启动其他app
        driver.start_activity(appPackage,appActivity)
    关闭app

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

        driver.quit()   # 关闭驱动对象,同时关闭所有关联的app
    实例代码

      from appium import webdriver

      import time

      # server 启动参数
      desired_caps = {}
      # 设备信息
      desired_caps['platformName'] = 'Android'
      desired_caps['platformVersion'] = '5.1'
      desired_caps['deviceName'] = '192.168.56.101:5555'
      # app信息
      desired_caps['appPackage'] = 'com.android.settings'
      desired_caps['appActivity'] = '.Settings'

      driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

      time.sleep(5)

      driver.quit()

    六.App基础操作API

    完成app自动化需要一些基础条件的支持,本节将讲解APP初始化API.
    1.1前置代码

      # server 启动参数

      desired_caps = {}
      desired_caps['platformName'] = 'Android' 
      desired_caps['platformVersion'] = '5.1'
      desired_caps['deviceName'] = '192.168.56.101:5555'
      desired_caps['appPackage'] = 'com.android.settings'
      desired_caps['appActivity'] = '.Settings'
      desired_caps['unicodeKeyboard'] = True
      desired_caps['resetKeyboard'] = True

      # 声明driver对象
      driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
    1.2安装APK到手机
        driver.install_app(app_path) 
        参数:
            app_path:脚本机器中APK文件路径
    1.3手机中移除APP
      driver.remove_app(app_id) 
      参数:
          app_id:需要卸载的app包名
    1.4判断APP是否已安装
      driver.is_app_installed(bundle_id) 
      参数:
          bundle_id: 可以传入app包名,返回结果为True(已安装) / False(未安装)
    1.5发送文件到手机
      import base64
      data = str(base64.b64encode(data.encode('utf-8')),'utf-8')
      driver.push_file(path,data)
      参数:
          path:手机设备上的路径(例如:/sdcard/a.txt)
          data:文件内数据,要求base64编码
          Python3.x中字符都为unicode编码,而b64encode函数的参数为byte类型,需要先转码;
           生成的数据为byte类型,需要将byte转换回去。
    1.6从手机中拉取文件
      import base64
      data = driver.pull_file(path) # 返回数据为base64编码
      print(str(base64.b64decode(data),'utf-8')) # base64解码
      参数:
          path: 手机设备上的路径
    1.7获取当前屏幕内元素结构
      driver.page_source  
      作用:
          返回当前页面的文档结构,判断特定的元素是否存在

    七.手机控件查看工具uiautomatorviewer

    工具简介

      用来扫描和分析Android应用程序的UI控件的工具.
    如何使用

        1.进入SDK目录下的tools目录,打开uiautomatorviewer

        2.电脑连接真机或打开android模拟器

        3.启动待测试app

        4.点击uiautomatorviewer的左上角Device Screenshot,会生成app当前页面的UI控件截图
    android_appium

        5.选择截图上需要查看的控件,即可浏览该控件的id,class,text,坐标等信息
    android_appium

    八.APP元素定位操作

    手工测试主要通过可见按钮操作,而自动化是通过元素进行交互操作.
        元素的基本定位基于当前屏幕范围内展示的可见元素。
    3.3.1Appium常用元素定位方式
    name    value
    id    id属性值    
    class    class属性值    
    xpath    xpath表达式    
    3.3.2.前置代码

        from appium import webdriver
        # server 启动参数
        desired_caps = {}
        # 设备信息

  • 相关阅读:
    JVM学习----垃圾回收
    公网远程访问macOS本地web服务器
    永磁同步电机恒压频比(V/F)开环控制系统Matlab/Simulink仿真分析及代码生成到工程实现
    (49)其他的性能测试场景
    【未完待续】计算机组成与体系结构第三次试验:微程序控制器实验
    layui实现鼠标移入/移出时显示/隐藏tips
    FANUC机器人实现本地自动运行的相关配置和参数设置
    vue3+ts打开echarts的正确方式
    量表如何分析?
    在Linux中nacos集群模式部署
  • 原文地址:https://blog.csdn.net/weixin_72206076/article/details/126708933