摘要
这篇文章详细描述几种自动化脚本编写方法,各自的优、缺点,同时在脚本编写的成本、编程技巧和脚本可维护性方面作出相应的
评价。
声明
作者在对这几种自动化脚本编写方法作出关于成本的评价时,没有参考任何自动化测试项目的成本分析文档或成本效益分析结果。
建议读者基于自己的理解和考虑风险来消化利用这些信息。
文章的编排
这篇文章主要分析自动化的成本,然后在描述每一种脚本编写方法时指出它的优点和缺点。
关于优缺点,从以下方面进行评价:
脚本的编写是否是结构化的
测试用例在什么地方定义
开发脚本的成本
需要怎样的编程技能
如何计划、设计和管理脚本
测试数据放在什么地方
脚本如何维护,维护成本
其它方面
成本
测试脚本相关的成本主要由开发成本和维护成本组成。在自动化测试过程中使用不同的脚本编写方法会对成本有不同程度的影响。
“录制回放”的方法是简单的,也是脆弱的,但是它的开发成本很低,然而维护成本很高,因此总体成本也会很高。使用先进的关
键字驱动测试的方法,则维护成本会很低,但是开发成本会很高,因此总体成本也会很高。测试经理需要在这些方法中作出明智的选择,以
便把总体成本尽量降低。
编写脚本的方法
不同的自动化测试脚本编写方法主要有:
线性的
结构化的
共享的
数据驱动的
关键字驱动的
线性脚本编写方法
线性脚本编写方法是使用简单的录制回放的方法,测试工程师使用这种方法来自动化地测试系统的流程或某些系统测试用例。它可
能包含某些多余的、有时候并不需要的函数脚本。
优缺点:
是一种非结构化的编程方式
测试用例由脚本定义
非常低的开发成本
测试人员所需要的编程方面的技巧几乎可以忽略
不需要计划、设计
测试数据在脚本中是硬编码的
脚本会很脆弱,因此维护成本会很高
没有公用的脚本,因此可能造成重复劳动
结构化脚本编写方法
结构化脚本编写方法在脚本中使用结构控制。结构控制让测试员可以控制测试脚本或测试用例的流程。在脚本中,典型的结构控制
是使用“if-else”, “switch”,“for”,“while”等条件状态语句来帮助实现判定、实现某些循环任务、调用其它覆盖普遍功能的函
数
优缺点:
是结构化的脚本编写方法
测试用例在脚本中定义
编程的成本要比线性脚本编写方法略为高一点
需要测试员的调整编码技巧
需要某种程度上的计划、设计
测试数据也是在脚本中被硬编码
因为相对稳定一点,所以需要相对少的脚本维护,维护成本比线性脚本编写方法的要相对低
除了编程知识外,还需要一些脚本语言的知识
共享脚本编写方法
共享脚本编写方法是把代表应用程序行为的脚本在其它脚本之间共享。意味着把被测应用程序的公共的、普遍的功能的测试脚本独
立出来,其它脚本对其进行调用。这使得某些脚本按照普遍功能划分来标准化、组件化。这种脚本甚至也可以使用在被测系统之外的其它软
件应用系统。
优缺点:
脚本是结构化的
测试用例在脚本中定义
开发成本相对于结构化脚本编写方法来说要降低一些,因为减少了很多复制的劳动
需要测试员的调整代码的编程技巧
由于脚本需要模块化,所以需要更多的计划和设计
测试数据也是硬编码的
脚本维护和维护成本要比线性脚本编写方法的相对低
数据驱动脚本编写方法
这种方法把数据从脚本分离出去,存储在外部的文件中。这样脚本就只是包含编程代码了。这在测试运行时要改变数据的情况下是
需要的。这样脚本在测试数据改变时也不需要修改代码。有时候,测试的期待结果值也可以跟测试输入数据一起存储在数据文件中。
优缺点:
脚本是以结构化的方式编程的
测试用例由测试数据或脚本定义
由于脚本参数化和编程成本,这种方法的开发成本跟共享脚本编写方法比较要相对高
需要测试员较高的代码调整方面的编程技巧
需要更多的计划和设计
数据独立存储在数据表或外部文件
脚本维护成本较低
推荐在需要测试正反数据的时候使用
关键字驱动脚本编写方法
这种方法把检查点和执行操作的控制都维护在外部数据文件。因此测试数据和测试的操作序列控制都是在外部文件中设计好的,除
了常规的脚本外,还需要额外的库来翻译数据。是数据驱动测试方法的扩展。
优缺点:
综合了数据驱动脚本编写方法、共享脚本编写方法、结构化脚本编写方法
测试用例由数据定义
开发成本高,因为需要更多的测试计划和设计、开发方面的投入
要求测试人员有很强的编程能力
最初的计划和设计、管理成本会比较高
数据在外部文件存储
维护成本比较低
需要额外的框架或库,因此测试员需要更多的编程技巧
评价
关于开发的成本
随着脚本编写方法从线性到关键字驱动的改变,开发的成本不断地增加。
关于维护的成本
随着脚本编写方法从线性到关键字驱动的改变,维护的成本在降低。
关于编程技能要求
随着脚本编写方法从线性到关键字驱动的改变,对一个测试员的编程熟练程度的要求在增加。
关于设计和管理的需要
随着脚本编写方法从线性到关键字驱动的改变,设计和管理自动化测试项目的要求在增加。
文章来源于领测软件测试网 https://www.ltesting.net/