目前最主流的自动化测试技术selenium

目前最主流的自动化测试技术selenium

2023年6月29日发(作者:)

⽬前最主流的⾃动化测试技术selenium1、Selenium是什么?Selenium测试直接运⾏在浏览器中,就像真正的⽤户在操作⼀样。Selenium经历了三个⼤的版本。主流的⾃动化测试⼯具是QTP,现在已经淘汰。2014年左右selenium开始兴起。⾃动化功能测试主要是⽤于提升测试⼈员⼯作效率,70%的⼯作时间都是在进⾏UI测试。全部都是基于前端界⾯来实现的交互性操作。尽可能实现前端的交互,⽤于模拟⽤户的实际⾏为。推出了基于JScore的selenium1.0版本。Selenium ide,已经被淘汰。⽤于录制Firefox浏览器下的web系统脚本。Selenium2.0 webDriver+IDE。已经被淘汰。Selenium3.0 webDriver的时代。APP⾃动化是基于Appium来实现的。Appium是selenium孩⼦。Selenium是⽬前最主流的⾃动化测试技术,因为跨平台和开源。跨平台:python,Java,js,c#,PHP等语⾔的使⽤。2、selenium应⽤场景(⾃动化功能测试应⽤场景)(1)web UI——selenium主要实现web UI⾃动化测试。⼀般 UI ⾃动化都是在回归测试阶段来进⾏的。主要⽤于验证流程的正确性,特定功能的正确性。(2)APP UI(3)接⼝⾃动化3、RobotFramework环境部署RobotFramework简称RF,是⽬前市⾯应⽤相对⽐较主流的⼀个测试框架,全部基于Python实现的⼀款开源跨平台的测试框架。⽀持OS与windows系统的运⾏。⽀持WebUI、APPUI、接⼝的⾃动化测试(基于不同的模块来实现不同的业务)。⽬前⽽⾔仅有的⼀个具备有GUI界⾯的框架。RF不需要懂python编程就可以操作。具备有独有的表格编程格式。环境搭建:1.安装python。——⽀持最⾼版本python3.7?2.安装RF组件:pip install robotframework、pip install robotframework-ride3.启动⽅式:在python37/Scripts/启动。——选择的⽅式打开(启动)4.安装⾃动化测试相关组件:pip install robotframework-seleniumlibrary5.下载webdriver到python的安装路径下。PS:如果安装时出现read timeout异常,就添加--default-timeout=1000。⼀、web⾃动化测试1、⾃动化基础测试流程,从⼿⼯转换为⾃动化实现形式。⾃动化在实际执⾏的时候,不会考虑整个流程是否流畅,只会依照原有的动作进⾏机械化执⾏。2、⽬前主流的⾃动化实现基于selenium+web Driver来实现的。3、环境搭建——基于python的selenium实现(1)安装python(2)安装Pycharm(3)安装Selenium+WebDriverpip直接安装Selenium;WebDriver的安装:例如安装chromDriver,⾸先直接百度chromDriver,点击chromDriver Mirror会得到所有chromDriver版本。根据⾃⼰的chrom浏览器版本下载对应的chromDriver。如果没有对应的chromDriver版本,就随便点击⼀个chromDriver版本(⽐如2.46版本的),得到其中的,根据其中的所⽀持浏览器版本找到对应的chromDriver版本。然后下载chromDriver。下载完成后,会得到⽂件,将其放到python安装的根⽬录下。4、应⽤实列(1)导环境:⼯程项⽬点击File下的Settings,点击⾥⾯的Project的Project Interpreter进⾏配置。(2)建包(New->Python Package)、建python⽂件(New->Python File)5、场景(1)⾯试⾃动化测试岗位,⼀定会问及的内容:测试框架的设计。(2)学习⾃动化的⽬的:设计⼀款独属于⾃⼰的测试框架。现阶段测试框架的核⼼内容⼀定是基于关键字驱动的。1、解决代码冗余2、解决可读性3、解决维护性4、解决代码的复⽤性最根本的解决⽅式:关键字驱动(selenium的⼆次封装)——关键字驱动最⼤的劣势:没有办法结合到⼀个系统完全100%的契合⼀个系统的⾃动化测试。只能做通⽤性的项⽬⾃动化,类似于研发⼀个iframe⼯具,只能对⼀个系统进⾏泛泛的⾃动化测试,没有办法做精。——PO模式完全契合⼀个系统,本⾝的业务和实际存在的流程来进⾏⾃动化测试的设计和管理。100%契合。6、数据驱动将代码与数据进⾏分离,单纯由数据组成⽂件,再由⽂件来驱动关键字,最终实现整个⾃动化的流程。在unittest中,通过ddt来实现。ddt全称叫做data driver test,安装ddt通过pip install ddt。可以直接读取yaml⽂件。通过pip install pyyaml安装。xlrd模块——excel读取(.xlsx⽂件)7、关键字驱动(1)当调⽤⼀个特定的关键词的时候,就可以执⾏⼀个操作?(2)关键字驱动已经⾮常⼤程度降低了冗余,提⾼了代码的可阅读性。8、关键字驱动+数据驱动形式下实现的⾃动化测试框架的设计模式:读取到数据,基于固定格式的数据内容进⾏拼接,拼接后的内容作为关键字所需要的参数,进⾏传⼊。从⽽执⾏对应的关键字。再将结果与预期结果进⾏对⽐,从⽽获得单条测试⽤例执⾏是否通过的结果。9、UnitTestPython安装时就已经默认封装好了UnitTest框架,调⽤框架的时候只需要通过直接导⼊(import)unittest包即可实现;主要⽤于管理测试⽤例和实现数据驱动。UnitTest的基本⽤法:Python中相对⽐较流⾏的⾃动化测试框架UnitTest,PyUnit,在Java中有⼀个叫做JUnit的测试框架,早期主要是⽤于做单元测试,随着⾃动化更新,能够完整的结合Selenium、Appium、Requests等实现UI⾃动化与接⼝⾃动化。四⼤特点:1、TestCase:测试⽤例,所有的⽤例都是直接继承于se类。2、TestFixture:setUp和Teardown,作为前置条件和后置条件。3、TestSuite:测试套件。4、TestRunner:测试运⾏器。⼀般与TestSuite⼀起使⽤。5、断⾔(assert):在UnitTest中封装好了成熟断⾔,可以直接被调⽤。断⾔:⾃动化测试主要⽤于对流程来进⾏的测试,断⾔就是⾃动化测试中的预期结果与实际结果的对⽐,其本⾝就是if else。UnitTest语法规则:1、UnitTest中,测试⽤例定义都是以test开头2、⽤例排序与写的顺序⽆关,排序是遵循A-Z,a-z,0-9注意执⾏顺序!1-9,a-z。Skip操作:跳过测试⽤例的执⾏,是通过装饰器来执⾏的。#

