《自动化测试介绍ppt课件.pptx》由会员分享,可在线阅读,更多相关《自动化测试介绍ppt课件.pptx(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、陈明陈明 2015-5-821自动化测试的标准与目标2自动化测试框架与工具3自动化测试实施4自动化测试执行与维护1.1 1.1 什么是自动化测试什么是自动化测试自动化测试是用程序模拟人的操作的一种测试方法,它主要分为基于UI的自动化测试与接口,单元的自动化测试。例如利用Junit 进行的单元测试也可归入自动化测试。1.2 1.2 自动化测试的准入标准自动化测试的准入标准准入标准解决的是能不能做,适不适合做的问题。主要有以下几方面:技术上可实现,页面元素,对象等可以被工具识别。自动化测试的收益,冒烟,回归测试的频率高,某些功能用例繁多。要测试的接口数量多,手工操作工作量大。1 自动化测试的标准与
2、目标功能整体稳定,至少经过一轮的系统测试,基本功能通畅。维护量不应过大,需求变更不应过于频繁和剧烈。测试数据可重复使用或可恢复。1.3 1.3 什么时候执行自动化测试什么时候执行自动化测试自动化测试可以用在冒烟测试和回归测试中。对于一些复杂或量多的单元测试,接口测试也可以考虑使用自动化测试1 自动化测试的标准与目标1.4 1.4 自动化测试的目标自动化测试的目标通俗的说,自动化测试就是把功能测试用例 的脚本化,然后执行脚本,产生一份自动化测试的报告。主要有以下的目标:l 覆盖率目标:一般而言覆盖项目功能点或手工测试用例的55-60%。l 节省人力成本的目标:对人力资源投入有一定程度的节省。l
3、保证基本功能的正确性。l 自动化测试过程可跟踪。1 自动化测试的标准与目标人力成本功能正确可跟踪覆盖率目标2.1 2.1 自动化测试的框架自动化测试的框架自动化测试框架是为了管理自动化测试,使得测试更高效的一种架构。它将用例,脚本,数据,报告,LOG有机的结合到一起。自动化测试的框架工作情况如下面的图来表示2 自动化测试框架与工具自动化测试框架功能点管理脚本管理执行管理用例数据测试报告测试log结果一一对应使用产生调用l 用例管理用例管理自动化测试的过程中,执行的一个循环就相当于执行一个测试用例。测试用例 描述了本次执行的主要操作,验证点,预期结果。用例管理模块提供将同一项目的不能模块的各个功
4、能点的测试用例组织到一起的功能。l 数据管理数据管理自动化测试执行的过程中要用到测试数据(如输入的用户名,密码等)。对于不同模块下的功能点对应的测试数据,数据管理提供一个管理这些数据的体系结构。l 脚本管理脚本管理脚本管理方案对于脚本的质量至关重要。一套结构层次清晰,脚本堆满的机制能够减少脚本的维护成本,降低脚本错误的机率。一般而言,不同功能点的对应的脚本独立管理。2 自动化测试框架与工具l功能点管理功能点管理 对于一个项目中要进行自动化测试的所有功能点,进行统一管理。功能点归属特定的模块,测试执行以功能点为单位。用例与数据跟功能点一一对应,可以选择性对功能点进行自动化测试执行。l执行管理执行
5、管理 负责控制自动化测试执行的策略,如定时执行,执行过程控制等。l 测试结果管理测试结果管理测试结果就是自动化测试用例的执行结果,即成功还是失败,在执行过程中,框架会将这个结果记录到指定的位置(如XML文件或者是测试用例中)。此模块提供写测试结果的函数。在测试执行时调用该函数。2 自动化测试框架与工具l 测试报告管理测试报告管理在一个项目的软件版本的所有要执行的自动化测试用例执行完成后,会产生一个自动化测试报告。展示本次测试的一些基本情况。如通过率,各模块的用例执行报告。各模块的通过率,失败用例分布等。以柱状图,饼图等形式展示。此模块负责对测试结果产生的数据进行统计 并自动产生测试报告。l 测
6、试测试LOGLOG及截图管理及截图管理为了跟踪自动化测试的过程,定位测试过程中发现的问题。框架需要提供测试log与截图的机制,在关键的验证点或者是容易出现错误的地方,加上写log信息及截图函数即可产生log和截图到指定目录下的文件中。这些函数由些模块提供。2 自动化测试框架与工具2.2 2.2 自动化测试的框架分类自动化测试的框架分类自动化测试框架主要可以分为数据驱动和关键字驱动两类框架。所谓数据驱动框架主要是以测试数据的结构以及脚本来驱动自动化执行的一种框架结构。关键字驱动框架,将测试脚本分解成对象+数据+操作方法的形式,对象即为关键字。然后将这一系列对象+方法+数据的组合形成测试用例。最终
7、由框架程序 将这些测试用例转化为可以执行的测试脚本。这两种类型的框架都包含用例管理,数据管理,脚本管理,测试结果管理,测试报告管理,Log和截图管理等功能。2 自动化测试框架与工具2.2.1 2.2.1 数据驱动测试框架数据驱动测试框架在测试某一功能点(如登录)时,会尝试用不同的测试数据来执行测试。这些不同的测试数据的组合就是一个个的测试用例。测试脚本执行时读取这些测试数据就可以完成对自动化测试的有效实现。下图所求为测试数据举例2 自动化测试框架与工具测试脚本根据测试模块,验证类型,ID和验证字段来执行测试。同时根据ID模块名称与测试用例中的用例进行关联。并将测试结果写入正确的位置。然后根据测
8、试结果产生出一份自动化测试报告。2 自动化测试框架与工具2.2.2 2.2.2 关键字驱动测试框架关键字驱动测试框架无论是利用QTP还是Selenium作为自动化测试的工具,我们都可以将测试脚本分解为对象+方法+测试数据的形式。将页面元素抽象成为对象存储到一个容器中,同时在方法中封装好可能的逻辑判断。在编写 测试用例时,选取要操作的对象加上操作方法和测试数据即组成了一条操作,多个这样的操作序列组成了一个功能点的测试用例,然后通过框架程序将这些用例解析为工具能识别的代码。这样就免去了大量的编写脚本的工作。降低测试脚本的维护量。下图为测试用例 示例2 自动化测试框架与工具为了体现对象的层次结构,将
9、对象存储到XML文件中。在框架程序中将对象层次结构解析出来。测试数据也会存储到对应模块的相应位置中(可以是EXCEL或者是数据库),编写用于产生测试结果与测试报告的函数,将测试结果写入XML,产生测试报告时,解析该XML文件,最终生成一个HTML文件的测试报告。2 自动化测试框架与工具2.2.3 2.2.3 两种类型框架的对比两种类型框架的对比 数据驱动框架的结构简单,理论上能实现任何复杂逻辑的测试脚本。因为它是纯脚本的框架,所以脚本的维护量很大,它适合能力较强、规模小的自动化测试团队。 关键字驱动框架结构复杂,对于一些复杂的测试逻辑比较难以实现(除非编写专用的函数),它可极大的减少脚本的维护
10、量,上手容易,适合较大规模的测试团队。它们的对比如下表所示:结构复杂度低高实现复杂测试能力强弱维护量大小适合测试团队规模小大测试人员能力要求高低对比维度数据驱动框架关键字驱动框架2 自动化测试框架与工具2.3 2.3 自动化测试工具自动化测试工具自动化测试工具有很多,如QTP,Selenium,RFT,Monkey Test,Jmeter等。五花八门,有开源的也有商业的,但主流的测试工具还是QTP和Selenium,由于Selenium的开源和强大的浏览器兼容性和跨平台性,正在被越来越多的人使用。而QTP与RFT作为商业工具的代表,以其易学易用和广泛的软件支持在市场上占据一席之地。下面主要介绍
11、QTP和Selenium。2.3.1 QTP2.3.1 QTP工具工具QTP是由HP公司提供的一款商业工具,它提供了强大的帮助文档,用户可以从文档中查询到关于工具以及VBS的帮助信息。l工作原理工作原理QTP将要操作的界面元素(输入框,单选框,按钮等)抽象成对象。在脚本编写 时,使用录制或者添加对象的方法将对象采集到对象库中,QTP在执行脚本时,关键字驱动框架2 自动化测试框架与工具会从对象库读取对象取得对象名称与对象属性,与页面元素做比对,如果匹配则执行该脚本,否则抛出对象不识别的错误。 对象识别根据对象识别的规则来进行,即先对比强制属性,如果强制属性能唯一识别对象,那么对象识别停止,否则再
12、进行辅助属性的比对,接着是智能属性和顺序属性。l常用的功能常用的功能 Object spy 是QTP中一个重要的工具,它用于识别界面上操作的元素,如果能补object spy识别的元素就可以对它做自动化测试。 对象库用于管理对象,录制或者添加的对象会存储到这里,一个好的方法就是将不同的模块对应的对象分别放在不同的action对应的对象库中。 Datatable用于管理测试数据,可以将测试数据先存入到EXCEL文件,在测试执行时,将数据从EXCEL导入到Datatable供测试脚本引用 。2 自动化测试框架与工具 场景恢复功能用在测试执行过程中出现异常情况时要采取的策略。比如在测试执行的过程中,
13、出现了页面404错误时,就可以利用场景恢复将浏览器重新启动然后将脚本执行转到下一条用例 。 Action用于管理脚本,可以将不同模块的脚本放在不同的action中来独立的管理,这使得脚本的结构更清晰。2 自动化测试框架与工具2.3.2 Selenium2.3.2 SeleniumSelenium是ThoughtWorks公司开发的一款开源自动化测试工具,用于对web应用 程序的测试。可以支持目前几乎所有主流的浏览器。它工作在浏览器上,具有 执行速度快,稳定 性好的优点。l工作原理工作原理Selenium将页面的HTML元素对应的XPATH,标签,名称,id等抽象成为工具可以识别的元素。脚本执行
14、时,selenium server将代码转化为javascript程序并将其装载到浏览器中,由浏览器直接执行转化后的JS代码,从而达到操作页面元素的目的。目前最常用的是Selenium2.0,即webdriver。以java+eclipse 为例 ,将需要的两个jar包加入到工程中,就可开始进行脚本的编写了。为了便 于管理可以结合Junit或者是TestNG来进行自动化的脚本编写 。关键字驱动框架2 自动化测试框架与工具Selenium 测试直接在浏览器中运行,就像真实用户所做的一样。Selenium 测试可以在 Windows、Linux 和 Macintosh上的 Internet Exp
15、lorer、Mozilla 和 Firefox 中运行。其他测试工具都不能覆盖如此多的平台。使用 Selenium 和在浏览器中运行测试还有很多其他好处。通过编写模仿用户操作的 Selenium 测试脚本,可以从终端用户的角度来测试应用程序。通过在不同浏览器中运行测试,更容易发现浏览器的不兼容性。Selenium 的核心,也称browser bot,是用 JavaScript 编写的。这使得测试脚本可以在受支持的浏览器中运行。browser bot 负责执行从测试脚本接收到的命令,测试脚本或者是用 HTML 的表布局编写的,或者是使用一种受支持的编程语言编写的。编程语言可以实现复杂的逻辑,从而
16、实现一些较复杂的测试任务。关键字驱动框架2 自动化测试框架与工具2.3.3 QTP2.3.3 QTP与与SeleniumSelenium的对比的对比QTP的优点是简单易用,可测试对象广泛以及强大的帮助支持文档库。缺点是不稳定,执行效率不高,不能分布式和跨平台执行。支持的浏览器以及编程语言不多。Selenium的优点是执行速度快,可分布式跨平台执行,稳定性好且开源免费。缺点是掌握难度大,对测试人员要求高,不能对非Web应用程序进行测试。对于浏览器上的对话框等元素的识别能力有限。2 自动化测试框架与工具对比维度对比维度QTPSelenium运行速度慢快稳定性不强强兼容性不强强跨平台性只支持wind
17、ows可以在主流系统上运行并发执行需要二次开发支持测试广度强只针对web应用程序3.1 3.1 自动化实施的基本流程自动化实施的基本流程自动化实施就是将一个项目的测试进行自动化测试实现的过程。一般要经过如下的流程:3.1.1 3.1.1 项目自动化实施技术预研项目自动化实施技术预研在做自动化测试之前要对项目做一个比较全面的分析,主要依据自动化测试的准入标准来确定项目是否适合做自动化测试3 自动化测试实施技术预研需求分析编写方案与计划搭建测试框架脚本,用例,数据编写脚本调试3.1.2 3.1.2 项目需求分析项目需求分析对项目的需求进行分析,决定哪些功能点要进行自动化实施,哪些功能点不要做自动化
18、实施。一般而言,技术上能实现的基本功能的功能点都要进行自动化实现,另外一些常测试的验证,异常流也要进行自动化的实现。3.1.3 3.1.3 实施方案与计划的编写实施方案与计划的编写方案用于解决怎么做自动化实施的问题,可以将前期技术预研的结果写入到方案中,主要内容包括使用的框架,工具,平台,编程语言等。计划中包括各个任务的分工及资源情况,以及各个关键的节点对应的时间节点。3.1.4 3.1.4 搭建自动化测试框架搭建自动化测试框架根据团队规模,人员能力,项目复杂度等 因素来决定例用数据驱动还是关键字驱动的框架。然后编写框架的代码,设计框架的结构,编写公共函数等。3 自动化测试实施3.1.5 3.
19、1.5 测试脚本,用例,数据的编写测试脚本,用例,数据的编写这是关键的一步,测试脚本的质量决定了自动化测试的执行效率,执行质量及脚本的维护量。测试脚本要求要结构清晰,可读性强。3.1.6 3.1.6 脚本调试脚本调试编写好的测试脚本,肯定或多或少有错误,需要经过不断的脚本调试以及对测试用例及测试数据的修改,达到脚本运行稳定,测试执行过程符合预期的目的。3 自动化测试实施4.1 4.1 自动化测试的执行自动化测试的执行测试脚本,测试用例,测试数据编写完成并经过调试通过后,就可以配合项目的测试了。一般而言,自动化测试用于代替一部分的手工回归测试和大部分的冒烟测试。因此,自动化测试执行应该是在冒烟测
20、试及回归测试阶段。l 冒烟测试阶段冒烟测试阶段在系统测试的一个轮次的测试开始前,一般要进行冒烟测试。如果是基于UI的自动化测试,准备冒烟测试的自动化测试脚本可能会有一些困难,因为测试之前,版本没有发布,无法取得页面元素,这就需要与开发人员进行沟通,可以在开发自己的环境上获取对象以及进行适当的调试。由于冒烟测试执行的用例主要覆盖基本功能,所以自动化测试的速率会很快,从而可以减少冒烟测试的人力投入。4 自动化测试执行与维护l 回归测试阶段回归测试阶段回归测试是系统测试中很重要的部分,因此自动化测试用在回归测试中,可以提高整个系统测试的测试效率。在回归测试前,将本轮测试回归的内容(包括括需求变更)对
21、应的测试脚本,测试用例,数据准备好。同样,如果是基于UI的自动化测试测试,可以提前在其他环境上将测试的脚本,数据等准备好。执行结束后,要根据自动化测试报告,测试结果,测试LOG来定位执行过程中出现的错误。如果用例失败是因为bug引起,则将bug提交。如果是其他原因(如脚本原因,数据问题等)则修改相应的脚本,数据后,重新执行该测试用例。4 自动化测试执行与维护4.2 4.2 自动化测试的维护自动化测试的维护自动化测试的维护就是对测试脚本,测试数据,测试用例,对象库等进行修改或删除更新,以保证自动化测试在项目因需求变更或其他原因发生变动后仍然能满足需要。为了保证自动化测试维护的及时,高效。自动化测试人员在与手工测试人员需要紧密的沟通。当项目需求发生变更时,手工测试人员需在第一时间告知自动化测试人员。然后,自动化测试人员可着手对测试脚本,对象库等进行修改维护。对于需求变更影响范围过大的情况,可以将维护工作分散到两个或多个版本来实现。4 自动化测试执行与维护打造透明工厂 实现智慧制造