3.利用数据驱动体系
在讨论成功的工程中,我们得出两种分类,分别是数据驱动设计和基于框架的设计。他们可以孤立也可以集成在一起。
一个数据驱动的例子:假设测试一个用户创建和打印表格的程序。你要处理这样几件事情:
表格标题。可以设置不同的字体,大小,样式(粗体,斜体,小写,正常)。
标题位置 (在表格上下,在表格旁边) 和方向 (字母显示水平方向还是垂直方向).
标题绘图(在标题上下还是旁边),图形打下(大,中,小)。他可以是位图(pcx,bmp,tiff)或者是矢量图(CGM,WMF)。
表格边框边线稠密
表格行列数量和大小。
每个单元格字体,大小,样式。每个单元格内图形大小,位置,旋转。
表格打印输出纸张的大小,方向。
<<<放置大图>>>
标题
顶行框边
行列
特征1 表格的一些特性
因为他们在同一时间同一张纸上操作所以参数都是相关的。如果一些行特别大,就没有留给图形的地方。如果字体太多,程序有可能内存溢出。例如在组合设置这些参数测试,那么将有上万种组合。
假设编写一百个脚本测试一百个组合。如果界面的一个元素变化了,举例,如果标题字体从一个对话框移到另一个对话框,那么你不得不修改每一个脚本。
标题位置,标题字体,标题样式,标题图形(CG—Caption Graphic),宽度
1. 顶部 Times PCX 3pt
2. 右 Arial 斜体 2pt
3. 左 Courier 粗体 1pt
4. 底 Helevtica 粗体斜体 TIFF中间无
特征2 从一个只有几行的格式化的测试矩阵的表格开始
我们从测试矩阵开始工作。测试用例包含很多参数变量的组合。在这个矩阵里,每一行制定测试用例,每一列都指定参数设置。例如,列一可能指定标题位置,列二标题字体,列三标题样式。还有其他一些列。
创建电子表格创建你自己的矩阵,比如Excel。
执行这些测试用例,编写测试脚本从读取电子表格中一次读取一行数据(测试用例)。执行脚本设置在电子表格中指定的参数。如果我们继续工作在特征2弟子表格中的第二行。第一次运行的脚本从第一列中读取数据(标题位置),正确设置对话框并写入字段中,然后设置标题位置,这个值可以在测试矩阵中看到。一旦所有的参数正确设置,你可以做剩下的设置,你可以打印这个表格并评估输出是否正确。
测试程序将执行每一行的小脚本。
换句话说,你的结构是:
加载测试用例矩阵
For each row I (row = test case)
For each column J (column = parameter)
Execute the script for this parameter:
正确操作对话框或者菜单
设置从测试矩阵中(i,j)位置读取的值
返回测试结果
如果软件设计变化,那么标题位置将移到不同的对话框,你只要改动很少行的代码,每个mini脚本中处理标题位置。你需要改动这些行一次:只要改变每个在电子表格中的测试用例。比较修改每个测试用例的脚本来说分离代码和数据是很有效的方法。
还有其它几种建立数据驱动的方法。比如,Bret Pettichord(LAWST会议参加者)在表格中填写一系列命令。每行列出了要执行的测试用例需要执行的一系列命令(一个单元格里一个命令)。如果用户界面变化了,需要稍稍修改命令序列,这时测试人员通过修改电子表格中数据要比从新写代码来修改测试用例方便的多。其他测试人员用简单的测试用例序列或者当前状态就可以了。
另一个方法驱动数据用以前的文档,假设测试文档处理器处理成千上万的文档。每个文档,脚本驱动文档处理器加载文档,然后执行一些列简单的操作(比如打印)
一个有名的设计数据驱动的方法能很容易让非功能测试计划人编写测试用例,因为他们只要简单的把测试用例写入测试矩阵中就可以。其他的测试用例都可以用这种方法生产,如果你做的很好,只要建立简明的告诉测试工具如何运行的一套表格。
4. 用基于框架的体系
这个框架提供了完全不同的方法,虽然他经常运用把多个数据驱动测试策略。Tom Arnold(LAWST成员)在他的书和课程中讨论了这个方法。
这个框架通过共享的函数库中的一系列函数把被测试应用程序和测试脚本分离。脚本开发者人员把这些函数看作测试工具本身的开发语言中的基础命令。他们因而把软件界面和测试脚本分离。
举例,一个框架编写者可能创建一个函数---OpenFile(p)。函数打开文件p。下拉文件菜单,选择打开命令,拷贝文件名字到文件字段,选择ok按钮关闭对话框,然后操作。或者函数比这要做得多,假如错误处理。函数可能检查文件p是否被打开或者把试图打开文件的操作写入日志,把结果写入日志。这个函数也可能通过快捷方式命令替换操作菜单来打开打开文件对话框。程序可以利用应用程序编程接口(API)或者Macro语言来测试,或许函数能调用简单的命令并把文件名和路径作为参数发送。这个函数的定义不断的变化。脚本开发者只要知道函数名字openfile(x)来打开文件x。
本文地址:http://com.8s8s.com/it/it36958.htm