⽆条件跳过本条⽤例的执⾏@('因为我⽐较帅,所以不想执⾏')#

有条件跳过本条⽤例执⾏1 =false@less(1>2,'这是unless的理由')#

有条件跳过本条⽤例执⾏2 = true@(1<2,'这是if的理由')@edFailure #

不记录⽤例失败当中10、基于UnitTest+关键字驱动实现⾃动化测试(1)UnitTest是python中的测试专⽤的⼀个框架,初期是⽤于做单元测试,是随系统默认集成的框架,不需要额外安装。(2)UnitTest在使⽤的时候,有明确的规范定义,setUP,tearDown,testCase,前两个在unittest中默认有,但需要⾃⼰声明。11、quit和close的区别quit:关闭浏览器,并且关闭ChromeDriver进程。close:关闭当前的标签页,不会关闭进程。课后作业:基于所讲,将常⽤关键字进⾏封装,并基于UnitTest来实现⼀个基本的⾃动化测试流程。12、PageObject模式(PO模式)是⽬前测试⾏业公认最佳的⾃动化模式,取⾃关键字驱动模式来做的⼀次升级(selenium⼆次封装)。是完全基于页⾯来实现的模型。PageObject,从最初⾃动化是基于QTP来实现的,通过录制的形式,⾃动⽣成脚本,通过定义对象库来实现对页⾯的元素的收集,升级到关键字驱动的形式来实现⾃动化(通过封装对元素的操作,来实现关键字驱动),再升级到pageObject,将系统以页⾯来进⾏区分,针对不同的页⾯,基于页⾯的元素及当前页⾯所实现的业务,将其定义为⼀个完整的页⾯对象。然后对这个页⾯对象进⾏操作。在PO中,通过分层的形式,来定义出不同页⾯的操作内容:1、BasePage:基础层,⽤于提供最为底层的功能,让其他页⾯对象可以直接进⾏继承的。2、page:页⾯层,⽤于提供元素的获取,各个元素的操作⽅法的封装。3、业务层:通过这⼀层的调⽤,传⼊参数,进⾏⾃动化的运⾏。优点:针对于指定的被测业务系统的流程,执⾏⾃动化时⾮常简便。缺点:对于多个系统的复⽤性相对较差。13、PO设计原理(1)提取selenium中公⽤的⽅法,作为基本对象。(2)页⾯业务流程的关联设计。(3)调⽤业务流程实现⾃动化测试。优势:(1)将不同的页⾯封装成不同的页⾯对象,分别进⾏管理;(2)进⼀步降低冗余;(3)对于代码的阅读性和维护性有进⼀步提升。例如:在维护的时候,如果元素或者⽂本内容发⽣变化,只需要修改⼀处即可全部⽣效;(4)测开针对公司的系统,结合需求与业务,结合实际项⽬情况,设计对应的测试框架与测试⼯具,提供给测试⼈员进⾏功率提升,并且进⾏维护。14、PO的实现是如何来做的?注:*表⽰基于元组的形式进⾏处理,**表⽰字典,基于键值对的形式去获取。15、⾃动化测试⽬的对系统中存有的流程进⾏回归和⾃动执⾏。16、在⾯试时,⾃动化测试技术的相关点的内容(1)⾃动化测试相关的设计模式以及应⽤的技术点。为什么不知道如何回答⾯试官有关⾃动化测试技术的点?课后作业:基于PO模式实现⼀套⾃动化测试内容的编写。17、注意事项(1)当⾃动化运⾏时,出现新的标签页,需要切换句柄(每⼀个标签页就是⼀个单独的句柄)。为了防⽌标签页过多,导致句柄过多,所以每次切换的时候,如果不需要保存,则优先关闭旧的页⾯。handles=_handles #

数组类型print(handles)()_(handles[1])#

旧标签页为handles[0]18、框架设计思路编程语⾔:python框架:Selenium、Appium、Requests设计模式:POM(PO)、关键字数据:Excel、yaml⽤例:UnitTest、PyTest测试报告:HTMLTestRunner、Allure持续集成:邮件发送、⾃动部署、⾃动化执⾏、⾃动化测试19、ActionChains类ActionChains是selenium给我们提供了⼀个类来处理⿏标键盘类事件,⽐如单击、双击、点击⿏标右键、拖拽等事件。导⼊python⽂件中:from _chains import ActionChains基本⽅法的调⽤:ActionChains(driver).drag_and_drop_by_offset(element_hk, x_location, y_location).perform()driver:驱动。drag_and_drop_by_offset:⿏标操作事件。element_hk, x_location, y_location:元素,被操作的元素。开始移动的元素——原始元素,⿏标对元素拖到另外⼀个元素的x坐标,⿏标对元素拖到另外⼀个元素的y坐标。perform:要提交的操作。

发布者:admin,转转请注明出处:http://www.yc00.com/news/1688022069a67536.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信