如今将一一根据本身的我的理解来介绍这些“自动化测试框架思想”:程序员
一、所谓模块化思想,就是将一个测试用例中的几个不一样的测试点拆分而且将其单个点的测试步骤进行了封装,造成了一个模块。数据库
例如:一个测试用例要对一个登陆程序进行测试,其中包括:用户名输入、密码输入、以及肯定登陆;浏览器
那么就能够将用户名输入、密码输入、肯定登陆、取消登陆四个操做分别封装在四个不一样的模块中。测试时,只需调用其模块便可。这样的话,当一个模块有变化,你只需单独维护那个模块便可,也能够根据模块的不一样组合成不一样的测试用例。服务器
二、所谓测试库思想,就是模块化思想的升华,其为应用程序的测试创造了库文件(能够是APIs、DLLs等),这些库文件为一系列函数的集合。其与模块化思想不一样的是,其拓展了接口思想,便可以经过接口去传递参数,而不是一个封死的模块,能够说是一个多了一个“门”的交互型模块。架构
例如:仍是以上那个测试用例,只是将用户名输入、密码输入、肯定登陆、取消登陆封装成一个库,这个库含有一个函数Login,这个函数Login接收两个参数“用户名、密码”,对输入不一样的用户名和密码能够进行不一样的测试用例。也能够另一个函数Cancle。框架
三、所谓数据驱动思想,众说纷纭,不少人都觉仅仅依靠用EXCLE表进行不一样数据的读取仅是一个高级的参数化,其实怎么理解并不重要,关键是其思想可以好的应用到你的框架中。而个人理解就是变量不变,数据驱动结果,不一样的数据致使了不一样的结果的产生。而对于数据的导入,能够经过不少方式,例如:EXCLE表、XML(用在WEB中)、数据库(DB)、CSV文件、TXT等均可以。模块化
四、所谓关键字思想,这个思想,我曾经一直思考,它与面向对象的关系,与交互模块化思想的区别。后来我的理解,其实关键字驱动就是一种面向对象的思想,例如:QTP、RFT中,对象能够为一个数据或者一个关键字,对对象的抓取,能够将其测试对象封装为一个关键字(便可以将gui元素封装成了一个个关键字),这样能够对其关键对象进行各类操做了,不一样的对象能够驱动不一样的测试流向与结果。函数
简单的应用的方式能够用一个EXCEL表,里面包括“对象类型”“对象名称”“对象操做名称”“判断方式”“预期结果”。这样的话,能够经过导入不一样的对象类型和名称、不一样的对象操做来构建成了一个测试用例表了。测试
以上只是对这些思想的我的理解,作好自动化测试,不是说你掌握了一个框架,而是要掌握其自动化的思想,而后根据这些思想,结合你不一样的测试环境和流程来构建你本身的自动化测试框架。网站
3、构建自动化测试框架的策略
一、永远记住,你的“自动化测试框架”是给测试人员用的,若是你真的想把自动化测试作成一个规模,那么你须要将测试工程师当作你的用户,你不能期望他们有耐心的去编写测试脚本或者期望他们可以像你同样对这些思想有良好的掌握。你要将他们当成什么都不懂的用户,所以你的框架必须是“一切简单化”的化身,简单的操做、简单的维护、简单的拓展。
二、作一个自动化测试框架主要是从分层上去考虑,而不是简简单单的应用一种思想,它是各类思想的集合体。
例如,作GUI自动化测试,简单的通常就将其分为三层,其框架以下图所示:
而其中,能够贯穿着自动化测试的各类思想,例如:对象层中有关键字的思想、能够将对象库标示在Excel表中进行管理,或者应用动态搜索的方式传递对象识别参数。tasks层中能够封装各类方法,造成一个大型的方法库,而每一个方法中能够应用上数据驱动的思想。
三、真正的自动化测试框架是与流程上结合的,而不简简单单的靠技术实现,技术其实不是很复杂,关键就在于对其架构和流程的深入把握,而这须要很长的一段时间,因此不要期望一口气能吃成胖子,只能一步一步按需求来,需求指导思想的应用。
2.1 常见测试架构
模块化测试脚本框架:测试用例的脚本是由树状的独立小的能够描述的测试脚本模块组成,从而实现模块化。
测试库框架:不一样于模块化的是把目标应用程序分解为过程和函数而不是脚本。
关键字驱动测试框架:将目标应用程序的功能和测试步骤分别映射为Keyword和Driven驱动表的形式。
数据驱动测试框架:测试驱动模块从数据源中获取测试数据进行测试。
混合测试框架:以上框架的一些结合。
分层测试框架:
2.3 平台实现
2.3.1 基于Selenium和TestNG的平台实现
首先从Selenium官方网站中分别下载并安装Selenium IDE,Selenium RC,Selenium Grid安装包。从TestNG官方网站下载并安装TestNG安装文件。
软件测试活动是围绕测试用例来进行的,对于Web自动化测试,基本步骤以下:编写测试用例,录制测试脚本,配置测试工程,运行测试脚本,查看测试报告。
对于测试脚本的开发和执行,首先须要在测试用例的基础上,使用Selenium IDE进行脚本录制,调试,回放,再肯定测试脚本无误后,则转换为特定语言的脚本代码,例如转换为TestNG框架的Java代码。接着须要重构转换了的测试脚本代码,使其业务脚本和控制脚本分离到不一样模块中,同时重构其中的测试数据,包括业务测试数据和界面数据(可使用XPath来定位界面元素)。在重构过程当中,经过使用TestNG的注释标签来对测试脚本进行设置和控制。测试报告是由TestNG在测试中自动生成的,能够直接使用浏览器打开,也能够扩展部署到服务器上,这样相关程序员能够当即得到属于本身那部分的测试结果。 3 结论 软件测试分层架构是在混合测试框架的基础上结合分层的思想设计出来的,经过Selenium 和TestNG搭建起来的平台,能够普遍用于Web应用程序的自动化测试,