2022年技术堆栈的最新头条工资增长-应用程序自动化测试概述

目录一. 应用背景二. 测试框架介绍1.Android自动化框架IOS自动化框架三. 测试流程与分类1.测试流程2.自动化测试分类四. 移动操作系统与app类型1.移动操作系统android2. app三种类型与区别2.1原生应用程序:(Native App)2.2混合应用程序(Hybrid App)2.3.Web版APP (Web App)2.4.Web App、Hybrid App、Native App 技术特性五. Android SDK 介绍概念下载安装Android SDK ManagerTools目录:Android SDK文件目录配置检测六. Android SDK 环境搭建

应用背景

随着移动互联网和智能设备越来越普及,移动App已经渗透到了我们的生活方方面面,比如出行、饮食、旅行、社交、金融等。

用户对App产品的质量和用户体验要求越来越高。因此很多互联网企业也因此开始对移动端产品质量越来越重视。但是App产品不断迭代更新,给测试人员也增加了测试工作量,特别是大量繁琐的回归测试。

自动化测试是应对产品不断迭代更新的辅助测试手段(主要是针对回归测试),最终目的是为了保证产品质量。

【文章末尾给大家留下了大量的福利】

测试框架介绍

1.Android自动化框架

工欲善其事必先利其器 ——《论语·卫灵公》1. InstrumentationInstrumentaion 是Android自带的一个测试框架,是很多其它测试框架的基础,可以在同进程中加载被测组件。它有很多丰富的高层封装,使用者可以使用基于instrumentation的其他框架,避免过多二次开发量。但Instrumentation不支持跨应用,导致基于instrumentation的框架都继承了这个缺点。2. RobotiumRobotium是基于Instrumentation框架开发的一个更强的框架. 对常用的操作进行了易用性的封装. 用于开发功能性、系统和验收测试场景。它运行时绑定到GUI组件。它安装了一个测试用例套件作为在Android设备或仿真器上的应用程序,并提供用于执行测试的真实环境。优点: 容易在最短的时间内编写测试脚本,易用性高。 自动跟随当前activity。 由于运行时绑定到GUI组件,所以相比Appium,它的测试执行更快,更强大。 不访问代码或不了解app实现,也可以工作。 支持Activities、Dialogs、Toasts、Menus、Context Menus和其他Android SDK控件。缺点: 不能处理flash和web组件。在旧设备上会变得很慢。 由于不支持iOS设备,当自动化测试同时覆盖 android与iOS的情况时,测试会被中断。 没有内置的记录和回放功能.,使用记录功能需要 TestDroid 和 Robotium Recorder 这样的收费工具。3. UIAutomatorUIAutomator是由谷歌提供的测试框架,它提供了原生Android app和游戏的高级UI测试。这是一个包含API的Java库,用来创建功能性UI测试,还有运行测试的执行引擎。该库自带Android SDK。优点:它在运行访问不同的进程时,会给JUnit测试案例特权。库由谷歌社区支持和维护。缺点:仅支持android 4.1(API level 16)及以上。 不支持脚本记录。 支持的重点是Java。 你不能获得当前活动或仪表化。 目前不支持web视图。 库仅支持使用Java,因此很难和使用Ruby的cucumber混合。如想支持BDD框架,建议使用Java自己的BDD框架,例如Jbehave。4. EspressoEspresso是Google的开源自动化测试框架。相对于Robotium和UIAutomator,它的特点是规模更小、更简洁,API更加精确,编写测试代码简单,容易快速上手。因为是基于Instrumentation的,所以不能跨App。5. CalabashCalabash是一个适用于iOS和Android开发者的跨平台app测试框架,可用来测试屏幕截图、手势和实际功能代码。Calabash开源免费并支持Cucumber语言,Cucumber能让你用自然的英语语言表述app的行为,实现BDD(Behavior Driven Development,行为驱动开发)。 Cucumber中的所有语句使用Ruby定义。优点: 有大型社区支持。 列表项 简单,类似英语表述的测试语句 支持在屏幕上的所有动作,如滑动,缩放,旋转,敲击等。 跨平台开发支持(同样的代码在Android和iOS设备中都适用)。缺点: 测试步骤失败后,将跳过所有的后续步骤,这可能会导致错过更严重的产品问题。测试耗费时间,因为它总是默认先安装app。 需要Calabash框架安装在ios的ipa文件中, 因此测试人员必须要有iOS的app源码。 除了Ruby,对其他语言不友好。6. AppiumAppium是一个开源的、跨平台的自动化测试工具,支持IOS、Android和FirefoxOS平台。 通过Appium,开发者无需重新编译app或者做任何调整,就可以测试移动应用,可以使测试代码访问后端API和数据库。它是通过驱动苹果的UIAutomation和Android的UiAutomator框架来实现的双平台支持,同时绑定了Selenium WebDriver用于老的Android平台测试。开发者可以使用WebDriver兼容的任何语言编写测试脚本,如Java, OC, JS, PHP,Python, Ruby, C#,Clojure 和Perl语言。7. SelendroidSelendroid 是一个基于Instrumentation的一个框架. 完全兼容Webdriver协议。 Selendroid 可以在模拟器和实际设备上使用,也可以集成网格节点作为缩放和并行测试。8. RobolectricRobolectric 是一款Android单元测试框架,但它并不依赖于Android提供的测试功能,它通过实现一套JVM能运行的Android代码,然后在unit test运行的时候去截取android相关的代码调用,然后转到Robolectric实现的代码(shadow objects)去执行这个调用的过程。因此它不像模拟器或设备需要dexing(Android dex编译器将类文件编译成Android设备上的Dalvik VM使用的格式)、打包、部署和运行的过程,大大减少了测试执行的时间。Pivotal实验室声称使用Robolectric可以在28秒内运行1047个测试。除了实现Android里面的类的现有接口,Robolectric还给每个Shadow类额外增加了很多接口,可以读取对应的Android类的一些状态。比如它为ImageView提供了getImageResourceId()方法,测试者可以通过getImageResourceId()接口来确定是不是正确显示了期望的Image。9. RoboSpockRoboSpock是一个开源的Android测试框架,它提供了简单的编写BDD行为驱动开发规范的方法,使用Groovy语言,支持Google Guice库。RoboSpock合并了Robolectic和Spock的功能。10. CafeCafe是百度出品的一个基于Robotium的测试框架,它提供了跨进程的测试解决方案。11. 其他其他自动化框架还有应用于稳定性测试的Monkey系列(Monkey, Monkeyrunner, MonkeyTalk), 其中MonkeyTalk 支持iOS 和 Android,它可以为应用进行真实的,功能性交互测试。MonkeyTalk 提供简单的 \”smoke tests\”,复杂数据驱动的测试套件。MonkeyTalk 支持原生,移动和混合应用,真实设备或者模拟器。MonkeyTalk 使得场景捕获非常容易,可以记录高级别,可读的测试脚本。还有适用于浏览器自动测试的Selenium WebDriver,可以真实测试用户行为,用户交互如触摸、手指滚动、长按等,还支持HTML5的一些特性,比如本地存储、session存储、应用缓存等。而CTS则是应用于兼容性测试的自动化工具, CTS大部分是基于Junit和仪表盘技术编写的。还扩展了自动化测试过程,可以自动执行用例,自动收集和汇总测试结果。CTS采用XML配置文件的方式将这些测试用例分组成多个测试计划(plan),第三方也可以创建自己的plan。总结(Android)各个测试框架的继承关系如下, 继承关系决定了有些框架的先天优势或先天不足。在实际应用中可以集成多个框架。基于Instrumentation的测试框架,比如Espresso,Robotium,Selendroid等,都不能支持跨APP使用。 如自动化测试中有跨APP操作,可以二次开发或者结合UiAutomator实现。 支持BDD的自动化框架比较少,可以在calabash 和 RoboSpock及Jbehave之间选择。 若想同时支持Android和IOS,可选框架有Appium和Calabash,或AthRun。 若为单元测试选择框架,可选Instrumentation或Robolectric。Robolectric实现了shadow object 类,耗时短。

