和一般的软件项目一样,自动化测试框架的开发是由自动化测试需求决定的,这个需求包括:
一、自动化测试更便于实施
二、处理自动化测试脚本本身的存在的问题,如异常处理和场景恢复
三、弥补测试脚本本身的不足或是特殊测试需求
四、测试易于维护
自动化测试过程包括三个要素:输入、输出、预期结果与实际结果的比较。
输入包括测试数据和测试步骤两部分。测试数据可以直接与测试步骤一起直接写在脚本里,也可以独立于代码,通过配置文件或参数的方式传递到测试中。测试步骤是测试脚本的主体,它依赖于软件的行为。软件输入的随意性使软件行为难以确定,这大大提高了编写测试脚本的难度。软件本身存在的缺陷或系统响应时间等问题都可能导致测试脚本执行失败。我们测试中无法考虑到脚本执行过程中所有的异常情况,而这会导致测试脚本执行的不稳定性,因此我们需要针对测试脚本本身做异常处理。
输出,并将其与预期结果比较是自动话测试的另一个重点;相对于输入对软件的依赖,这个过程则是偏向于计算和比较,需要较高的编码能力。在测试项目中,测试结果的获取经常不像手工测试那么容易,而且验证规则比较复杂,有时一个校验点需要数十行甚至几百行代码才能完成。在自动化测试中,很多功能函数是通用的,且对于同一个项目,经常需要重复做这相同的事情。这样,设计一些公共函数对整个脚本的开发工作和维护工作是大有裨益的,不仅可以大大减少编码量,而且可以提高脚本的正确性和可维护性。
因此我们可以通过测试框架为我们做以下事情:
第一、处理脚本中一些异常和错误处理工作;
第二、实现一些通用的功能,简化脚本开发的过程;
然而对于 自动化测试,我们不能一个脚本一个脚本的去执行测试,而希望能够自如的部署测试,比如我们选择要执行的用例后,自动化测试框架能够执行相应的用例并给出测试结果。
基于此,我们希望测试框架可以帮我们实现:
第三、根据需求驱动测试执行;
第四、测试场景恢复;
第五、测试结果输出。
当然,我们的需求可能还不止这些,需要测试框架为我们做更多的事情。