工矿自动化

软件测试 | APP测试——Appium 自动化测试框架的初

来源:工矿自动化 【在线投稿】 栏目:综合新闻 时间:2021年10月29日 08:14:11
 

嘿。大家好,我是测试猿4U:

随着移动终端的普及,手机应用越来越多,也越来越重要。而作为测试袁的我们也要与时俱进,努力学习手机App的相关测试,本章将介绍手机自动化测试框架Appium。那究竟什么是 Appium呢? 接下来我们一起来学习Python+Selenium做自动化测试。

Appium 概述

Appium 基本概念

好了废话不多说,开始每日课程吧!

学测试,领资料,寻知音,经验交流,关注领取

一、Appium 概述

(1) 什么是 Appium:

  • appium 是开源的移动端自动化测试框架;
  • appium 可以测试原生的、混合的、以及移动端的 web 项目;
  • appium 可以测试 ios,android 应用(当然了,还有 firefox os);
  • appium 是跨平台的,可以用在 osx,windows 以及 linux 桌面系统上。

(2) Appium 的哲学:

  • 不需要为了自动化而且重新编译或修改测试 app;
  • 不应该让移动端自动化测试限定在某种语言和某个具体的框架;也就是说任何人都可以使用自己最熟悉最顺手的语言以及框架来做移动端自动化测试;
  • 不要为了移动端的自动化测试而重新发明轮子,重新写一套惊天动地的 api; 也就是说 webdriver 协议里的 api 已经够好了,拿来改进一下就可以了;
  • 移动端自动化测试应该是开源的。

(3) Appium 设计思想:

  • 首先,为了能够实现哲学里描述的第 2 条,也就是不应该让移动端自动化测试限定在某种语言和某个具体的框架;也就是说任何人都可以使用自己最熟悉最顺手的语言以及框架来做移动端自动化测试; appium 选择了client-server 的设计模式。只要 client 能够发送 http 请求给 server,那么的话 client 用什么语言来实现都是可以的,这就是 appium 及 webdriver 如何做到支持多语言的;
  • 其次,为了能够实现不要为了移动端的自动化测试而重新发明轮子,重新写一套惊天动地的 api;也就是说 webdriver 协议里的 api 已经够好了,拿来改进一下就可以了;这个思想,appium 扩展了 webdriver 的协议,没有自己重新去实现一套。这样的好处是以前的 webdriver api 能够直接被继承过来, 以前的 webdriver 各种语言的 binding 都可以拿来就用,省去了为每种语言开发一个 client 的工作量;
  • 最后 appium 当然是开源的,这也实现了哲学思想里的最后一点。

(4) Appium 优点:

  • 支持语言:java ,python,node.js,c#,php,perl,ruby;
  • 支持 android 和 ios;
  • 支持跨应用。

(5) Appium 特点:

  • 跨架构,native hybrid webview
  • 跨设备,android ios firefoxos
  • 跨语言,java python ruby nodejs php
  • 跨 app, 可以在多个 app 之间交互
  • 不依赖源代码
  • 不限制测试框架和平台

(6) Appium 架构:

  • Android 上使用了 instrumentation 和 uiautomator 两套技术
  • Appium 在 4.1 以上使用 uiautomator
  • 4.1 以下使用 selendroid
  • iOS 使用 uiautomation
  • 支持 firefox

Appium 在 IOS 上的架构:

Appium 在 IOS 上的架构:

Appium 在 Andiord 上的架构:

Appium 在 Andiord 上的架构:

二、Appium 基本概念

(1) Client/Server Architecture:

appium 的核心其实是一个暴露了一系列 REST API 的 server。这个 server 的功能其实很简单:监听一个端口,然后接收由 client 发送来的 command。翻译这些 command,把这些 command 转成移动设备可以理解的形式发送给移动设备,然后移动设备执行完这些 command 后把执行结果返回给 appium server,appium server 再把执行结果返回给 client。

在这里 client 其实就是发起 command 的设备,一般来说就是我们代码执行的机器,执行 appium 测试代码的机器。狭义点理解,可以把 client 理解成是代码,这些代码可以是 java/ruby/python/js 的,只要它实现了 webdriver 标准协议就可以。

这样的设计思想带来了一些好处:

  • 可以带来多语言的支持;
  • 可以把 server 放在任意机器上,哪怕是云服务器都可以;(是的,appium 和 webdriver 天生适合云测试)。