Android App 自动化测试: OPEN-STF环境搭建

前言

背景

1、 测试是检验程序质量的保证,而自动化测试是提高测试效率的最好方式。就目前来说,通过 UiAutomator,Robotium、Monkey,Appium 等工具。配合测试开发所写的测试脚本,要实现一个自动化测试的工作其实并不难,难得是 Android 的兼容性测试,由于 Android 设备的多样性,导致了各种机型的适配问题是测试最容易忽视的地方。

2、 如何在多机型上进行自动化测试呢?目前 Open STF(Smartphone Test Farm)的解决方案,其官网的地址是:https://openstf.io/。

3、 这个系统类似于目前很流行的云测服务比如Testin,虽然网页上提供的设备很想模拟器中的设备,但是实际上都是真机。

Open STF的功能

STF工具( Smartphone Test Farm),基于NodeJS编写,可用于Android设备的远程管理。

1、 在Web上支持管理上百个android设备。

2、 支持Android多个版本(2.3.3 ~ 5.1),而且不需要root。

3、 实时屏幕操作和显示。

4、 支持adb connnect远程连接调试。

5、 可以从PC机键盘输入到远程的android设备中。

6、 安装卸载APK。

7、 android设备信息的展示(如:网络状态、MIME、android版本、手机型号等等)。

8、 远程开关机、远程开关WIFI、截屏、LogCat等等。

可以看两张直观的图:

Open STF环境的搭建

安装简介

Github地址:https://github.com/openstf/stf

官方推荐是用Linux系统或者OS X系统搭建,并不推荐使用Windows环境。

对于环境的要求:

1、 Node.js >= 6.9 (latest stable version preferred)

2、 ADB properly set up

3、 RethinkDB >= 2.2

4、 GraphicsMagick (for resizing screenshots)

5、 ZeroMQ libraries installed

6、 Protocol Buffers libraries installed

7、 yasm installed (for compiling embedded libjpeg-turbo)

8、 pkg-config so that Node.js can find the libraries

安装环境

本蚊使用的系统环境:ubuntu 64位,kernel version 4.4.0 
安装的方法有两种:

方法1:使用官方的文档一步一步安装。 
官方文档 
https://github.com/openstf/stf/blob/master/doc/DEPLOYMENT.md

其他博客地址:http://blog.csdn.net/addisonko/article/details/50912357

很多文章介绍的装stf要先装一堆工具,然后使用npm install -g stf安装到系统中,大部分人会发现,由于网络或者其他原因,npm install -g stf方式也不太容易成功。

方法2:推荐使用docker容器来搭建,根据我的搭建经验,docker容器确实更方便一些。

在之前的搭建环境过程中使用方法1遇到很多问题(包括版本的兼容,stf下载不下来,权限等问题),推荐使用方法2搭建环境。本手册介绍的是方法2.

Docker的简介和安装

Docker的简介

Docker的三大核心概念:

镜像、容器、仓库

镜像:类似虚拟机的镜像、用俗话说就是安装文件。

容器:类似一个轻量级的沙箱,容器是从镜像创建应用运行实例, 
可以将其启动、开始、停止、删除、而这些容器都是相互隔离、互不可见的。

仓库:类似代码仓库,是 Docker集中存放镜像文件的场所。

Docker 的安装之 Firstblood

在 Ubuntu 系统下打开终端 分别使用如下几条命令:

uname -r  // 查看版本su  // 切换rootapt-get update  // 更新配置apt-get install -y docker.io  // 安装dockerservice docker start // 启动docker服务

  • 1

  • 2

  • 3

  • 4

  • 5

检查是否安装成功 docker version 看到如下信息,恭喜你,安装成功!!!

STF相关镜像的拉取

获取镜像

在Ubuntu系统下打开终端 分别使用如下几条命令:

docker pull openstf/stf:latest  // 拉取stf镜像docker pull sorccu/adb:latest  // 拉取adb镜像docker pull rethinkdb:latest  // 拉取rethinkdb数据库镜像docker pull openstf/ambassador:latest  // 拉取ambassador镜像docker pull nginx:latest  // 拉取nginx镜像

  • 1

  • 2

  • 3

  • 4

  • 5

举几个截图的例子:

检测镜像

输入命令:

docker images  // 查看所有镜像

  • 1

启动STF容器

接着在终端 分别使用如下几条命令:

启动容器

1. 首先启动一个数据库:

docker run -d --name rethinkdb -v /srv/rethinkdb:/data --net host rethinkdb rethinkdb --bind all --cache-size 8192 --http-port 8090

  • 1

其中860e60ac3c44d14f76ae6c1efb77d20c1d058c178512934cedbb3985f8f13e66 是从容器的 id 号,每个容器的id号是唯一的。

2. 然后启动adb service

docker run -d --name adbd --privileged -v /dev/bus/usb:/dev/bus/usb --net host sorccu/adb:latest

  • 1

3. 最后启动stf

docker run -d --name stf --net host openstf/stf stf local --public-ip 192.168.228.129

  • 1

其中 ip 填写你自己本地的 ip地址。 
查看ip ifconfig

查看镜像

可以查看启动起来的镜像:

docker ps

  • 1

打开地址

使用浏览器打开如下地址:http://192.168.228.129:7100/#!/devices

