干货 | 读懂 Appium 日志,让测试效率翻倍!

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
日志服务 SLS,月写入数据量 50GB 1个月
简介: 干货 | 读懂 Appium 日志,让测试效率翻倍!

Appium 服务器运行时会产生很多日志,但是很多人并不了解其中的意义,也无法掌握有用的信息。本文将详细解读如何读懂 Appium 日志,并让你的测试效率翻倍。

日志第一行显示了 Appium 版本和运行地址。

如果你在 Appium 上添加了参数,他们会在日志中展示,如果添加了 defaultCapabilities,日志也会显示出来。

对于自动化测试来说,这个信息很重要,因为不同的 Appium 版本有不同的功能和问题,必须要知道自己的 Appium 版本。

为了自动化测试跑起来,session 要做很多事,日志提供了一些基本的 session 信息,特别是 desired capabilities 和 default capabilities。应该时刻注意 Appium 服务是否正确接收了请求内容,日志列出了创建 automation session(不懂 automation session 的看下面的链接)。

Appium 是一个 REST 服务,接收 HTTP 请求,展示请求内容,返回某种结果。Appium 服务端日志用线和箭头展示了请求和返回的内容。在两个箭头之间是 Appium 服务端执行请求命令的日志信息:

利用日志可以非常方便的排查错误,错误通常发生在 automation session 之后。但有时,如果 session 持续存在,错误也可能发生。所以第一步是找出错误在哪。

下面的例子可以看出,每个指令用 [HTTP] → 和 [HTTP] ← 标记。这些标记之间是指令细节,包含了错误输出:

用户试图用 Android driver 启动一个 session,但发生了错误。Appium 为准备 session 而关掉并清除 AUT 时发现了错误,这个错误让我们知道两件事:

1.Appium 正在尝试做什么

2.哪里出错了

在这个例子中,Appium 尝试运行 adb 命令(adb shell am force-stop),adb 参数在错误信息中也有显示。发生了 Android 系统权限错误。此时,我们可以手动运行这个 adb 命令,看看错误是不是可以重现。如果错误重现,上网查错吧!如果 adb 命令成功运行,可能是 Appium 的 bug,应该去 Github 的 issue 上查看或者提交这个 bug 。(例子中的错误是设备制造商的安全模型造成的)

这个例子只是众多错误中的一个,但它说明至关重要的一点,当错误发生时,日志可以提供更多的信息,如果没有完整的日志信息,对 Appium 排错难上加难。

通常,默认的日志内容已经足够,如果你想去 Github 上寻求帮助,信息当然越多越好!下面一些参数可以改变 Appium 服务端的日志行为:

  • –log-level - 改变Appium日志显示级别。
  • Appium 默认展示所有日志,它有以下一些选项:‘info’, ‘info:debug’, ‘info:info’, ‘info:warn’, ‘info:error’, ‘warn’, ‘warn:debug’, ‘warn:info’, ‘warn:warn’, ‘warn:error’, ‘error’, ‘error:debug’, ‘error:info’, ‘error:warn’, ‘error:error’, ‘debug’, ‘debug:debug’, ‘debug:info’, ‘debug:warn’, ‘debug:error’。
  • –log-no-colors - 如果你的控制台没有颜色(日志可能会产生一些奇怪的字符,比如"TODO: find the color"),你可以用这个参数关闭颜色。
  • –log-timestamp - 在日志前添加时间戳,在排查超时错误时有奇效,展示如下:
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
Java Shell
「sh脚步模版自取」测试线排查的三个脚本:启动、停止、重启、日志保存
「sh脚步模版自取」测试线排查的三个脚本:启动、停止、重启、日志保存
37 1
|
11天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
46 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
1月前
|
Java 测试技术 C#
自动化测试之美:从Selenium到Appium
【10月更文挑战第3天】在软件开发的海洋中,自动化测试如同一艘航船,引领着质量保证的方向。本文将带你领略自动化测试的魅力,从Web端的Selenium到移动端的Appium,我们将一探究竟,看看这些工具如何帮助我们高效地进行软件测试。你将了解到,自动化测试不仅仅是技术的展示,更是一种提升开发效率和产品质量的智慧选择。让我们一起启航,探索自动化测试的世界!
|
1月前
|
Java 程序员 应用服务中间件
「测试线排查的一些经验-中篇」&& 调试日志实战
「测试线排查的一些经验-中篇」&& 调试日志实战
22 1
「测试线排查的一些经验-中篇」&& 调试日志实战
|
1月前
|
存储 Prometheus NoSQL
大数据-44 Redis 慢查询日志 监视器 慢查询测试学习
大数据-44 Redis 慢查询日志 监视器 慢查询测试学习
25 3
|
1月前
|
存储 数据采集 分布式计算
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
44 1
|
8天前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
37 3
|
1月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
59 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
2月前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
239 7
Jmeter实现WebSocket协议的接口测试方法
|
2月前
|
JSON 移动开发 监控
快速上手|HTTP 接口功能自动化测试
HTTP接口功能测试对于确保Web应用和H5应用的数据正确性至关重要。这类测试主要针对后台HTTP接口,通过构造不同参数输入值并获取JSON格式的输出结果来进行验证。HTTP协议基于TCP连接,包括请求与响应模式。请求由请求行、消息报头和请求正文组成,响应则包含状态行、消息报头及响应正文。常用的请求方法有GET、POST等,而响应状态码如2xx代表成功。测试过程使用Python语言和pycurl模块调用接口,并通过断言机制比对实际与预期结果,确保功能正确性。
248 3
快速上手|HTTP 接口功能自动化测试