【运维测试】移动测试自动化知识总结第1篇:移动端测试介绍(md文档已分享)

本系列文章md笔记(已分享)主要讨论移动测试相关知识。主要知识点包括:移动测试分类及android环境搭建,adb常用命令,appium环境搭建及使用,pytest框架学习,PO模式,数据驱动,Allure报告,Jenkins持续集成。掌握操作app的基本api,掌握元素定位及获取元素信息的api,掌握事件操作api,掌握app模拟手势操作,掌握手机操作的api。掌握pytest函数执行顺序,掌握pytest函数参数化,掌握PO模式的作用,掌握yaml语法。能够使用allure和pytest生成测试报告。

全套笔记和代码自取移步gitee仓库: gitee仓库获取完整文档和代码

感兴趣的小伙伴可以自取哦,欢迎大家点赞转发~


共 7 章,34 子模块

移动端测试介绍

学习主要内容

1移动测试分类及android环境搭建
2adb常用命令
3appium环境搭建及使用
4pytest框架学习
5PO模式
6数据驱动
7Allure报告
8Jenkins持续集成

学习目标

  1. 掌握移动端安卓模拟器的安装
  2. 掌握常见的adb指令
  3. 了解主流的移动端自动化测试工具
  4. 掌握appium环境搭建
  5. 了解appium入门案例

移动端测试知识概览

学习目标

  • 了解移动端测试分类

1. 什么事移动端测试

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

2. 移动端测试分类

2.1 app功能测试
  • 业务逻辑正确性测试
1. 查看是否符合业务需求文档
2. 是否满足隐性需求
  • 兼容性测试
1. 系统版本是否兼容: 
    安卓
         原生系统上下版本间是否兼容,例如安卓10.0的是否兼容9.0
         二次开发的系统, 比如小米的MIUI系统间的兼容、华为的EMUI上下版本间兼容性是否良好
    ios 版本间的兼容是否良好
2. 分辨率是否兼容
3. 网络情况
        弱网测试、WIFI限速、更改网络app模式
  • 异常测试
1.热启动应用
  [1]app至于后台时是A页面,切换到前台,还是A页面,还是初始化页面
  [2]app长时间置于后台,切换到前台,还是A页面,还是初始化页面,崩溃/闪退

2.网络切换和中断恢复
  [1]4g-2g wifi-4g,保证app可用,业务正常
  [2]wif-断网-wifi
     断点续传  下载应用5M 下载了3M断网,再次联网,继续当前位置下载

3.电话和信息中断恢复
  [1]电话:看视频,打电话30分钟,切换为继续查看位置
  [2]短信:玩游戏  

4.升级安装卸载测试
  [1]升级测试
     临近版本升级 1.0--->1.1--->1.2
     跨版本升级 1.0---->2.0
  [2]安装测试
     首次安装
     覆盖安装
          高版本--->低版本  成功
          低版本--->高版本  不允许   
     卸载后安装
  [3]卸载测试
     首次卸载
     卸载--->安装--->卸载 

5.健壮性测试
  手机资源消耗
  流量消耗
  崩溃恢复等测试
2.2 app自动化测试
通过场景和数据的预设,把以人为驱动的测试行为转化为机器执行的一种过程.

⚠ 注意: 并不是所有功能都能进行自动化.
2.3 app安全测试
通过安全测试技术,保证app尽可能的不存在安全漏洞.

更多移动测试参考:

  • 移动测试的分类

移动端测试环境搭建

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

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

1. Wind 安装java环境

安装步骤:

1.1 安装jdk1.8
运行jdk-8u151-windows-x64.exe⽂件,默认安装即可

(例如我的安装⽬录:C:\Program Files\Java\jdk1.8.0)
1.2 配置java环境变量(windows为例)
1.进入我的电脑-->属性-->高级系统设置--->环境变量

2.在系统变量下点击新建 -> 变量名: JAVA_HOME -> 变量值: C:\Program Files\Java\jdk1.8.0
1.3 验证环境变量
1.打开dos 快捷键win+r
2.输入java -version

出现下图,说明安装成功

img

2. Mac 安装java环境

将下载的osx版的java环境默认进行安装,然后进行一下配置:

1.进入命令行, vim ~/.bash_profile 
2.# set jdk1.8
    JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home
    CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    PATH=$PATH:$JAVA_HOME/bin
    export JAVA_HOME CLASSPATH
    export PATH

启动终端,输入java -version查看是否正常启动

java安装

1. Window 安装sdk(Androi需要的环境)

安装步骤:

1.1 解压Android sdk 文件夹

注意:路径中不要有中文, 确保文件夹下有一下两个文件

如下图: img

