获取完整版–》请留言
2. Web自动化测试框架
2.1 Selenium
Selenium是一个用于Web应用程序测试的工具。支持的浏览器包括IE、Mozilla Firefox、Mozilla Suite等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。Selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium Remote Control)和测试的并行处理(Selenium Grid)。Selenium的核心Selenium Core基于JsUnit,完全由JavaScrip服务器托管网t编写,因此可以用于任何支持JavaScript的浏览器上。Selenium可以模拟真实浏览器,自动化测试工具,支持多种浏览器,爬虫中主要用来解决JavaScript渲染问题。
selenium 1.0 包括以下两部分:selenium server、 Client Libraries组成
2.1.1 selenium server
selenium server负责控制浏览器的行为。主要有launcher,Http Proxy,selenium core。selenium core使用Selenium Server嵌入到浏览器页面中。实质上,selenium core是由JS函数组成,这样我们可以实现用程序对浏览器进行操作。
2.1.2 client Libraries
编写测试用例时控制selenium server的库
下图介绍了testcase的执行过程:
(1).测试案例(Testcase)通过Client Lib的接口向Selenium Server发送Http请求,要求和Selenium Server建立连接。
为什么要通过发送Http请求控制Selenium Server而不采用其他方式呢?从上文可以看出,Selenium Server是一个独立的中间服务器(确切地说是代理服务器),它可以架设在其他机器上!所以测试案例通过发送HTTP请求去控制Selenium Server是很正常的。
(2).Selenium Server的Launcher启动浏览器,把Selenium Core加载入浏览器页面当中,并把浏览器的代理设置为Selenium Server的Http Proxy。
(3).测试案例通过Client Lib的接口向Selenium Server发送Http请求,Selenium Server对请求进行解析,然后通过Http Proxy发送JS命令通知Selenium Core执行操作浏览器的动作。
(4).Selenium Core接收到指令后,执行操作。
(5).浏览器收到新的页面请求信息(因为在(4)中,Selenium Core的操作可能引发新的页面请求),于是发送Http请求,请求新的Web页面。
由于Selenium Server在启动浏览器时做了手脚,所以Selenium Server会接收到所有由它启动的浏览器发送的请求。
(6).Selenium Server接收到浏览器的发送的Http请求后,自己重组Http请求,获取对应的Web页面。
(7).Selenium Server的Http Proxy把接收的Web页面返回给浏览器。
2.2 Selenium2(Webdriver)
Selenium 2将浏览器原生的API封装成WebDriver API,可以直接操作浏览器页面里的元素,甚至操作浏览器本身(截屏,窗口大小,启动,关闭,安装插件,配置证书之类的),所以就像真正的用户在操作一样。
下图介绍了Selenium2的架构:
- webdriver按照server–client的经典设计模式设计
- server端就是remote server,可以是任意的浏览器:我们的脚本启动浏览器后,该浏览器就是remote server,它的职责就是等待client发送请求并做出相应;
- client端简单说来就是我们的测试代码:们测试代码中的一些行为,比如打开浏览器,转跳到特定的url等操作是以http请求的方式发送给被server端(也就是被测浏览器)server接受请求,并执行相应操作,并在response中返回执行状态、返回值等信息;
- the WebDriver Wire Protocol是Selenium自己设计定义的协议,这套协议非常之强大,几乎可以操作浏览器做任何事情,包括打开、关闭、最大化、最小化、元素定位、元素点击、上传文件等。
- WebDriver Wire协议是通用的,也就是说不管FirefoxDriver还是ChromeDriver,启动之后都会在某一个端口启动基于这套协议的Web Service,例如FirefoxDriver初始化成功,默认从http://localhost:7055开始,IE则是http://localhost:52432
webdriver的工作原理:
(1)启动浏览器后,selenium-webdriver会将目标浏览器绑定到特定的端口,启动后的浏览器则作为webdriver的remote server。
(2)客户端(也就是测试脚本),借助ComandExecutor发送HTTP请求给sever端(通信协议:The WebDriver Wire Protocol,在HTTP request的body中,会以WebDriver Wire协议规定的JSON格式的字符串来告诉Selenium我们希望浏览器接下来做什么事情)。
(3)Sever端需要依赖原生的浏览器组件,转化Web Service的命令为浏览器native的调用来完成操作。
3. iOS自动化测试框架
3.1 XCTest
https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/01-introduction.html
XCTest是苹果在iOS 7和Xcode5引入的一个简单而强大的测试框架,它的测试编写起来非常简单,并且遵循xUnit风格。XCTest的优点是与Xcode深度集成,有专门的Test导航栏,但因为受限于官方测试API,因此功能不是很丰富。
3.2 UIAutomation
https://developer.apple.com/library/ios/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/UIAutomation.html
UIAutomation是苹果提供的UI自动化测试框架,使用Javascript编写。基于UIA服务器托管网utomation有扩展型的工具框架和驱动型的框架。扩展型框架以JavaScript扩展库方法提供了很多好用js工具,注入式的框架通常会提供一些Lib或者是Framework,要求测试人员在待测应用的代码工程中导入这些内容,框架可以通过他们完成对app的驱动。驱动型UI Automation 在自动化测试底层使用了UI Automation库,通过TCP通信的方式驱动UI Automation来完成自动化测试,通过这种方式,编辑脚本的语言不再局限于JavaScript。
3.3 Frank
Frank是iOS平台一款非常受欢迎的app测试框架,它使用Cucumber语言来编写测试用例, Frank包含一个强大的“app inspector”–Symbiote,可以用它来获得运行中app的详细信息,便于开发者将来进行测试回顾。 它允许使用Cucumber编写结构化英语句子的测试场景。 Frank要求测试时在应用程序内部编译,这意味着对源代码的改变是强制性的。操作方式为使用Cucumber和JSON组合命令,将命令发送到在本地应用程序内部运行的服务器上,并利用UISpec运行命令。
**优点: **测试场景是在Cucumber的帮助下,用可理解的英语句子写的。强大的Symbiote实时检查工具。 活跃的社区支持。 不断扩大中的库。
缺点:对手势的支持有限。 在设备上运行测试有点难。 修改配置文件需要在实际设备上运行。 记录功能不可用。
3.4 KIF
http://www.oschina.net/translate/ios-ui-testing-with-kif
KIF是Keep It Functional项目的缩写,是一款iOS app功能性测试框架,使用Objective-C语言编写,对苹果开发者来说非常容易上手,更是一款开发者广为推荐的测试工具。KIF tester使用私有API来了解App中的视图层级。但缺点是运行较慢。
3.5 Calabash-ios
详见Calabash-android 描述。
3.6 Subliminal
http://inkling.github.io/Subliminal/
Subliminal是另一款与XCTest集成的框架。与KIF不同的是,它基于UIAutomation编写,旨在对开发者隐藏UIAutomation中一些复杂的细节。
3.7 Kiwi
https://github.com/kiwi-bdd/Kiwi/wiki/Getting-Started-with-Kiwi-2.0
Kiwi是对XCTest的一个完整替代,使用xSpec风格编写测试。 Kiwi带有自己的一套工具集,包括expectations、mocks、stubs,甚至还支持异步测试。它是一个适用于iOS 开发的Behavior Driven Development(BDD)库,优点在于其简洁的接口和可用性,易于设置和使用,非常适合新手开发者。Kiwi使用Objective-C语言编写,易于IOS开发人员上手。
3.8 Appium
http://appium.io/
Appium是一个开源的、跨平台的自动化测试工具,支持IOS、Android和FirefoxOS平台。 通过Appium,开发者无需重新编译app或者做任何调整,就可以测试移动应用,可以使测试代码访问后端API和数据库。它是通过驱动苹果的UIAutomation和Android的UiAutomator框架来实现的双平台支持,同时绑定了Selenium WebDriver用于老的Android平台测试。开发者可以使用WebDriver兼容的任何语言编写测试脚本,如Java, OC, JS, PHP,Python, Ruby, C#,Clojure 和Perl语言。
总结: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级验收测试。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: Linux CentOS 8(网卡的配置与管理)
Linux CentOS 8(网卡的配置与管理) 目录 一、项目介绍 二、命令行 三、配置文件 四、图形画界面的网卡IP配置 4.1 方法一 4.2 方法二 一、项目介绍 Linux服务器的网络配置是Linux系统管理的底层建筑,没有网络配置,服务器之间就不能…