自动化测试(一)课件_第1页
自动化测试(一)课件_第2页
自动化测试(一)课件_第3页
自动化测试(一)课件_第4页
自动化测试(一)课件_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、内容摘要自动化测试简介自动化测试类型自动化测试优势、劣势自动化测试适用范围自动化测试工具Selenium简介自动化测试框架第1页,共46页。自动化测试简介自动化测试是使用自动化测试工具或编写代码来替代手工测试的测试类型。自动化测试只是辅助手工测试,并不能完全替代手工,自动化更多的是去做验证型测试而非探索性测试,目的是将手工测试从重复的劳动中脱离出来,节约时间、人力成本,并且在新增一个功能时,可以对其相关所有功能做回归测试,提高软件的质量。第2页,共46页。敏捷测试与自动化测试为什么引入自动化测试敏捷开发的最大特点是高速迭代,有周期性,并且能够及时、持续的响应客户的频繁反馈。伴随着频繁的迭代,测

2、试人员需要频繁的重新进行测试。在此由于系统是不稳定的系统,也造成了测试的不稳定,我们不知道这次的故事是否会影响到系统的其他功能。在敏捷测试过程中,项目后期不会给予测试人员很多的集成测试时间,而且测试人员也无法在每次的迭代完成之后对之前的迭代进行回归测试,基于这一点,就需要自动化测试在每个迭代完成时对之前的迭代进行集成测试第3页,共46页。自动化测试类型UI自动化性能自动化接口自动化单元测试自动化第4页,共46页。自动化测试优势、劣势优势:节约人力,代码维护好,可自动执行节约时间,测试脚本可在晚上进行执行回归测试,提高软件质量代码可复用第5页,共46页。自动化测试优势、劣势劣势:代码维护成本高,

3、对测试人员的要求高不易做探索性测试不适合频繁需求变更的项目第6页,共46页。自动化测试适用范围需求变更不频繁回归测试测试人员有一定的编码基础产品型项目,项目周期长重复工作量大第7页,共46页。自动化测试工具QTPselenium浏览器IE/FireFoxIE/FireFox/Chrome/Opera语言VBJava/python/ruby/C#等是否收费有破解版,有部分插件是需要收费的免费开源是否容易上手容易有代码基础的容易是否存在GUI存在不存在是否支持录制支持支持第8页,共46页。Selenium简介Selenium是一款基于web应用程序的开源测试工具。Selenium测试直接运行在浏览

4、器中,就像真正的用户在操作一样。它支持Firefox、ie、Chrome等众多浏览器。它同时支持JAVA、C#、Ruby、Python、PHP、Perl等众多的主流语言。第9页,共46页。Selenium简介Selenium Core:JavaScript FrameworkSelenium Core是Selenium的核心部分,它由一些纯js代码组成, 可以运行在windows/linux的不同browser上,我们就是通过这些js代码,才可以实现程序对浏览器的控制。IDE:Firefox插件IDE是在core的基础上的一种应用, 通过UI实现类似QTP/Winner的脚本录制回放功能;Se

5、lenium IDE是通过监听用户对html页面的操作来录制脚本的,是真正能够监听用户对html页面的操作的录制工具第10页,共46页。Selenium简介RC(Remote Control)Selenium RC模式,是客户端利用各种编程语言,通过网络向Selenium Server发送指令,Selenium Server接收到测试指令后,启动浏览器并向其发出JavaScript调用实现对Html页面的全面追踪,并通过网络把执行结果返回给调用者Selenium Server的实现原理是其打开浏览器时,把自己的JavaScript文件嵌入网页中。然后Selenium的网页通过frame嵌入目标

6、网页。这样,就可以使用Selenium的JavaScript对象来控制目标网页第11页,共46页。Selenium简介WebDriverWebDriver启动目标浏览器,并绑定到指定端口。该启动的浏览器实例,做webdriver的remoteserver。Client端通过CommandExcuter发送HTTPRequest给remoteserver的侦听端口(通信协议:thewebriverwireprotocol)Remoteserver需要依赖原生的浏览器组件(如:IEDriver.dll,chromedriver.exe),来转化转化浏览器的native调用第12页,共46页。Sel

