APP测试,顾名思义就是针对手机中的APP进行的测试工作。它和Web端的测试流程类似,具体如下:
(1)需求分析
(2)指定测试计划
(3)设计测试用例
(4)执行测试用例
(5)记录和跟踪bug情况
(6)验收测试
(7)生成测试报告
(8)用户体验分析
(9)软件发布上线
APP测试类型主要有以下三种类型。
1.Web App测试(移动浏览器应用)
从本质上说,Web App测试就是对App内置的Web浏览器进行测试。所有适用于Web测试的方法都适用于这种类型的App测试。
2.Native App测试(原生应用)
针对原生应用的测试,不同的操作系统平台使用的测试方式是不同的。IOS一般采用XCUITest Driver,Android一般采用UiAutomator 2或者Espresso等工具。
3.Hybird App测试(混合应用)
混合APP针对应用的不同部分。
2.Appium架构原理(pycharm中的程序代码通过python库打包成请求发送给appium服务器经过处理后再找到模拟器某个软件进行响应操作,再把结果返回给appium服务器再返回到pycharm中)(appium桌面版相当于服务器,python库相当于客户端)
Appium是在手机操作系统自带的测试框架基础上实现的,Android和iOS的系统上使用的工具分别如下:
Android(版本>4.2):UIAutomator, Android 4.2之后系统自带的UI自动化测试工具。
iOS:UIAutomation, iOS系统自带的UI自动化测试工具。
Appium的架构原理如图所示,由客户端(Appium Client)和服务器(Appium Server)两部分组成,客户端与服务器端通过JSON Wire Protocol进行通信。
在这里插入图片描述
Appium服务器:Appium服务器是Appium框架的核心。它是一个基于Node.js实现的HTTP服务器。Appium服务器的主要功能是接受从Appium客户端发起的连接,监听从客户端发送来的命令,将命令发送给bootstrap.jar(iOS手机为bootstrap.js)执行,并将命令的执行结果通过HTTP应答反馈给Appium客户端。
Bootstrap.jar:Bootstrap.jar是在Android手机上运行的一个应用程序,它在手机上扮演TCP服务器的角色。当Appium服务器需要运行命令时,Appium服务器会与Bootstrap. jar建立TCP通信,并把命令发送给Bootstrap.jar; Bootstrap.jar负责运行测试命令。
Appium客户端:它主要是指实现了Appium功能的WebDriver协议的客户端Library,它负责与Appium服务器建立连接,并将测试脚本的指令发送到Appium服务器。现有的客户端Library有多种语言的实现,包括Ruby、Python、Java、JavaScript(Node. js)、Object C、PHP和C#。Appium的测试是在这些Library的基础上进行开发的。
Session:Appium的客户端和服务端之间进行通信都必须在一个Session的上下文中进行。客户端在发起通信的时候首先会发送一个叫作“Desired Capabilities”的JSON对象给服务器。服务器收到该数据后,会创建一个session并将session的ID返回到客户端。之后客户端可以用该session的ID发送后续的命令。
Desired Capabilities:Desired Capabilities是一组设置的键值对的集合,其中键对应设置的名称,而值对应设置的值。Desired Capabilities主要用于通知Appium服务器建立需要的Session,其中一些设置可以在Appium运行过程中改变Appium服务器的运行行为。
Appium在Android上基于UIAutomator实现了测试的代理程序(Bootstrap.jar),在iOS上基于UIAutomation实现了测试的代理程序(Bootstrap.js)。当测试脚本运行时,每行WebDriver的脚本都将转换成Appium的指令发送给Appium服务器,而Appium服务器将测试指令交给代理程序,将由代理程序负责执行测试。比如脚本上的一个点击操作,在Appium服务器上都是touch指令,当指令发送到Android系统上时,Android系统上的Bootstrap.jar将调用UIAutomator的方法实现点击操作;而当指令发送到iOS系统上时,iOS的Bootstrap.js将调用UIAutomation的方法实现点击操作。由于Appium有了这样的能力,同样的测试脚本可以实现跨平台运行。
SDK环境搭建
查看SDK是否已装好:
夜神模拟器如何连接上电脑?
夜神模拟器在设置关于电脑的版本号中连续点击可以开启开发者模式。
电脑连接模拟器以及检查是否连接上:
实战步骤:
获取模拟器当前界面名称及包名:adb shell dumpsys window|findstr mCurrentFoucs
Remote方法:通过Remote这个方法打包成请求发送给服务器
定位元素的两种方式:
appium中的放大镜图标中所填的配置信息和SDK中F:\soft_test\Soft\android_sdk_test\tools的F:\soft_test\Soft\android_sdk_test\tools的uiautomator文件(比较推荐使用uiautomator)。
点击uiautomator的左上角图标的第二个图标可实时到模拟器当前页面(注意:pycharm和appium的配置信息都要重新填写才可定位到目标元素)
总结:
pycharm中的配置信息通过Remote方法打包成请求发送给appium服务器收到该数据后会创建一个session并将session的ID返回到客户端,也就是pycharm,之后客户端(pycharm)可以用该session的ID发送后续的命令,比如定位元素后进行滑动、点击、拖拽、发送等动作的执行,已达到完成测试用例的操作。
需要注意的是:
pycharm的py文件写的配置信息需要和appium的配置信息一致。
定位元素推荐使用SDK的uiautomator来定位模拟器当前页面的元素。(有id就用id定位若没有再用xpath等,xpath利用属性等于某值的方式来定位。//*表示找到所有的元素)
自动化测试代码要做到的就是有很强的复用性,比如一套登录的代码写完它不止可以用在qq的登录,也可以用在微信、网易云、qq邮箱、qq音乐等等。
对于有可变参数的部分,比如配置信息可以单独写个配置文件,为了保证在测试别的设备,需要修改配置信息时错把业务功能给改了。比如yaml文件就是专门储存可变参数的文件。
小知识点:
1.JDK是Java Development Kit 的缩写,中文称为Java开发工具包,由SUN公司提供。它为Java程序开发提供了编译和运行环境,所有的Java程序的编写都依赖于它。使用JDK可以将Java程序编写为字节码文件,即.class文件。
JDK有三个版本,分别是:
(1)J2SE: 标准版,主要用于开发桌面应用程序。
(2)J2EE: 企业版,主要用于开发企业及应用程序,如电子商务网站,ERP系统等。
(3)J2ME: 微缩版,主要用于开发移动设备、嵌入式设备上的Java应用程序。
2.什么是SDK?(百度百科)
软件开发工具包(缩写:SDK、外语全称:Software Development Kit)一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。
ps:SDK 一般是指windows sdk;
SDK 和 API 有什么区别?
在开发中如果对方给你提供一个接口,这就是API;
开发中如果是一个工程提供另一个工程接口,这就是SDK;(一个软件工程中提供另一个软件的接口?)
SDK 和 java JDK有什么区别?
JAVA JDK 是 sdk 的一个子集,sdk 更加的广泛包含的更大。
JDK:Java Development Kit,中文译为Java开发工具包
SDK本质是什么?
开发工具的集合,SDK编程就是直接用windows API进行编程。
SDK最核心的是什么?
API、动态链接库、导入库
3.adb即安卓平台调试桥,是连接Android手机和PCU端的桥梁。可以通过adb进行管理、操作模拟器和设备。
4.什么是 NPM
npm 之于 Node.js ,就像 pip 之于 Python, gem 之于 Ruby, pear 之于 PHP 。
npm 是 Node.js 官方提供的包管理工具,他已经成了 Node.js 包的标准发布平台,用于 Node.js 包的发布、传播、依赖控制。npm 提供了命令行工具,使你可以方便地下载、安装、升级、删除包,也可以让你作为开发者发布并维护包。
5.什么是Selenium WebDriver
Selenium WebDriver是①一种用于web应用程序的自动化测试工具,②它提供了一套友好的API。(API:应用编程接口说明;webDriver类库内封装了非常多的方法。)③webDriver完全就是一套类库,不依赖于任何测试框架,除了必要的浏览器驱动。
Selenium Webdriver是通过各种浏览器的驱动(web driver)来驱动操作浏览器,成功后会返回一个WebDriver实例对象,通过它的方法,可以控制浏览器,通过元素定位,driver找到该元素的话,就会返回一个该元素的WebElement对象,然后再调用它的方法,就可以对其进行操作了,比如输入内容,点击按钮等。
部分内容参考:
Appium简介_xingditu的博客-CSDN博客_appium简介
版权归原作者 软测小努力 所有, 如有侵权,请联系我们删除。