IOS自动化框架

1. XCTestXCTest是苹果在iOS 7和Xcode5引入的一个简单而强大的测试框架,它的测试编写起来非常简单,并且遵循xUnit风格。XCTest的优点是与Xcode深度集成,有专门的Test导航栏,但因为受限于官方测试API,因此功能不是很丰富。2. UIAutomationUIAutomation是苹果提供的UI自动化测试框架,使用Javascript编写。基于UIAutomation有扩展型的工具框架和驱动型的框架。扩展型框架以JavaScript扩展库方法提供了很多好用js工具,注入式的框架通常会提供一些Lib或者是Framework,要求测试人员在待测应用的代码工程中导入这些内容,框架可以通过他们完成对app的驱动。驱动型UI Automation 在自动化测试底层使用了UI Automation库,通过TCP通信的方式驱动UI Automation来完成自动化测试,通过这种方式,编辑脚本的语言不再局限于JavaScript。3. FrankFrank是iOS平台一款非常受欢迎的app测试框架,它使用Cucumber语言来编写测试用例, Frank包含一个强大的“app inspector”–Symbiote,可以用它来获得运行中app的详细信息,便于开发者将来进行测试回顾。 它允许使用Cucumber编写结构化英语句子的测试场景。 Frank要求测试时在应用程序内部编译,这意味着对源代码的改变是强制性的。操作方式为使用Cucumber和JSON组合命令,将命令发送到在本地应用程序内部运行的服务器上,并利用UISpec运行命令。优点: 测试场景是在Cucumber的帮助下,用可理解的英语句子写的。 强大的Symbiote实时检查工具。 活跃的社区支持。 不断扩大中的库。缺点: 对手势的支持有限。 在设备上运行测试有点难。 修改配置文件需要在实际设备上运行。 记录功能不可用。4. KIFKIF是Keep It Functional项目的缩写,是一款iOS app功能性测试框架,使用Objective-C语言编写,对苹果开发者来说非常容易上手,更是一款开发者广为推荐的测试工具。KIF tester使用私有API来了解App中的视图层级。但缺点是运行较慢。5. SubliminalSubliminal是另一款与XCTest集成的框架。与KIF不同的是,它基于UIAutomation编写,旨在对开发者隐藏UIAutomation中一些复杂的细节。6. KiwiKiwi是对XCTest的一个完整替代,使用xSpec风格编写测试。 Kiwi带有自己的一套工具集,包括expectations、mocks、stubs,甚至还支持异步测试。它是一个适用于iOS 开发的Behavior Driven Development(BDD)库,优点在于其简洁的接口和可用性,易于设置和使用,非常适合新手开发者。Kiwi使用Objective-C语言编写,易于IOS开发人员上手。7.AppeckerAppecker是一款用于iOS系列系统的自动化测试框架,是腾讯的一个开源项目。Appecker采用Objective C为测试用例的开发语言, 完整支持iOS上的UI功能测试、单元测试并且可以良好地支持自动化运行。总结(IOS)IOS自动化测试框架继承关系如下。 XCTest与 Xcode 的 IDE 直接集成,使用简单, 但其不支持stub和mock, 所以单使用XCTest框架的较少。 Kiwi是一个iOS平台十分好用的行为驱动开发BDD的测试框架,有着非常漂亮的语法,可以写出结构性强,非常容易读懂的测试。 UI Automation是Apple官方提供的UI自动化测试的解决方法,但接口不够丰富。KIF、Frank、Calabash都是通过使用代码的形式来模拟事件触发,使得被测代码就像是由用户行为所触发的一样。但这样的代价是插入一个额外层的复杂度。 IOS测试框架中支持BDD的有calabash 和Kiwi。 可选用的单元测试框架有Kiwi,Specta,Quick等,而KIF,Subliminal和calabash更适用于UI级验收测试。

