所谓自动化测试框架,可以解释为自动化测试的整体解决方案,是由一些假设、概念和为自动化测试提供支持的系统及其最佳实践等构成的集合。对不同的应用领域或不同的测试水平,自动化测试的框架具有不同的构成,但我们必须清楚如何满足自动化测试的基本要求,了解自动化测试框架的基本构成,从而在此基础上,根据自己组织的实际情况来进行扩充,从而构造适应性更强、效率更高、功能更强的自动化测试框架。
为了能开展自动化测试的工作,首先需要基础设施(infrastructure)来支撑测试工具的运行,这包括Web 服务器、邮件服务器、FTP 服务器等。其次是执行自动化测试,要有一套机制来保证测试脚本的执行。具体地说,就是先建立测试环境,创建和执行测试套件,然后获取执行状态并给出测试结果报告。根据这个分析,可以描述一个自动化测试框架的雏形,如图2-11 所示。
图2-11 软件自动化测试框架的雏形
图2-11 中的雏形给出了自动化测试框架的基本构成要素,包括执行器、脚本管理器、报告生成器等,也比较清楚地描述了这些要素之间的关系。但是,这个框架还没给出其他一些必要的信息,例如:
测试脚本的层次性,如何分离业务逻辑和系统基本操作?
如何实现自动化测试工具的接口?
如何实现被测试系统的对象映射?
如何事先安排测试任务?
如何管理有效测试资源?
如果要在测试脚本上分离业务逻辑和系统基本操作,必须将各种基本操作封装为特定的关键字,每个关键字对应一个函数,而业务逻辑可以由关键字和参数来描述,即可以通过图2-12 来描述这种脚本结构。
图2-12 关键字驱动脚本框架示意图
事先安排测试任务,也是非常重要的。例如,测试人员在下班前将测试任务安排好,测试实际执行可以在晚上9 点钟以后或得到新的软件包后自动开始。这样,测试人员在第二天上班前就可以得到测试报告。安排完任务,还需要开发具有相应触发机制的引擎(Engine/ Cron Job)来执行测试任务。它负责完成自动部署软件包、向各台远程测试机器分发脚本并启动测试工具等工作。对于这部分,可以用图2-13 来描述,其中底层的基础设施可以由STAX 实现。
图2-13 自动化测试任务的安排和执行