轻量级自动化测试框架QTP 课件

上传人:我*** 文档编号:145068646 上传时间:2020-09-16 格式:PPT 页数:26 大小:315KB
返回 下载 相关 举报
轻量级自动化测试框架QTP 课件_第1页
第1页 / 共26页
轻量级自动化测试框架QTP 课件_第2页
第2页 / 共26页
轻量级自动化测试框架QTP 课件_第3页
第3页 / 共26页
轻量级自动化测试框架QTP 课件_第4页
第4页 / 共26页
轻量级自动化测试框架QTP 课件_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《轻量级自动化测试框架QTP 课件》由会员分享,可在线阅读,更多相关《轻量级自动化测试框架QTP 课件(26页珍藏版)》请在金锄头文库上搜索。

1、轻量级自动化测试框架QTP Based,iSoftStone Information Service Corporation,目录,问题描述 解决方案 框架图示 数据的组织 驱动的逻辑 优势和缺点 参考资料,问题描述,问题描述,前段时间,完成了一些自动化测试的工作,发现了几个问题: 脚本文件过大 经过检查分析,主要是两方面原因导致,一是对象库的文件,默认生成得每个空的对象库文件为192K,这样一个空的QTP脚本文件就至少需要192K*2=384K的空间(Action0和Action1),如果分割的Action多的话,占用的空间就更多。二是Excel的文件,同样由于分割Action,每个Acti

2、on需要使用一个独立的Sheet,包括脚本中调用的Action,这个在复杂的脚本中,表现得更加明显,往往一个贷款发放的脚本会占用34M空间。 文件数量过多 一个最简单的QTP脚本,共有4个文件夹,13个文件,当分割Action较多时,文件数与Action的个数呈正比上升。,问题描述,这两个问题,直接导致最终完成的工程文件达到700800M,文件数以万计。这还只包括了信贷与结算的主要业务。而其中真正有用的脚本,全部用文本来存储的话,不会超过10M。使用Action复用的方式带来了维护、转移、版本的巨大困难。,解决方案,解决方案概述,用VBS的Function代替QTP脚本中的Action。 不使

3、用Action复用,而使用Function的加载和调用。直接减少QTP脚本的数量。 使用单一的QTP脚本入口。 这样整个工程中,就只有一个QTP脚本,其他的都是VBS文件,并且没有了过多的Excel文件。确保冗余文件达到最少。 数据文件统一维护。 将所有脚本需要用到的测试数据统一放到一个或多个Excel文件中,方便了维护,同时也减少了Excel文件的数量。,框架图示,框架说明,采用了(TestCase - Task)的模块化设计思想,业务数据驱动脚本的指导思想。框架并没有太多的新意, 对AUT测试对象的处理,全部交给测试工具和Script去处理,框架只处理业务层面的测试数据。 当页面元素是动态

4、生成,或者写得不规范时,Web对象的识别是困难的,而且用Excel表格来记录一个个的Web对象,亦不见得实用。因此,对于Web对象的识别就全部放到脚本中去处理。幸好QTP提供的功能足以胜任这个工作。 框架中,最核心的可能是Driver脚本,但是在整个测试中,最核心的不是Driver,不是Script,而是业务测试数据。 孤立的来看自动化测试框架,是没有任何意义的。什么样的测试用例,决定什么样的框架。,体系结构,Test Set驱动脚本 初始化 解析Test Set的数据文件 调用TestCase驱动脚本,向它传递测试用例的文件名 如果有必要,调用框架所必需的库函数 TestCase驱动脚本 解

5、析TestCase的数据文件 根据TestCase的解析结果,加载测试脚本,加载测试数据 根据TestCase的内容,调用Task的测试脚本,并且把测试数据的集合传递给测试脚本 如果有必要,调用框架所必需的库函数,体系结构,Task测试脚本 执行指定的任务(如输入数据,点击按钮等) 生成日志,以及测试报告 如果需要则调用用户自定义库函数 库函数 一般的和具体应用程序的函数可以被调用,以执行指定的任务。,框架的存储结构,框架的存储结构,Project文件夹,整个工程的最高一级目录,名称可以修改。 Driver目录,这个是QuickTest的脚本文件,整个框架的入口。这个脚本包含了testSet和

