从零开始学习软件测试-第45天笔记

monkey事件

  • 事件:对app进行的操作,比如触摸事件,滑动事件...
  • 动作:构成一个事件所需要的步骤。

调整事件的百分比

  • adb shell monkey -p 包名 -v -v --pct-xxx 百分比 次数>输出文件的路径

分析日志有没有报错

  • 到日志中去找crash、anr,如果找不到,就代表没有问题,如果找到了就代表有bug。
  • crash代表程序崩溃了,一定是bug。
  • anr代表程序无响应,不一定是bug,有可能是机型老旧导致的。

可能导致程序崩溃的原因

  • 内存溢出(oom out of memory)
    • 内存不足,无法启动当前的程序。
  • 内存泄漏(memory leak)
    • 不用的变量没有被及时的释放,导致其他数据不能使用此空间。
  • 下标越界(ArraryIndexOutOfBoundsException)
    • 下标超过了列表的总长度。
  • 空指针(NullPointerException)
    • 变量值为空的情况下调用方法,变量没有初始化情况下调用方法。

忽略异常

  • app的crash(崩溃)异常
    • adb shell monkey -p 包名 --ignore-crashes -v -v 次数 > 输出文件的路径
  • app的anr(无响应)异常
    • adb shell monkey -p 包名 --ignore-timeouts -v -v 次数 >输出文件的路径

app自动化-环境搭建

  • 下载第三方包 appium
    • pip install Appium-Python-Client == 1.3.0
  • 下载驱动
    • appium

app自动化报错点

  • 没有启动appium驱动
  • 电脑用户名是中文的,会报错,必须运行一次你写的自动化代码,如果代码报错了,再去修改。
    • 进入安卓Linux系统 adb shell
    • cd data
    • cd local
    • cd tmp
    • ls 查看目录
    • 有个AppiumBootstrap.jar 文件,如果名称是不全的,需要手动将文件名改全
    • mv 不全的文件名 AppiumBootstrap.jar

获取元素的源代码

  • 通过android -sdk中的tools文件夹中的bin目录下的uiautomatorviewer.bat工具来获取元素的源代码。
  • 注意:uiautomatorviewer.bat不支持java-jdk-8版本以上的版本。

app的输入框中,输入中文

  • 在参数中添加两个参数即可。
    • 变量名['unicodeKeyboard'] = True
    • 变量名['resetKeyboard'] = True

不重置应用(取消引导页)

  • 变量名['noReset'] = True

元素的操作

app自动化的元素操作方法和web自动化的元素操作方法大部分都是通用的。

  • 点击 click()
  • 输入 send_keys()
  • 清空 clear()
  • 获取文本 text
  • 获取位置 location
  • 根据属性名获取属性值get_attribute()
    • 获取id是resourceId
    • 获取class是className
    • 获取text是text或name
    • 获取content-desc是name
      • 注意:以上名称仅仅是用于根据属性名获取属性值,且API>=18,即Android版本>=4.3

web定位和app定位的区别

  • id定位的区别
    • web的id类似于身份证号,独一无二,有的话可以直接使用。
    • app的id类似于web中的class,用来定义样式的,可以重复的,当元素样式一样的情况下,大概率id是一样的。
  • class定位的区别
    • web中的class是用来添加样式的
    • app的class类似于web中的tag_name,是元素的标签名,大概率是重复的

如何判断id是否是重复的

  • 看当前页面有没有和指定元素相同样式的元素,如果没有大概率是没有重复的
  • 看id和元素有没有密切的关联

如何判断class是否有重复

  • 判断当前页面有没有和指定元素相同类型的元素
相关推荐
寻丶幽风6 分钟前
论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
论文阅读·笔记·深度学习·网络安全·差分测试
我是初九14 分钟前
【李沐-动手学深度学习v2】1.Colab学习环境配置
人工智能·python·学习·colab
KENYCHEN奉孝28 分钟前
Django 5 学习笔记总纲
笔记·学习·django
teeeeeeemo2 小时前
Vue数据响应式原理解析
前端·javascript·vue.js·笔记·前端框架·vue
蒙奇D索大2 小时前
【11408学习记录】考研数学攻坚:行列式本质、性质与计算全突破
笔记·学习·线性代数·考研·机器学习·改行学it
moxiaoran57532 小时前
uni-app学习笔记二十四--showLoading和showModal的用法
笔记·学习·uni-app
tcoding2 小时前
《基于Apache Flink的流处理》笔记
笔记·flink·apache
DartistCode2 小时前
动手学深度学习pytorch(第一版)学习笔记汇总
pytorch·深度学习·学习
汤姆和佩琦2 小时前
LLMs基础学习(八)强化学习专题(1)
深度学习·学习·强化学习·马尔可夫决策过程
代码小将3 小时前
java中static学习笔记
java·笔记·学习