7、enium RC与Selenium WebdriverSelenium RCSelenium WebDriverSelenium RC的结构复杂,因为服务器需要启动在开始试运行前。webdriver架构比Selenium RC简单,因为它控制着从操作系统层面的浏览器。Selenium服务器充当浏览器和Selenese的命令之间的中间人webdriver直接相互作用,以在浏览器和使用浏览器的引擎进行控制。Selenium RC的脚本执行速度较慢,因为它使用了Javascript来与RC互动webdriver的速度更快,因为它直接交互使用的浏览器。Selenium RC不能支持无头,因为它需要一个

8、真正的浏览器一起工作webdriver可以支持无头执行它是一个简单的API复杂,API相比,RC有点大不能测试移动应用程序可测试iPhone/Android应用程序第13页,共46页。Selenium安装(基于Python语言)下载并安装Pythonpython-2.7.10.msi配置python环境变量环境变量:Path变量值:C:Python27下载setuptools【python基础包工具】python easy_install.py安装pippython setup.py install进入C:Python27ScriptsEasy_install.exe pip第14页,共46页

9、。Selenium安装(基于Python语言)安装selenium进入C:Python27Scripts,执行pipinstall-Uselenium安装java下载并安装selenium服务端selenium-server-standalone-2.39.0.jar在selenium-server-standalone-2.39.0.jar目录下执行:java-jar selenium-server-standalone-2.39.0.jar安装Chrome driver把chromedriver.exe放置到chrome安装目录下,并配置chromedriver.exe环境变量第15页,共

10、46页。浏览器操作设置最大化driver.maximize_window()设置浏览器大小driver.set_window_size(宽, 高)设置浏览器前进后退driver.back()driver.forward()关闭浏览器driver.quit()打开浏览器driver.get(“”)第16页,共46页。浏览器操作第17页,共46页。对象定位对象的定位和操作是自动化测试的核心部分,其中操作又是建立在定位的基础上,因此对象的定位又显得特别重要。对象的定位分为以下几种:IdNameClass nameTag nameLink textXpath:部分浏览器会提供计算xpath的插件。(f

11、irefox、chrome)Css selector第18页,共46页。对象定位-单个元素定位Id定位:find_element_by_id()Name定位:find_element_by_name()Class name定位:find_element_by_class_name()tag name定位:find_element_by_tag_name()link text定位:find_element_by_link_text()find_element_by_partial_link_text()Xpath定位:find_element_by_xpath()css selector定位:f

12、ind_element_by_css_selector()第19页,共46页。对象定位-一组元素定位Id定位:find_elements_by_id()Name定位:find_elements_by_name()Class name定位:find_elements_by_class_name()tag name定位:find_elements_by_tag_name()link text定位:find_elements_by_link_text()find_elements_by_partial_link_text()Xpath定位:find_elements_by_xpath()css se

13、lector定位:find_elements_by_css_selector()第20页,共46页。对象定位对象的定位要依据idnamecssxpath的顺序进行定位id、name是最常用并且最容易的方式Css、xpath往往会与id、name配合使用Xpath是最脆弱的方式unitsServices componesui第21页,共46页。对象定位第22页,共46页。对象定位第23页,共46页。对象定位-id第24页,共46页。对象定位-name第25页,共46页。对象定位-xpath第26页,共46页。操作测试对象清除元素内容Clear()模拟按键输入Send_keys(“”)单击元素Cl

14、ick()提交表单Submit()获取大小Size获取文本内容Text获取相关属性值get_attribute(name)查看对象是否可见is_displayed()获取对象属性get_attribute()第27页,共46页。鼠标事件右击:context_click()双击:double_click()拖动:drag_and_drop(source,target)鼠标悬停:move_to_element()按下鼠标左键在一个元素上:click_and_hold()第28页,共46页。键盘事件send_keys(Keys.BACK_SPACE) 删除键(BackSpace)send_keys(

15、Keys.SPACE) 空格键(Space)send_keys(Keys.TAB) 制表键(Tab)send_keys(Keys.ESCAPE) 回退键(Esc)send_keys(Keys.ENTER) 回车键(Enter)send_keys(Keys.CONTROL,a) 全选(Ctrl+A)send_keys(Keys.CONTROL,c) 复制(Ctrl+C)send_keys(Keys.CONTROL,x) 剪切(Ctrl+X)send_keys(Keys.CONTROL,v) 粘贴(Ctrl+V)第29页,共46页。设置等待时间固定休眠时间Sleep(时间)超时等待,设置最长等待时