6、testcase的驱动脚本。 frameUtil目录,存放用来支持框架的一些函数库。 logs目录,存放脚本运行日志 testData目录,存放测试用例以及测试数据的Excel文件 testScript目录,存放task脚本,全部存储为vbs文件。 driver.vbs文件,使用了QTP的automation object model,也是整个框架的入口。可以直接执行该vbs脚本,因此可以做成Windows的自动任务,在指定时间点执行。 testData和testScript目录下的内容,是真正需要开发的。,数据的组织,Test Set,TestCase,Test Data,Test Data

7、,Test Set 数据文件,Test Set数据文件是用来管理测试用例文件的,在这里,扮演了TD的管理测试用例和脚本的角色。很显然,这个数据文件没有TD的功能强大,不能体现测试用例对需求的覆盖,没有测试用例之间的树形结构但是作为一个轻量级的测试框架,只要能够记录、管理50100个测试用例文件,就暂时够用了。 IDX:index,“”表示该行数据有效,“x”表示该行数据无效。主要是考虑到Excel直接面对人,用0,1来标识有效无效,很不直观。 name:测试用例的名字,用中文标示即可,这个字段只是让人看起来比较直观,并不会被用到。 table:这个字段非常重要,它指向测试用例所在的Excel的

8、文件名。可以带后缀,也可以不带后缀。不需要指定文件所在的路径。 sheet:表示测试用例在Excel文件的Sheet名称。如果不填写的话,默认为第一个Sheet。 考虑到有些测试用例极其复杂,仅仅使用Excel形式的测试用例是远远不能实现其复杂的逻辑,也可以把测试用例写成vbs文件,直接执行该vbs脚本。目前暂未实现。,TestCase数据文件,TestCase数据文件中记录的就是测试用例,只要不是太过于复杂的测试流程,都可以直接写在Excel文件中,当然,需要符合一定的规范,很显然,这离自然语言还是有一定的距离 。这种形式比较适合step-by-step的测试用例,并且粒度比较粗,减少了测试

9、用例的步骤数。 IDX:index,“”表示该行数据有效,“x”表示该行数据无效。 bizName:被测试的业务的名称,比如说“银行收款”这个业务。事实上,这个名称需要与存储改业务的task脚本的名称保持一致,而且需要与task脚本中定义的class的名称也保持一致。在没有做名称的中英文对照字典之前,bizName最好使用英文名,所以最好使用“collection”,而不是“银行收款”。 taskName:task的名称,原子业务的名称,比如新增、修改、删除等。这个名称与task脚本中定义的各个Function的名称应该保持一致。同样,暂时也最好不要使用中文。,TestCase数据文件,biz

10、DataTable:测试数据所在的Excel的Sheet名称。比如说进行登陆操作时,需要输入用户名和密码等数据,这些数据单独放在某个Excel文件中的某个Sheet中,把这个Sheet的名称写到bizDataTable这个字段中即可,框架会自动去加载这个Sheet中的所有数据。 filter:测试数据的过滤条件。可能准备的测试数据比较多,但是在当前这一个step中,只需要执行某一条或几条数据,就可以使用filter这个条件。比如说,登陆时,想用错误的用户名和密码来登陆,那么可以这样写:用户类型=baduser。当然“用户类型”是测试数据所在Excel表格中定义过了的字段。老实说,在这次完成的框

11、架中,只有filter这个想法,觉得有点意思。感谢提出这个需求的同事。,Test data数据文件,Test data数据文件,用来存放测试数据。没有区分输入数据、验证数据、以及输出数据,总之,只要是测试过程中,需要用到的数据,都一古脑的做成一行,放到这个文件中。一是觉得这样在设计测试数据时,比较方便和直观,二是也没有更好的设计思想。 对业务的验证,按照设想,是通过日志文件和测试报告来体现的。所以把验证数据与输入数据放到一起,亦不会有太大的不妥。,数据文件总结,基于把测试设计和脚本开发分开的思路,设计了这三个Excel表格。测试设计时,主要是设计testcase和test data这两个Exc