这时候会看到一个登录页面,至此 环境搭建成功。 
账号和邮箱不需要注册,按照规则输入 即可。 
进入页面。

点击use,可以操控手机: 
可以使用adb命令来操作手机。 
可以查看log日志等。 
在这个界面中,开发者就可以根使用模拟器一样来操作远程设备了。唯一不同的是,这个是真实的设备而不是模拟器。国内很多测试公司头提供了这样的服务。 
这些服务商提供的功能大同小异,但是公网的云测试服务完全依赖于网速,其画面的流畅度远不及内网 Open-STF 方案。

踩坑

相关资源被锁

安装更新的时候提示相关资源被锁,无法下载更新 使用如下命令进行解锁

sudo rm /var/cache/apt/archives/locksudo rm /var/lib/dpkg/lockroot权限下可以不用sudo

  • 1

  • 2

  • 3

STFService disconnect

搭建好系统之后 插入手机,打开 http://192.168.228.129:7100/#!/devices ,然后查看找到了设备,状态先是prepare 然后过了几秒又 disconnect了。切换了 火狐 google浏览器也是这样的问题。

最后通过查看log:

INF/device:plugins:service 3434 [621QECQT4RS7A] Launching service FTL/device 3434 [621QECQT4RS7A] Setup had an error Error: Service had an error: "Error: Not found; no service started."INF/device:resources:service 3566 [621QECQT4RS7A] Checking whether we need to install STFService

  • 1

  • 2

  • 3

提示手机端的 stfservice 没有启动起来。(就是有些手机不允许直接启动 service,因此我们如果按照如下步骤是不能达到目的的) 
启动手机端的 service 然后就可以连接ok。

与之相关

分享我学习 Androd 开发过程中写的小项目

力荐!Python的14张思维导图

使用 Router 实现的模块化,如何优雅的回到主页面

END
(0)

相关推荐

  • CentOS7上Docker搭建OpenStf环境

    应用场景: 开始了解stf主要源自于当前移动端自动化过程中,发现执行机器上挂载的移动设备监控起来比较麻烦,有时候报错或调试需要跑到执行机所在的位置查看运行情况,有没有一种办法可以直接在自己位置上就能看 ...

  • docker学习前述

    什么东西都不懂直接来学习docker是有点难的,学习docker需要哪些技术基础做支撑? Linux(相关常用的命令要会) springboot docker学习大纲如下: Docker概述 Dock ...

  • 第10讲:架构的演进之路与前沿技术

    本课时会讲解分布式系统架构以及面试中做项目介绍的技巧,重点有如下三部分. 介绍系统架构的演进:包括微服务架构.云原生以及业界最新趋势 ServiceMesh. 讲解微服务的基础知识点:Docker 和 ...

  • iTOP3399开发板Android应用开发环境搭建-安装AndroidStudio(一)

    配 套 资 料 在 网 盘 资 料 的 " iTOP-3399 开 发 资 料 汇 总 ( 不 含 光 盘 资 料 ) \06_iTOP-3399 开 发 板Androidstudio\安装 ...

  • 单机版App Inventor学习环境搭建

    除了基于网络的App Inventor开发环境,我们还可以在本地电脑上搭建自己独自使用的App Inventor开发环境. 在下面这个网站下载App Inventor 单机汉化版 和 AI伴侣64位桌 ...

  • 安卓(Android)手机安装Linux 系统并搭建 jdk 环境与tomcat 服务器

    一.安装Aid Learning(手机App ) 1.Aid Learning 描叙 这是非常好玩的一个APP,Aid Learning FrameWork是一个在Android手机上构建了一个带图形 ...

  • android环境搭建!2021年抓住金三银四涨薪好时机,架构师必备技能

    开头 在我认为,对于Android面试以及进阶的最佳学习方法莫过于刷题 博客 书籍 总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现面试并不难,其次就是在刷题 ...

  • 汇编环境搭建 -- MASM32

    背景 当自己想使用C语言开发一个编译器的时候,需要将文本内容转换为汇编语言,此时需要我们对汇编语言具有一定了解及简单编写程序,否则无法继续进行编译器的编写. 开发工具 此处使用MASM32开发工具,当 ...

  • 每日一课 | Python 开发环境搭建及预备知识

    今天 Python大本营每日一课 大家好,我是营长,上期营长分享了数据科学"的知识点:,不清楚的小伙伴可戳这

  • Android App 技能在DuerOS的调试方法

    [引子]DBP(DuerOS Bot Platform)一直致力于构建健康高效的DuerOS生态系统,调试是开发者在开发DuerOS技能中不可或缺的重要环节,DBP如何进一步提升DuerOS 安卓Ap ...

  • 内网基础知识及域环境搭建

    前言 民国三年等不到一场雨,此生等不到表哥一句我带你. 目录 * 1.工作组 * 2.域 * 3.活动目录 * 4.安全域的划分 * 5.域中计算机的分类 * 6.域内权限 * 7.A-G-DL-P策 ...

  • 避坑!用 Docker 搞定 PHP 开发环境搭建(Mac、Docker、Nginx、PHP

    文章版本:2019.8 本文转载自:https://learnku.com/articles/31344 本次更新主要是对环境版本进行了更新,例如 php 7.3.7 升级到了 7.3.8,另外之前的 ...