英语原文共 4 页,剩余内容已隐藏,支付完成后下载完整资料
基于Appium的软件自动化测试
Gaurang ShahȦ*, Prayag ShahȦ and Rishikesh MuchhalaȦ
Ȧ信息技术部, DJSCOE,Vile Parle(W),孟买-400056,印度
接受于2014年9月20日, 2014年10月01日可在线用, 第4卷第5期(2014年10月)
摘要
软件测试是软件开发生命周期中最重要和最昂贵的过程之一。软件测试的自动化对于大规模开发应用程序的公司来说是一个福音。 本文的目的是阐述最新的自动化软件测试技术,并主要介绍一种名为“Appium”的测试工具。 自动化软件测试过程的主要目的是生产高质量,优化和完整的软件,并在最短的时间内将其提供给客户。
关键词:软件测试,自动化,软件开发,Appium,移动应用,软件工程
介绍
软件开发生命周期内的软件测试阶段是最终确定我们的产品可销售状态的阶段。在这个意义上,在优化测试方面正在探索很多。随着移动技术的越来越多的使用,测试也必须跟上数量和品种的复杂性。该卷的数量是在测试时涉及的测试用例数。这些品种在定义测试用例方面具有触摸屏,多任务,移动互联网和其他手势识别的细微差别。自动化是解决数量和讽刺的自动化的解决方案也是应对品种的挑战。在本文中,我们试图强调移动技术自动化测试的需要。鉴于应用/产品内的压倒性异质性,我们也强调了相同的挑战。我们还讨论了一个名为“Appium”的软件自动化开源工具,这将为我们提供一个洞察力,为上述挑战提供解决方案。
图1软件开发生命周期
学习从可用于自动化桌面测试的工具,如MonkeyTalk,KIF,Calabash等工具已被开发用于移动本机应用程序。
大多数这些工具需要一个额外的代理,需要与应用程序代码一起编译。需要额外的代理,以便该工具可以与移动应用程序交互。在将应用程序提交给商店时,必须删除此额外代理的库。另一方面,Appium不需要任何这样的额外的代理被包括在原始代码中。Appium可以被称为一个革命性的工具,可以以高效快捷的方式彻底改变测试过程。
Appium自成立以来已经大大改善,并且不断加入新功能。虽然MacOS和Windows的版本有所不同,但是对于这两个操作系统来说,它们总体上非常相似。Appium有三个主要组成部分。Appium服务器,督察和医生。这些组件将在本文的组件部分中突出显示。
图2Appium应用框图
概念
客户端/服务器架构
Appium实际上是暴露REST API的Web服务器。它从客户端接收连接,侦听命令,在移动设备上执行这些命令,并用表示Appium的结果的HTTP响应进行响应,这是一个在Node.js中编写的服务器。它可以被构建和命令执行。
图3 Appium客户端/服务器架构
事实上,我们有一个客户端/服务器架构打开了很多可能性:我们可以用任何具有http客户端API的语言编写我们的测试代码,但是更容易使用一个Appium客户端库。我们可以把服务器放在不同于我们测试运行的机器上。
会话
自动化始终在会话的上下文中执行。 会话将按照以下步骤进行:
- 客户端发起与服务器的会话,并发送一个称为“所需功能”对象的JSON对象。
- 此时,服务器将启动自动化会话,并响应用于发送更多命令的会话ID。
所需能力
所需的功能是一组键和值(即地图或散列),以通知Appium服务器有关我们要启动的自动化会话的种类。可以定义各种功能,使用它们可以根据需要更改服务器的行为。例如,我们可以将“platformName”功能设置为“iOS”,通知Appium要启动iOS会话,而不是Android。
Appium 服务端
图4 Appium服务器
Appium是一个用Node.js编写的服务器。它可以从源头构建和安装,也可以直接从NPM安装。我们可以根据测试要求修改服务器的功能。
Appium服务器处理脚本的执行,并将其与模拟器/仿真器进行链接。
Appium客户端
客户端库可用于Java,Ruby,Python,PHP,JavaScript和C#。所有这些都支持Appium对WebDriver协议的扩展。使用Appium时,我们必须使用这些客户端库而不是普通的WebDriver客户端。
Appium.app,Appium.exe
存在Appium服务器周围的GUI包装器,可以下载。这些与捆绑运行Appium服务器所需的一切。这些包装器还附带一个检查器,可以让您检查应用程序的层次结构。检查员简化了编写各种测试的任务,并在窗口中存在许多元素时派上用场。
结构
Appium是一个在node.js中编写的HTTP服务器,它为不同平台(如iOS和Android)创建并处理多个WebDriver会话,用于本机,Web以及混合应用程序。
图5 Appium的基本架构
Appium使用从主Appium服务器监听代理命令的设备上的脚本启动测试用例。像iOS和Android这样的每个供应商都有不同的方法和机制来在设备上运行一个测试用例,所以Appium类似于它,并且在从Appium服务器收看命令后运行这个测试用例。
组件
本部分将深入讨论Appium工具的组件。在Appium viz.Inspector,Doctor和Appium Server中有三个主要组件。第2.4节已经介绍了Appium服务器。其他两个如下所述。
督查
Appium提供了一个检查器,帮助测试工程师检测,检查和与用户界面元素交互。Inspector向测试工程师提供模拟器上的当前屏幕中现有的每个单个元素的路径或实际设备。Inspector具有记录功能,有助于在与UI元素交互时自动生成脚本。Inspector提供了与被测应用程序的GUI交互的不同方法。下面给出了一个显示Appium检查员的数字。
图6 Appium检查员
Doctor
Appium提供了一个非常简单的任务的Doctor,即运行检查是否预先满足测试和模拟器运行所需的所有组件。如果缺少一个或多个组件,并且没有测试无法运行,则会显示错误。医生检查要求的结果显示在Appium服务器窗口上。如果满足所有条件,每个要求前面都有一个绿色的勾号。
图7 doctor检查结果
工作
在iOS中使用Appium
图8 在iOS中工作的Appium
在iOS上,Appium代理命令在Mac OS环境中运行的UIAutomation脚本。苹果提供这种称为“乐器”的应用程序,用于进行许多活动,如分析,控制和构建iOS应用程序,但它还具有一个自动化组件,我们可以在JavaScript中编写一些使用UIAutomation API与App UI进行交互的命令。Appium利用这些相同的库自动化iOS Apps。
在上图中,我们可以看到架构在iOS的自动化环境中进行应用。一条命令生命周期如Selenium webdriver从代码(Element.click)中选择一个命令,并通过http请求将其以JSON的形式发送到Appium服务器。
Appium服务器知道像iOS和Android这样的自动化环境,并将此命令发送到仪器命令服务器,该命令服务器将等待仪器命令客户端(在node.js中编写),并在iOSInstruments环境中的bootstrap.js中执行它 。一旦命令执行,命令客户端将消息发回到Appium服务器,该服务器在其控制台中记录与该命令相关的所有内容。这个循环一直持续到所有命令执行的时候。
在Android中使用Appium
情况在Android的情况下几乎相同,在这种情况下,Appium代理命令到设备上运行的UIAutomator测试用例。UIAutomator是Android的本地UI自动化框架,它支持从命令行直接运行JUnit测试用例到设备中。它使用java作为编程语言,但是Appium将使用任何WebDriver支持的语言运行它。
图9 在Android中工作的Appium
在上面的图表中我们可以看到,在这里我们有一个Bootstrap.jar代替了在java编译时代表测试用例的bootstrap.js。 一旦它被启动,它产生一个TCP服务器。 这里的TCP服务器位于设备内,客户端位于Appium进程中,与iOS中的方式相反。
注释
优点
开发人员的经验与他/她正在开展的平台无关。
Appium支持多种脚本语言,这意味着具有多种专业知识的开发人员可以使用相同的工具。
在任何时间点,Appium测试工具都不会对应用程序的原始代码进行任何更改。这意味着我们提交与我们测试相同的代码。
Appium提供跨平台的移动测试,这意味着在不同平台上工作时,相同的测试是正确的。
由于Appium是开放源代码,所以有一个完整的用户支持在github上提交错误。
缺点
有一个技术限制,即在iOS上,我们只能在MacOS上运行仪器上的一个仿真器实例。 这意味着我们只能在每个Mac机器上的一个设备上运行我们的iOS脚本。
如果我们想在多个iOS设备上同时运行我们的测试,那么我们需要安排相同数量的Mac机器,这将是昂贵的事情。 但是,如果我们在Sauce Lab的移动云中执行脚本,目前支持在多个iOS模拟器上同时运行脚本,则可以解决此问题。
Appium使用UIAutomator进行Android自动化,仅支持Android SDK Platform API 16或更高版本。 为了支持旧的API,使用了另一个名为Selendroid的开源库。
结论
移动应用的不断进步正在发生,如今我们需要尽可能快地设计,开发和开发高性能应用。测试是开发此类应用程序之前最重要的一步,特别是在开发用于市场的关键领域时,其中小错误可能导致巨大的故障。 因此,软件测试的自动化是开发人员在短时间内确保高性能应用程序的新趋势。 Appium在这方面似乎更有希望,因为它为测试工程师提供了强大的功能,可以节省大量的时间,人力和项目成本。 因此,Appium在自动化测试中提供了一个全新的革命,它可以提供高效,无bug和质量丰富的应用。
致谢
我们要感谢D.J.Sanghvi工程学院的Hari Vasudevan博士,信息技术系主任A.J. Joshi博士,为我们提供了一些设施,为我们提供了一个有利于大学工作的环境。 我们也要感谢S.V.K.M.鼓励我们进行这样的课外活动。
参考文献
Rankin C.(2002),IBM软件测试自动化框架
系统杂志,Vol. 第41期,第1期
高小杰 魏哲蔡 Uehara,T.(2014),Mobile
应用测试:教程,计算机,Vol.第47号,第2期。
Appium
gt; http://en.wikipedia.org/wiki/Appium
测试自动化
gt; http://en.wikipedia. org / wiki / Test_ automationAppium
API参考
gt; http:// appium.io/slate/en/master/?java#
3531 | 国际工程技术学报Vol.4,No.5(2014年10月)
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[25492],资料为PDF文档或Word文档,PDF文档可免费转换为Word
课题毕业论文、外文翻译、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。