1.2 配置到系统环境变量下.
SDK环境变量配置(Windowns7为例)

    1.进入我的电脑 -> 属性 -> 高级系统设置 -> 环境变量

    2.在系统变量下点击新建 -> 变量名: ANDROID_HOME -> 变量值: D:\android-sdk -> 点击确定按钮

    3.在系统变量下找到系统的path变量,最后添加:;%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools;(最前面是一个分号,如果path变量最后已有分号,可不用添加) -> 点击确定按钮
1.3 验证环境变量是否配置成功
  • 在dos中输入adb指令,如下图配置成功 img
  • 在dos中输入android指令 出现Android sdk manager对话框 img

注意:**

假如sdk中已经有build-tools和platform-tools文件夹,就不需要再进行下载安装了

2. Mac 安装android sdk

  1. 把下载的android sdk macosx版本的解压到指定目录(我的解压到//Library/Java/)

macsdk

注意:

假如sdk没有build-tools和platform-tools文件夹,要把提供的文件夹移动到此处, 后面只需要配置环境变量即可,不需要下载了

  1. 把sdk配置到系统环境变量
1.进入命令行, vim ~/.bash_profile
2.# set android
   ANDROID_HOME=电脑存放的路径/android-sdk-macosx
   PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
   export ANDROID_HOME 
   export PATH
  1. 验证是否成功

验证adb命令: 在终端输入adb,出现adb版本信息说明成功

Mac adb

验证android是否配置成功: 在终端输入android, 出现此图片说明成功

Mac android

3、选择不同版本的的Android系统进行下载

注意:

由于安卓镜像在国外,最好更换国内的镜像

步骤

  • 在弹出的android sdk manager页面,点击tools, 下啦框点击options

还原

  • 在弹出的对话框输入国内惊现的地址和端口号.

set

镜像地址列表(也可以网上查找最新的):
     中国科学院开源协会镜像站地址:
         IPV4/IPV6: mirrors.opencas.cn 端口:80
         IPV4/IPV6: mirrors.opencas.org 端口:80
         IPV4/IPV6: mirrors.opencas.ac.cn 端口:80
     上海GDG镜像服务器地址:
         sdk.gdgshanghai.com 端口:8000

     北京化工大学镜像服务器地址:
         IPv4: ubuntu.buct.edu.cn/ 端口:80
         IPv4: ubuntu.buct.cn/ 端口:80
         IPv6: ubuntu.buct6.edu.cn/ 端口:80

     大连东软信息学院镜像服务器地址:
         mirrors.neusoft.edu.cn 端口:80

1. window安装andorid模拟器

1. 模拟器Genymotion安装

1.执行genymotion-2.11.0-vbox.exe(是一个集合程序,包含genymotion和virtualbox) -> 不需要更改配置,直接下一步默认安装

2.安装完genymotion继续等待,会提示安装virtualbox,继续安装,期间会提示安装oracle插件,全部允许安装

3.安装完成后会在桌面展示genymotion和virtualbox两个图标

img

注意:

安装其他的模拟器也可以 ,安装成功就可以.(比如MuMu 逍遥 夜神 雷电)

2. Mac 下安装模拟器

mac下安装要装两个dmg文件: genymotion-2.12.1.dmg和VirtualBox-5.2.26-128414-OSX.dmg

1.安装genymotion-2.12.1.dmg-》不用更改配置,默认安装就行
2.安装VirtualBox-5.2.26-128414-OSX.dmg  -》 不用更改配置直接安装就行
3.安装后也会看到上面三个应用

3.虚拟机镜像导入

1.打开virtualbox
2.进入virtualbox -> 管理 -> 导入虚拟电脑
3.点击文件选择(Samsung Galaxy S6 - 5.1.0 - API 22 - 1440x2560.ova) -> 点击下一步
4.勾选 重新初始化所有网卡的MAC地址
5.点击导入按钮 -> 等待倒入完成
6.virtualbox列表会展示如下图圈出的选项

虚拟镜像

4. 启动模拟器

在genymotion主界面点机start按钮.启动成功就会显示下图

启动成功

5. 安装应用apk

安卓模拟器启动起来后,我们就可以安装要进行测试的应用了.安装成功后,我们的环境搭建就全部结束.

安装方法:

  • adb命令行(后面讲解)
  • 直接拖拽要安装的apk到模拟器上,自动安装

注意事项

1. 安装ARM插件

安装某些应用apk时由于apk功能比较丰富,但是模拟器自带的不支持这些功能,所以要安装arm插件,来满足apk的使用.

(1)、拖动ARM_Translation_Lollipop_20160402.zip到已启动的android虚拟机上

需要下载对应版本的插件、我们使用的是adnroid5.1 所以使用的是这个

(2)点击提示的ok按钮

arm插件1

(3)、再次点击提示的ok按钮,重启模拟器既可以安装apk文件

arm插件1

2. 使用其他版本的模拟器的步骤

(1)、需要到genymotion官网上注册一个账号

(2)、进入genymotion界面,点击add按钮、会弹出登录对话框、输入注册的账号

登录genymotion

(3)、登录成功后可以选择对应不同的android版本、手机型号进行安装

下载模拟器

下载模拟器成功

选择要使用版本启动

ADB常用命令

学习目标

  • 掌握常用的ADB命令

1. ADB命令简介

ADB全名Andorid Debug Bridge。 是一个Debug工具。为何称之为Bridge呢? 
因为adb是一个标准的C/S结构的工具, 是要连接开发电脑和调试手机的

包含如下几个部分:
    1.Client端,运行在开发机器中,即你的开发PC机。用来发送adb命令。
    2.Daemon守护进程, 运行在调试设备中, 即的调试手机或模拟器。
    3.Server端, 作为一个后台进程运行在开发机器中, 即你的开发PC机. 用来管理PC中的Client端和手机的Daemon之间的通信。

2. 常用命令

  • adb 帮助
adb --help
  • 启动adb 服务
adb start-server
  • 关闭adb 服务
adb kill-server
  • 获取设备号
adb devices
  • 获取系统版本
adb shell getprop ro.build.version.release
  • 发送文件到手机
adb push 电脑端⽂件路径/需要发送的文件,手机端存储的路径

adb push C:\Users\win\Desktop\xx.png /sdcard
  • 从手机拉取文件
adb pull 手机端的路径/拉取文件名 电脑端存储文件路径

adb pull /sdcard/xx.png C:\Users\win\Desktop
  • 查看手机运行日志
adb logcat
  • 进入到手机终端
adb shell
  • 获取app启动包名和启动名(⚠手机需要先打开对应app)
1.Mac/Linux: 'adb shell dumpsys window windows | grep mFocusedApp’
2.在 Windows 终端运⾏ 'adb shell dumpsys window windows | findstr mFocusedApp’
  • 安装app到手机
adb install 路径/xxx.apk
  • 卸载手机app
adb uninstall app
  • 获取app启动时间
adb shell am start -W 包名/.启动名

`python
adb shell getprop ro.build.version.release




* 发送文件到手机

```python
adb push 电脑端⽂件路径/需要发送的文件,手机端存储的路径

adb push C:\Users\win\Desktop\xx.png /sdcard
  • 从手机拉取文件
adb pull 手机端的路径/拉取文件名 电脑端存储文件路径

adb pull /sdcard/xx.png C:\Users\win\Desktop
  • 查看手机运行日志
adb logcat
  • 进入到手机终端
adb shell
  • 获取app启动包名和启动名(⚠手机需要先打开对应app)
1.Mac/Linux: 'adb shell dumpsys window windows | grep mFocusedApp’
2.在 Windows 终端运⾏ 'adb shell dumpsys window windows | findstr mFocusedApp’
  • 安装app到手机
adb install 路径/xxx.apk
  • 卸载手机app
adb uninstall app
  • 获取app启动时间
adb shell am start -W 包名/.启动名

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/387173.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机组成原理 2 数据表示

机器数 研究机器内的数据表示,目的在于组织数据,方便计算机硬件直接使用。 需要考虑: 支持的数据类型; 能表示的数据精度; 是否有利于软件的移植 能表示的数据范围; 存储和处理的代价; ... 真值…

Kotlin基本语法1到函数

1.range表达式 fun main() {var age 12.3if (age in 0.0..3.3){println("婴幼儿")}else if (age in 4.0..12.2){println("少儿")}else{println("未知")}/*** in 后面还可以接 list set 都可以*/if (age !in 0.0..3.3){println("婴幼儿&quo…

如何使用idea连通服务器上的Redis(详细版本)

这里我使用的是阿里云的服务器 打开阿里云的安全组,设置端口为6379 在redis.conf文件中,注释bind 127.0.0.1 将protected-mode设置为no,即关闭保护模式 更改服务器中的防火墙,放行6379端口 # 放行端口 firewall-cmd --zo…

Java+SpringBoot构建智能捐赠管理平台

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

七天入门大模型 :提示词工程 Prompt Engineering,最全的总结来了!

文章目录 技术交流群用通俗易懂方式讲解系列引 言LLM 的超参配置Prompt Engineering指令主要内容少样本学习更加明确的提示善用分隔符思维链提示对输出格式的明确要求 最佳实践案例1. Agent场景:使用prompt实现agent create2. Agent场景:使用system mess…

AIGC | AI提示词构建

文章目录 📚BARD提示词构建法🐇前言🐇第一步:阐述背景Background🐇第二步:定义目标Aim🐇第三步:设定角色Role🐇第四步:设置要求Demand 📚测试与迭…

黑马程序员微信小程序学习总结7.工具脚本、自定义组件、data和properties的区别

目录 工具脚本(utils中的wxs)自定义组件组件的引用方式局部引用全局引用组件和页面的区别组件样式隔离data数据组件method事件处理函数自定义组件添加属性 data和properties的区别使用setData修改properties的值 工具脚本(utils中的wxs&#…

[缓存] - 1.缓存共性问题

1. 缓存的作用 为什么需要缓存呢?缓存主要解决两个问题,一个是提高应用程序的性能,降低请求响应的延时;一个是提高应用程序的并发性。 1.1 高并发 一般来说, 如果 10Wqps,或者20Wqps ,可使用分布…

Linux命令行全景指南:从入门到实践,掌握命令行的力量

目录 知识梳理思维导图: linux命令入门 为什么要学Linux命令 什么是终端 什么是命令 关于Linux命令的语法 tab键补全 关于命令提示符 特殊目录 常见重要目录 /opt /home /root /etc /var/log/ man命令 shutdown命令 history命令 which命令 bash…

【Python网络编程之Ping命令的实现】

🚀 作者 :“码上有前” 🚀 文章简介 :Python开发技术 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 Python网络编程之Ping命令的实现 代码见资源,效果图如下一、实验要求二、协议原理2…

P1990 覆盖墙壁题解

题目 有一个长为N宽为2的墙壁,给你两种砖头:一个长2宽1,另一个是L型覆盖3个单元的砖头。如下图: 0 0 0 00砖头可以旋转,两种砖头可以无限制提供。你的任务是计算用这两种来覆盖N2的墙壁的覆盖方法。例如一个23的墙…

petalinux2018.3安装步骤

1、虚拟机安装ubuntu-16.04.7-desktop-amd64.iso (注意:安装ubuntu-18.04.6-desktop-amd64.iso和ubuntu-16.04.6-desktop-i386.iso会报以下错误) environment: line 314: ((: 10 #15~1 > 10 #3: syntax error in expression (error toke…

幻兽帕鲁Palworld服务器设置参数(汉化)

创建幻兽帕鲁服务器配置参数说明,Palworld服务器配置参数与解释,阿腾云atengyun.com分享: 自建幻兽帕鲁服务器教程: 阿里云教程 https://t.aliyun.com/U/bLynLC腾讯云教程 https://curl.qcloud.com/oRMoSucP 幻兽帕鲁服务器 幻…

Mysql中关于on,in,as,where的区别

目录 Mysql on,in,as,where的区别 Mysql语句问题解决 1、left join数据筛选问题 2、相同数据重复筛选使用问题 3、根据某个字段排序取每个类别最后三条数据或前三条数据 4、业务逻辑书写位置问题 5、查找另一表内和本表相关字段的数量 6、关于union的使用 7、limit的巧…

2019年通信工程师初级 实务 真题

文章目录 一、第9章 通信动力与环境通信电源系统的主要功能:“供”、“配”、“储”、“发”、“变” 二、第2章 传输网三、第3章 接入网四、第4章 互联网 一、第9章 通信动力与环境 【问题一】 网络通信设备对动力与环境的质量要求可以归纳为 (1&#…

剑指offer——二进制中1的个数

目录 1. 题目描述2. 可能引起死循环的想法3. 改进后的代码4. 给面试官惊喜的代码 1. 题目描述 请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如把9表示成二进制位1001,有2位是1,因此如果输入9,该函数输…

今天:旧时是这样“破五迎福”

昨(正月初四)天,笔者——“ 人民体验官 ”, 为了推广人民日报官方微博文化产品所发表在10余个网站自媒体平台上的文章《今天:大年初四迎灶神爷》,不知何故被笔者寄居养老城市的自媒体论坛反复拒之门外&…

猫头虎分享已解决Bug || ImportError: cannot import name ‘relu‘ from ‘keras.layers‘

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

MATLAB知识点:fibonacci函数(★☆☆☆☆)返回斐波那契数列

​讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili 节选自第3章:课后习题讲解中拓展的函数 在讲解第…

【刷题记录】——2024寒假day9编程题

本系列博客为个人刷题思路分享&#xff0c;有需要借鉴即可。 1.目录大纲&#xff1a; 2.题目链接&#xff1a; T1:LINK T2:LINK 3.详解思路&#xff1a; T1: 思路&#xff1a; /*** Note: The returned array must be malloced, assume caller calls free().*/#include<…