自动化测试培训ppt课件.ppt
自动化测试培训2018.7.6,培训目标:通过本次培训使学员对自动化测试有基本的了解,掌握Robot Framework和Jenkins的环境搭建,能够进行基本的测试设计和开发,为深入学习打下良好的基础。培训时间:4个小时,培训大纲,自动化测试简介(0.5小时)软件测试技术的发展趋势自动化测试的重要作用自动化测试框架和工具介绍Robot Framework(1.5小时)Robot Framework简介Robot Framework安装Robot Framework示例演示Jenkins(1.5小时)Jenkins简介Jenkins安装和配置Jenkins示例演示(Jenkins+Maven+GIT)交流讨论(0.5小时),自动化测试简介-软件测试技术的发展趋势,自动化软件测试技术应用越来越普遍测试技术不断细分云技术、容器化和开源工具使得测试成本下降测试驱动开发TDDDevOps(Development and Operations)越来越流行探索式软件测试基于模型的软件测试,DevOps(Development and Operations)瀑布模型 敏捷开发 精益方法 持续集成 持续交付 持续部署 持续运营,自动化测试简介-自动化测试的重要作用,软件测试V模型把测试分为4个级别,从高到低分别是验收测试、系统测试、集成测试和单元测试。,自动化测试简介-自动化测试的重要作用,为什么需要自动化测试?软件测试存在大量重复性的工作;缺陷修改后需要进行回归测试;”穷尽所有测试是不可能的”、“软件测试是为了找到软件的缺陷,而不是证明软件没有缺陷”是软件测试的两条原则;软件测试的工作量非常大等等.,自动化测试简介-自动化测试框架和工具介绍,单元测试、集成测试xUnit,JUnit、NUnit系统测试/功能测试Selenium/Robot Framework持续集成测试Jenkins构建工具Ant、Maven、Gradle,Robot Framework-RF简介,robot framework是一种基于可扩展关键字驱动自动化测试框架。Robot Framework是开源软件,由Nokia Siemens Networks开发并提供支持,特性,易于重用,采用表格式语法,统一测试用例格式;重用性好,可以利用现有关键字来组合新关键字;结果报告和日志采用html格式,易于阅读;平台、应用无关,可以用于测试不同平台上的不同的应用;易于扩展,提供了简单的测试库API,用户可以使用Python或Java自定义测试库;易于集成到现有的构建工具(持续集成系统),提供了命令行接口和基于xml的输出文件;功能全面,支持Selenium Web测试,Java GUI测试,运行进程,Telnet,SSH等;支持创建数据驱动的测试用例;支持变量;提供标签以分类和选择将被执行的测试用例;易于与版本管理集成,测试套件是文件和目录,可以被版本管理系统管理;,RF架构-官方,RF架构-我们的理解,标准库,BuiltIn :包含了常用的关键字,自动导入。Collections:包含了 处理列表和字典的关键字。DateTime :支持创建和验证日期和时间。Dialogs:支持暂停测试执行,便于从用户获得输入。OperatingSystem :支持执行操作系统相关的各种任务。Process :支持执行系统进程。Remote :远程库接口,没有自己的关键字。Screenshot:提供捕获和存储桌面屏幕截图的关键字。String:操作字符串,验证字符串值的库Telnet :支持连接到Telnet服务器,执行Telnet命令。XML :验证和修改XML文件的库,针对不同应用的测试库,SeleniumLibrary:Web自动化测试AutoItLibrary:Windows GUI自动化测试DatabaseLibrary:数据库测试HTTPRequestLibrary:HTTP自动化测试AppiumLibrary:移动应用自动化测试详见:http:/robotframework.org/#libraries,工具-内置工具,Rebot:生成基于XML输出的日志和报告Libdoc:生成测试库和资源文件的关键字文档Testdoc:生成基于Robot Framework测试用例的HTML文档。Tidy:清理和变更Robot Framework测试数据文件的格式,工具-编辑器工具,Ride:独立的RF编辑器Eclipse plugin:RF Eclipse 插件Robot Plugin for IntelliJ IDEA:RF IntelliJ IDEA插件 Notepad+:Notepad+ RF支持详见:http:/robotframework.org/#tools,工具-构建工具,Jenkins pluginMaven pluginAnt task详见:http:/robotframework.org/#tools,Robot Framework-RF安装,https:/ https:/www.python.org/安装robot framework(验证是否成功pybot -version)安装wxPython2.8-win32-unicode-2.8.12.1-py27(RIDE依赖)安装集成开发环境RIDE安装selenium 2Library注意安装顺序,提前安装 selenium 2Library失败,安装Python,双击python-2.7.14.msi,安装Python,指定安装目录,安装Python,定制安装,将python.exe增加到环境变量Path,注意到安装了pip,Test suite,安装Robot Framework,在命令行输入pip install robotframework,安装Robot Framework,升级RF,在命令行输入:Python m pip install upgrade pip,查看安装的RF版本,Pybot -version,安装wxPython,在网址https:/,wxPython安装结束,安装RIDE和RIDE的启动,安装:pip install robotframework-ride启动:cd c:python27scriptsPython ride.py,Ride的界面,安装Selenium library,在命令行输入:pip install robotframework-seleniumlibrary,查看pip命令 pip -help查看已安装包 pip list,Robot Framework-RF示例演示,WebDemo是RF官方提供的一个RF Selenium测试示例,其中包含了一个用Python编写的简单的Web应用demoapp。下载WebDemo, https:/bitbucket.org/robotframework/webdemo/downloads/解压文件WebDemo-20150901.zip,例如解压到c:Python27workspace输入如下命令,启动demoapp:cd C:Python27workspaceWebDemodemoappPython server.py在浏览器网址输入:http:/localhost:7272/,输入用户名:demo,密码:mode,可以登录成功。,运行准备,需要以管理员身份运行IE,将所有四个区域的启用保护模式选项清除,否则WebDriver会报这个错误,确认IE没有设置proxy,Ride中演示WebDemo,打开目录WebDemo,File-Open Directory浏览测试用例,在资源文件resource.robot中修改导入的库为SeleniumLibrary根据情况修改变量$BROWSER的值,火狐浏览器Firefox;谷歌浏览器Chrome,IE浏览器internetexplorer将浏览器的驱动放在PATH指定的目录中,火狐浏览器geckodriver ;谷歌浏览器chromedriver ,IE浏览器IEDriverServer执行测试,按F8查看测试报告和日志,点击Run页签中的Report或Log,创建测试项目,点击File-New Project,测试项目的类型可以是文件或目录,选择文件时,测试项目中只包含测试用例;选择目录时,测试项目可以包含测试套件和测试用例。建议选择目录类型,这样更便于组织测试用例。格式可以选robot,txt,tsv,或html格式,创建测试套件,右击测试项目,点击New Suite测试套件也可以选择文件或目录类型,我们选择文件类型。,创建测试用例,右击测试套件,点击New Test Case新建两个测试用例valid_login和invalid_login,创建资源文件,右击测试项目,点击New Resource,我们可以在资源文件中导入测试库、定义一些常量,添加测试库,在资源文件编辑器中点击Library,还可以在测试项目或测试套件编辑器中添加测试库,测试库提供特定应用的关键词。,增加常量,在资源文件编辑器中,点击ADD Scalar,常量是有确定值的,WebDemo的资源文件中定义了如下的量:,增加自定义关键字,右击资源文件,点击New User Keyword,输入关键字名称,用户关键字由一组标准关键字组成,编辑自定义关键字,在关键字编辑器中可以增加关键字,按F5可以搜索关键字,在测试套件中引用资源,测试用例中用到的资源需要在测试套件里直接引用,编辑测试用例,测试用例由关键字组成,执行测试,点击Run页签中的Start或按F8键,查看测试日志,点击Run页签中的Log,测试报告,点击Run页签中的Report,使用selenium2Library,selenium2Library/ SeleniumLibrary将webdriver与robot framework连接起来selenium2Library提供了非常多的内置关键词,浏览器操作的关键词,Open BrowserMaximize Browser WindowGo ToGo BackReload PageClose WindowClose BrowserClose All Browsers,其他常用关键词,点击Click Button | locatorClick Element | locatorClick Image | locatorClick Link | locatorDouble Click Element | locator输入Input Password | locator | textInput Text| locator | text,定位元素,Locator可以用id或name定位界面元素也可以使用XPath或Dom,但是,必须用XPath=或Dom=来开头最好使用id来定位,强烈建议强制要求开发为所有需要交互的界面元素设定id,所以,locator最好以id=,name=,identifier=,定位元素,可以使用firefox firebug或ie8来辅助定位。右击页面元素,点击查看元素。,检查结果,验证页面是否包含相应结果Page Should(Not)Contain ButtonPage Should(Not)Contain CheckboxPage Should(Not)Contain ElementPage Should(Not)Contain ImagePage Should (Not)Contain LinkPage Should (Not)Contain ListPage Should(Not)Contain Radio ButtonPage Should(Not)Contain TextfieldLocation & TitleLocation Should BeLocation Should ContainTitle Should Be,检查结果,验证页面是否包含相应结果TextCurrent Frame ContainsPage Should ContainPage Should Not ContainTextfieldValue Should BeElementElement Should Be DisabledElement Should Be EnabledElement Should Be VisibleElement Should ContainElement Should Not Be VisibleElement Text Should Be,检查结果,验证页面是否包含相应结果ListList Selection Should BeList Should Have No SelectionsCheckboxCheckbox Should Be SelectedCheckbox Should Not Be SelectedRadio ButtonRadio Button Should Be Set ToRadio Button Should Not Be Selected,检查结果,验证页面是否包含相应结果TableTable Cell Should ContainTable Column Should ContainTable Footer Should ContainTable Header Should ContainTable Row Should ContainTable Should ContainTextfieldShould ContainXpathXpathShould Match X Times,组织自动化测试用例,要做到流程和数据的分离,组织自动化测试用例,例子,组织自动化测试用例,不断抽象,消除冗余,组织自动化测试用例,组织自动化测试用例,测试用例简单易读,避免复杂逻辑,组织自动化测试用例,例子,组织自动化测试用例,测试用例分层展示,层层引用,组织自动化测试用例,使用变量,使用变量,设置TimeOut,Suite和Test都可以设定Timeout,这限定了测试用例的最长执行时间,因此,需要预留合适的时间,否则,可能导致测试不稳定,其他功能,切换窗口confirm和alert处理模拟windows动作String和Collection支持,测试库HTTP library (Requests),安装pip install -U requests pip install -U robotframework-requestspip install xlwt,Jenkins简介,Jenkins是一个开源软件项目,是基于Java开发的一种持续集成/持续发布工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。,Jenkins 有哪些功能呢?1定时拉取代码并编译2静态代码分析3定时打包发布测试版4自定义额外的操作,如运行单元测试等5出错提醒,Jenkins安装,WAR文件独立war文件方式,Jenkins.war文件包含了内置的Java Servlet 容器Jetty。从Jenkins官方网站https:/jenkins.io/下载最新的war包,运行命令java -jar Jenkins.war(需要JDK1.8)Jenkins将被安装到C:Userslenovo.jenkins(lenovo是你登陆Windows 7的帐号)。如果需要指定安装目录,请先设置Windows环境变量JENKINS_HOME,再运行命令。这时,Jenkins将被安装到$JENKINS_HOME。Web服务器部署方式,注1:将容器中的/var/jenkins_home 目录映照到Docker卷jenkins-data。如果卷jenkins-data不存在,那么就创建该卷。也可以将宿主机的文件夹$HOME/jenkins_data映照到容器中的/var/jenkins_home。目的都是为了永久保存/var/jenkins_home中的文件。注2:$HOME是Windows的文件夹C:Userslenovo(lenovo是你登陆Windows的帐号),注意不必设置环境变量HOME。将宿主机的$HOME路径映照到容器中的/home。,Dockerdocker run -rm -d -u root -p 8080:8080 -v jenkins-data:/var/jenkins_home /注1 -v /var/run/docker.sock:/var/run/docker.sock -v $HOME:/home /注2 jenkinsci/blueocean,Jenkins插件安装,Jenkins有大量的插件,根据需要我们随时可以选择安装。登陆Jenkins后,Jenkins的首页左部如左图所示,点击系统管理后如右图所示:,Jenkins配置,在Jenkins能够自动完成构建、单元测试、集成测试、部署工作之前,Jenkins管理员需要对Jenkins进行一些配置。Jenkins管理员可以在Jenkins的系统管理功能模块完成这些配置工作,RF+Jenkins,安装Jenkins插件新建一个自由风格的软件项目源码管理构建脚本python C:Userslenovojenkins_homeworkspaceRFDemodemoappserver.pypybot.bat C:Userslenovojenkins_homeworkspaceRFDemologin_tests构建后操作:输出测试报告,Jenkins示例演示,在Docker中运行JenkinsFork和clone Github上的示例库创建流水线(pipline)脚本在Jenkins中创建任务执行Jenkins任务,docker run -rm -d -u root -p 8080:8080 -v jenkins-data:/var/jenkins_home /注1 -v /var/run/docker.sock:/var/run/docker.sock -v $HOME:/home /注2 jenkinsci/blueocean,练习,安装RF测试环境,熟悉测试示例WebDemo安装Jenkins,体验示例测试项目,欢迎交流!,