软件测试 | APP测试 —— Appium 自动化测试框架的初识与学习要领

在这里插入图片描述
随着移动终端的普及,手机App应用越来越多,也越来越重要。而作为测试袁的我们也要与时俱进,努力学习手机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 上的架构:

软件测试 | APP测试 —— Appium 自动化测试框架的初识与学习要领_第1张图片

Appium 在 Andiord 上的架构:

软件测试 | APP测试 —— Appium 自动化测试框架的初识与学习要领_第2张图片

二 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 天生适合云测试)。

(2) Session:

session 就是一个会话,在 webdriver/appium,你的所有工作永远都是在session start 后才可以进行的。一般来说,通过 POST /session 这个 URL,然后传入 Desired Capabilities 就可以开启 session 了。

开启 session 后,会返回一个全局唯一的 session id,以后几乎所有的请求都必须带上这个 session id,因为这个 seesion id 代表了你所打开的浏览器或者是移动设备的模拟器。

进一步思考一下,由于 session id 是全局唯一,那么在同一台机器上启动多个 session 就变成了可能,这也就是 selenium gird 所依赖的具体理论根据。

Desired Capabilities Desired Capabilities 携带了一些配置信息。从本质上讲,这个东东是key-value 形式的对象。你可以理解成是 java 里的 map,python 里的字典,ruby 里的 hash 以及 js 里的 json 对象。

实际上 Desired Capabilities 在传输时就是json 对象。

Desired Capabilities 最重要的作用是告诉 server 本次测试的上下文。这次是要进行浏览器测试还是移动端测试?如果是移动端测试的话是测试android 还是 ios,如果测试 android 的话那么我们要测试哪个 app?server 的这些疑问 Desired Capabilities 都必须给予解答,否则 server 不买账,自然就无法完成移动 app 或者是浏览器的启动。

(3) Appium Server:

Appium Server 就是每次我们在命令行用 appium 命令打开的东西。

(4) Appium Clients:

由于原生的 webdriver api 是为 web 端设计的,因此在移动端用起来会有点不伦不类。appium 官方提供了一套 appium client , 涵盖多种语言ruby/java/python,在我看来 ruby client 是实现最好的。在测试的时候,一般要使用这些 client 库去替换原生的 webdriver 库。这实际上不是替换,算是client 对原生 webdriver 进行了一些移动端的扩展,加入了一些方便的方法, 比如 swipe 之类,appium client 让我们可以更方便的写出可读性更好的测试用例。

(5) Appium.app, Appium.exe:

appium server 的 GUI 版本,前者用在 osx 上,后者是 windows 上。可视化、不需要装 node,可以看 app 的 UI 结构是这个东东的卖点。

三 Appium 与 Selenium

Selenium2 又叫 Selenium Webdriver

Appium Clients 扩展了 Selenium 的 WebDriver API

Appium Server 实现了 Selenium 中存在的大 部分方法,它属于 Selenium 的第三方 webdriver

软件测试 | APP测试 —— Appium 自动化测试框架的初识与学习要领_第3张图片

软件测试 | APP测试 —— Appium 自动化测试框架的初识与学习要领_第4张图片

软件测试 | APP测试 —— Appium 自动化测试框架的初识与学习要领_第5张图片

学习appium最大的难处之一在于环境的安装,安装流程比较繁琐,安装的工具和步骤也较多,下一期我们来学习Appium的环境搭建。ok,今天我们的知识分享就到这里了

下面是一份配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
在这里插入图片描述
这些都可以以在公众号:伤心的辣条 ! 免费领取,还有一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中资料包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

学习不要孤军奋战,最好是能抱团取暖,相互成就一起成长,群众效应的效果是非常强大的,大家一起学习,一起打卡,会更有学习动力,也更能坚持下去。你可以加入我们的测试技术交流扣扣群:914172719(里面有各种软件测试资源和技术讨论)

喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!


好文推荐

转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!

面试经:一线城市搬砖!又面软件测试岗,5000就知足了…

面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…

什么样的人适合从事软件测试工作?

那个准点下班的人,比我先升职了…

测试岗反复跳槽,跳着跳着就跳没了…

你可能感兴趣的:(软件测试,程序员,IT,自动化,开发语言,python,测试工程师,软件测试)