12、el表格。毕竟,这才是自动化测试最核心的价值所在。脚本写得再完美,没有好的测试设计、测试数据,对测试本身并不会有太大的帮助。 因此,希望尽可能把这些Excel表格做得更易用。所谓的框架,就是把这3个Excel表格串起来的东西。,驱动脚本的逻辑,Test Set 驱动脚本伪码 TestCase 驱动脚本伪码 Task 脚本说明,Test Set 驱动脚本伪码,将test set数据所在的整个Sheet加载到QuickTest的Runtime Table中。 检查test set数据文件中一共有多少行记录需要执行。 读取一行数据。 如果该行的IDX的值为“”,那么调用执行TestCase驱动脚本,

13、并且把测试用例所在的Excel文件名和Sheet名作为参数传给TestCase脚本。 转向第3步,直到所有数据被执行完毕。 删除加载到Runtime Table中的所有数据。,TestCase 驱动脚本伪码,将TestCase所在的Sheet加载到QuickTest的RunTime Table中。 检查TestCase数据文件中一共有多少行记录需要执行。 遍历整个Sheet,加载所有需要被用到的Task脚本:逐行读取有效数据(IDX=“”),如果bizName的值所指向的Task脚本没有被加载,那么加载之,直到所有数据被执行完毕。 遍历整个Sheet,加载所有需要被用到的Test data数据

14、:逐行读取有效数据(IDX=“”),如果bizDataTable的值所指向的Sheet(该Sheet的名称应该在本测试用例中是唯一的)没有被加载到RunTime Table中,那么加载之,直到所有数据被执行完毕。 获取一行的测试步骤的数据。 如果该行的IDX的值为“”,那么解析filter信息,形成条件语句。 逐行读取test data所在的Sheet,如果该行数据是满足条件语句的,那么调用Task脚本,执行对应的操作。 转向第5步,直到所有数据被执行完毕。 删除加载到Runtime Table中的所有Sheet。,Task 脚本说明,Task 脚本的模板如下: Class collectio

15、n 银行收款-新增的task Function toInsert(Sheet_Name) Msgbox(DataTable(“序号”,Sheet_Name) End Function 银行收款-复核的task Function toCheck(Sheet_Name) Msgbox(DataTable(“序号”,Sheet_Name) End Function End Class,Task 脚本说明,Task 脚本中,必须定义一个Class,这个Class的名称应该与文件的名称保持一致。目的主要是为了在调用某个Function时,如新增(toInsert),会去找指定Class的toInsert

16、方法,而不会出现找错的情况。 各个Function脚本,需要全部使用描述性编程来实现,不能采用录制的方式生成。 使用参数化的测试数据,可以直接使用QuickTest的DataTable对象,只是Sheet名称不是dtLocalSheet,而是定义的变量Sheet_Name。不过用法是一样的。 脚本开发的工作,就是开发这些Task脚本。,优势和缺点,优势: 脚本文件少,并且占用的空间也少了。 可以使用版本控制工具对单个的数据文件或者vbs文件进行版本控制。 测试设计和脚本开发解耦。 测试用例和数据的展现更加人性化。 缺点: 异常的捕获考虑得很少。 日志只是输出到文件,不利于查看。如果把日志输出到数据库,就可以生成相应的测试执行报告。 测试用例的管理太过于简陋。,参考资料说明,EMOS框架。(这个框架正好有基于QuickTest的版本) DDE框架-Nagel, Carl。(就是网上流传很广的3层驱动的框架图,不过是基于Robot,只能借鉴思想) 微软软件测试自动化-王志峰 (每次看这个PPT都有新的收获),

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号