解析自动化测试工具Selenium&Appium

自动化测试与手工测试不同,工具不具备主观能动性,无法针对被测对象的现状做出智能判断(至少目前尚不能),无法像人一样具体问题具体分析,因此,在测试过程中实施自动化测试,必须具备以下几个条件。

(1)长期项目或者产品,需求变化较小,UI相对稳定;

(2)机械或频繁的业务操作;

(3)系统接口划分清晰,可独立运行或者设置挡板程序模拟运行;

(4)测试活动开展初期制定自动化测试策略;

(5)有足够的人力/财力投入

根据被测系统的结构形式,目前业内主要有两款开源的基于UI层面的自动化测试工具应用较为广泛,一是测试Web结构的Selenium,二是测试移动应用结构的Appium。商用的自动化测试工具则是HP公司生产的UFT(UnifiedFunctionalTesting)相对应用较为广泛,但业内未来的应用趋势是首选开源软件,因此本书不介绍Selenium和Appium之外的自动化测试工具。

1.1Selenium

Selenium由thoughtworks公司研发、提供了丰富测试函数用于实施Web自动化的一款非常流行的测试工具。Selenium直接运行于浏览器中,更真实的模拟了用户的业务行为,验证被测对象的功能表现及在不同浏览器中的兼容性特性。与传统的自动化测试工具不同,Selenium没有独立的操作UI界面,支持更多的编程语言,如Java、Python等,更为简洁与快捷,易于测试工程师掌握应用。

Selenium实际上不是一个测试工具,而是一个工具集,其主要由三个核心组件构成:SeleniumIDE、SeleniumRC(RemoteControl)及SeleniumGrid。

1.SeleniumIDE

Selenium开发测试脚本的集成开发环境,像FireFox的一个插件,可以录制/回放用户的基本操作,生成测试用例,运行单个测试用例或测试用例集。

2.SeleniumRemoteControl(RC)

