从零开始学习软件测试-第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是否有重复

  • 判断当前页面有没有和指定元素相同类型的元素
相关推荐
亦枫Leonlew18 分钟前
三维测量与建模笔记 - 3.3 张正友标定法
笔记·相机标定·三维重建·张正友标定法
考试宝21 分钟前
国家宠物美容师职业技能等级评价(高级)理论考试题
经验分享·笔记·职场和发展·学习方法·业界资讯·宠物
黑叶白树2 小时前
简单的签到程序 python笔记
笔记·python
@小博的博客2 小时前
C++初阶学习第十弹——深入讲解vector的迭代器失效
数据结构·c++·学习
幸运超级加倍~3 小时前
软件设计师-上午题-15 计算机网络(5分)
笔记·计算机网络
南宫生3 小时前
贪心算法习题其四【力扣】【算法学习day.21】
学习·算法·leetcode·链表·贪心算法
懒惰才能让科技进步4 小时前
从零学习大模型(十二)-----基于梯度的重要性剪枝(Gradient-based Pruning)
人工智能·深度学习·学习·算法·chatgpt·transformer·剪枝
love_and_hope4 小时前
Pytorch学习--神经网络--搭建小实战(手撕CIFAR 10 model structure)和 Sequential 的使用
人工智能·pytorch·python·深度学习·学习
Chef_Chen4 小时前
从0开始学习机器学习--Day14--如何优化神经网络的代价函数
神经网络·学习·机器学习
芊寻(嵌入式)4 小时前
C转C++学习笔记--基础知识摘录总结
开发语言·c++·笔记·学习