测试流程与分类

1.测试流程

需求分析:当给你一个需求或者一个系统让你去做自动化的时候你什么都不知道你就去做自动化能行吗?你不去分析系统的哪些模块儿适合做自动化哪些不适合 ?如果盲目的去做,当你做到后面的时候可能你框架还没弄好需求或者系统又变了,那你是否做了无用功?所以我们第一步一定是确定需求或者系统哪些模块适合做自动化,而且一定要明白这个需求或者系统做自动化给我们带来的好处是什么,而不是说为了自动化而做自动化。方案选择:有的人可能对选择方案会比较陌生,不知道这个到底是干什么的?那么问你一个很简单的问题,现在自动化测试框架常见的有robotium、appium、monkeyrunnner、UIAutomator等等,这么多的框架你到底选择哪一个呢?其实这就是一个方案的选择,那么有时候你也会根据你项目的需求去选择一个更加适合的框架,让我们这个需求实现利益最大化。环境准备这个最好理解,方案选择好之后就该准备环境了。这个环境不会像大家想的那样配置一个jdk、appium、ide就行了,你需要考虑的是appium的版本、持续集成、代码管理等等问题。系统设计系统设计主要是对整个测试框架系统进行合理的设计,比如各个公共模块的封装,不同模块的文件管理,配置数据和代码的分离、日志管理等等。就像工程建设实现都是经过严格的方案设计,然后根据设计方案进行施工。编码编码故名思意就是编写代码,这里我们的编写代码是根据事设计好的用例来进行编写代码。

