腾讯Android自动化测试实战2.1.1 一个简单的Android App自动化测试过程

简介:

2.1 自动化测试框架介绍

2.1.1 一个简单的Android App自动化测试过程

在了解相关的Android App的自动化测试框架之前,先来看一个常用的自动化测试实例,这里先不讨论框架,主要是测试用户操作的模拟、执行结果的判断,以便获得对测试自动化的感性认识。

案例需求如下:QQ浏览器打开手机存储卡的文件,通过自动化测试获取其打开某一文件的响应时间,这里首先需要做细分,把需求拆分为几个关键点,即进入浏览器、文件打开操作、获取手机屏幕、截图分析、结果统计输出。自动化测试就是实现机器完成这些关键点的一系列操作,并且在脚本的实际运行中添加需要的业务逻辑判断,实现测试自动化。根据脚本的具体实现,整理出打开文件测试流程图,如图2-2所示。

1. 准备测试工具

下载record和replay的脚本录制工具,有很多工具可以实现,比如本书中的MonkeyRunner、UIAutomator等,在这个案例里从网上下载record /replay可执行工具,直接复制至手机硬盘。

2. 录制测试脚本

在PC上连接手机,打开adb shell命令,进入record工具存放目录,用shell命令运行record工具启动用户脚本录制,并给录制命名,如wps(打开wps文件)。工具运行成功之后,手工完成所需要的业务操作(如手机主页→选择QQ浏览器→文件目录→双击wps文件),操作结束后,按Ctrl+C键结束脚本的录制工作。录制脚本过程如图2-3所示。

 

图2-3 录制脚本过程

3. 执行测试脚本

这里以Java语言进行测试脚本的编写作为示范,通过Java的ProcessBuilder类在PC上创造并启动一个cmd命令行的进程,并执行“adb shell replay”操作进行脚本回放,这样打开文件的功能就可以通过脚本完成相应的操作执行,如代码清单2-1所示。

代码清单2-1 实现浏览器中打开wps文件

public static synchronized void enterWPS()

{

ProcessBuilder pb = new ProcessBuilder("cmd.exe");//ProcessBuilder("/system/bin/sh");

// java.lang.ProcessBuilder: Creates operating system processes.

pb.directory(new File("C:\\"));

// 设置shell的当前目录。

try {

    Process proc = pb.start();

    BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));

    // 获取输入流,可以通过它获取SHELL的输出。

    BufferedReader err = new BufferedReader(new InputStreamReader(proc.getErrorStream()));

    PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter (proc.getOutputStream())), true);

    // 获取输出流,可以通过它向SHELL发送命令。

    out.println("adb shell replay enter wps");

    //打开WPS文件

    out.println("exit");

    String line;

    while ((line = in.readLine()) != null)

    {

        System.out.println(line);

    }

    while ((line = err.readLine()) != null)

    {

        System.out.println(line);

    }

    in.close();

    out.close();

    proc.destroy();

    }

catch (Exception e)

{

    System.out.println("exception:" + e);

}

}

}

这里的录制脚本存放路径需要读者在实践时进行更改,或者把录制的脚本放置在/system/bin/。

4. 结果判断

这里通过测试脚本完成了用户操作的模拟实现,但是正常的测试还需要结果的验证,需要编码脚本进行测试结果的判断,本案例可以通过截屏和图片分析wps文件是否打开成功,可以通过Google汉明距离相似度对比算法得到图片相似度来判定打开的结果,代码相对要复杂一些,后面的案例中也有类似的代码实现,这里就不再细述。

