构建面向敏捷过程的测试自动化框架朱少民KerryZhu同济大学软件学院教授CertifiedScrumMasterCSTQB资深专家2主题�敏捷方法给软件测试带来的挑战�测试自动化(TA)的策略�敏捷TA框架的需求�敏捷TA框架的剖析�选择合适的敏捷测试工具3ScrumScrumScrumScrum测试流程全过程质量反馈每日产品Backlog(确定优先级)测试需求测试任务测试计划经测试、质量可保证的产品回归测试+构建包验证测试验收测试测试脚本4敏捷测试的诉求�关注需求�迭代速度快�周期短�变化频繁�测试驱动开发�和开发有效沟通�持续测试�及时完成验收测试5回归测试是一个挑战90daysSprintSprintSprintSprint1111NewSprintSprintSprintSprint2222ExistedNew+ExistedNew+ExistedSprintSprintSprintSprint3333ExistedNew+ExistedExistedSprintSprintSprintSprint4444ExistedNew+ExistedExistedExistedExistedSprintSprintSprintSprintnnnn…………………………………………6没有持续集成,就没有敏捷开发没有自动化,就没有持续集成测试自动化(TATATATA)的理想方式DEV:产品代码开发Tester:测试脚本开发DEV:产品代码开发Tester:测试脚本开发TDDTDDTDDTDD、ATDDATDDATDDATDD、BDDBDDBDDBDD?TATATATA策略•来源:LisaCrispin,AgileTesting:APracticalGuideforTestersandAgileTeamsTATATATA覆盖的区域�单元测试�集成测试�功能测试�非功能性测试(性能、安全性等)�验收测试10TATATATA功能服务需求�测试计划、测试用例管理�测试脚本开发、调试�测试资源的管理�任务安排�无人值守(邮件、短信提醒?)�测试执行�系统监控�测试日志收集、结果分析�测试报告查询�集成接口�……TATATATA的非功能性需求�跨平台、分布式处理�适应性、扩展性�层次性�良好的基础设施�开发和测试的集成环境�全程自动化测试�对TA执行的有效支持�易与第三方测试工具集成�……TATATATA的敏捷特性需求�构建轻量级、灵活的TA框架�和开发环境高度集成的TA环境�高复用性�基于关键字驱动的脚本(可维护性)�易于重构脚本13TATATATA框架的构成�Harness/IDE�脚本语言(ScriptLanguage)�代理(Agents)�工具(Tools)�任务安排(Scheduler)�报告(Report)Harness/IDEHarness/IDEHarness/IDEHarness/IDE代理工具SUTSUTSUTSUT脚本报告任务安排SUT:Systemundertest14框架设计�控制中心�多层次结构�分布式架构�通讯问题�接口定义�对象库�关键字库�数据共享�集成环境�……对象库与关键字库对象库关键字函数库业务测试用例关键字驱动脚本关键字解释器工具可执行的脚本BDDBDDBDDBDD与业务驱动框架•…….•…….•…….•…….•…….•…….•…….•…….•…….•:Fixture1:Fixture1:Fixture1:Fixture1•:Fixture2:Fixture2:Fixture2:Fixture2•:Fixture3:Fixture3:Fixture3:Fixture3SystemunderTestFitformBusinessruleActionProcedure17适合敏捷的TATATATA框架::::简单的例子•适合敏捷的TATATATA框架::::简单的例子(续)远程robotframeworkTestLibraries•SeleniumLibrary-webtesting•watir-robot/WatinLibrary-webtestinginremotelibraryinterface•SwingLibrary-ASwingGUItestinglibrary.•EclipseLibrary-TestingEclipseRCPapplicationsusingSWTwidgets.•AutoItLibrary-WindowsGUItestinglibrary•DatabaseLibrary(Java)-worksonlywithJython.•DatabaseLibrary(Python)worksonPython&Jython.•SSHLibrary-AtestlibrarythatenablesSSHandSFTP.工具:Selenium/WatiR/WatiN/AutoIT/Swingrobotframework服务•LibraryDocumentationDocumentationDocumentationDocumentationGenerator(libdoc.py)•TTTTestestestestDocumentationGenerator(testdoc.py)•HistoricalReporterReporterReporterReporter(risto.py)•OOOOutputFileutputFileutputFileutputFileFixer(fixml.py)•TestDataDataDataDataTidyer(robotidy.py)•TestResultDiffResultDiffResultDiffResultDiff(robotdiff.py)•ExecutionTimeReporterTimeReporterTimeReporterTimeReporter(times2csv.py)•FFFFileViewerileViewerileViewerileViewer(fileviewer.py)•OneClickInstaller•TestStatusCheckerStatusCheckerStatusCheckerStatusChecker(statuschecker.py)robotframework特点•简单易学易用•良好的扩展性,只要建立特定的测试库•支持多种测试用例文件格式•高度复用性,支持关键字驱动、数据驱动、BDD等•跨平台,支持Linux、Windows•技术成熟•开源跨平台的STAF+STAXEvent,EventManager,CronFS,ProcessProcess,Monitor,Log,Variable,Queue,ResPoolLog,ProcessProcessEmail,HTTPfunctionparallelsequenceprocessstafcmdtestcasetimerblockloopmessagelogimportjobiterateparalleliterateholdreleaseterminate结果通知测试环境清理测试结果分析测试用例执行系统设置自动化启动STAXJob各种服务各种任务灵活的组合====++++STAF:SoftwareTestAutomationFrameworkSTAX:STAfeXecutionengine适合敏捷的TATATATA组合式框架SSSSelenium2.0+elenium2.0+elenium2.0+elenium2.0+webdriverwebdriverwebdriverwebdriver++++PushtoTestPushtoTestPushtoTestPushtoTest适合敏捷的未来TATATATA框架亮点Trump:TelluriumUIModelPluginUDL:UIDDescriptionLanguageDojo/ExtJSJavascriptwidgetsMavenarchetypes选择合适的测试工具轻量级、开源、开放、易用的和易维护的工具轻量级、开源、开放、易用的和易维护的工具轻量级、开源、开放、易用的和易维护的工具轻量级、开源、开放、易用的和易维护的工具20202020年前的测试静态测试≈空白测试≈100%动态测试今天呼唤更多的静态测试单元测试工具�自动代码检查工具:Findbugs,CheckStyle,PMD,…�代码评审辅助工具:ReviewBoard,codestriker,JCR�动态测试框架:xUnit,MbUnit,MsUnit�Mocking:RhinoMocks/Moq/Nmock/EasyMock�代码覆盖率:Ncover/Cobertura/EMMA�版本控制:Git/Subversion/CVS功能测试工具�ThoughtWorksTwist�Selenium+webDriver�soapUI�WatiR/WatiN�AutoIT30敏捷测试管理工具�ScrumDesk�Rally'sALMplatform�MSTFS2010�TestLink,Bugzilla/MatisBT�Wiki,SharePoint31总结•构建关键字驱动的TA框架•开发和测试集成的、易扩充的框架•脚本易于复用、重构•选择轻量型、开放的、易用的测试工具•多采用静态分析工具新浪微博: