1、内容摘要内容摘要n自动化测试简介n自动化测试类型n自动化测试优势、劣势n自动化测试适用范围n自动化测试工具nSelenium简介n自动化测试框架第1页,共46页。自动化测试简介自动化测试简介自动化测试是使用自动化测试工具或编写代码来替代手工测试的测试类型。自动化测试只是辅助手工测试,并不能完全替代手工,自动化更多的是去做验证型测试而非探索性测试,目的是将手工测试从重复的劳动中脱离出来,节约时间、人力成本,并且在新增一个功能时,可以对其相关所有功能做回归测试,提高软件的质量。第2页,共46页。敏捷测试与自动化测试敏捷测试与自动化测试n为什么引入自动化测试敏捷开发的最大特点是高速迭代,有周期性,并
2、且能够及时、持续的响应客户的频繁反馈。伴随着频繁的迭代,测试人员需要频繁的重新进行测试。在此由于系统是不稳定的系统,也造成了测试的不稳定,我们不知道这次的故事是否会影响到系统的其他功能。在敏捷测试过程中,项目后期不会给予测试人员很多的集成测试时间,而且测试人员也无法在每次的迭代完成之后对之前的迭代进行回归测试,基于这一点,就需要自动化测试在每个迭代完成时对之前的迭代进行集成测试第3页,共46页。自动化测试类型自动化测试类型nUI自动化n性能自动化n接口自动化n单元测试自动化第4页,共46页。自动化测试优势、劣势自动化测试优势、劣势优势:n节约人力,代码维护好,可自动执行n节约时间,测试脚本可在
3、晚上进行执行n回归测试,提高软件质量n代码可复用第5页,共46页。自动化测试优势、劣势自动化测试优势、劣势劣势:n代码维护成本高,对测试人员的要求高n不易做探索性测试n不适合频繁需求变更的项目第6页,共46页。自动化测试适用范围自动化测试适用范围n需求变更不频繁n回归测试n测试人员有一定的编码基础n产品型项目,项目周期长n重复工作量大第7页,共46页。自动化测试工具自动化测试工具QTPselenium浏览器IE/FireFoxIE/FireFox/Chrome/Opera语言VBJava/python/ruby/C#等是否收费有破解版,有部分插件是需要收费的免费开源是否容易上手容易有代码基础的
4、容易是否存在GUI存在不存在是否支持录制支持支持第8页,共46页。SeleniumSelenium简介简介nSelenium是一款基于web应用程序的开源测试工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。它支持Firefox、ie、Chrome等众多浏览器。它同时支持JAVA、C#、Ruby、Python、PHP、Perl等众多的主流语言。第9页,共46页。SeleniumSelenium简介简介nSelenium Core:JavaScript FrameworknSelenium Core是Selenium的核心部分,它由一些纯js代码组成,可以运行在window
5、s/linux的不同browser上,我们就是通过这些js代码,才可以实现程序对浏览器的控制。nIDE:Firefox插件nIDE是在core的基础上的一种应用,通过UI实现类似QTP/Winner的脚本录制回放功能;nSelenium IDE是通过监听用户对html页面的操作来录制脚本的,是真正能够监听用户对html页面的操作的录制工具第10页,共46页。SeleniumSelenium简介简介nRC(Remote Control)nSelenium RC模式,是客户端利用各种编程语言,通过网络向Selenium Server发送指令,Selenium Server接收到测试指令后,启动浏览
6、器并向其发出JavaScript调用实现对Html页面的全面追踪,并通过网络把执行结果返回给调用者nSelenium Server的实现原理是其打开浏览器时,把自己的JavaScript文件嵌入网页中。然后Selenium的网页通过frame嵌入目标网页。这样,就可以使用Selenium的JavaScript对象来控制目标网页第11页,共46页。SeleniumSelenium简介简介nWebDrivern WebDriver 启动目标浏览器,并绑定到指定端口。该启动的浏览器实例,做web driver的remote server。n Client 端通过CommandExcuter 发送HT
7、TPRequest 给remote server 的侦听端口(通信协议:the webriver wire protocol)n Remote server 需要依赖原生的浏览器组件(如:IEDriver.dll,chromedriver.exe),来转化转化浏览器的native调用第12页,共46页。SeleniumSelenium RCRC与与Selenium WebdriverSelenium WebdriverSelenium RCSelenium WebDriverSelenium RC的结构复杂,因为服务器需要启动在开始试运行前。webdriver架构比Selenium RC简单,
8、因为它控制着从操作系统层面的浏览器。Selenium服务器充当浏览器和Selenese的命令之间的中间人webdriver直接相互作用,以在浏览器和使用浏览器的引擎进行控制。Selenium RC的脚本执行速度较慢,因为它使用了Javascript来与RC互动webdriver的速度更快,因为它直接交互使用的浏览器。Selenium RC不能支持无头,因为它需要一个真正的浏览器一起工作webdriver可以支持无头执行它是一个简单的API复杂,API相比,RC有点大不能测试移动应用程序可测试iPhone/Android应用程序第13页,共46页。SeleniumSelenium安装(基于安装(
9、基于PythonPython语言)语言)n下载并安装Pythonpython-2.7.10.msin配置python环境变量环境变量:Path变量值:C:Python27n下载setuptools【python基础包工具】python easy_install.pyn安装pippython setup.py installn进入C:Python27ScriptsEasy_install.exe pip第14页,共46页。SeleniumSelenium安装(基于安装(基于PythonPython语言)语言)n安装selenium进入C:Python27Scripts,执行pip install
10、-U seleniumn安装javan下载并安装selenium服务端selenium-server-standalone-2.39.0.jar在selenium-server-standalone-2.39.0.jar目录下执行:java-jar selenium-server-standalone-2.39.0.jarn安装Chrome driver把chromedriver.exe放置到chrome安装目录下,并配置chromedriver.exe环境变量第15页,共46页。浏览器操作浏览器操作n设置最大化driver.maximize_window()n设置浏览器大小driver.se
11、t_window_size(宽,高)n设置浏览器前进后退driver.back()driver.forward()n关闭浏览器driver.quit()n打开浏览器driver.get(“”)第16页,共46页。浏览器操作浏览器操作第17页,共46页。对象定位对象定位n对象的定位和操作是自动化测试的核心部分,其中操作又是建立在定位的基础上,因此对象的定位又显得特别重要。n对象的定位分为以下几种:nIdnNamenClass namenTag namenLink textnXpath:部分浏览器会提供计算xpath的插件。(firefox、chrome)nCss selector第18页,共46
12、页。对象定位对象定位-单个元素定位单个元素定位nId定位:n find_element_by_id()nName定位:n find_element_by_name()nClass name定位:n find_element_by_class_name()ntag name定位:n find_element_by_tag_name()nlink text定位:n find_element_by_link_text()n find_element_by_partial_link_text()nXpath定位:n find_element_by_xpath()ncss selector定位:n fi
13、nd_element_by_css_selector()第19页,共46页。对象定位对象定位-一组元素定位一组元素定位nId定位:n find_elements_by_id()nName定位:n find_elements_by_name()nClass name定位:n find_elements_by_class_name()ntag name定位:n find_elements_by_tag_name()nlink text定位:n find_elements_by_link_text()n find_elements_by_partial_link_text()nXpath定位:n f
14、ind_elements_by_xpath()ncss selector定位:n find_elements_by_css_selector()第20页,共46页。对象定位对象定位n对象的定位要依据idnamecssxpath的顺序进行定位nid、name是最常用并且最容易的方式nCss、xpath往往会与id、name配合使用nXpath是最脆弱的方式unitsServices componesui第21页,共46页。对象定位对象定位第22页,共46页。对象定位对象定位第23页,共46页。对象定位对象定位-id-id第24页,共46页。对象定位对象定位-name-name第25页,共46页。
15、对象定位对象定位-xpath-xpath第26页,共46页。操作测试对象操作测试对象n清除元素内容nClear()n模拟按键输入nSend_keys(“”)n单击元素nClick()n提交表单nSubmit()n获取大小nSizen获取文本内容nTextn获取相关属性值nget_attribute(name)n查看对象是否可见nis_displayed()n获取对象属性nget_attribute()第27页,共46页。鼠标事件鼠标事件n右击:context_click()n双击:double_click()n拖动:drag_and_drop(source,target)n鼠标悬停:move_
16、to_element()n按下鼠标左键在一个元素上:click_and_hold()第28页,共46页。键盘事件键盘事件nsend_keys(Keys.BACK_SPACE)删除键(BackSpace)nsend_keys(Keys.SPACE)空格键(Space)nsend_keys(Keys.TAB)制表键(Tab)nsend_keys(Keys.ESCAPE)回退键(Esc)nsend_keys(Keys.ENTER)回车键(Enter)nsend_keys(Keys.CONTROL,a)全选(Ctrl+A)nsend_keys(Keys.CONTROL,c)复制(Ctrl+C)nsen
17、d_keys(Keys.CONTROL,x)剪切(Ctrl+X)nsend_keys(Keys.CONTROL,v)粘贴(Ctrl+V)第29页,共46页。设置等待时间设置等待时间n固定休眠时间n Sleep(时间)n超时等待,设置最长等待时间n implicitly_wait(时间)n设置每隔一段时间内检测当前页面元素是否存在n WebDriverWait(driver,时间).until()n WebDriverWait(driver,时间).until_not()第30页,共46页。层级定位层级定位n元素有多层父元素,当定位子元素时需要先定位父元素,然后定位到子元素。driver.fin
18、d_element_by_id().find_element_by_link_text()n界面中多个frame,多个frame处于父级子级关系,先找到父级的frame1,再找到子级的frame2.(可通过frame的id及name进行定位)driver.switch_to_frame(“frame1)driver.switch_to_frame(frame2)第31页,共46页。窗口处理窗口处理n获取当前窗口current_window_handlen获取所有窗口window_handlesn切换窗口switch_to_window(待切换窗口)第32页,共46页。对话框处理对话框处理n定位
19、对话框alert=driver.switch_to_alert()n获取对话框文本内容alert.text()n点击对话框确认按钮alert.accept()n点击对话框取消按钮alert.dismiss()第33页,共46页。下拉框处理下拉框处理test1test2test3test4test5test6第34页,共46页。下拉框处理下拉框处理例子例子#-*-coding=utf-8from selenium import webdriverimport os,timedriver=webdriver.Chromefile_path=file:/+os.path.abspath(test.h
20、tml)driver.get(file_path)time.sleep(2)#先定位到下拉框m=driver.find_element_by_id(“optiontest)#再点击下拉框下的选项m.find_element_by_xpath(/optionvalue=test2).click()time.sleep(1)driver.quit()第35页,共46页。执行执行jsjs文件文件n当遇到WebDriver无法完成的操作时,可以通过执行js文件来完成。n方法:execute_script(js)第36页,共46页。cookiecookie处理处理n获取所有cookie信息get_coo
21、kies()n获取制定cookie信息get_cookies(name)n添加cookie信息add_cookie(name,value)n删除特定cookiedelete_cookie(name)n删除所有cookiedelete_all_cookies()第37页,共46页。cookiecookie处理处理n获取所有cookie信息get_cookies()n获取制定cookie信息get_cookies(name)n添加cookie信息add_cookie(name,value)n删除特定cookiedelete_cookie(name)n删除所有cookiedelete_all_coo
22、kies()第38页,共46页。验证码处理验证码处理n去掉验证码n设置万能验证码nPython图片验证码获取(识别率不是百分之百)n通过添加登录cookien通过挡板第39页,共46页。断言处理断言处理nassert:验证失败了,测试终止nVerify:验证失败了,其余测试案例继续执行nWaitfor:待某一条件为True时测试案例执行,待某一条件为false时测试案例失败并暂停测试。第40页,共46页。断言处理断言处理nassertLocation(判断当前是在正确的页面)nassertTitle(检查当前页面的title是否正确)nassertValue(检查input的值,checkbo
23、x或radio,有值为”on”无为”off”)nassertSelected(检查select的下拉菜单中选中是否正确)nassertSelectedOptions(检查下拉菜单中的选项的是否正确)nassertText(检查指定元素的文本)nassertTextPresent(检查在当前给用户显示的页面上是否有出现指定的文本)nassertTextNotPresent(检查在当前给用户显示的页面上是否没有出现指定的文本)nassertAttribute(检查当前指定元素的属性的值)nassertTable(检查table里的某个cell中的值)nassertEditable(检查指定的inp
24、ut是否可以编辑)nassertNotEditable(检查指定的input是否不可以编辑)nassertAlert(检查是否有产生带指定message的alert对话框)nwaitForElementPresent(等待检验某元素的存在。为真时,则执行。)第41页,共46页。自动化测试框架自动化测试框架n为什么引入自动化测试框架 有别于传统的桌面应用开发,Web应用因为其迭代周期短,需求变化快特殊性质,越来越多的Web开发团队在拥抱敏捷。同时随着前端技术Javacript,Html5,等不断被推出和完善,Web应用也变得越来越复杂很绚丽。这都给我们的测试带来了挑战。第42页,共46页。自动化
25、测试框架自动化测试框架n为什么引入自动化测试框架n持续变化的需求n复杂的UIn往往一个测试团队需要应付多个项目的测试工作n非常有限的资源(人力,成本)n跨平台、跨浏览器第43页,共46页。自动化测试框架自动化测试框架n为什么引入自动化测试框架没有框架的自动化测试是找不到对象的,即使找到了也不会很幸福,就像没有车没有房很难找到对象是一样的道理。第44页,共46页。自动化测试框架自动化测试框架n自动化测试框架的特性n数据驱动n关键字驱动n对象库的分离和管理n自动化测试脚本的组织和管理n脚本的可重用和可配置第45页,共46页。生活中的辛苦阻挠不了我对生活的热爱。22.8.1622.8.16Tuesd
26、ay,August 16,2022人生得意须尽欢,莫使金樽空对月。15:56:3315:56:3315:568/16/2022 3:56:33 PM做一枚螺丝钉,那里需要那里上。22.8.1615:56:3315:56Aug-2216-Aug-22日复一日的努力只为成就美好的明天。15:56:3315:56:3315:56Tuesday,August 16,2022安全放在第一位,防微杜渐。22.8.1622.8.1615:56:3315:56:33August 16,2022加强自身建设,增强个人的休养。2022年8月16日下午3时56分22.8.1622.8.16精益求精,追求卓越,因为相
27、信而伟大。2022年8月16日星期二下午3时56分33秒15:56:3322.8.16让自己更加强大,更加专业,这才能让自己更好。2022年8月下午3时56分22.8.1615:56August 16,2022这些年的努力就为了得到相应的回报。2022年8月16日星期二15时56分33秒15:56:3316 August 2022科学,你是国力的灵魂;同时又是社会发展的标志。下午3时56分33秒下午3时56分15:56:3322.8.16每天都是美好的一天,新的一天开启。22.8.1622.8.1615:5615:56:3315:56:33Aug-22相信命运,让自己成长,慢慢的长大。2022年8月16日星期二15时56分33秒Tuesday,August 16,2022爱情,亲情,友情,让人无法割舍。22.8.162022年8月16日星期二15时56分33秒22.8.16谢谢大家!谢谢大家!第46页,共46页。