码老师抖音号:UNO哥聊软件试验
01 甚么是智能化试验架构
01 甚么是架构
架构是整座或部份掌控系统的可宠信内部结构设计,整体表现为几组抽象化梁柱及梁柱示例间可视化的方式。
它明确规定了应用领域的数据库掌控系统,阐释了整座内部结构设计、协同梁柱间的倚赖亲密关系、职责重新分配和掌控业务流程,整体表现为几组tcsh和其示例间协同的方式。
架构通常是 成形、平稳的,它能处置掌控系统许多技术细节难题,比如说,表达方式处置,可靠性,报文掌控等难题。除了架构通常都历经许多人采用,因此内部结构较好,因此可扩展性也较好,所以它是急速升级换代的,能间接享用自己升级换代标识符增添的益处。02 甚么是智能化试验架构
智能化试验框架是为智能化试验用例或是JAVA提供更多继续执行自然环境而构筑的基础建设。智能化试验架构有利于有效地合作开发、继续执行和调查报告智能化试验用例。
1、缺点:
标识符F83E43Se提升试验工作效率更高的试验覆盖面积保护工作效率高更早辨认出和历史记录bug2、架构的基本组件
需要配置文件管理通常需要一个配置文件去掌控一些自然环境信息、开关。配置文件能是txt/xml/yaml/properties/ini,通常.properties采用较多在JAVA里,Python的话通常会选择ini文件。业务逻辑标识符和试验JAVA分离如果标识符和JAVA在一个类文件,那么就根本没有用到标识符重构,F83E43Se。标识符和用例文件分离后,会更加清晰,能有更多人合作开发JAVA,方便调试。调查报告和日志文件输出继续执行了多少case,case结果如何,这都需要调查报告来展示,通常采用第三方插件来实现这个功能。好多调查报告格式是html,简单,明了的风格。日志输出也很重要,如果发生报错,JAVA继续执行失败,通过日志快速定位发生难题位置。自定义的库的封装许多功能需要重复调用,能写成一个公用方式,放到辅助工具包下,每次方便调用,例如浏览器引擎类和basepage.py的封装。管理、继续执行JAVA方式例如Python中单元试验架构unittest采用率非常高。第三方插件引入有时候一些功能需要借助第三方插件,能够更好实现,例如AutoIT(来实现文件上传和下载)。除了利用第三方调查报告插件生成基于html格式的试验调查报告。持续集成git、svn、ant、maven,jenkins,我们会把这整合到jenkins,达到持续集成,一键继续执行试验JAVA。总结:
一个简单的智能化试验架构,可能包含哪些组成部份:
03 为甚么需要智能化试验架构
使智能化测试的实施更容易:一个好的智能化试验架构是能让不那么懂技术的人也能写智能化试验JAVA。解决智能化试验JAVA本身存在的难题:如异常处置和场景恢复。试验易于保护。可宠信性:能实现一些通用功能,简化JAVA合作开发过程。试验调查报告美观易读。04 判断是否需要智能化试验
智能化试验成本投入高,风险大,并且不是所有的项目都适合智能化。智能化试验的优势在于反复迭代,它的价值产出在于长期的回归试验,以保证被测产品长期稳定地版本更新。
适用项目:
项目周期要长,且需求不会频繁变更。掌控系统中多数对象要能被识别,并且不存在大量第三方插件。02 智能化试验架构的类型
01 智能化试验架构的分类
下面是目前流行的各种类型的智能化试验架构。这些架构可能基于对不同关键因素(例如驱动类型、可宠信性、易于保护等)进行智能化的支持而彼此不同。
1、基于模块的试验架构:
这种架构将整座“试验中的应用领域程序”分为许多逻辑和独立的模块。对每个模块,创建一个独立的试验JAVA,这些JAVA结合在一起时,会构建成更大的试验JAVA,代表多个模块,这些模块被抽象化层隔开,这样在应用领域程序的各个部份所做的更改不会对该模块产生影响。
免费领取 码老师软件试验 课程笔记+超多学习资料+完整视频+最新面试题,能
缺点:在为每个模块实现试验JAVA的同时,试验数据已经嵌入到试验JAVA中,这导致采用不同的试验数据进行试验时需要在试验JAVA中进行操作。2、库架构试验架构
库数据库掌控系统试验架构是建立在基于模块的试验架构之上,但比后者有一些额外的优势。它没有将试验的应用领域程序划分为试验JAVA,而是划分为函数。因此,为试验中的应用领域程序创建一个由公共函数组成的公共库,当需要时,能从试验JAVA中调用这些库。它的基本原理就是确定通用的步骤,并将这些步骤分组到公共库下的函数中,在需要的时候在试验JAVA中调用这些函数。
比如说:一个登录的步骤,能把它组合成一个函数,并保存到一个库中,登录时能间接从库中调用这个函数,而不需要重新再编写标识符。
缺点:像基于模块的架构一样,试验数据嵌入试验JAVA中,改变数据需要修改JAVA;随着越来越多的库的引入,可能会使架构越来越复杂。
3、数据驱动试验架构
数据驱动试验架构将试验JAVA逻辑和试验数据彼此分离。能把试验数据单独存储起来,存储数据的能是 xml文件、excel文件、文本文件、csv文件、ODBC数据库等。通常都是以key-value
缺点:① 过程比较复杂,可能需要定制试验数据源格式和读取机制② 只有具有相同继续执行步骤集的相似试验用例才能组合成多组数据。不同的继续执行步骤集需要不同的试验用例
4、关键字驱动试验架构
关键字驱动试验架构是对数据驱动试验架构的扩展,从某种意义上说,它不仅将试验数据从JAVA中分离出来,它还将数据试验JAVA的特定标识符集保存到外部数据文件中。这些标识符集被称为关键字,每个关键字都一种操作。关键字和试验数据都是独立于该架构。
缺点:① 需要懂得关键字的创建机制,从而能自己合作开发关键字
② 随着越来越多的关键字引入,可能会使架构逐渐变得复杂
③ 试验用例变得更长且复杂,从而影响试验用例的可保护性
5、混合试验架构
混合试验架构就是上述(模块化,数据驱动和关键字驱动)多种类型架构的组合。就是利用各种类型架构的缺点,组合起来的混合型试验架构。
在这种架构中,通过将试验用例结合到模块化试验架构中,从模块化JAVA中合作开发试验用例。每个试验用例都采用一个驱动程序JAVA,该JAVA采用数据驱动架构中的数据文件和关键字驱动架构中的操作文件。
缺点:会比其他类型的试验架构更为复杂一些,例如阅读、保护等
6、行为驱动合作开发框架行为驱动试验架构能让合作开发人员、试验人员等以易于阅读和理解的格式实现功能验证的智能化。可通过自然语言来描述试验功能,试验场景,试验步骤,试验结果等。
02 流行的智能化试验架构
1、Robot Framework如果要采用python智能化试验架构进行试验智能化,则Robot Framework是最佳选择。Robot Framework是基于Python的,但是也能采用 Jython(Java)或IronPython(.NET)语言进行JAVA用例的编写。
Robot Framework采用关键字驱动的方式使试验用例易于创建。Robot Framework还能试验MongoDB、FTP、Android、Appium等。它拥有非常多的试验库,包括Selenium WebDriver库和其他常用的的辅助工具。Robot Framework具有许多API,可帮助使其尽可能地扩展。
2、WebdriverIOWebdriverIO是基于Node.js的智能化试验架构。它具有集成的试验运行程序,能为Web应用领域程序和本机移动APP运行智能化试验用例。所以,WebdriverIO能同时在WebDriver协议和Chrome Devtools协议上运行,从而使其对于基于Selenium Webdriver的跨浏览器试验或基于Chromium的智能化都非常有效。由于WebDriverIO是开源的,因此测试工程师能获得一堆满足智能化需求的插件。
3、CitrusCitrus是一个开源试验架构,试验人员能采用该架构智能化针对任何消息传递协议或数据格式的集成试验。对于诸如REST、HTTP、SOAP或JMS之类的任何消息传递传输,Citrus试验架构都适用于试验消息传递集成。如果需要与用户界面进行可视化然后验证后端过程,则能将Citrus与Selenium进行集成
4、CypressCypress是一个以合作开发人员为中心的试验智能化架构,该架构使TDD试验驱动合作开发对合作开发人员而言成为现实。它的内部结构设计原理是能够非常简单地将所有内容打包并捆绑在一起以进行整座端到端试验。Cypress的架构与Selenium不同。Selenium WebDriver在浏览器外部远程运行,而Cypress在其内部运行。这种方式有利于介绍浏览器内部和外部发生的所有事情,以提供更多更一致的试验结果。
5、SeleniumWeb应用领域程序中最受欢迎的开源试验智能化架构之一。Selenium具有跨平台和跨浏览器功能,它还能用作许多其他试验辅助工具的基础。Selenium支持多种编程语言,例如Java、C#、PHP、Python、Ruby等。它拥有最大的在线社区之一,因此更加易于保护。
Selenium能通过广泛的库和API进行高度扩展,以满足每个团队的需求。Selenium是试验人员首选的试验架构,因为能编写更高级的试验JAVA来满足各种复杂程度。它提供更多了用于试验创作的回放辅助工具,而无需学习特定的JAVA语言。
6、CarinaCarina采用流行的开源解决方案(如Appium、TestNG和Selenium)构建的,可减少对特定技术堆栈的倚赖。试验人员能试验APP(原生APP、混合APP、WebAPP)、WEB应用领域程序、REST服务和数据库。Carina架构支持不同类型的数据库,例如MySQL、SQL Server、Oracle、PostgreSQL,从而提供更多了采用MyBatis ORM架构实现DAO层的完美体验。
Carina支持所有流行的浏览器和移动设备,并且在IOS/Android间宠信了高达80%的试验智能化标识符。API试验基于Freemarker模板引擎,它在生成REST请求方面提供更多了极大的灵活性。Carina是跨平台的,能在Unix或Windows OS上轻松运行试验用例。
03 Selenium
Selenium是一个用于Web应用领域程序试验的辅助工具,是一套完整的web应用领域程序试验掌控系统,包含了试验的录制(selenium IDE)、编写及运行(Selenium Remote Control)和试验的并行处置(Selenium Grid)。Selenium的核心Selenium Core基于JsUnit,完全由JavaScript编写,
因此能用于任何支持JavaScript的浏览器上。Selenium能模拟真实浏览器,智能化试验辅助工具,支持多种浏览器,爬虫中主要用来解决JavaScript渲染难题。
这个辅助工具的主要功能包括:试验与浏览器的兼容性,试验你的应用领域程序看是否能够较好得工作在不同浏览器和操作掌控系统之上。缺点:
开源:不需要钱,且方便进行二次合作开发,例如提取对json和xml的处置来实现的数据驱动等。
灵活性:因为更加入了xpath(当然大型项目的JAVA里xpath 慎用,尽量取id或稳定的属性),加上配合IDE进行定位等,效果比较好。
资料更全面性,用该架构的公司越来越多。
缺点:
无论是RC还是Webdriver,对试验人员的编码水平有一定要求。
ant,testng,hudson采用也都是小众,大多数人执行这个架构前需要有较长时间学习适应。
时间较短,不如QTP如此完善。
免费领取 码老师软件试验 课程笔记+超多学习资料+完整视频+最新面试题,能
01 selenium 1.0
selenium 1.0 包括两部份:
selenium serverClient Libraries支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera,Edge等。
1、selenium serverselenium server负责掌控浏览器的行为。主要有launcher,Http Proxy,selenium core。selenium core采用Selenium Server嵌入到浏览器页面中。实质上,selenium core是由JS函数组成,这样我们能实现用程序对浏览器进行操作。
2、client Libraries编写试验用例时掌控selenium server的库。
3、testcase的继续执行过程
02 selenium 2.0(Webdriver)
Selenium 2.0 将浏览器原生的API封装成WebDriver API,能间接操作浏览器页面里的元素,甚至操作浏览器本身(截屏,窗口大小,启动,关闭,安装插件,配置证书之类的),因此就像真正的用户在操作一样。
1、Selenium2的架构:
webdriver按照server–client的经典内部结构设计模式内部结构设计:
server端就是remote server,能是任意的浏览器:我们的JAVA启动浏览器后,该浏览器就是remote server,它的职责就是等待client发送请求并做出相应。client端简单说来就是我们的试验标识符:试验标识符中的一些行为,比如说打开浏览器,转跳到特定的url等操作是以http请求的方式发送给被server端(也就是被测浏览器)server接受请求,并继续执行相应操作,并在response中返回继续执行状态、返回值等信息。
2、WebDriver Wire
the WebDriver Wire Protocol是Selenium自己内部结构设计定义的协议,这套协议非常之强大,几乎能操作浏览器做任何事情,包括打开、关闭、最大化、最小化、元素定位、元素点击、上传文件等。
WebDriver Wire协议是通用的,也就是说不管FirefoxDriver还是ChromeDriver,启动之后都会在某一个端口启动基于这套协议的Web Service。例如FirefoxDriver初始化成功,默认从http://localhost:7055开始,IE则是http://localhost:52432。3、webdriver的工作原理:
启动浏览器后,selenium-webdriver会将目标浏览器绑定到特定的端口,启动后的浏览器则作为webdriver的remote server。客户端(也就是试验JAVA),借助ComandExecutor发送HTTP请求给sever端(通信协议:The WebDriver Wire Protocol,在HTTP request的body中,会以WebDriver Wire协议明确规定的JSON格式的字符串来告诉Selenium我们希望浏览器接下来做甚么事情)。Sever端需要倚赖原生的浏览器组件,转化Web Service的命令为浏览器native的调用来完成操作。04 Appium
Appium是一个开源的、跨平台的智能化试验辅助工具,支持IOS、Android和FirefoxOS平台。通过Appium,合作开发者无需重新编译app或是做任何调整,就能试验移动应用领域,能使试验标识符访问后端API和数据库。它是通过驱动苹果的UIAutomation和Android的UiAutomator架构来实现的双平台支持,同时绑定了Selenium WebDriver用于老的Android平台试验。合作开发者能采用WebDriver兼容的任何语言编写试验JAVA,如Java, OC, JS, PHP,Python, Ruby, C#,Clojure 和Perl语言。
01 UIAutomation
UIAutomation是苹果提供更多的UI智能化试验架构,采用Javascript编写。
基于UIAutomation有扩展型的辅助工具架构和驱动型的架构:扩展型架构以JavaScript扩展库方式提供更多了许多好用js辅助工具。注入式的架构通常会提供更多一些Lib或是是Framework,要求试验人员在待测应用领域的标识符工程中导入这些内容,架构能通过他们完成对app的驱动。驱动型UI Automation 在智能化试验底层采用了UI Automation库,通过TCP通信的方式驱动UI Automation来完成智能化试验,通过这种方式,编辑JAVA的语言不再局限于JavaScript。Automation是Apple官方提供更多的UI智能化试验的解决方式,但接口不够丰富。
02 UiAutomator
UIAutomator是由谷歌提供更多的试验架构,它提供更多了原生Android app和游戏的高级UI试验。这是一个包含API的Java库,用来创建功能性UI试验,除了运行试验的继续执行引擎。该库自带Android SDK。
缺点:它在运行访问不同的进程时,会给JUnit试验案例特权。库由谷歌社区支持和保护。缺点:仅支持android4.1(API level 16)及以上。不支持JAVA历史记录。支持的重点是Java。如智能化试验中有跨APP操作,能结合UiAutomator实现。
END
免费领