资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,自动化框架串讲,姓名:王文慧,研发中心用户产品部,导师:赵海洋,1,目录,CONTENTS,自动化框架介绍,01,TESTNG,框架介绍,02,核心流程,03,工程总结与规划,04,2,自动化框架介绍,3,自动化框架介绍,技术,基于,Selenium WebDriver,开源技术开发,用,Maven,进行,Project,管理,数据管理,用CSV文件存储测试数据,实现测试数据与测试用例的别离,测试数据管理方便,降低自动化脚本的维护本钱,实现数据驱动,PO,模式,自身元素,(WebElement),实现功能,(Services),TestNG,组织测试,4,自动化框架介绍,收益,在集成测试阶段快速实现回归测试,4.10版本开始执行,每个版本跑3-5次回归测试,兼容机型和系统(本地跑),覆盖外卖Top5机型,覆盖系统4.0-6.,定位的bug,存在的问题,版本间测试用例不兼容,兼容性开发本钱较高。,比方shopdetail 左右滑动的区域 在4.9时是大图下的长方形区域的id,4.10版本删除了这个区域,导致这个元素id获取不到,case报错,5,框架代码目录介绍,测试代码目录,变量规范定义,Page,类,case,测试相关的工具类,TestBase,类,|setup(),等,源代码(,core,)目录,所需资源目录(报告相关的配置和模板、,log4j,),Maven,的依赖包,存放在本地默认路劲,C:user.m2,项目的主体资源,Target,是存放项目构建后的文件和目录,,jar,包,,war,包,编译的,class,文件等,,target,里面的内容都是,M2,构建的时候生成的,Src,目录包含所有工程的源码文件,配置文件,资源文件等等,它的子目录一般包含,main,、,test,Git,使用,ci.yml,进行项目配置,包含如何构建项目的定义,一般放在根目录,改文件用于管理:源代码,配置文件,,url,,项目的依项目的赖关系等等,6,TestNG,框架介绍,7,数据管理,TESTNG,框架介绍,即Testing,Next Generation,下一代测试技术,是根据JUnit和NUnit思想,采用jdk的annotation技术来强化测试功能并借助XML 文件强化测试组织结构而构建的测试框架。,应用范围,使用步骤,TESTNG,单元测试,集成测试,系统测试,编写测试业务逻辑,在配置测试信息,运行,TestNG,配置文件,testng.xml,8,数据管理,TESTNG,框架介绍,TestNG,运行方式,1、Eclipse集成方式,TestNG提供Eclipse插件,在run configure中进行配置,2,、,Maven,集成方式,3,、,命令行方式,Java,org.testng.TestNG testng1.xml=,右键运行,testNG,9,数据管理,TESTNG,框架介绍,TestNG,的主要特点:,Annotation,依赖性测试,支持并发测试,支持错误重运行测试,参数化测试,支持测试分组,通过testng.xml来管理测试,详实的报告,可按照自己需要进行二次开发,不仅仅适用于单元测试,10,数据管理,TESTNG,框架介绍,TestNG,使用,annotation,的优点:,方法名称不受任何模式或者格式的束缚;,如下是,TestNG,使用的,annotation,清单:,BeforeSuite,BeforeTest,BeforeClass,BeforeMethod,BeforeGroups,AfterSuite,AfterTest,AfterClass,AfterMethod,AfterGroups,DataProvider,ExpectedExceptions,Factory,Test,Parameters,11,数据管理,TESTNG,框架介绍,根本使用,当testNG运行的case有失败的时候,会在test-output目录下生成一个testng-failed.xml文件,这对于批量执行测试定位问题很有帮助,testng可以单独执行这些失败的测试;,使用参数,TestNG传参数的两种方式(xml文件,DataProvider)下面这个方法没用到,12,数据管理,TESTNG,框架介绍,监听器,尽管名字叫监听器,但事实上它们只是一些预定义的 Java 接口。用户创立这些接口的实现类,并把它们参加到 TestNG 中,TestNG 便会在测试运行的不同时刻调用这些类中的接口方法,监听器接口,Listener,IExecutionListenner,ISuiteListener,IInvokedMethodListener,TestListenerAdapter,IReporter,onExecutionStart(),onExecutionFinish(),onStart(ISuite,suite,),onFinish(ISuite,suite,),beforeInvocation(),afterInvocation(),onStart(),onFinish(),onTestFailure(),onTestSkipped(),onTestSuccess(),13,核心流程,14,核心流程,15,Core,utils,workflow,elements,Test,Suite,Test,Case,Test,Script,Test Data,Core Driver,Helper,Csv File,properties,Data Driver,Parse csv,Pageclassloader,Listener,appium Driver,自动化框架,16,Result,Log4j,ReportNg,Mail Report,ScreenShots,UIAutomator,UIAutomator,IOS,Android Side,H5,chromedriver,Selenium/AppiumDriver,Appium Server,SendOperation CMD to port 4727,WebDriver Controller,Appium Client,Listen to Socket Port4727,Bootstrap.jar,PC Side,Sorket,JSON,自动化框架,17,end,(IExecutionListener,、,ISuiteListener,、,IInvokedMethodListener,、,Ireporter,、,ITestListener),AutTest_TestNG.xml,start,Listener,Base,TestBase,ShopMenuTest,Listener,AppDriver,Data Driver,core,extends,onExecutionStart()开始监听测试,testng启动执行之前调用,onExecutionFinish()测试结束监听,testng执行完所有测试后调用,ListenerAdapter,核心流程,18,(IExecutionListener,、,ISuiteListener,、,IInvokedMethodListener,、,Ireporter,、,ITestListener),AutTest_TestNG.xml,start,Listener,Base,TestBase,ShopMenuTest,Listener,AppDriver,Data Driver,core,extends,核心流程,end,启动监听,监听器作为守护进程在后台运行,19,end,(IExecutionListener,、,ISuiteListener,、,IInvokedMethodListener,、,Ireporter,、,ITestListener),AutTest_TestNG.xml,start,Listener,Base,TestBase,ShopMenuTest,Listener,AppDriver,Data Driver,core,extends,初始化,Property,配置文件,放入系统属性变量中,System.getProperty(“”);,配置文件,路劲,/resource/config/Config.propertis,日志,设置(,Log4j,输出),ListenerAdapter,核心流程,20,核心流程,(IExecutionListener,、,ISuiteListener,、,IInvokedMethodListener,、,Ireporter,、,ITestListener),AutTest_TestNG.xml,start,Listener,Base,TestBase,ShopMenuTest,Listener,AppDriver,Data Driver,core,extends,执行appDriver类的静态方法块,静态变量,end,ListenerAdapter,1,21,(IExecutionListener,、,ISuiteListener,、,IInvokedMethodListener,、,Ireporter,、,ITestListener),AutTest_TestNG.xml,start,Listener,Base,TestBase,ShopMenuTest,Listener,AppDriver,Data Driver,core,extends,录屏功能,我们没用这个功能,end,ListenerAdapter,核心流程,22,(IExecutionListener,、,ISuiteListener,、,IInvokedMethodListener,、,Ireporter,、,ITestListener),AutTest_TestNG.xml,start,Listener,Base,TestBase,ShopMenuTest,Listener,AppDriver,Data Driver,core,extends,运行子类,Test,的静态变量,end,ListenerAdapter,核心流程,23,(IExecutionListener,、,ISuiteListener,、,IInvokedMethodListener,、,Ireporter,、,ITestListener),AutTest_TestNG.xml,start,Listener,Base,TestBase,ShopMenuTest,Listener,AppDriver,Data Driver,core,extends,从父类到子类的静态语句块、静态变量运行结束,进入监听,ListenerAdapter,,开始运行,testNG.xml,中的内容,:,套件,测试集,测试方法,end,ListenerAdapter,核心流程,1,ListenerAdapter,24,核心流程,(IExecutionListener,、,ISuiteListener,、,IInvokedMethodListener,、,Ireporter,、,ITestListener),AutTest_TestNG.xml,start,Listener,Base,TestBase,ShopMenuTest,Listener,AppDriver,Data Driver,core,extends,end,核心流程,(IExecutionListener,、,ISuiteListener,、,IInvokedMethodListener,、,Ireporter,、,ITestListener),AutTest_TestNG.xml,start,Listener,Base,TestBase,ShopMenuTest,Listener,AppDriver
展开阅读全文