支持多种平台(Windows、Linux)和多种浏览器(IE、FireFox、Opera、Safari),可以用多种语言(Java,Ruby,Python,Perl,PHP,C#)编写测试用例。Selenium为这些语言提供了不同的API及开发库,便于自动编译环境集成,从而构建高效的自动化测试框架。

3.SeleniumGrid

允许Selenium-RC针对规模庞大的测试案例集或者需要在不同环境中运行的测试案例集进行扩展。这样,许多的测试集可以并行运行,从而提高测试效率。

Selenium自2004年诞生以来,从经历了三个大版本变化:Selenium1、Selenium2及Selenium3。Selenium2又称为WebDriver,WebDriver对浏览器的支持需要对应框架开发工程师做对应的开发,Selenium必须操作真实浏览器,但是WebDriver可以用HTMLUnitDriver来模拟浏览器,在内存中执行用例,更加轻便。Selenium1中测试工程师使用SeleniumIDE录制开发对应的测试脚本,但在WebDriver中,仅需引入对应的API,即可利用Java或Python等语言开发工具进行测试脚本开发,SeleniumIDE渐渐被放弃。

利用Selenium进行Web自动化测试时,可采用Python语言,Python常用的开发平台为PyCharm。PyCharm是由JetBrains打造的一款PythonIDE,功能齐全,编译方便,目前软件测试行业应用其做Python脚本开发较多。

Selenium与基于UI层面的自动化测试工具相比更为简单,无须管理太多的对象,被测对象如果前端设计相对规范的话,自动化脚本开发相对较为容易。

Selenium本身拥有非常强大的功能,因为篇幅有限,本文仅做简要介绍,感兴趣的读者可通过官网或者联系作者,学习更多更实用的技能。

1.2Appium

Web系统自动化因为历史悠久,发展相对成熟,而移动应用自动化测试则是最近几年才流行起来,两者在测试技术上存在一些差异。

1.测试工具不同

在Web测试上,测试人员一般使用UFT或者是Selenium等作为自动化测试工具,而在移动应用上一般采用Selenroid或者Appium等工具作为自动化测试工具

2.测试平台不同

3.技术成熟度不同

Appium支持SeleniumWebDriver支持的所有语言,如Java、Object-C、Java、Php、Python、Ruby、C#或者Perl语言,更可以使用SeleniumWebDriver的Api,实现了真正的跨平台自动化测试。

1.Appium工作原理

Appium支持Android及iOS平台的App测试,两者的运行原理大体相同。

(1)Android平台

②中间服务套件则是Appium解析服务,Appium在服务端启用4723端口,通过该端口实现Client与AppiumServer通信。AppiumServer把请求转发给中间件Bootstrap.jar。Bootstrap.jar安装在手机上.Bootstrap监听4724端口并接收Appium命令,最终通过调用UIAutomator命令来实现测试过程。

③Bootstrap将执行的结果返回给AppiumServer。AppiumServer再将结果返回给Client。

(2)iOS平台

②中间服务套件则是Appium解析服务,Appium在服务端启用4723端口,通过该端口实现Client与AppiumServer通信。AppiumServer调用instruments.js启动一个SocketServer,同时分出一个进程运instruments.app,将bootstrap.js(一个UIAutomation脚本)注入到设备从而与外界进行交互。

③Bootstrap.js将执行的结果返回给AppiumServer,AppiumServer再将结果返回给Client。

Android与iOS区别在于Appium将请求转发到bootstrap.js或者bootstrap.jar.然后由bootstrap驱动UIAutomation或UIAutomator去设备上完成具体的动作。

2.Appium脚本架构

进行Appium自动化测试之前,需启动Appium及被测对象,启动了Appium客户端后,利用编程工具执行脚本时,Appium才能将脚本与被测设备建立联接,从而实现自动化测试。如果不启动客户端,则不能使用WebDriver。

脚本中需首先导入WebDriver,然后配置Server,告诉Appium测试环境。使用Desired_caps函数进行设备联接信息。

以Android为例,设备联接参数主要有以下常用参数:

3.UIAutomatorviewer查找元素

利用Appium实现App自动化测试时,与Selenium测试Web系统一样,同样需要定位UI中的元素,在Android-Sdk中提供了UIAutomatorviewer工具用来查看UI中的元素。

UIAutomatorviewer在Android-Sdk安装目录中的tools中,名称为UIAutomatorviewer.bat。启动后的界面如图1-1所示。

图1-1UIAutomatorviewer启动界面

当真机或模拟器没有启动时,UIAutomatorviewer无法实现UI界面同步。因此,使用UIAutomatorviewer识别对象时,需先连接真机或启动模拟器。这里以模拟器为例。

启动Android-Sdk自带的模拟器AVDManager,创建Android模拟机,如图1-2所示。

图1-2创建Android模拟机

创建完成后启动该模拟机,如图1-3所示。

图1-3虚拟机成功启动界面

虚拟机启动后,在cmd窗口中通过adbdevices检查是否成功识别该设备。如图1-4所示。

图1-4设备成功识别界面

虚拟机被成功识别后,即可运行UIAutomatorviewer通信虚拟机,获取App信息。如图1-5所示。

图1-5同步AppUI信息

此时即可进行App元素识别,便于后续的Appium脚本编程。

4.Hierarchyviewer

在设置设备启动参数时,需确定被测对象的Activity,Android-Sdk开发包提供了hierarchyviewer.bat方便测试人员查找App的Activity。Hierarchyviewer.bat在Android-Sdk的tools目录下。

进入Android-Sdk的tools目录,双击Hierarchyviewer.bat,如果联接了真机或启动了虚拟机,Hierarchyviewer将会自动获取设备主屏信息,如图1-6所示。

图1-6获取AppActivity信息

上图显示了虚拟机中App的Activity为:

com.choucheng.ride.ui.activity.login.LoginActivity

desired_caps={}

5.Appium与UnitTest

与Selenium一样,Appium同样可以使用UnitTest实施测试组织。

6.Appium与HTMLTestRunner

Appium除了可以利用UnitTest外,还可以使用HTMLTestRunner处理测试报告,具体应用方法与Selenium相同,这里不做过多阐述。

学习python需要做哪些准备?

没有什么特别的准备,一台能正常运行的电脑就行,Windows、Linux、Mac均可,作为一门跨平台的脚本语言,Python对于实际平台(...

西安软件测试培训班学费是多少?

在西安想学软件测试,如果是想参加培训班进行学习,那学费一般在1-3W之间,不同的培训机构,可能学费也会不同,但是我...

西安软件测试培训学校靠谱吗?

结合自己就业后遇到的小伙伴来看,在西安靠谱的软件测试培训学校还是有的,毕竟大家学完出来后,都能胜任现在的工作,...

西安软件测试就业怎么样

随着互联网行业的飞速发展,企业越来越注重软件质量,及软件产品给用户带来的体验,因此,为软件产品质量保驾护航的软...

西安哪家软件测试培训机构好?

要说哪家培训机构好,在我看来靠谱的培训机构就是好的。只要靠谱能够学到知识和技术,能够找到自己满意的工作,那就实...

西安软件测试培训多少钱?

在西安,软件测试培训学校有很多,其培训学费一般在10000-20000元之间。当然选培训学校,我们除了学费更看中这个培训学校...

想做程序员,需要学习哪些知识?

如果你想成为程序员大佬,千万不要过早设定自己的方向,因为专业的程序员都是能够把很多个方向做的很牛逼,而且其中有...

如何自学成为程序员?

想要自学编程,你需要理论知识和大量实践相结合(注意强调实践),以下是我学习编程的时候的一些方法,仅供参考为学习...

如何成为一名优秀的程序员?

总的来说,要想成为一名合格的程序员,就是持续的学习过程。程序员,是一个终身学习行业。每天都会或多或少接触到新的...

西安比较好的软件测试培训机构

大家好!我是西安faker,这个名字呢是今天早上取的,因为我昨天晚上做梦单吃了faker,细的嘛不谈,好了我们言归正传,今...

THE END
1.Android设计师必备的7个UI设计软件推荐Sketch 作为 UI 设计软件,拥有非常强大的矢量编辑工具,可以帮助设计师们创建各种高质量 UI 设计作品。同时,Sketch 还支持用户进行插件扩展,帮助设计师们完成对应功能的扩展。 以上,就是关于 “Android UI 设计软件” 的全部内容,文章一共为大家介绍了 7 款不同设计风格的 UI 设计软件,大家可以根据自己的工作需要和https://js.design/special/article/android-ui-design-software.html
2.Android15QPR2或将为大屏设备带来可调整大小的锁屏小部件qprAndroid 15 QPR2 可能为大屏设备带来可调整大小的锁屏小部件 据PhoneArena 报道,Android 15 QPR2 版本可能将为大屏设备带来可调整大小的锁屏小部件功能。这一功能在 Android 15 QPR1 中已初步实现,但用户只能添加、移动或删除锁屏小部件,无法调整其大小。随着 QPR2 的推出,这一限制有望被打破。 锁屏小部件的改进https://m.163.com/dy/article/JJA9G8QQ055680UT.html
3.直接拿来用!10款实用AndroidUI工具51CTO博客直接拿来用!10款实用Android UI工具,摘要:移动应用的UI设计好似达摩克利斯之剑,一方面,体验良好的UI可以加强应用在用户心中的形象和识别性,反https://blog.51cto.com/u_5290007/6752543
4.使用androidstudio生成UI界面,会比设计工具更快吗?以上就是android studio安装整个流程,其实对于很多的android studio入门新手来说,安装上也可能存在问题,不过这里强调下,安装上述的步骤安装基本没有问题。另外安装路径需要更改的话,切记不可出现标点符号。 2. 对比在线UI设计工具 使用专门的android studio ui控件进行设计可以完成产品的初期设设计,只不过想要进行产品展示https://pixso.cn/designskills/androidstudio/
5.AndroidStudio中的UI设计入门指南6. UI设计工具与资源 6.1 Zeplin、Sketch等设计工具介绍 6.2 寻找免费UI设计资源的方法 6.3 使用Vector图标优化UI设计 6.4 资源文件管理与导入 1. Android Studio中的UI设计入门指南 章节一:UI设计基础 UI设计是用户界面设计(User Interface Design)的缩写,是指设计师利用视觉设计软件在移动应用或网页上进行的视觉设计https://wenku.csdn.net/column/2ed4ky9y2j
6.AndroidUI组件Android开发语言与工具是Android 上的一个导航菜单组件。就三个目标文件,菜单项直接在 XML 中定义,可添加文本和图标。 9、Android的UI工具包 android-ui-utils 是一个工具包用来帮助设计和开发 Android 用户界面,包含三个单独的工具:Android Asset Studio用户界面原型模具,Android 设计预览,时常需要重复确认程序版面设计状况的 Android Apphttps://www.open-open.com/lib/view/open1347377489225.html
7.Androiduiutils简单实用的Android界面工具jackrexAndroid Design Preview可以让这一个流程更加方便和简单。它让人可以实时的在真实设备上查看Android高保真的设计图,让视觉设计师像开发工程师一样所见即所得的工作。这个工具的作者是Google的Roman Nurik,它还同时支持Mac和Windows平台。 使用方法: 1、先在http://code.google.com/p/android-ui-utils/左下方选择合适https://www.cnblogs.com/jackrex/archive/2013/04/03/3001242.html
8.AndroidPlatform3.0SDK和EclipseADT安装记录三三、UI设计工具 / 素材 1. droiddraw http://code.google.com/p/droiddraw/ 2. hierachyviewer http://developer.android.com/guide/developing/debugging/debugging-ui.html http://developer.android.com/guide/developing/tools/hierarchy-viewer.html http://hi.baidu.com/%D1%A9%D3%A3%D7%D386/blog/item/https://www.iteye.com/blog/weimingtom-1396201
9.即时设计app下载即时设计(UI设计工具)v1.1.1安卓手机版下载即时设计app是由北京雪云锐创科技有限公司打造的一款UI设计工具,在这里不仅有着超多素材和资源可以免费使用,同时这还是一款协助分享的办公软件,日常设计师在创作时想要实时预览设计效果、全屏交互原型演示,如今都能通过它来实现,不仅如此,当你外出时想要查看、评论和分享文件,同样可以使用它与员工进行沟通、交流。目前,https://www.jb51.net/softs/799213.html
10.MonoforAndroidUI设计器介绍语言&开发InfoQ:这个工具可以与 AXML 一起工作吗?还是说它有自己的文件格式? 设计器可以同标准的 Android xml 布局格式一起工作。 InfoQ:你们是怎样在 IDE 里面渲染 Android UI 的?它是托管在各种各样的模拟器里面,还是说你们重新实现了一份 UI 套件(UI stack)? https://infoq.cn/news/2012/03/mono-designer
11.中用到的工具Android开发教程Android设计规范,免费的设计收集整理Android开发所需的Android SDK、开发中用到的工具、Android开发教程、Android设计规范,免费的设计素材等。 - inferjay/AndroidDevToolshttps://github.com/inferjay/AndroidDevTools
12.Android应用UI设计模式优设网《Android应用UI设计模式》图书特色:58个重要交互设计模式将扁平化设计理念发挥到极致,Android应用设计难题各个击破集各家操作系统(iOS、Windows Phone)之所长,将其绝妙理念融入Android交互设计多个试验模式和反模式帮助探索Android设计的前沿部分,避开设计误区,打破https://www.uisdc.com/android-ui-mode
13.965外企内推(统招本科三年以上,不卡年龄,月薪大部分在15~35k左右前端开发工程师、IOS/Android,Golang,Java,PM,UI,QA,Linux C++开发,AI架构/算法工程师(下面是JD) 前端开发 岗位职责: 参与产品核心模块的设计和优化,制定并推广前端开发规范和标准,提高开发效率和代码质量; 参与前端稳定性建设,包括性能优化、监控、自动化测试框架等; https://eleduck.com/posts/yGf0pX
14.iPhone/iPad/AndroidUI尺寸规范iPhone/iPad/Android UI尺寸规范 UI尺寸规范,UI图标尺寸,UI界面尺寸,iPhone6尺寸,iPhone6 Plus尺寸,安卓尺寸,iOS尺寸 iPhone界面尺寸 设备分辨率PPI状态栏高度导航栏高度标签栏高度 iPhone6 plus设计版 1242×2208 px401PPI60px132px146px iPhone6 plus放大版 https://tool.liumingye.cn/appui
15.androidUI调试工具SwissArmyKnifeSwissArmyKnife 是一款方便调试android UI的工具,可以兼容所有android版本,不需要root权限。可以直接在android手机屏幕上显示当前Activity中所有控件(不管是否隐藏)的边界,内外边距大小,每一个控件大小,图片大小,字体颜色,大小,以及自定义信息。同时可以直接在屏幕上取色,另外还提供了直尺(单位为px和dp),圆角尺(单位dp)工https://www.jianshu.com/p/d726d3f577a3
16.阿里又整活!出了款超牛的设计工具!星球工具箱每天分享各类为设计师省时省力的设计工具。 最近阿里 Alibaba Design出品了国内首个 3D 资源设计平台-堆友,支持在线编辑渲染,除了堆友,星球的小伙伴还推荐了很多超级好用的设计工具,一起来看下吧!看完记得转发分享哦! 想看更多精华文章、职场经验分享,可在我们的设计日记星球查看,设计日记第七季已经正式https://maimai.cn/article/detail?fid=1781247783&efid=EU56T093wMwbiFKNFsaztw
17.AndroidNUIKit(Sketch源文件)规范/资料Android N是谷歌的下一个大的操作系统更新。该开发者预览版将于3月9日发布,以供给开发者试用。但是,对于设计师有preview版本吗?为了帮助设计界,DeveloperTown用sketch创造了Android N的UI套件。源文件基于目前Android N开发者预览版,所以一如既往,这并不是最终的版本。 https://www.ui.cn/detail/128270.html
18.基于谷歌地图的Android导航应用设计AET基于谷歌地图的Android导航应用设计 一、引言 在当今社会,手机已经成为人们日常生活中不可或缺的工具,以用户体验为核心诉求的智能手机,使手机由单一的通信终端发展成为互联网终端。越来越多的互联网应用被移植到智能手机中来,导航软件在智能手机中的应用成为了研究热点之一。在目前大部分智能手机都提供GPS定位服务以及3Ghttp://m.chinaaet.com/article/162061
19.Android上的微件界面设计WidgetsAndroidDevelopers探索面向所有 Android 设备开发者的最新应用开发工具、平台更新、培训和文档。https://developer.android.google.cn/design/ui/widget
20.极客工作室深技师(三)Android系统开发组 职责:设计开发针对手机、嵌入式或物联网、智能硬件等设备的Android App软件系统。 技术特色:紧跟Android官方发展趋势,以Android官方技术规范为标准,开展Android项目开发。 (四)UI设计组 职责:根据项目需求,利用PS、AI、CDR等图像编辑工具设计UI效果图、字体、标志、图标等。 https://www.ssti.net.cn/it/jkgzs/