相关文章
|
2月前
|
Java 测试技术 Maven
JAVA单元测试概念与实战
单元测试是软件开发中的一个测试方法,用于验证软件代码中最小的、独立的单元是否按照预期工作。在Java中,这通常指的是单个的方法或者一个类的个别功能。单元测试的目的是隔离代码的每个部分,并确保各个部分是正确的。
51 4
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
提升软件测试效率与质量:AI驱动的自动化测试策略
【2月更文挑战第19天】 在快速迭代的软件发展环境中,传统的手动测试方法已无法满足高效率和高质量的要求。本文探讨了人工智能(AI)技术如何革新现有的软件测试流程,通过引入AI驱动的自动化测试策略,旨在提高测试覆盖率,减少人为错误,优化资源分配,并缩短产品上市时间。我们将分析AI在识别潜在缺陷、生成测试用例、执行测试以及结果分析中的应用,并讨论实施这些策略时可能遇到的挑战和限制。
151 3
|
8天前
|
XML 数据格式 Python
App测试中,强制等待和隐式等待谁更强?
本文介绍了在自动化脚本中添加等待以确保与应用程序同步的重要性。由于应用响应时间的不确定性,适当等待能防止脚本在操作未完成前继续执行,提高测试稳定性。等待包括强制等待(如`time.sleep()`)、隐式等待(全局设置查找元素的等待时间)和显式等待(根据预期条件等待)。示例代码展示了如何在Python的Appium测试中应用这些等待策略,以优化脚本的可靠性和与应用的同步。
21 0
|
21天前
|
jenkins 测试技术 持续交付
软件测试|docker搭建Jenkins+Python+allure自动化测试环境
通过以上步骤,你可以在Docker中搭建起Jenkins自动化测试环境,实现Python测试的自动化执行和Allure报告生成。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
44 6
|
30天前
|
XML 测试技术 数据格式
解决 App 自动化测试的常见痛点
在App自动化测试中,常见挑战包括启动加载慢和弹框干扰。为处理弹框,可以创建一个黑名单列表,遍历并点击消除。使用`handleAlertByPageSource()`方法结合`getPageSource()`判断弹框元素在当前页面的存在性,提高效率。对于首页加载延迟,使用显示等待特定元素如`user_profile_container`,但需注意弹框可能阻止元素定位。因此,结合PageSource判断首页元素和弹框,确保加载完成判断的准确性。通过这样的优化,能更有效地处理自动化测试中的中断问题。
19 1
|
1月前
|
监控 安全 Shell
深入探究App压力测试的关键要点:从零开始学习Monkey
Monkey是Google的自动化测试工具,用于模拟用户随机事件以测试应用的稳定性和压力。它可以在模拟器或设备上运行,通过随机点击发现潜在问题。
26 1
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
提升软件测试效率:AI驱动的自动化测试策略
【2月更文挑战第30天】随着人工智能(AI)在软件开发周期中的日益普及,其在提高软件测试效率方面的潜力正受到越来越多的关注。本文探讨了如何通过集成AI技术来优化自动化测试流程,从而减少重复工作、提高错误检测率和加快反馈速度。我们将分析当前AI在自动化测试中的应用,并提出一系列策略以利用AI改进测试案例生成、执行和维护过程。
85 0
|
1月前
|
测试技术 Android开发
快速上手App自动化测试利器,Toast原理解析及操作实例
`Toast`是Android中的轻量级通知,短暂显示在屏幕任意位置,1-2秒后自动消失,不获取焦点且不可点击。Appium通过uiautomator2在控件树中处理Toast。在测试中,可设置隐式等待,利用XPath或Accessibility ID定位Toast元素进行检测和验证。示例代码展示了如何初始化driver,点击触发Toast,以及如何定位并读取Toast文本。
24 3
|
1月前
|
前端开发 Java 测试技术
《手把手教你》系列基础篇(五)-java+ selenium自动化测试- 创建首个自动化脚本(详细教程)
【2月更文挑战第14天】《手把手教你》系列基础篇(五)-java+ selenium自动化测试- 创建首个自动化脚本(详细教程) 前面几篇宏哥介绍了两种(java和maven)环境搭建和三大浏览器的启动方法,这篇文章宏哥将要介绍第一个自动化测试脚本。前边环境都搭建成功了,浏览器也驱动成功了,那么我们不着急学习其他内容,首先宏哥搭建好的环境中创建首个完整的自动化测试脚本,让小伙伴或者童鞋们提前感受感受,也是为了激起大家的学习兴趣。宏哥的个人经验是:自动化脚本编写比较容易,最大的困难去如何去写测试断言。自动化测试,最重要的还是落在测试上面,而不是自动化,自动化只是手段。
42 1
《手把手教你》系列基础篇(五)-java+ selenium自动化测试- 创建首个自动化脚本(详细教程)
|
1月前
|
运维 数据库
Powershell实战:测试网络请求两个命令介绍
【2月更文挑战第11篇】 Test-Connection 命令将 Internet 控制消息协议 (ICMP) 回显请求数据包或 ping 发送给一台或多台远程计算机并返回回显响应回复。 我们可以使用该命令确定是否可通过 IP 网络ping通特定的计算机。