安卓自动化测试添加用例执行回放

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
简介: 脑洞最近脑洞有点儿大,最开始是想给自己的测试平台添加手动执行用例的功能,又觉得没有一个很好的展示,所以想着要实时展示手机上的内容,输出到web页面,但是觉得有点难啊。想了一下,还是换个方式吧,每个case执行完毕,都可以看到实时的录像。

脑洞

最近脑洞有点儿大,最开始是想给自己的测试平台添加手动执行用例的功能,又觉得没有一个很好的展示,所以想着要实时展示手机上的内容,输出到web页面,但是觉得有点难啊。

想了一下,还是换个方式吧,每个case执行完毕,都可以看到实时的录像。这样也许可行,哈哈哈!

准备条件

  • 一台安卓机
  • appium环境

基础知识

  • adb命令

adb大家应该很熟悉,简单的说就是个连接手机和电脑的工具,哈哈哈,简单粗暴。

我们常用的adb命令有:

  • adb devices
    查看已经连接上的安卓设备

  • adb logcat
    查看安卓日志

具体的大家可以自己去百度下。

不过这里要讲的是adb录屏的命令~

我们连上安卓手机后, 在cmd窗口输入命令:
adb shell screenrecord /sdcard/test.mp4

image.png

这时候其实手机上的内容已经开始录制了~

我为了偷懒,就照搬这位兄弟的博客了~~!传送门在此

image.png

注意

这里的adb命令开始录制以后,不管是否正常结束,都会保存文件,所以我们可以把录制时间放长一点,到时候关闭就好了。

思路

因为用例是以一个class为单位的,就算这个class有很多个test开头的测试用例函数,所以我这里是以一个class类为单位存储视频的。

第一步

用例在setUp的时候,开启录制~

第二步

用例在tearDown的时候, 结束录制~

第三步

用例结束录制以后,使用adb命令将mp4文件拉取到本地硬盘上,供web页面展示,或者将本地文件放入测试报告里作为超链接访问。(但是此种方法不被Chrome浏览器支持)

开始劳作

import unittest
from time import sleep


class TestCase(unittest.TestCase)

    @classmethod
    def setUpClass(cls):
        print("[{}]--正在执行登陆初始化操作: {}".format(datetime.now().strftime(
            "%Y-%m-%d %H:%M:%S"), cls.__name__))
        # 录屏
        cls.replay = subprocess.Popen(r"adb shell screenrecord "
                             r"/sdcard/{}.mp4 --time-limit 600".format(cls.__name__),
                             creationflags=subprocess.CREATE_NEW_CONSOLE)

    def test_01(self):
        pass    # 这里其实最好多一些操作,不然视频一下就结束了,看不到效果

    @classmethod
    def tearDownClass(cls):
        # 终止录像
        cls.replay.terminate()
        # 这里我的cls.conf是个配置文件, 获取到录像保存的路径然后mp4的名字是以用例class命名的
        replay_path = os.path.join(cls.conf.get_value("replay_path"), "{}.mp4".format(cls.__name__))
        sleep(2)
        # 这里的pull是指从sdcard获取文件到本地硬盘,
        subprocess.Popen(r"adb pull /sdcard/{}.mp4 {}".format(cls.__name__, replay_path),
                             creationflags=subprocess.CREATE_NEW_CONSOLE)
        # 等待视频拉取完毕
        sleep(6)

注意:

  • 第一个sleep
    为了等用例停止录制后有个缓冲时间~
  • 第二个sleep
    为了pull的时候等文件完全pull完毕,不然下一个case开始的时候又会调用adb,这个pull还没结束,第二个adb又开始了,导致拉取的文件异常,无法播放。
  • subprocess
    这个是Python调用控制台命令的方法,后面的CREATE_NEW_CONSOLE是新起一个命令窗口。

优化:

  • sleep

应该有更好的办法解决, 暂时还没有考虑到更好的办法~

  • 手机垃圾文件清理

暂时还没有做