16、间implicitly_wait(时间)设置每隔一段时间内检测当前页面元素是否存在WebDriverWait(driver,时间).until( )WebDriverWait(driver,时间).until_not()第30页,共46页。层级定位元素有多层父元素,当定位子元素时需要先定位父元素,然后定位到子元素。driver.find_element_by_id().find_element_by_link_text()界面中多个frame,多个frame处于父级子级关系,先找到父级的frame1,再找到子级的frame2.(可通过frame的id及name进行定位)driver.switc

17、h_to_frame(“frame1)driver.switch_to_frame(frame2)第31页,共46页。窗口处理获取当前窗口current_window_handle获取所有窗口window_handles切换窗口switch_to_window(待切换窗口)第32页,共46页。对话框处理定位对话框alert = driver.switch_to_alert()获取对话框文本内容alert.text()点击对话框确认按钮alert.accept()点击对话框取消按钮alert.dismiss()第33页,共46页。下拉框处理test1test2test3test4test5tes

18、t6第34页,共46页。下拉框处理例子#-*-coding=utf-8from selenium import webdriverimport os,timedriver= webdriver.Chromefile_path = file:/ + os.path.abspath(test.html)driver.get(file_path)time.sleep(2)#先定位到下拉框m=driver.find_element_by_id(“optiontest)#再点击下拉框下的选项m.find_element_by_xpath(/optionvalue=test2).click()time.s

19、leep(1)driver.quit()第35页,共46页。执行js文件当遇到WebDriver无法完成的操作时,可以通过执行js文件来完成。方法:execute_script(js)第36页,共46页。cookie处理获取所有cookie信息get_cookies()获取制定cookie信息get_cookies(name)添加cookie信息add_cookie(name,value)删除特定cookiedelete_cookie(name)删除所有cookiedelete_all_cookies()第37页,共46页。cookie处理获取所有cookie信息get_cookies()获取

20、制定cookie信息get_cookies(name)添加cookie信息add_cookie(name,value)删除特定cookiedelete_cookie(name)删除所有cookiedelete_all_cookies()第38页,共46页。验证码处理去掉验证码设置万能验证码Python图片验证码获取(识别率不是百分之百)通过添加登录cookie通过挡板第39页,共46页。断言处理assert :验证失败了,测试终止Verify:验证失败了,其余测试案例继续执行Waitfor:待某一条件为True时测试案例执行,待某一条件为false时测试案例失败并暂停测试。第40页,共46页。

21、断言处理assertLocation(判断当前是在正确的页面)assertTitle(检查当前页面的title是否正确)assertValue(检查input的值, checkbox或radio,有值为”on”无为”off”)assertSelected(检查select的下拉菜单中选中是否正确)assertSelectedOptions(检查下拉菜单中的选项的是否正确)assertText(检查指定元素的文本)assertTextPresent(检查在当前给用户显示的页面上是否有出现指定的文本)assertTextNotPresent(检查在当前给用户显示的页面上是否没有出现指定的文本)as

22、sertAttribute(检查当前指定元素的属性的值)assertTable(检查table里的某个cell中的值)assertEditable(检查指定的input是否可以编辑)assertNotEditable(检查指定的input是否不可以编辑)assertAlert(检查是否有产生带指定message的alert对话框)waitForElementPresent (等待检验某元素的存在。为真时,则执行。)第41页,共46页。自动化测试框架为什么引入自动化测试框架 有别于传统的桌面应用开发,Web应用因为其迭代周期短,需求变化快特殊性质,越来越多的Web开发团队在拥抱敏捷。同时随着前端技术Javacript,Html5,等不断被推出和完善,Web应用也变得越来越复杂很绚丽。这都给我们的测试带来了挑战。第42页,共46页。自动化测试框架为什么引入自动化测试框架持续变化的需求复杂的UI往往一个测试团队需要应付多个项目的测试工作非常有限的资源(人力,成本)跨平台、跨浏览器第43页,共46页。自动化测试框架为什么引入自动化测试框架没有框架的自动化测试是找不到对象的,即使找到了也不会很幸福,就像没有车没有房很难找到对象是一样的道理。第44页,共46

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论