1自动化测试-理解与实践2概念与历史发展测试的基本概念自动化测试的基本概念自动化测试的历史发展23Warmingup统一名词系统什么是测试?有哪些测试阶段和测试类型……4在IEEE提出的软件工程标准术语中,软件测试被定义为:“使用人工和自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清楚预期结果与实际结果之间的差别。”软件测试是与软件质量密切联系在一起的,归根结底,软件测试是为了保证软件质量。5测试技术之测试类型测试类型静态测试动态测试白盒测试黑盒测试灰盒测试功能测试非功能测试性能测试可靠性测试安全性测试易用性测试移植性测试6测试技术之测试阶段(测试级别)测试阶段单元测试用户验收测试集成测试系统集成测试系统测试冒烟测试7测试技术之测试活动测试活动测试需求分析测试报告测试执行测试设计8测试技术之测试活动测试活动测试需求分析测试报告测试执行测试设计9测试技术之测试用例设计技术测试用例设计技术等价类方法场景法错误猜测法边界值方法因果分析方法10测试技术之单元测试覆盖要求单元测试覆盖要求语句覆盖路径覆盖判定覆盖条件覆盖11测试技术之集成测试策略集成测试策略非增量集成(大爆炸集成)增量集成基于模块层次集成基于业务路径集成自上而下集成三明治集成自下而上集成12测试实施测试活动测试需求分析测试报告测试执行测试设计测试评审测试计划、测试项目进度和质量跟踪测试需求分析测试用例设计测试环境准备测试数据准备被测软件安装测试缺陷跟踪测试分析总结测试实施13测试工具测试工具测试管理工具测试技术工具测试执行工具测试辅助工具性能测试工具自动化GUI测试工具性能监控分析工具代码分析工具测试框架14测试相关知识测试相关知识质量管理银行业务领域知识软件过程软件设计和开发知识软件质量标准CMMITMMIISO9000PMBOK6Sigma需求分析架构设计程序开发计算机网络和通信IT系统配置和管理银行基础业务银行业务操作银行业务管理银行风险管理15“开发与测试模型”V模型&W模型16什么是单元测试单元测试的主要关注点单元测试16是为了保证各程序单元的功能和逻辑的正确性而进行的最小粒度的测试。测试对象是可测试的最小程序(代码)集合在不同的被测软件系统中,存在多种单元的划分准则单元的划分以适合于代码级的测试为判断出发点软件单元代码中的覆盖率(语句覆盖、分支覆盖)局部数据结构边界条件差错处理软件单元的功能、性能、接口17什么是集成测试集成测试的主要关注点集成测试17集成测试,也叫组装测试或联合测试。在单元测试的基础上,对将单元/模块按照设计要求(如根据结构图)组装成为子系统或系统的过程和结果进行测试。以《软件概要设计说明书》为依据,检验软件单元之间、软件单元和已集成的软件系统之间的接口关系,并验证已集成软件系统是否符合设计要求。软件单元之间的各种接口(调用、指令、报文、数据文件、共享内存等)全局数据结构单元之间的依赖关系集成后对象的功能18系统测试什么是系统测试系统测试的主要关注点系统测试是将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试,其目的是通过与系统的需求相比较,发现所开发的系统与用户需求不符或矛盾的地方,从而提出更加完善的方案。主要目的是验证系统的完整性及正确性完整性指系统无功能和模块的丢失,系统整体功能可用正确性指系统与需求相符合19自动化测试在哪里被测对象是谁如何操作被测对象?如何将被测对象隔离出来?192020自动化测试概念和深入理解1GUI自动化回归测试和商用工具2金融领域自动化回归测试34面向金融领域的自动化测试框架21自动化测试概念测试设定输入和预期输出,在被测系统上给定输入,得到实际输出,检查测试实际输出与预期输出之间是否一致。传统上测试是测试人员手工进行的。自动化测试使用工具代替人工来操作被测系统,并检查输出的过程。自动化测试的要点是“减少人工操作,提高测试效率”。2122自动化测试概念的澄清自动化测试等于QTP吗?提到自动化测试,人们往往马上联想到使用QTP等自动化测试工具,其实这只是自动化测试中的一部分。自动化测试可以在不同的层级上进行,包括单元测试、集成测试、系统测试和验收测试。在系统回归测试中能自动进行测试分析吗?测试有多项活动,包括计划制订、测试分析和设计、用例集构建、测试执行、结果收集和测试报告。由于分析和设计等工作需要较多智能活动,且基础材料的非标准化,自动化测试分析不太可行。自动化主要用于回归测试的执行2223自动化测试很简单吗?几个经常被忽略的问题:-用例执行时,测试工作是机械动作,还是需要思考的行为?-测试用例数量大吗?测试用例之间有关联性吗?-测试环境容易配置吗?测试数据容易准备吗?2324自动化测试不简单!基本前提:-(自动化)测试要求:相同的输入得到相同的输出。-出于测试全面性的考虑,对于所有被测功能,建立测试用例,从而形成测试用例集,并以备后续回归测试使用这本身是一件花费很大的工作。还有一个隐含前提:-即被测系统要保持在同样的状态。-因而,只有能方便地保持和恢复系统状态,回归测试用例集才是用价值的。NOTE:保持系统状态-单位越小越容易!单元测试这方面最容易,系统级测试并不容易!2425所有的项目都适合自动化测试吗?在银行中两类常见的项目类型:新建项目和维护型项目新建项目的测试:-被测系统是全新的系统-测试资产需要全新开发:测试分析、设计和开发-测试过程需要磨合维护项目的测试:-在原有系统上进行更新维护-有测试资产-测试已实施过2526自动化测试适用于维护型项目回归测试回归测试:用同样的测试用例集合对不同(或稍有变更)的被测系统重新进行测试。在一个软件系统的服务期间,会不断有各类变更,每次变更都需要进行测试和验证。具体说,一方面要测试验证新的变更实现了预期目的,另一方面要检查变更未对其它功能产生不良影响。由于每次回归测试中都需要执行大量相同的用例,工作量大且重复性工作多。因此,更适合在维护型项目的回归测试中使用自动化测试方法。NOTE:自动化测试适用于维护型项目的回归测试!2627所有的系统类型都适合做自动化测试吗?有哪些类型的系统-交易处理型系统(人工操作)-业务管理型系统(人工操作)-数据分析型系统视系统输入、输出情况,部分系统是以人工操作和输入数据为主,输出数据为操作人员服务,部分系统由其它系统或工具程序操作和输入数据。当然,以上分类并不绝对。基于人机交互的交易处理型系统和业务管理型系统适合于自动化测试。2728自动化测试需要注意的问题自动化测试资产的准备(案例编写、脚本开发和维护、自动化测试环境和数据的准备…)工作量很大。各个公司的解决方案大多在解决这个问题;在自动化测试案例(或脚本)达到一定的量级时,如何安排、调度和执行测试自动化是有较高难度的;自动化测试结果的比对、检查和分析是有较高难度;自动化测试工具如何与被测系统更好地匹配和结合;要关注自动化测试的ROI,避免为了自动化而自动化,片面强调覆盖和灵活性。2829自动化测试的现状从技术层面上讲,单元测试是应用得最好的自动化测试,性能测试是必然的自动化测试;基于GUI的自动化回归(系统)测试,大家都在做,但投入较大、且实用性和可维护性问题突出;GUI自动化测试必须依靠工具并将工具与被测系统匹配好,但仅有工具是不够的!2930我们的经验已成功实施的项目-中国外汇交易中心自动化测试-上海银行自动化测试我们的团队成员还曾经是交通银行、华夏银行等自动化测试项目的发起者和骨干3031主题31自动化测试概念和深入理解1GUI自动化回归测试和商用工具2金融领域自动化回归测试34面向金融领域的自动化测试框架32我们讨论的自动化测试类型这里我们主要讨论基于GUI界面的自动化测试对于单元测试和基于接口的自动化测试,我们会在其它的材料中进行详细讨论,如果您有需求,请向我们提出!3233UI自动化测试的进展文本的“捕获/回放”TextCapture/Playback(Mainframe)-缺点:动态内容处理、时间同步、维护文本的“捕获/回放/脚本化”TextCapture/Playback/Script(PC)-缺点:需要程序开发技能,ProgrammerGUI界面“捕获/回放/脚本化”(WindowsandC/S)-缺点:关注对于非标准控件和行为的处理-对于脚本重用、维护等软件工程的要求引发了测试框架(Framework)的需求从专有框架到商用框架(Web)-缺点:仍严重依赖对象控制-applicationmap,GUImap,objectrepository34GUI自动化测试的技术基础对象识别与控制技术如何对被测系统进行操作和控制,并进行信息收集,细述下来就是界面对象或控件的识别和控制技术。这是当前主流商用自动化测试工具如QTP、RFT的关键技术之一。脚本化技术用什么方法来描述人工对系统的操作,细述下来就是基于特定脚本的录制、回放、参数化、编辑和维护技术。3435脚本化技术的进一步说明GUI自动化测试中,测试工具将人工对被测系统的操作记录为脚本,支持重放这些脚本,即由测试工具按脚本的描述来驱动被测系统,从而通过工具实现与人工相同的系统操作。脚本中一般会以动作序列来进行描述,每一个动作中包括操作对象、动作和操作数据,GUI自动化测试中相对高层的技术是对数据进行参数化,从而使脚本在执行时可以动态配置测试数据。由于录制的代码一般可维护性不好,无用代码较多,也可直接编写测试脚本。3536GUI自动化测试的其它问题测试数据驱动•数据表易于编辑和维护•数据参数化操作检查点•操作简单•支持多种检查点-对象,文本,位图等结果报告•图形化•易于浏览3637经典工具的情况-QTP通用工具试图能适用于各种UI技术37EmergingCommonClassicWinRunnerQuickTestProfessional传统应用通用新兴环境CustomC/SPowerbuilderDelphiPowerBuilder10.5ERP/CRMPeoplesoftwindowsSiebel5,6GUIclientsOracleGUIformsWeb-relatedenvironmentsIE,NetscapeJDK,Javafoundationclasses,AWTActiveXCustomclientserverWindows/Win32VisualbasicStingrayVisualagesmalltalkERP/CRMOracle:11iJDEdwardswebclientLegacy3270,5250emulators,Vt100OperatingsystemsWindows2000,Windows2003,XP,VistaERP/CRMSAPSiebel7.Xand8.XPeoplesoft8.X.NetWPFfrom.NET3.0WinformsWebformsHTC/ViewlinkDelphi8.NETwinformsWebservicesMacromediaflexWirelessJavaSWTCitrixVMWaredesktopsupportMozillaFirefox2.038经典工具的情况-QTP2提供关键字视图提高脚本的可读性、可维护性38EmergingCommonClassic38脱离代码的测试构建和维护对象动作数据不仅仅是代码更有关键字视图•突破性的ActiveScreen技术−添加验证点−添加测试步骤−了解测试步骤上下文−离线编辑39您单位自动化的要求是什么?原有手工案例能够重用?-形成自动化案例、脚本?-原有手工案例写到什么程度?-手工案例间是否有关联?-每一个手工案例执行是需要什么样的前置条件?被测系统变更后,自动化测试能快速实施?-选择执行哪些测试案例?-如何调度这些测试案例?-测试环境如何准备?被测系统如何配置?-测试数据如何准备?-测试过程是否需要