1、自动化测试和selenium简介,崔剑飞 北京搜狗科技发展有限公司,自动化测试基础,(一)自动化测试简介 (二)常见的自动化测试架构 (三)自动化测试的基本流程(见图) (四)关于自动化测试的一些的认知,自动化测试简介,一.软件需求变动不频繁 二.项目周期较长 三.测试脚本可重复使用,软件测试一般是由测试人员执行的,如果由机器来代替人执行软件测试,那么就叫做自动化测试,代码驱动测试(测试驱动开发)特点:1.大量的输入参数和对应结果2.代码覆盖率高图形用户界面测试 定义:模仿用户产生界面事件,并捕获相关 动作所导致的界面改变。 代表:Webdriver,QTP,自动化测试的基本流程,当前流行的自
2、动化测试工具,自动化测试的误区,自动化测试工具是“万能”的 自动化测试比人工测试更高级先进 测试工具能使工作量大幅度减少 测试工具能实现100%的测试覆盖率 自动化测试工具容易使用 自动化测试能发现大量新缺陷,观点一:自动化测试工具是“万能”的显然,这是一种理想状态,现实中还没有哪个测试工具有这个能力,并且将来也不会有。在现实中有关的测试设计、测试案例,以及一些关键的测试任务还是需要人工参与的,即自动化测试是对手工测试的辅助和补充,它永远也不可能完全取代手工测试,观点二:自动化测试比人工测试更高级自动化测试只是测试方法中一种。相比于人工测试,有自身优势,也有局限性。只能说,更炫酷,而已。,适合
3、情况对比,观点三:测试工具能使工作量大幅度减少在更多情况下,首次引入自动化测试工具,会使测试工具立马更艰巨。只有正确合理使用测试工具,并有一定技术积累后,自动化测试的付出才能逐渐有所收获。,观点四:自动化能实现100%的测试覆盖率自动化测试可以增加测试覆盖的深度和广度,利用白盒测试工具可能实现语句全覆盖、逻辑路径全覆盖等,但因为穷举测试必须使用所有可能的数据,包括有效的和无效的测试数据,所以在有限的资源下也不可能进行100%的测试。,观点五:自动化测试工具容易使用对于这一点,很多测试工程师有同样的错误观点,认为测试工具可以简单地通过捕获(录制)客户端操作生成脚本,且脚本不加编辑就可用于回放使用
4、。事实上,自动化测试不是那么简单的,捕获的操作是否正确,以及脚本编辑是否合理都会影响测试结果。,观点六:自动化测试能发现大量缺陷就发现缺陷而言,自动化测试的效率低于人工测试。根据我的经验,自动化测试只能发现30%以下的缺陷,而人工测试能够发现绝大数缺陷。,我的建议:,一.重视测试,重视测试能力的基础能力培养 二.心态要端平,正确认识自动化测试的定位 三.培养自己的英文阅读能力。,Selenium简介,Selenium是一款基于Web应用程序的开源测试工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。它支持FF,IE,Chrome等众多浏览器。同时支持Java,C#,Rub
5、y,Python,PHP,Perl,JS等众多主流语言。,Selenium的演变进程,Selenium的特点,开源,轻量 运行在浏览器中 简单灵活,支持七大主流语言 IDE可以提供录制功能,Selenium组件,Selenium IDE Selenium RC Selenium Webdriver Selenium Grid,Selenium IDESelenium IDE是一个测试集成开发环境,是FF的附加组件,可以结合FF实现录制,编辑和调试测试脚本,并在浏览器中模拟用户真实操作进行回放。IDE不仅仅是一个录制工具,它是完整的集成开发环境,可以录制,也可以手工编辑脚本。,Selenium-
6、IDE的特点1.非常容易在页面上进行录制2.能自动通过id,name和Xpath来定位页面元素3.自动执行selenium命令4.能够进行高度和设置断点5.录制生成的脚本能够转化成各种语言6.在每个录制的脚本中能够加入断言,Selenium RC即Selenium Remote Control,由两部分组成:1.Server端:负责启动和关闭浏览器,类似HTTP代理。2.Client端:由针对各种编程语言设计的开发库构成。RC提供了一个代理服务器,允许用程序语言编写测试用例。这样做的好处是可以将Selenium与其他测试框架(如JUnit)进行集成测试。,Selenium RC架构图,Sele
7、nium RC的环境搭建1.安装JAVA环境2.安装eclispe3.下载Selenium,地址为http:/seleniumhq.org/download/,位于Selenium Client Drivers栏。,Selenium RC的环境搭建4.解压selenium的客户端jar。5.下载Selenium的服务端jar。地址为:http:/docs.seleniumhq.org/download/,位于Selenium Standlone Server一栏。,Selenium RC的环境搭建6.启动Selenium服务器:可以直接双击刚才的jar文件启动Selenium服务器。也可以通过
8、下面的命令来执行:java jar .jar7.新建一个java工程,并引入Selenium的Client包。8.输入Demo代码并运行。,Selenium RC Demo代码,DefaultSelenium的构造函数中有4个参数,具体如下:1.serverHost:Selenium服务器的主机名称或者IP地址2.serverPort:Selenium服务器的端口号3.browserString:用于加载对应的浏览器,以“*浏览器”的方式呈现,也可使用相关浏览器的安装路径。4.browserURL,初始化的URL,启动selenium后跳转至此URL。,Selenium Webdriver,W
9、ebdriver作为最新版的Selenium工具,代表着Selenium的未来方向。它提供了许多功能,包括一套组织性更好的,面向对象的API。 Webdriver完全就是一套类库,不依赖于任何测试框架,不需要像RC那样先启动服务器。,Selenium Grid,Grid能够让RC的测试在多个不同的环境中运行,也能让测试并行执行。能够大幅度的提高测试的效率。,有毒的工具:FireBug和FirePath,FireBug初学者的痛点:HTML源码太乱。Case:百度首页,FireBug的安装 一.打开Firefox浏览器,单击主菜单,选择“附加组件” 二.进入“获取附加组件”页面,在搜索文本框中输
10、入Firebug,搜索 三.安装此组件,FirePathFireBug可以很方便查找元素,也可以将元素的xpath复制。但原生的FireBug并不支持按Xpath查找元素,需要在FireBug中集成FirePath。安装前的FireBug,FirePath安装步骤一.打开FF,单击主菜单,选择“附加组件”二.进入“搜索”页面,在文本框中输入 firepath,并搜索安装。安装后的FireBug,Selenium RC,浏览器导航操作: Open(url) GoBack(url)Refresh() 刷新 WindowMaximize() 窗口最大化 Close() 关闭,操作页面元素1.type
11、(locator,value)参数:locator元素的定位表达式value要输入的值API介绍:在input类型中输入指定的值。,操作页面元素2.Click(locator)参数:locator:元素定位表达式API介绍:对链接,复选框或单选框 等进行单击。,操作页面元素3.doubleClick(locator)API介绍:双击链接,复选框或者单 选框。(不常用),操作页面元素4.select(selectlocator,optionlocator)参数:selectlocator:下拉框的定位式optionlocator:下拉选项框的定位optionlocator常用定位方式。label
12、=文本值value=真实值id=idindex=index,操作页面元素5.focus(locator)API介绍:将焦点移至指定的元素上,设置等待时间waitForPageToLoad(timeout)参数:timeout:等待时间,单位为毫秒。,获取页面元素内容1.getTitle()API介绍:返回当前网页的标题2.getLocation()API介绍:获取当前的网址3.getValue(locator)API介绍:获取input的值,4.getText(locator)API介绍:用于存储某个元素的文本值。5.isChecked(locator)API介绍:存储复选框或单选框的勾选情况。,模拟键盘鼠标,备注:这些模拟操作可以以组合键的形式出现。,