万物科技 学,以致用

7. 测试前准备

2017-02-28
Geng

我们已经熟悉了持续集成的总体概念和其核心控制器Jenkins的基本使用方法,下面就要开始真正测试的工作了。

首先我们会选取一个合适的测试框架,我们选用了Appium。然后介绍Appium的安装和基础。最后初步配置一下自动化测试环境

2017.04.09更新 – appium desktop

测试框架选择

目前测试框架有很多,iOS有自己的官方测试框架,Android也有自己官方的测试框架。为了测试iOSAndroid两种平台,如果我们使用官方框架,势必造成学习成本升高,工作量加大的问题。所以,采用第三方通用测试框架,将是一种比较合适的选择。

第三方框架也有很多,开源的,免费的也不少。比较常用的有两个,一个是Appium,一个是Calabash

他们对两种平台的接口基本一致,维护成本低,而且支持常用的PythonRuby

我个人比较喜欢Calabashcucumber风格,但是因为使用的人少,不方便后期工作的展开,所以还是选择了Appium

Appium

它同时支持iOSAndroidH5的测试,我们可以使用一种API针对两种平台写测试,这样的好处就是代码通用性较高,节省测试成本。

Appium相对于其他第三方测试框架的一个优点就是它不需要对App重新编译。这意味着我们不需要访问源代码。

Appium哲学

  1. 采用Appium时,无需对被测应用做任何修改,也无需嵌入任何东西;
  2. 不必限制于使用特定编程语言。你可以选择很多语言,比如:Ruby, Python, Java, Node.js, Objective-C, PHP and C#。
  3. 不必重新造轮子。AppiumiOSAndroid的原生自动化测试框架进行了封装,并提供了统一的API(WebDriver API),减少了自动化测试代码的维护工作量和学习成本;
  4. 开源。

Appium采用Client-Server的架构设计,并采用标准的HTTP通信协议;Server端负责与iOS/Android原生测试框架交互,无需测试人员关注细节实现;Client端基本上可以采用任意主流编程语言编写测试用例,减少了学习成本。

关于Appium的设计哲学及如何实现这些思想,建议阅读这份官方文档(这个是英文版,虽然有中文翻译版本,但是不够新,所以这里给出的英文版链接)

准备测试

Appium最近出了一款新的桌面版本,Appium Desktop。它为Appium Servier提供了全新的图形界面,我们以后将主要使用它来进行我们的工作。它包括:

  • Appium Servier图形界面。内部集成了Node,不再需要单独安装Node。
  • 一个Inspector,用来查看应用的元素,和应用交互等。

可以进入下载页下载。

环境要求

关于各种环境的具体要求,随着时间流逝,肯定是不一样的,可以去官网查看最新的要求

iOS环境

Appium中测试iOS时,依赖于Apple开发环境,因此,在运行Appium之前需要先确保如下环境安装正确。

  • Mac OS X 10.10 or higher, 10.11.1 recommended
  • XCode >= 6.0, 7.1.1 recommended
  • Apple Developer Tools (iPhone simulator SDK, command line tools)

Android环境

  • Android SDK API >= 17 (Additional features require 18/19)
  • Appium supports Android on OS X, Linux and Windows.

版本选择(和Appium desktop无关)

尤其版本进化速度很快,安装包很可能不能跟上时代,所以建议大家仔细查看安装的版本。现在(2017.03)在Mac平台上,最新的安装包是1.5.3,但最新版已经1.6.3了。

为什么不能用旧版呢?因为苹果把测试底层代码改了,旧版还用的是旧的API,不用新版不能测了。。。

如果能用安装包,建议还是使用安装包安装,因为它提供一个Inspector功能,可以调用模拟器运行被测应用程序,并且可以很方便地在预览页面中查看UI元素的层级结构和详细控件属性,极大地提高编写测试脚本的效率。

开始安装

非Appium desktop,安装Appium

根据前面的介绍,Appium采用Client-Server的架构设计,因此安装Appium时需要分别安装Server部分和Client部分。

首先,如果没有安装node,需要先安装node(Appium desktop不需要安装这个)

brew install node

使用安装包安装太简单了,我都不好意思写那么多,所以就不写了,不过对于新手,安装吧,不要管是不是最新版,下载你能下载到的最新版就好,好处下一部分会讲到。下面介绍下命令行安装:

$ npm install -g appium  # 安装 appium server
$ npm install wd         # 安装 appium client (WebDriver/Selenium 2 node.js client)
$ appium                # 启动 appium

为了确保环境正确,可以使用appium-doctor来确保:

$ npm install -g appium-doctor    #安装
$ appium-doctor

如果安装$ npm install wd出现如下错误:

ENOENT: no such file or directory, open '/Users/yourname/package.json'
npm WARN EPACKAGEJSON /Users/yourname No description
npm WARN EPACKAGEJSON /Users/yourname No repository field.
npm WARN EPACKAGEJSON /Users/yourname No README data
npm WARN EPACKAGEJSON /Users/yourname No license field.

那么首先需要先用npm init初始化生成package.json文件,再安装。

安装完后,使用appium-doctor来确定环境设置合适

$ npm install -g appium-doctor
$ appium-doctor

使用appium-doctor来进行验证环境

一般可能会有java和Android的一些配置问题,iOS方面很少出现问题,比如:

WARN AppiumDoctor  ✖ ANDROID_HOME is NOT set!
WARN AppiumDoctor  ✖ JAVA_HOME is NOT set!
WARN AppiumDoctor  ✖ adb could not be found because ANDROID_HOME is NOT set!
WARN AppiumDoctor  ✖ android could not be found because ANDROID_HOME is NOT set!
WARN AppiumDoctor  ✖ emulator could not be found because ANDROID_HOME is NOT set!

可以参考下面配置,将它们写入你的”.bashrc”:

export PATH=${JAVA_HOME}/bin:$PATH

export JAVA_HOME=$(/usr/libexec/java_home)
export ANDROID_HOME=/Users/你的名字/Library/Android/sdk

最后结果如果是下面这样,说明一些环境准备就绪了:

info AppiumDoctor ### Diagnostic completed, no fix needed. ###
info AppiumDoctor
info AppiumDoctor Everything looks good, bye!
info AppiumDoctor

Appium desktop安装

直接下载最新的版本,安装即可。Mac版本记得将应用拖入Application文件夹。 如果有问题,可以采用上一部分介绍的使用appium-doctor方法检查问题。

客户端测试语言及安装

Appium项目已经针对众多主流的编程语言,将底层协议处理相关的工作封装为Library,通过调用这些Library,可以极大地简化我们编写测试用例的工作量。 选定编写测试用例的语言后,我们就可以针对性地进行安装Library

首先,我们今后会涉及到Python和ruby。如果没有安装,运行下列命令(这些不是很好的安装这两种语言的方法,想要了解怎么样更好,请自行搜索):

brew install python
brew install python3
brew install ruby

如果选择Ruby语言,那么需要安装的Library就是appium_lib,安装方式如下:

$ gem install appium_lib

如果选择Python语言,那么需要安装的Library就是Appium-Python-Client,安装方式如下:

$ pip install Appium-Python-Client

对于其它编程语言,请自行参考官方文档


下一篇 1. 编程与Swift

Comments

你可以请我喝喝茶,聊聊天,鼓励我

Wechat Pay
wechat

Thanks!