2.自动化测试分类

分层测试测试金字塔分层一般为三层:底层单元测试、中间层为接口测试、顶层为UI层。测试人员一般是在UI层进行测试。移动APP的UI自动化测试长久以来一直是一个难点,难点在于UI的”变”, 变化导致自动化用例的大量维护。 从分层测试的角度,自动化测试应该逐层进行。 最大量实现自动化测试的应该是单元测试, 最容易实现也最容易在早期发现问题; 其次是接口级测试, 以验证逻辑为目的进行自动化, 由于接口的相对稳定, 自动化测试成本相对也可以接受; 自动化成本最大的便是UI级自动化测试, 然而UI界面是直接反馈给用户的效果展示,适度的尤其是BVT级的自动化测试也是非常必要的。

移动操作系统与app类型

1.移动操作系统android

Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导(2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟)及开发。Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Google收购注资。第一部Android智能手机发布于2008年10月。Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。2013年09月24日谷歌开发的操作系统Android在迎来了5岁生日,全世界采用这款系统的设备数量已经达到10亿台。随后2014国内也迎来的移动互联网的高潮,特别是O2O“千团大战”,打车出行软件补贴大战等等。

app三种类型与区别

2.1原生应用程序:(Native App)原生APP是什么?原生APP就是利用Android、iOS平台官方的开发语言、开发类库、工具进行开发。比如安卓的java语言,iOS的object-c 语言。在应用性能上和交互体验上应该是最好的。优点:1、可访问手机所有功能、可实现功能最齐全;2、运行速度快、性能高,绝佳的用户体验;3、支持大量图形和动画。不卡,反应快。4、比较快捷地使用设备端提供的接口,处理速度上有优势。缺点:1.在过去主要是成本高、周期长,Android和iOS都需要单独开发。2.更新版本需要重新下载安装包。2.2混合应用程序(Hybrid App)即利用了原生APP的开发技术还应用了HTML5开发技术,是原生和HTML5技术的混合应用。混合比例不限。优点:1、开发周期短;2、功能更新发布快;缺点:1、用户体验不如本地应用;2、性能稍慢(需要连接网络);2.3.Web版APP (Web App)本质就是浏览器功能的叠加,用普通Web开发语言开发的,通过浏览器运行。优势:1、支持范围广;2、开发成本低、周期短。缺点:1、对联网要求高,离线不能做任何操作;2、功能有限;3、运行速度慢,页面不能承载太多东西;4、图片和动画支持性不高;5、如果用户使用更多的新型浏览器,那么就会出现运行问题。2.4.Web App、Hybrid App、Native App 技术特性

手游app与手机App手游一般使用引擎开发,现在著名的有cocos2d和unity3d。两者都是使用引擎自带的语言进行开发,主流的分别是c++和c#,虽然在开发过程中也有按钮等控件的概念,但当运行时由引擎渲染后就变成了一副简单的图片:手机App一般使用Android SDK开发,使用Java编写。通过Android提供的服务,我们可以获取App当前窗口的视图信息,进而查找和操作按钮等控件,以完成自动化测试,如Uiautomator。这个过程是标准化的,从技术上来说没有任何难度,因此各个公司各个App自动化测试的方法都大同小异。

Android SDK 介绍

概念

SDK:(software development kit)软件开发工具包。被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。

因此,Android SDK 指的是Android专属的软件开发工具包。 来源:百度百科

下载安装

首先需要安装配置好jdk环境

C:\\Users\\Shuqing>java -version

java version \”1.8.0_05\”

Java(TM) SE Runtime Environment (build 1.8.0_05-b13)

Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode)

Android SDK包下载

官网下载:Download Android SDK – free – latest version

Android SDK Manager

安装后启动 SDK Manager.exe 程序就可以看到Android SDK Mannerger的主界面。

Tools目录:

Android SDK Tools(必须,只需下载一个版本,一般选最新版本):基础工具包,版本号带rc字样的是预览版。

Android SDK Platform-tools(必须,只需下载一个版本,一般选最新版本):从android2.3开始划出此目录,存放公用开发工具,比如adb、sqlite3等,被划分到了这里。

Android SDK Build-tools(必须,可以安装多个版本):Android项目构建工具。

Android xxx(API xx) 目录(可选的各平台开发工具):正在上传…重新上传取消

