您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 其它办公文档 > 构建企业自己的自动化测试平台wukaihua
11构建通用的自动化测试平台腾讯公司–吴凯华2011-04-0922自动化测试面临不同需求UI界面中间件Mobile应用单元测试。。。。。。33一些自动化测试现状•敏捷研发冲击–自动化测试:先有量的投入才能有回报–产品快速迭代和变更–开发测试人力比•开展中的困难–缺乏优秀测试开发能力的工程师•单纯开发背景的工程师对测试理解认知不够–频繁的临时救火让长期规划开展举步维艰–自动化测试ROI贡献度不够–缺乏有效的测试工具和平台支撑44而它们都有很多不足和弊端!•Selenium•Watir•Fitness•STAF•xUnit•QC•……•学习上手难度大•测试脚本/代码编写规则不严谨•测试数据管理乱或不好•不同平台需求支持度不够•仍需更多二次封装和开发•后期优化时维护代价大•天价购买55直接决定自动化的效率和成败!测试平台的选择和架设66通用测试平台要具备1.跨平台支持2.各种需求都可接入、开放性好3.测试输入输出数据丰富、易管理4.测试资源控制和分配管理5.测试用例编写规则要清晰和有体系6.定位、调试、自我外接性要友好容易特别提醒(尤其重要):•工具接入的规则和机制设计•脚本格式和编写规则制定和设计77测试平台概要架构图–方案1前端管理系统分布式执行server-1(Windows)分布式执行server-2(Linux)分布式执行server-3(Mac)统一调度server分布式执行server-N(Android)再加细化规则:–API开发规则–工具接入规则–脚本管理规则–测试数据/结果管理规则–调度执行规则–版本变更管理规则88测试平台概要架构图–方案2前端管理系统统一调度server测试工具一测试工具二测试工具N。。。。。资源控制管理中心再加细化规则:–只设计接入规范–工具加载平台通讯接口–跨平台测试自己开发–测试数据控制和管理统一–脚本变更管理可独立99两种平台的差异•方案一–平台本身要完成所有跨平台的测试驱动和调度•如LINUX、Windows、iOS、Android下自动化执行调度–平台开发工作量更大•可分期支持(主要是分布式执行agent的开发)–后续的使用接入成本小•不同平台上的工具不需额外在平台内注册•工具以平台内API方式驱动(API为测试脚本的步骤)•API要在前端提供管理机制•方案二–平台专注前端管理和接入规则的开发–工具同时要负责内置平台接口和自己支持跨平台–测试资源控制和管理调度比方案一更加方便组织•当然方案一仍然可独立对资源做管控适合企业自建使用适合商业推广(如QC)1010UT斯达康测试平台架构ATSWebATS控制调度服务器ATS执行服务器ATS执行服务器ATS执行服务器数据库TestAPIQTPWinrunnerSimulator第三方工具DUT1111Lucent测试平台系统框架•AVS:AutomatedVerificationSystem–负责任务创建、管理和执行调度•TMS:TestManagementSystem–负责脚本编写、(版本)管理,也可自动执行和计划管理–功能和自动化统一集成•TES:TestExecutionSystem–资源控制和申请/管理–LabTestRealEnvironment,TMS脚本执行环境•LTS:LaboratoryTestSystem–各种测试工具和调试工具集AVSTMSTESLTS1212前端管理系统功能介绍1313前台功能(B/SorC/S)•自动化测试脚本/用例管理•自动化测试任务管理•API管理•测试数据和结果管理及度量1414自动化脚本管理•高端功能:IDE方式支持•可导入导出模式支持–便于离线开发,方便用户使用自己喜欢的IDE环境进行开发•设置脚本的格式和规则要求–推荐xUnit框架模式思路,但要更简洁和容易理解•可动态和单步调试•Set/Suite和Case概念要体现–利用公共测试数据管理和提取1515几种自动化脚本风格TESTSUITESuiteIDSuite_Name{测试套功能介绍}{测试套参数定义,Case里的公共全局参数}{测试套初始化部分}{测试套清理部分}TESTCASECaseIDCase_Name{测试用例功能介绍}{用例参数/数据定义和声明}{用例初始化部分}{用例执行主体和具体测试步骤}{用例清除部分}TEST{SuiteNameSuiteTestFunction}{……}TEST{SuiteNameSuiteTestFunction}{……}1616API管理和开发•模块化方式或面向对象方式管理和开发API–各有利弊•平台提供前端展示和管理API的机制–IDE功能支持最好•API对各类集成工具实施封装、执行和调度–详细API体现出工具的各种真实功能•API部署在分布式执行Agent或被测环境下Javadoc风格管理和提供API帮助指引1717自动化测试任务管理•任务管理–增删改查•任务指定时间执行•任务并发执行•任务控制(暂停、Kill、调试模式等)•测试数据在任务里的可动态调整和抽取1818自动化测试任务管理(demo)1919后台调度执行中心2020后端架构概要功能后台调度中心•任务执行轮询检测•前端Event响应•Agent端任务数据收发•Agent任务/事务控制自定义协议自定义协议2121统一调度Server设计和功能•提供前端时时执行任务结果展示和控制接口•多任务分发和并行执行/调度能力–FSM或多线程支持的架构都OK•分布式设计模式•Client/Server间通讯的数据结构/协议要设计好•性能支持要到位2222后端执行Agent设计难点•兼容不同操作系统、同时做到功能接口统一•Suite/Case执行Controller/Framework•API安装/管理和调用规则2323第三方工具接入方案介绍2424平台支持接入设计要求•可以允许使用或定义不同脚本格式和脚本语言–如QTP/VBScript、WinRunner/TSL等•平台可以把测试数据和对应Case映射关系保存在平台DB,细化的不同脚本以SVN/CVS等做保存和管理•平台以传入对应case信息和测试数据及结果封装调度API•平台可以不同脚本或风格实施平台侧脚本管理2525QTP/WinRunner接入方案•基于QTP/WinRunner开发一个内置框架–可脱离开测试平台单独运行的自动化框架–数据管理规范/格式统一–脚本编写自定义固定格式–OR库和GUIMap文件方式管理和动态加载–执行日志和结果按照规定方法上报和收集•封装一个长/短连接API完成用例脚本和TestDataInput的发送,驱动QTP/WinRunner执行用例–TSL或VBScript脚本借助SVN管理,执行时由框架动态按需拉取•封装一个回传TestResult和入库的API•WinRunner或QTP脚本可轻松在测试平台里实施管理甚至编写•分布式执行Agent侧的接入支持2626测试平台API•parseTestInputData•checkoutScriptFromSVN•checkoutORFileFromSVN•createQTPTestConfigFile•openQTP•runTest•getCaseExecResult•getCaseExecDetailLog•exitQTP•两种使用方式:•供执行Agent调度•或作为提供不同测试数据,但格式一致的用例编写2727QTP框架内API•logReport(logType,logMsg)–logReport“ERROR”,“Failedtoexecutethisstep”–logReport“FAIL”,“Thecaseexecutionfailed”–logReport“STEP”,“Thecurrentexecutingstepisxxx”–上述三种日志类型是在Case里频繁使用的•paramName=GetParam(“QQNumber”)–GetParam会从配置文件里获得此Case的参数值,如果此参数在Case_Param里没有指定,GetParam还会遍历Suite_Param表来试图获得此参数值–获得的值赋给paramName变量•reportResult(caseResult,caseResultMsg)–reportResult“PASS”,“Thecaseexecutionsucceeded”–reportResult“FAIL”,“Theexecutionfailed,messageisxxx”2828一个简单的测试用例FunctionopenQzoneWeb()url=getParam(QZone_URL)logReportSTEP,OpeningtheURL:+urlret=openWeb(url)Ifret0ThenreportResultFAIL,FailedtoopentheURL:+urlElsereportResultPASS,TheurlhasbeensuccessfullyopenedEndIfExitFunctionEndFunction2929Q&A
本文标题:构建企业自己的自动化测试平台wukaihua
链接地址:https://www.777doc.com/doc-18397 .html