Web自动化测试方案设计Web自动化测试方案设计技术质量部2008年1月内部资料,请勿外传范围与目标•课程对象:–软件测试人员•课程目标:–了解软件生命周期的测试过程–了解和掌握自动化测试概念–掌握QTP的一些基本知识•本课程将占用80分钟内容提要软件自动化测试的概述Web自动化测试的方案设计Web自动化测试的方案实施软件自动化测试成本投入和风险分析为什么要实施自动化测试?•应用系统日趋复杂的客观要求一个不可避免的问题是,应用系统变得日趋复杂,并且造成了更大的风险。测试消耗的成本越来越高,花费的时间也越来越长。而成本与时间是有限的。为了在限制的成本与时间范围内,控制发布的软件产品的质量,测试人员被要求在尽量短的时间内对软件进行足够的测试。•避免重复测试的主观要求迭代式开发过程:目前的软件开发或多或少使用了迭代式开发过程,这就导致了我们需要进行一轮又一轮的测试。回归测试:为了检验软件版本是否正确,或者当发现软件中出现了一个或多个以前曾经被修复的缺陷时,不可避免的需要进行回归性的测试。什么时候实施自动化测试?如果我们的自动化测试实施失败了,很显然,我们在不适宜的时机进行了这个工作。开发阶段?—稳定阶段?—部署阶段?建议:可预见的需求不影响自动化测试用例的设计自动化测试实施失败的因素1.期望值过高。就像管理人员要求完全测试一样,期望100%的测试自动化,也同样是一个不现实的需求。2.对收益和成本认识不清。抛开工具的购买成本和培训成本,自动化测试的成本应该还包括两部分(实现成本中还隐含了测试准备成本):成本=实现成本+运行维护成本自动化测试的收益是由测试脚本的重复运行次数,或自动测试脚本的利用率决定的。功能覆盖率100%成本7自动化测试的成长过程purescripted全部脚本化vaguescripts少量的脚本fragmentarytestcases零碎的测试用例charters委任式freestyleexploratory自由式的探索roles角色Testingoftenbeginsasfreestyle,expandstowardscripted.测试总是从自由式的探索开始,朝脚本化方向扩张time©2005iSoftStoneInformationServiceCorporation.Allrightsreserved.8如何实施自动化测试?•单纯的讲,自动化测试的具体实现,应该是包含下面七个过程的。1.分析:总体把握系统逻辑,分析出系统的核心体系架构。2.设计:设计测试用例,测试用例要足够明确和清晰,覆盖面广而精3.实现:实现脚本,有两个要求,一是掌握For循环和IF语句,二是合理的运用参数化。4.执行:执行脚本远远没有我们想象中那么简单。脚本执行过程中的异常需要我们仔细的去分析原因。5.总结:测试结果的分析,和测试过程的总结是自动化测试的关键。6.维护:自动化测试脚本的维护是一个难以解决但又必须要解决的问题。7.分析:在自动话测试过程中深刻的分析自动化用例的覆盖风险和脚本维护的成本。9自动化测试的应用时机配置管理数据库构建版本发布数据库初始化自动化冒烟测试手工探索测试自动化回归测试冒烟测试结果测试结果报告开发偏重业务流程偏重功能模块软件测试自动化的概述Web自动化测试的方案设计功能方案设计业务方案设计Web自动化测试的方案实施软件自动化测试成本投入和风险分析内容提要让我们一起来设计!依据什么来设计测试方案?测试方案要具有代表性!仔细想想。功能测试方案设计自动化测试的功能方案设计的流程:操作对象—对象属性—功能实现—结果验证自动化测试的功能方案设计操作用例图:©2005iSoftStoneInformationServiceCorporation.Allrightsreserved.13Web对象的识别—QTP•QuickTest可以使用三种类型的顺序标识符来标识对象:•索引(index):指示该对象在应用程序代码中相对于其他描述都相同的其他对象的显示顺序。QTP在录制和执行中,为测试对象属性分配一个值,以便唯一标识该对象。该值基于对象在源代码中的显示顺序。第一个出现的是0。注意,index属性值是特定于对象的。因此,如果使用Index:=3描述WebEdit测试对象,QuickTest将在页中搜索第四个WebEdit对象。•位置(location):指示该对象在父窗口、框架或对话框中相对于其他描述都相同的其他对象的显示顺序。QuickTest可以为对象的location测试对象属性分配一个值,以便唯一标识该对象。该值基于对象在窗口、框架或对话框中相对于具有相同属性的其他对象的显示顺序。第一个出现的对象是0。各列值的分配从上到下、从左到右。•creationTime(仅限于浏览器对象):指示该浏览器打开的顺序,相对于其他描述都相同的其他打开的浏览器。如果QuickTest不能仅基于测试对象描述唯一标识浏览器对象,它将为“CreationTime”测试对象属性分配一个值。该值指示该浏览器打开的顺序,相对于其他描述都相同的其他打开的浏览器。在运行会话期间,如果QuickTest不能只是基于其测试对象描述来标识某个浏览器对象,那么,它将检查浏览器的打开顺序,然后使用“CreationTime”属性标识正确的对象。功能测试框架的用例设计示例•系统模块:user系统首页•概述:实现user首页中所有基本动作,功能,尽可能多的生成可复用的自动化脚本•目标:验证user首页中基本功能实现,通过标准的功能对象做为前提,使脚本可维护,被重复调用,可以得到各个基本动作,基本功能验证结果,自动生成测试结果报告功能测试框架的用例设计示例•例:以user首页功能实现为例,说明测试包含内容•脚本内容:•1进入user首页用户可以看到一个完整的页面,功能文字描述清晰无误•2页面上的图片连接正常,属性显示正常。•3用户分别进行铃音的试听、下载、赠送、点歌等各项操作。•4未登陆用户进行点歌操作,提示用户先登录。•5用户进行开通炫铃的模拟操作,随机产生用户号码开户•总之,功能实现的基本流程为:对页面展示进行录制,操作对象具体功能模块被提出,进行操作,如:试听歌曲,得到的结果是歌曲可以试听,从而完成该基本功能的自动化测试,其它的功能操作以及功能实现,都基本遵守功能操作用例图(demo)业务流程框架自动化测试业务方案设计的流程:对象数据—操作方法—功能用例—流程结果—结果验证自动化测试业务方案设计的操作用例图:业务流程框架的用例设计实现•系统模块:个人用户页面•概述:个人用户管理中的所有业务,拥有各自的自动化测试框架,由基本动作或基本功能组成•目标:通过对各种业务实现流程的总结,分析,得到完整的测试框架,业务脚本可具有强维护性,功能覆盖完整性,业务逻辑按开发流程实现,不产生数据冗余和丢失业务流程框架的用例设计实现•例:以铃音管理为例,说明测试框架以及测试包含内容•自动化测试框架结构:•铃音搜索—下载铃音—查询铃音库—添加群组—添加联系人—设置个性铃音—删除个性设置—删除铃音•测试中脚本的大致分类:•按个人管理的管理歌曲类型,分为多个ACTION或者多个独立的脚本,在进行整个业务自动化测试时,可使用一个整体的脚本,列出业务中所有的测试用例,使用CALL命令一起执行各子业务的脚本,完成业务测试。•按业务实现功能分类,主要是对数据的不同操作,可以产生四类业务分类,查询、下载、设置、删除四种,每种流程可以细分子流程,如:下载铃音实现时,选用的数据类型,从业务的数据驱动中选用不同的数据,产生不同的记录。软件测试自动化的概述Web自动化测试的方案设计Web自动化测试的方案实施自动化测试脚本的录制和编写自动化测试的执行和具体实现测试操作和测试数据的回收软件自动化测试成本投入和风险分析内容提要QTP的脚本设计和录制•方法:捕获/回放。•Action:具体的功能对象模块或测试用例。•反思:一个好的action应该包括多少个功能对象和测试用例?•遵循的原则:高内聚,低耦合自动化测试脚本的完善自动化的测试脚本包括以下三个方面:数据:用例中的脚本实现要依靠:参数,随机数来实现。循环:循环语句的编写。在一个action中必不可少的要使用到while,for两个语句实现循环。流程:功能模块和业务流程一个测试脚本中包含多个action一个测试用例中包含多个脚本自动化测试的具体实现•人工实现:在软件测试人员的呵护下执行•自己编写脚本和工具:提升自己自动化测试水平的最好方法(demo)•QTP工具:拿来主义(TD、QC、MultiTestManager)(demo)在现有的能力水平和测试环境下为脚本寻找保姆测试操作和测试数据的回收•测试操作的回收:不要把你的思想留给QTP。•测试数据的回收:不要把你的垃圾扔给QTP打开ie后记得要关闭重用的测试数据记得要删除•脚本的守护者往往就是你自己软件自动化测试的概述Web自动化测试的方案设计Web自动化测试的方案实施软件自动化测试成本投入和风险分析内容提要软件自动化测试的成本投入•脚本的维护成本:自动化的测试流程,使得脚本的维护成为自动化实施的一个关键性的依据。对于一个规范化的系统开发流程来说,实现测试的自动化是很有必要的。但是自动化的脚本维护使得我们的自动化测试在成本上变得较为昂贵。每一个系统的开发都是时刻随着需求的变更而改变,然而在大多数的情况下,就是很微小的一点系统修改都会导致我们去大量的修改自动化的测试脚本。•要维护的因素:测试用例、测试脚本、测试数据、测试结果、自动化的成本分析•维护难点:各因素的不确定性、脚本的版本要和软件build号相对应自动化测试的脚本维护方法•维护的方法:使用TD、QC等企业级的构架•我的建议:starteam的强大可以包容这所有的一切•一个解决问题的恒等式:TD=starteam+MTM•自动化测试整体框架构想:设计、维护、执行。QTP-starteam-MTM软件自动化测试的风险分析•风险的存在原因:自动化测试只是针对系统的大部分主要功能进行了有效的测试和验证,从而使得覆盖的测试面较为狭窄,导致系统的有些隐藏问题无法发现。•风险的减小建议:在自动化测试的实现初期,设计好自动化的测试用例,把握好系统的重点功能及可能会出现的问题,进而再实现测试自动化。在现有条件下减小可预计的系统风险。•目标:在现有条件下减小可预计的系统测试风险。个人思想感悟•自动化过程中,我领悟到:1、自动化并不是很自动,需要花精力才能让他自动。2、自动化工具不是万能的,他也有自己的缺陷。3、并不是什么功能都可以自动化的,不要为了自动化而去做自动化。4、自动化永远不可能取代人工的位置。5、自动化脚本的维护有时是很致命的,需要有一定的经验才能做好。6、我们需要适度的应用自动化,某些时候他确实可以减轻我们的负担,代替我们做一些很机械的事情。内容回顾软件自动化测试的概述Web自动化测试的方案设计功能方案设计业务方案设计Web自动化测试的方案实施自动化测试脚本的录制和编写自动化测试的执行和具体实现测试操作和测试数据的回收软件自动化测试成本投入和风险分析本次课程到此结束,谢谢大家!欢迎大家提问,讨论!