腾讯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汉明距离相似度对比算法得到图片相似度来判定打开的结果,代码相对要复杂一些,后面的案例中也有类似的代码实现,这里就不再细述。

相关文章
|
8月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1404 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
8月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1013 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
8月前
|
移动开发 Rust JavaScript
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1111 4
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
9月前
|
存储 消息中间件 人工智能
【08】AI辅助编程完整的安卓二次商业实战-修改消息聊天框背景色-触发聊天让程序异常终止bug牵涉更多聊天消息发送优化处理-优雅草卓伊凡
【08】AI辅助编程完整的安卓二次商业实战-修改消息聊天框背景色-触发聊天让程序异常终止bug牵涉更多聊天消息发送优化处理-优雅草卓伊凡
575 10
【08】AI辅助编程完整的安卓二次商业实战-修改消息聊天框背景色-触发聊天让程序异常终止bug牵涉更多聊天消息发送优化处理-优雅草卓伊凡
|
9月前
|
XML 存储 Java
【06】AI辅助编程完整的安卓二次商业实战-背景布局变更增加背景-二开发现页面跳转逻辑-替换剩余图标-优雅草卓伊凡
【06】AI辅助编程完整的安卓二次商业实战-背景布局变更增加背景-二开发现页面跳转逻辑-替换剩余图标-优雅草卓伊凡
221 3
【06】AI辅助编程完整的安卓二次商业实战-背景布局变更增加背景-二开发现页面跳转逻辑-替换剩余图标-优雅草卓伊凡
|
8月前
|
移动开发 Android开发
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
385 0
|
9月前
|
XML 编解码 Android开发
非常经典的Android开发问题-mipmap图标目录和drawable图标目录的区别和适用场景实战举例-优雅草卓伊凡
非常经典的Android开发问题-mipmap图标目录和drawable图标目录的区别和适用场景实战举例-优雅草卓伊凡
715 0
非常经典的Android开发问题-mipmap图标目录和drawable图标目录的区别和适用场景实战举例-优雅草卓伊凡
|
Java 测试技术 C#
自动化测试之美:从Selenium到Appium
【10月更文挑战第3天】在软件开发的海洋中,自动化测试如同一艘航船,引领着质量保证的方向。本文将带你领略自动化测试的魅力,从Web端的Selenium到移动端的Appium,我们将一探究竟,看看这些工具如何帮助我们高效地进行软件测试。你将了解到,自动化测试不仅仅是技术的展示,更是一种提升开发效率和产品质量的智慧选择。让我们一起启航,探索自动化测试的世界!
|
Web App开发 IDE 测试技术
自动化测试的利器:Selenium 框架深度解析
【10月更文挑战第2天】在软件开发的海洋中,自动化测试犹如一艘救生艇,让质量保证的过程更加高效与精准。本文将深入探索Selenium这一强大的自动化测试框架,从其架构到实际应用,带领读者领略自动化测试的魅力和力量。通过直观的示例和清晰的步骤,我们将一起学习如何利用Selenium来提升软件测试的效率和覆盖率。
|
测试技术 数据安全/隐私保护 开发者
自动化测试的奥秘:如何用Selenium和Python提升软件质量
【9月更文挑战第35天】在软件开发的海洋中,自动化测试是那艘能引领我们穿越波涛的帆船。本文将揭开自动化测试的神秘面纱,以Selenium和Python为工具,展示如何构建一个简单而强大的自动化测试框架。我们将从基础出发,逐步深入到高级应用,让读者能够理解并实现自动化测试脚本,从而提升软件的质量与可靠性。