51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1757|回复: 1
打印 上一主题 下一主题

Appium 框架的功能

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-3-14 14:54:39 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
(1)支持iOS、Android,可在多台机器上并行App 自动化,测试机型适配。
(2)代码实现关键字驱动:

测试集:关联Excel 测试用例和脚本配置。
测试数据:Excel 存储输入数据、控件元素、测试结果。
测试脚本:由Java 和TestNG 编写,分层结构有case、log、config、report 以及data 等。
(3)自动测试用例执行:

从功能测试用例中抽取需重复执行的、主要的功能进行用例覆盖。
支持用例failed(失败)时自动截屏。
failed(失败)用例自动重复执行数遍。
(4)持续集成环境Jenkins,定时自动构建和执行测试任务。

测试结果报告展示,自动邮件展示。
Appium 自动化测试一个App 的基本过程如下:

测试App 的基本过程
  基于Appium 自动化测试框架,我们要进行的是连接电脑、连接手机、解锁、安装App、卸载App、
启动App、元素定位、元素的操作、屏幕的操作、页面等待、异常处理截图、数据校验、日志、报告
等一系列自动化测试执行的详细过程。
Appium 自动化框架元素控件的捕获,根据捕获到的元素控件进行相应的操作。
  Appium 元素控件有多种定位方法,最常用的是元素的ID(即By.id)和元素的值(即By.name)
。还可以通过元素类型TagName、元素的位置XPath、手机设备的坐标等进行定位操作。安卓的元素
控件可以通过SDK 中的uiautomatorviewer.bat 文件进行录制和捕获定位,如下图所示。




  上图中,Node Detail 下面的resource-id com.test.seller:id/phone_edit1 对应Excel 和代码中的定
位方法By.id,控件元素数据text 13798359580 对应Excel 和代码中的操作方法sendkeys(),控件元素
赋值数据为13798359580。
  可以这样理解:首先找到这个文本框,接着给这个文本框输入数据。即通过ID属性值com.test.s
eller:id/phone_edit1,找到此用户名文本框的控件元素,然后通过sendkeys()方法输入用户名数据13
798359580 到此用户名文本。其他自动化测试步骤的定位方法、控件元素以及操作方法也都与此类
似。实际上,自动化测试就是通过程序代码来实现模拟手动测试去操作一遍的过程。
  上面介绍了用户名文本框输入用sendkeys()方法,那么其他元素的操作方法有哪些呢?元素操作
方法大致有单击(click)、输入(sendkeys)、元素滑动 、页面滑动、长按、下拉、弹出、屏幕放
大缩小等,最常用的就是单击和输入。
  数据校验。其实元素本身就是数据校验,当程序找不到元素时,用例就会失败。
  另外,测试用例时可以加入一个或多个断言进行验证数据,还可设置步骤等待延迟时间。
  测试结果。测试用例中记录了运行后的测试结果,如pass、failed 或是skip。(此部分会在《软
件自动化测试开发》第4章中进行详细讲解)

Appium 介绍(参考Appium 官方资料)
  Appium 是一个移动端自动化测试开源工具,支持iOS 和Android 平台,支持Python、Java 等语
言,即同一套Java 或Python 脚本可以同时运行在iOS 和Android平台。
  Appium 是跨平台的,即可以针对不同的平台用一套API 来编写测试用例。
  Appium 是一个C/S 架构,核心是一个 Web 服务器,它提供了一套 REST 的接口。当收到客户
端的连接后,就会监听到命令,然后在移动设备上执行这些命令,最后将执行结果放在 HTTP 响应
中返还给客户端。

Session
  自动化始终围绕一个Session(会话)进行。客户端初始化一个Session 来与服务端交互,不同的
语言有不同的实现方式,但是它们最终都是发送一个POST 请求给服务端,请求中包含一个JSON 对
象,其被称作“Desired Capabilities”。此时,服务端就会开启一个自动化的 Session,然后返回一个S
ession ID,Session ID 将会被用户发送后续的命令。

Desired Capabilities
  Desired Capabilities 是一些键值对的集合(比如一个 map 或者 hash)。客户端将这些键值对发
送给服务端,告诉服务端我们想要怎样测试。比如,我们可以把platformName capability 设置为 iO
S,告诉Appium 服务端,我们想要一个iOS 的session,而不是一个 Android 的session。

Appium Server 服务端
  Appium Server 是用 Node.js 写的,我们既可以用源码编译,也可以从 NPM 直接安装。
  Appium 服务端有很多语言库,如 Java、Ruby、Python、PHP、JavaScript 以及C#等,这些库
都实现了 Appium 对 WebDriver 协议的扩展。当使用 Appium 的时候,你只需使用这些库代替常规
的 WebDriver 库就可以了。

Appium Clients 客户端
  此客户端的概念不是我们传统意义上的客户端,更好的理解方式是一个扩展的WebDriver 协议
库,当你用自己喜欢的语言写case 时,会将该语言扩展的WebDrvier库添加到自己的环境中,这时
你可以把它理解为这就是个客户端。
  Appium Clients 客户端的安装包如下。
  Mac 机器上直接运行Appium.dmg;Windows 机器上运行Appium.exe。

Appium Android/iOS 工作原理
  API 接口调用Selenium 的接口,Appium Server 接收WebDriver 标准请求,解析请求内容,调用
对应的框架响应操作。代码将DesiredCapability 中的键值对组合成一个JSON,然后通过HTTP 协议发
送到Appium服务器创建一个session。代码与Appium的所有交互都是围绕着这个session 进行的。se
ssion 创建成功后,Appium 再通过USB接口与手机之间创建TCP 连接,先安装一些服务端App,比
如Android API 4.2+是uiautomator,Android 2.3+是Instrumentation;如果是iOS,则是UiAutomatio
n。手机的操作都是由Appium 发送指令到uiautomator,然后再由uiautomator 进行控制的。
  Appium 原理图如下。

  Appium 的核心是一个遵守REST 设计风格的Web 服务器,它接收客户端的连接和命令,在手机
设备上执行命令,然后通过HTTP 的响应收集命令执行的结果。这种架构给我们提供了很好的开放特
性:只要某种语言有HTTP 客户端的API,我们就可以通过这个语言写自己的测试代码。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-26 07:42 , Processed in 0.064058 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表