软件测试框架介绍 自动化测试框架
在软件测试领域,我们经常会听到测试框架。什么是软件测试框架?在软件测试中它起到怎样的作用?要认识软件测试框架,首先要对所谓框架有概念。框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面、而后者是从目的方面给出的定义。测试框架也是如此,测试框架出现的最终目的是花少量的资源来完成尽可能多的测试任务,所以软件测试框架的建立以及框架的重用性方面是最值得测试人员深入探究的地方。Java测试框架、.Net测试框架、自动化测试框架、单元测试框架、集成测试框架,你是不是已经被这些名称弄晕了?如何实现测试框架用于特殊场合?本专题将就以上问题对测试框架进行全面详解,从测试框架入门和类别,到常用框架应用和自己动手实现框架。
什么是测试框架:
软件测试框架是一组自动化测试的规范、测试脚本的基础代码,以及测试思想、惯例的集合。可用于减少冗余代码、提高代码生产率、提高代码重用性和可维护性。 测试框架的好处在于:提高开发速度,提升测试代码的执行效率;提高软件代码质量,同时引入重构概念,让代码更干净和富有弹性;提升系统的可信赖度,作为回归测试的一种实现方法支持修复后"再测试",确保代码的正确性。常用的测试框架分类包括自动化测试框架和单元测试框架。根据所用开发平台不同,也可使用不同的测试框架展开测试。
软件自动化测试框架的发展
基于界面的软件自动化测试框架和工具的发展大致经历了三个阶段(有人也据此将测试工具分为三代):
1)简单的录制/回放:由工具录制并记录操作的过程和数据形成脚本,通过回放来重复人工操作的过程。在这种模式下数据和脚本混在一起,几乎一个测试用例对应一个脚本,维护成本很高。而且即使界面的简单变化也需要重新录制,脚本可重复使用的效率低。
2)数据驱动 (data driven)的自动化测试:从数据文件读取输入数据,通过变量的参数化,将测试数据传入测试脚本,不同的数据文件对应不同的测试用例。在这种模式下数据和脚本分离,脚本的利用率、可维护性大大提高,但受界面变化的影响仍然很大。
3)关键字驱动(keyword driven)的自动化测试:关键字驱动测试是数据驱动测试的一种改进类型,它将测试逻辑按照关键字进行分解,形成数据文件,关键字对应封装的业务逻辑。主要关键字包括三类:被操作对象(Item)、操作(Operation)和值(value),用面向对象形式可将其表现为 Item.Operation(Value)。关键字驱动的主要思想是:脚本与数据分离、界面元素名与测试内部对象名分离、测试描述与具体实现细节分离。
相应地,软件测试自动化脚本的类型,从低到高的发展层次是:
1)线性脚本:通过录制直接产生的线性执行的脚本。
2)结构化的脚本:具有顺序、循环、分支等结构的脚本。
3)共享的脚本:可以被多个测试用例使用,被其它脚本调用的脚本。
4)数据驱动的脚本:数据和流程控制分离的脚本,通过读入数据文件来驱动流程进行的脚本。
5)关键字驱动的脚本:脚本、数据、业务分离,数据和关键字在不同的数据表中,通过关键字来驱动测试业务逻辑。关键字驱动脚本的特点是它看起来更像描述一个测试事例做什么, 而不是如何做。
目前,大多数测试工具处于数据驱动到关键字驱动之间的阶段,有些工具厂商已经提出了声称支持关键字驱动的版本。
从上面可以看到,自动化测试框架和脚本的发展是和软件工程思想的发展一脉相承的。软件开发的模式从面向机器、到面向过程、再到面向对象、面向服务,是一个从底层到高层、从具体到抽象、复用的粒度从细到粗的发展过程。而软件开发中的模块化、层次化、松耦合等思想对自动化测试框架的设计都具有借鉴意义。