Documentation for AndroidSdk(可选):安卓开发者官网的一些离线文档,不过下载下来打开也很慢,后面会提供另外一个离线版。SDK Platform(必须):对应平台的开发工具,需要在哪个版本的平台下开发就下载哪个。Samples for SDK(可选,此项在高版本tools中已不提供,需要在IDE里通过Import Sample引入,当然也可以下载离线版):内置的安卓示例程序,推荐安装。Sources for Android SDK(可选):安卓API的源代码,推荐安装。ARM /Intel xxxx Image(可选):各个以Image结尾的东西是支持相应平台的模拟器,我们就把它想象成一个刷机包吧。(使用真机调试或使用其它模拟器的话不需要安装)

Extras目录(可选的扩展):

Android Support Repository(可选):主要是方便在gradle中使用Android Support Libraries,因为Google并没有把这些库发布到maven center或者jcenter去,而是使用了Google自己的maven仓库。Intel x86 Emulator Accelerator(HAXM installer)(可选):windows平台的Intel x86模拟器加速工具,配合Intel x86 atom/atom_64 System Image使用可加快模拟器的运行速度。

Android SDK文件目录

add-ons

这里面保存着附加库,第三方公司为android 平台开发的附加功能系统。比如GoogleMaps,当然你如果安装了OphoneSDK,这里也会有一些类库在里面。docs

这里面是Android SDKAPI参考文档,所有的API都可以在这里查到。extras

该文件夹下存放了Android support v4,v7,v13,v17包; 还有google提供额USB驱动、Intel提供的硬件加速等附加工具包, 和market_licensing作为AndroidMarket版权保护组件,一般发布付费应用到电子市场可以用它来反盗版。platforms

是每个平台的SDK真正的文件,存放了不同版本的android系统。里面会根据APILevel划分的SDK版本。samples

是Android SDK自带的默认示例工程,里面的apidemos强烈推荐初学者运行学 习,对于SQLite数据库操作可以查看NotePad这个例子,对于游戏开发Snake、LunarLander都是不错的例子,对于Android主 题开发Home则是androidm5时代的主题设计原理。环境变量设置

系统变量里面添加变量名 ANDROID_HOME 路径为实际存放SDk的路径

其他几个路径配置到系统环境Path中如下图所示:

配置检测

在cmd界面输入“adb” 和\”aapt\”来判断安装是否成功。

adb命令

C:\\Users\\Shuqing>adb

Android Debug Bridge version 1.0.39

Revision 3db08f2c6889-android

Installed as E:\\Andriod_sdk\\platform-tools\\adb.exe

global options:

-a listen on all network interfaces, not just localhost

-d use USB device (error if multiple devices connected)

-e use TCP/IP device (error if multiple TCP/IP devices available)

-s SERIAL

use device with given serial number (overrides $ANDROID_SERIAL)

-p PRODUCT

name or path (\’angler\’/\’out/target/product/angler\’);

default $ANDROID_PRODUCT_OUT

-H name of adb server host [default=localhost]

-P port of adb server [default=5037]

-L SOCKET listen on given socket for adb server [default=tcp:localhost:5037]

aapt命令

C:\\Users\\Shuqing>aapt

Android Asset Packaging Tool

Usage:

aapt l[ist] [-v] [-a] file.{zip,jar,apk}

List contents of Zip-compatible archive.

aapt d[ump] [–values] [–include-meta-data] WHAT file.{apk} [asset [asset ...]]

strings Print the contents of the resource table string pool in the APK.

badging Print the label and icon for the app declared in APK.

permissions Print the permissions from the APK.

resources Print the resource table from the APK.

configurations Print the configurations in the APK.

xmltree Print the compiled xmls in the given assets.

xmlstrings Print the strings of the given compiled xml assets.

Android SDK 安装

Android sdk 安装搭建参照文档《Android sdk安装》

重点:学习资料学习当然离不开资料,这里当然也给你们准备了600G的学习资料

需要的先关注再私我关键字【000】免费获取哦 注意关键字是:000疑惑:为什么要先关注呢? 回:因为没关注的话私信回了你看不到

项目实战

app项目,银行项目,医药项目,电商,金融

大型电商项目

全套软件测试自动化测试教学视频

300G教程资料下载【视频教程+PPT+项目源码】

​​

全套软件测试自动化测试大厂面经

python自动化测试++全套模板+性能测试

​​

​​听说关注我并三连的铁汁都已经升职加薪暴富了哦!!!!​

原创文章,作者:自考吧,如若转载,请注明出处:https://www.zk021.com/10209.hrml

(0)
上一篇 2022年9月30日 上午5:12
下一篇 2022年9月30日 上午5:14

相关推荐