ios app 的 ui 真机自动化测试,一般会选择什么工具
曾经有一段时间,人们习惯于在MS Excel里面编写单元测试用例,然后开发人员就按照单元测试用例一步一步的来实现用例。这通常是很耗时的漫长的过程,尤其是如果应用很大或者UI很复杂的话。这一套单元测试的执行过程常常成为瓶颈,因为任何代码修改都会带来手工执行大量单元测试,以确保新的修改没有破坏原有功能。
如今是个快节奏时代,人们希望工作能够无需人工介入、自动化的快速完成。每个人都喜欢执行一个命令就能把工作搞定,而且在执行期间不需要人工介入。需要做的仅仅是检查一下最终的输出结果。
当这个世界正在迈向自动化时,自动化测试也不甘落后,不论是在功能测试方面还是UI测试方面。每天我们都能听说自动化测试方面涌现出的新。
本文提供了一些信息给那些想用Coded UI自动测试框架来进行应用界面自动化的.Net开发者。
什么是Coded UI?
最近我一直在寻找一个自动化的用户接口测试的解决方案。用户接口测试需要用户多次进行手工输入操作,这是一个既枯燥又费时的过程。因此,我想寻找一种更智能的自动化UI测试的方案,这种UI测试在不需要人工干预下,能够被保存,记录并提供支持 ,快速测试代码的改变。
Coded UI 采用用户接口来驱动应用的进行自动化测试。这些测试包括UI控制的功能性测试。他们使你可以验证整个应用的功能是否正确,其中包括了用户接口。Coded UI尤其适合用于用户接口中存在校验或者其它的登录方式的测试,比如网页。Coded UI也可以用于人工测试用例的自动化。
Coded UI 测试帮助用户测试应用程序的用户接口。这些测试允许用户验证应用程序的功能。Coded UI 多数时间用于帮助验证在UI层本身的有效逻辑。它能够验证值对用户接口的控制的正确性。
其它方案
市场有许多自动化用户接口的方案,比如 , IBM Rational Tester. 其它著名的,易于使用的开源工具解决用户接口自动化问题的有Selenium,也能够记录测试,需要的时候回放。市场上还有来自Microsoft的也能不需要太多努力做同样的事。用Visual Studio Microsoft还有Coded UI的方案用于单元测试。
Coded UI适合在哪儿用?
大多数安装了Visual Studio的开发者都喜欢在Visual Studio的环境里进行单元测试,而不是使用第三方工具。由微软提供的Coded UI,在Visual Studio环境里可谓上手即用。在开发者的机器上无需另外安装任何东西。一旦你安装了Visual Studio的Premium版或者Ultimate版,你就同时也安装好了Coded UI。
Coded UI可用性
为了使用Coded UI,需要安装Visual Studio 2010/2012/2013的Premium版或者Ultimate版。
Coded UI 测试的组成
Coded UI 测试的组成容易理解。它可分成下列文件:
UIMap.uitest
这个文件是UIMap类的XML表示。UIMap类包括视窗,控件,属性,方法,断言和动作。
UIMap.cs
对UIMap的自定义部分都存在这文件里。如果修改直接存在UIMap.designer.vb文件的话,那些修改都会在记录结束后丢失,因为这个文件重新创建了。
给每个在测应用程序中的每个模块创建一个独立的UIMap文件。
UIMap.Designer.cs
这是部分类表达各种类。这各种类是给多样的控件和他们的范围,属性,方法的类。
提示:不要直接修改 UIMap.Designer.cs。加入你这样做,这个修改会被覆盖掉。
.cs
这类表示的实际的CodeUI测试类,方法调用,和断言调用,所有的方法和断言默认都是从UIMap.Designer.cs文件调用的。这类有具有【]属性TestClass和包含具有【]属性的多种方法。
Coded UI的特性/好处
进行用户界面测试的同时进行校验.
生成VB.Net/C#代码.
测试用例可以被记录和重放.
集成了ALM Story
能够作为每日构建的一部分来运行.
根据需要进行高级扩展.
和Visual Studio集成在一起,所以无需单独购买许可.
Coded UI对Web和Windows应用同样适用.
著名的Microsoft支持.
创建Coded UI测试
Coded UI测试可以用下列方式创建
使用MTM进行快速自动构建
从现有的记录(从手动测试中记录下来的操作)中创建Coded UI
在Coded UI Test Builder创建的底稿的基础上创建一个新的Coded UI测试.
自己写Coded UI.
这个白皮书的范围仅限于“在Coded UI Test Builder创建的底稿之上创建一个新的Coded UI测试”。
小贴士: 尽量使用Coded UI Test Builder。
Coded UI Test Builder
每一个Coded UI测试的生成都需要遵从下列步骤.
记录/停止/暂停
编辑记录下来的步骤
添加断言
生成代码
创建Coded UI 测试
创建新的Coded UI 项目
要开始使用Coded UI,首先我们需要创建一个测试项目,用来保存所有Coded UI测试。创建一个新的Coded UI项目包含下列步骤
打开Visual Studio 2012
选择 File > New > Project
选择需要的语言模板 (C# or VB.Net). 我们选择了C#.
选择Coded UI Project
输入一个名字
点击 OK 按钮
添加 Coded UI 测试
Visual Studio默认配置为创建Coded UI 测试使用 "Generate a new Coded UI Test from scratch using Coded UI Test Builder"
提示:在测试的应用程序中,当你创建UI控件时尽量使用有意义的名称,从而对于自动生成的控件显得更加有意义和可用。
一旦 Coded UI 测试工程创建完成,将会自动打开生成Coded UI 测试代码的对话框,请给出以下选项的设置。
记录操作,编辑UI地图或添加断言
使用一个已经存在的操作记录
默认情况下 选择记录操作,编辑UI地图或添加断言,无需做任何操作,然后点击 "ok"
Coded UI Test Builder
选择了上述选项后,Coded UI Test Builder就会被打开,同时Visual Studio窗口被最小化。这意味着我们已经为记录操作做好了准备。
正如之前描述的,Coded UI Test Builder基于下列4个操作来做记录
Record Steps
Update or Delete Steps
Verify Results (Add )
Generate Code
小贴士: 如果用户界面(UI)变化了,就重新记录测试方法或断言方法,或者重新记录一个既有测试方法中受影响的部分。
记录一个序列的操作.
记录一个操作主要需要下列几步.
Start Recording, 通过选择Record按钮即可.
Pause Recording, 用来处理记录过程中的其它操作,即Generate Code.
Edit/Delete 操作, 以防错误的操作被记录。
Generate code为记录下来的操作创建编号。会给每一个记录下来的操作都生成编号。
Add 用来校验结果。
小贴士: 创建断言*使用Coded UI Test Builder,因为它会在UIMap.Designer.cs文件中自动添加一个断言方法。
为记录动作做计划
任何事情的成功都取决于它计划得有多好。较好地计划*限度保证了任务成功完成。这样总是比较好,在开始记录动作之前,我们计划好所有的所有要计划的步骤。
这里我们将要使用应用程序Windows计算器来记录步骤。我们要自动地加和减两个数字。在记录加和减两个数字的时候,下面的步骤将会用到。
。点击“开始记录”控件
。到开始,点击执行
。在执行窗口,输入”calc"
。停止记录,看记录的步骤
。删除错误的步骤(存在的话)
。产生代码;提供和动作相匹配的名字。比如,打开计算器。
提示:当你产生一个方法时候,使用一个有意义的方法的名字,代替默认名字。
有意义的名字帮助识别方法的木的。
。重新记录,提供*个数字,暂停记录产生代码
。重新记录,提供操作(加或者减),暂停记录,产生代码
。重新记录,提供第二个数字,暂停记录,产生代码。
。加断言
提示: 产生你的测试作为一系列记录的方法
提示: 可以的时候,限制每个方法小于10个动作。这模块化的方法让UI改变时候容易替换方法。
我们已经看到了Coded UI可以使开发者的生活变得多么轻松,尤其是遇到每次都需要进行很多输入的复杂页面的时候。这时,测试用例只需要被记录一次,就可以按照需要执行任意多次。使用Coded UI比使用其它工具的好处是,它能自动适配Web页面和Windows窗口应用。Coded UI测试可以用Visual Studio 2010来运行,也可以用任何版本的VS来运行,它们的功能正变得越来越强大。无需多说,Coded UI是一个由技术领导者提供的强大工具,想要体验Coded UI测试的强大,我们应该开始在项目中使用它看看它能带来多少ROI,我确信Coded UI不会让你失望。
转载
常用的自动化测试工具有哪些
1、AppiumAppUI自动化测试
Appium 是一个移动端自动化测试 开源工具,支持iOS 和Android 平台,支持Python、Java 等语言,即同一套Java 或Python 脚本可以同时运行在iOS 和Android平台,Appium 是一个C/S 架构,核心是一个 Web 服务器,它提供了一套 REST 的接口。当收到客户端的连接后,就会监听到命令,然后在移动设备上执行这些命令,*将执行结果放在 HTTP 响应中返还给客户端。
2、Selenium
WebUI自动化测试
Selenium是一个用于Web应用程序测试的工具,Selenium已经成为Web自动化测试工程师的*。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7、8、9)、Mozilla Firefox、Mozilla Suite等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。Selenium 是专门为Web应用程序编写的一个验收测试工具。其升级版本为Webdriver。
3、Postman
接口测试
Postman 提供功能强大的 Web API 和 HTTP 请求的调试,它能够发送任何类型的HTTP 请求 (GET, POST, PUT, DELETE…),并且能附带任何数量的参数和 Headers。不仅如此,它还提供测试数据和环境配置数据的导入导出,付费的 Post Cloud 用户还能够创建自己的 Team Library 用来团队协作式的测试,并能够将自己的测试收藏夹和用例数据分享给团队。
4.Robot Framework
Robot Framework是一个开源自动化框架,它实现了用于验收测试和验收测试驱动开发(ATDD)的关键字驱动方法。 Robot Framework为不同的测试自动化需求提供框架。 但是,通过使用Python和Java实现其他测试库,可以进一步扩展其测试功能。 Selenium WebDriver是Robot Framework中常用的外部库。
测试工程师可以利用Robot Framework作为自动化框架,不仅可以进行Web测试,还可以用于Android和iOS测试自动化。 对于熟悉关键字驱动测试的测试人员,可以轻松学习Robot Framework。
5、Soapui
接口测试
SoapUI提供了所有所需的工具来测试和完善的测试。总览标签给你一个项目的所有内容和全面的看法。只需一次点击,您可以添加任何数量的断言为验证传入的消息TestStep。使用功能强大的HTTP监视器记录,分析甚至修改客户机 - 服务器通信,因为它发生。和SoapUI临带来了更专业和先进的功能,保持遥遥领先其他测试工具。轻松创建和运行数据驱动测试。该数据源TestStep读取测试数据从任何外部来源 - Excel中,XML,JDBC,文件,等等 - 到标准SoapUI属性。
针对上面的自动化测试工具,每一个都有自己优势的功能,随着计算机行业的发展,自动化测试工具会越来越多,越来越完善。
2021*用的自动化测试工具Top 10,果断收藏
这个时候总是无奈的说:你应该学习Python 或是Java
你应该掌握Selenium
又或者你需要学会jmeter,嗯,可能你应该学习
也许SoapUI是个不错的选择,或者你可是试试PostMan
......
其实这些都不是我真正的答案,我想说:只专注于一种编程语言或一种工具可能限制你的发挥,尤其可能限制了你在工作中提供的价值。如果你提供的价值在逐步退化,那么你的舞台可能突然谢幕,你的职业停滞不前,受到限制。
所以,什么最重要?当然是能力了!
下面我就介绍下2021*用的10个自动化测试工具,希望可以充实你的知识库,打开你的职业发展舞台!
在自动化测试领域,自动化工具的核心地位毋庸置疑。我总结了最顶尖的自动化测试工具,这些工具可以帮助组织更好地定位自己,跟上软件测试的趋势。这份清单包含了开源和商业的自动化测试解决方案。
Selenium:WebUI自动化测试
Selenium是网页应用中*的开源自动化测试框架。起源于2000年,10多年来不断地完善,Selenium成为许多Web自动化测试人员的选择,尤其是那些有高级编程和脚本技能的人。Selenium也成为了其他开源自动化测试工具比如Katalon Studio,Watir,和Robot Framework的核心框架。
Selenium 支持多系统环境(Windows,Mac,Linux)以及多种浏览器(Chrome,FireFox,IE以及无头浏览器(没有界面))。它的脚本可以由各种各样的编程语言编写,比如 Java,Groovy,Python,C#,PHP,Ruby 以及 Perl。
因为Selenium的灵活性,测试人员可以写各种复杂的、高级的测试脚本来应对各种复杂的问题,它需要高级的编程技能和付出来构建满足自己需求的自动化测试框架和库。
Appium:APP UI自动化测试
Appium是一个移动端自动化测试开源工具,支持iOS和Android平台,支持Python、Java等语言,即同一套Java或Python脚本可以同时运行在iOS和Android平台,Appium 是一个C/S架构,核心是一个Web服务器,它提供了一套REST的接口。当收到客户端的连接后,就会监听到命令,然后在移动设备上执行这些命令,*将执行结果放在HTTP响应中返还给客户端。
Jmeter:接口测试,性能测试
JMeter是一个开源的Java桌面应用程序,主要用于web应用程序的负载测试。它还支持单元测试和有限的功能测试。
它有很多好的特性,比如动态报告、可移植性、强大的测试IDE等,并且支持不同类型的应用程序、协议、shell脚本、Java对象和数据库。
Postman:接口测试
Postman 提供功能强大的Web API和HTTP请求的调试,它能够发送任何类型的HTTP请求 (GET, POST, PUT, DELETE…),并且能附带任何数量的参数和Headers。不仅如此,它还提供测试数据和环境配置数据的导入导出,付费的Post Cloud用户还能够创建自己的 Team Library用来团队协作式的测试,并能够将自己的测试收藏夹和用例数据分享给团队。
SoapUI:接口测试
SoapUI是一个非常流行的用于SOAP和REST的开源API测试自动化框架。它还支持功能测试、性能测试、数据驱动测试和测试报告。
Monkey:稳定性测试
软件附带在sdk中,适用于android和ios,通过adb shell,生成用户或系统的伪随机事件。压力测试结果:崩溃crash,无响应anr,基本命令:adb shell monkey 1000。
Robot Framework:Web UI自动化测试,接口测试
Robot Framework是一个开源自动化框架,它实现了用于验收测试和验收测试驱动开发(ATDD)的关键字驱动方法。Robot Framework为不同的测试自动化需求提供框架。但是,通过使用Python和Java实现其他测试库,可以进一步扩展其测试功能。Selenium WebDriver是Robot Framework中常用的外部库。
测试工程师可以利用Robot Framework作为自动化框架,不仅可以进行Web测试,还可以用于Android和iOS测试自动化。对于熟悉关键字驱动测试的测试人员,可以轻松学习Robot Framework。
QTP:Web UI自动化测试
QTP是一种自动测试工具。使用 QTP 的目的是想用它来执行重复的手动测试,主要是用于回归测试和测试同一软件的新版本。因此你在测试前要考虑好如何对应用程序进行测试,例如要测试那些功能、操作步骤、输入数据和期望的输出数据等。
QTP针对的是GUI应用程序,包括传统的Windows应用程序,以及现在越来越流行的Web应用。它可以覆盖绝大多数的软件开发技术,简单高效,并具备测试用例可重用的特点。其中包括:创建测试、插入检查点、检验数据、增强测试、运行测试、分析结果和维护测试等方面。
:性能测试
,是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,能够对整个企业架构进行测试。
企业使用能*限度地缩短测试时间,优化性能和加速应用系统的发布周期。可适用于各种体系架构的自动负载测试,能预测系统行为并评估系统性能。
Jenkins:持续集成
自动化构建编译,部署,任务执行,测试报告,邮件通知等。
使用开源测试工具有很多好处,尤其是无直接的购买成本,而且可定制,但也有一定的局限性。尤其是缺乏专业的技术支持,有限的许可支持以及脚本维护有时会成为一个挑战性的工作。
为了选择正确的自动化测试工具,你应该确保该工具是处于活跃维护状态的,并且与你所在企业业务、团队、技能匹配,并且是团队里有相应的专家。
因此在选择工具之前,你必须仔细研究,以便该工具能够满足你的测需求,并且能帮助你更好的执行测试。
如何使用进行iOS自动化测试
使用iOS模拟器1. 下载示例应用程序.xcodeproj,并打开它。这个项目是一个很简单的包含2个tab的tabbar应用程序。
2. 确保选中如下图所示的“ > iPhone 5.0
Simulator”模式(或许已经切换成5.1了,因此它可能是iPhone5.1模拟器)。
3. 启动(Product > Profile),或者通过⌘I。
4. 选择左边的iOS Simulator,然后再选择模板,然后点击“Profile”。
5. 就已经启动好后,然后直接开始录制了。这里先停止录制,(红包按钮或者⌘R)。
6. 在左边的Scripts窗口,点击“Add > Create”创建新的脚本。
7. 在脚本编辑器里,输入下面的代码
var target = UIATarget.();
var app = target.();
var window = app.();
target.();
8. 重新运行这段脚本⌘R(不需要保存)。脚本跑起来后,可以在日志打完后停止它。
赞一个!就这样完成了*个测试用例。
使用iOS设备
除了将测试用例运行模拟器上,也可以将它运行在一个真实的设备上。不过,自动化测试用例只能运行在支持多任务的:iPhone 3GS,iPad,iOS
> 4.0等设备上。遗憾的是不管iPhone 3G的系统版本是什么,都不支持。
下面是如何操作:
1. 通过USB接口连接上iPhone。
2. 选择 “ > iOS Device”模式。
3. 确保 profile设置成Release模式(而不是Ad-Hoc
profile)。默认情况下,profiling是设置成Release模式的(因为没有必要将profile设置成Debug模式)。
4. 启动测试 (⌘I)
5. 后面的步骤请参考前面模拟器部分
使用Appium进行iOS的真机自动化测试
在终端输入验证所有依赖是否安装成功,都是打钩状态就证明环境正常,如图
3.执行
4.直接用Xcode打开 .xcodeproj 文件
5.配置 和 的证书
一切正常的话,手机/模拟器上会出现一个无图标的 应用,启动之后,马上又返回到桌面。
此时控制台界面可以看到设备的 IP 地址:
通过上面给出的 IP地址 和端口,加上/status合成一个url地址。例如 [ ,然后浏览器打开。如果出现一串 JSON 输出,说明 WDA 安装成功了。
如果连接的是真机,则有可能会打不开。我们需要做一下端口转发。
此时在浏览器中打开链接 查看,显示:
我已经在手机上装好了被测应用,若还未安装,需通过appName指定安装包路径。点击右下角Start Session,
1.报错
解决:
-> Build Settings -> Build Options -> Validate Workspace = Yes.
1.执行./Scripts/bootstrap.sh后报错
原因不详,已解决
2.xcode运行报错
解决
做iOS自动化测试必须知道的一些知识
2015年Facebook 开源了一款 iOS 移动测试框架 , 在 iOS 端实现了一个 WebDriver server ,借助这个 server 我们可以远程控制 iOS 设备。你可以启动、杀死应用,点击、滚动视图,或者确定页面展示是否正确。它通过链接 XCTest.framework 并调用苹果的 API 直接在设备上执行命令。这使得它成为应用程序端到端测试或通用设备自动化的完美工具wda作为任何UITest的捆绑软件启动,作为一个后台应用运行在iOS手机上,
-> 即在手机上8100端口启动一个HTTP server,内部就是一个死循环,监听网络传输过来的webdriver协议的数据,解析并处理点击事件
但该项目已经存档(archived),不再维护。2021年5月,Facebook开源了 IDB ,即“ iOS Bridge”,这是一个用于使iOS模拟器和设备自动化的命令行界面。他们正在将自己的内部项目从WDA迁移到IDB,并建议将其检查出来作为替代方案
由于facebook wda已经停止维护,现在一般推荐使用fork自 facebook wda的 appuim wda
iOS-Tagent 也是基于 facebook 的 项目上进行开发的 , 目的是为了对 Airtest Project 提供iOS平台的测试支持,该项目在原项目的基础上进行了定制化的优化和功能调整
XCTestWD 是WebDriver server的Swift版本实现,主要用于 Macaca 自动化项目,这里不做过多介绍,更多可参考官方文档 Macaca面向多端的自动化测试
综上,WDA会在iOS 端实现了一个 WebDriver server,并监听网络传输过来的webdriver协议的数据,通过电脑与手机端口的映射,我们就可以通过电脑发送网络请求到手机上的server,server就能解析并处理点击事件了
因此我们需要做的是安装并启动WDA,设置端口转发。在tidevice出现之前,WDA只能通过来启动,而运行则必须有一台Mac才行。tidevice没有通过,而是通过usbmuxd直接跟手机上的服务进行直接通信完成手机上WDA的启动。usbmux在不同的平台都有开源的实现,所以tidevice不仅能在Mac上运行,也能在Linux、Windows上运行
更多关于tidevice可参看 tidevice