相关实践学习
阿里云百炼xAnalyticDB PostgreSQL构建AIGC应用
通过该实验体验在阿里云百炼中构建企业专属知识库构建及应用全流程。同时体验使用ADB-PG向量检索引擎提供专属安全存储,保障企业数据隐私安全。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
23天前
|
测试技术
软件测试用例设计之微信群抢红包经典用例
作者在浏览招聘网站时遇到为微信群发和抢红包设计测试用例的问题,作为软件测试新手,作者通过实际体验并撰写测试案例来加深对业务的理解,并分享了测试案例表格。需要注意的是,该用例未考虑添加银行卡支付、红包类型选择及红包描述。
38 5
软件测试用例设计之微信群抢红包经典用例
|
23天前
|
Java 测试技术 Android开发
Android性能测试——发现和定位内存泄露和卡顿
本文详细介绍了Android应用性能测试中的内存泄漏与卡顿问题及其解决方案。首先,文章描述了使用MAT工具定位内存泄漏的具体步骤,并通过实例展示了如何分析Histogram图表和Dominator Tree。接着,针对卡顿问题,文章探讨了其产生原因,并提供了多种测试方法,包括GPU呈现模式分析、FPS Meter软件测试、绘制圆点计数法及Android Studio自带的GPU监控功能。最后,文章给出了排查卡顿问题的四个方向,帮助开发者优化应用性能。
76 4
Android性能测试——发现和定位内存泄露和卡顿
|
9天前
|
人工智能 测试技术 Python
基于 LangChain 的自动化测试用例的生成与执行
本章节详细介绍了如何利用人工智能技术自动化完成Web、App及接口测试用例的生成与执行过程,避免了手动粘贴和调整测试用例的繁琐操作。通过封装工具包与Agent,不仅提升了测试效率,还实现了从生成到执行的一体化流程。应用价值在于显著节省时间并提高测试自动化水平。
25 1
|
16天前
|
测试技术
基于LangChain手工测试用例转App自动化测试生成工具
在传统App自动化测试中,测试工程师需手动将功能测试用例转化为自动化用例。市面上多数产品通过录制操作生成测试用例,但可维护性差。本文探讨了利用大模型直接生成自动化测试用例的可能性,介绍了如何使用LangChain将功能测试用例转换为App自动化测试用例,大幅节省人力与资源。通过封装App底层工具并与大模型结合,记录执行步骤并生成自动化测试代码,最终实现高效自动化的测试流程。
30 4
|
23天前
|
测试技术 Shell Android开发
Android 性能测试初探 (六)
本节聊聊性能测试的最后一项- 流量,当然我所指的性能测试是针对大部分应用而言的,可能还有部分应用会关注网速、弱网之类的测试,但本系列文章都不去一一探讨了。
38 6
|
23天前
|
JavaScript 测试技术 Android开发
Android 性能测试初探 (四)
本文介绍了GPU在移动端性能测试中的重要性,并详细解释了过度绘制、帧率和帧方差的概念。针对GPU测试,文章列举了三项主要测试内容:界面过度绘制、屏幕滑动帧速率和平滑度。其中,过度绘制测试需遵循特定标准,而帧速率和平滑度测试则可通过软件或硬件方法实现。在软件测试中,使用Systrace插件和高速相机是两种常用手段。对于不同机型,帧率及帧方差的测试标准也需相应调整。
33 5
|
23天前
|
测试技术 Shell Android开发
Android 性能测试初探 (三)
本文承接《Android性能测试初探(二)》,深入探讨CPU与内存测试。介绍了移动端内存测试的重要性及其测试目标,并详细列举了不同状态下应用内存消耗情况的测试项目。此外,还提供了多种内存测试方法,包括使用`procrank`等工具的具体操作步骤。最后,文章也简要提及了CPU测试的相关内容,帮助读者更好地理解Android性能测试的关键要素。
36 5
|
23天前
|
测试技术 Shell 定位技术
Android 性能测试初探 (五)
聊聊大家不常关注的测试项- 功耗
36 3
|
23天前
|
算法 测试技术 Android开发
Android 性能测试初探 (二)
上回大体介绍了下在 android 端的性能测试项,现在我们就细节测试项做一些阐述(包括如何自己 DIY 测试)
32 4
|
23天前
|
测试技术 API Android开发
Android 性能测试初探 (一)
Android 性能测试,跟pc性能测试一样分为客户端及服务器,但在客户端上的性能测试分为 2 类: 一类为 rom 版本的性能测试;一类为应用的性能测试。
39 3
下一篇
无影云桌面