|
在做开发的时候一旦当我们有一段代码需要重复使用两次(包括两次)以上,都会将这段代码独立出来构成函数(过程),并重复使用。它能给我们带来的好处不言而寓。那在测试用例中是否也是大量的函数(过程)化?如果可以那我们的用例质量是否可以更上一层楼?怀着这种心情我做了一个试验,就是测试用例函数(过程)化。小弟现在写出来希望和各位大虾同分享并讨论。
任何一款软件系统的报表中都有过滤功能,当然过滤的内容是不相同的。由于是在同一套系统中我们就可以将过滤的方式或控件看作是相同的模式。以过滤人员和部门为例。由于各软件的不同,在输入的时候可能支持不同的查询方式。这里的例子支持的是模糊查询和多内容查询,即输入名称或编号都可查询出结果。
第一步:分析需要测试的功能。现在有两个功能过滤人员和部门。在这两个功能中他们有共通(可能有的朋友会说是不是写错了应该是'共同'而不是'共通'在这里我想表现的是他们可以共同通用的地方)性,都是进行过滤操作。不同点是一操作是过滤人员,一操作过滤部门。进一步分析,在应用系统中该操作会是相同的代码,唯独不同的是调用不同的表和不同的字段。
第二步:分析用例函数(过程)。输入接口:输入字符串。输出接口:输出完整名称。在从输入到输出的过程中还有如下过程:根据字符串进行数据查找。在这过程中又存在了如下三种情况1、无法查询出数据。2、查询出一条数据。3、查询出一条以上的数据。针对这三种情况对于接口部分来将就有三种可能1、没有输出任何值。2、输入一条值。3、输出多条值让操作人员进行认为选择。其实这部分的过程对于测试用例都不重要,重要的是我们要看到对人员和部门在测试的时候的区别。根据具体的情况判断其实在对人员和部门进行过滤的时候他们唯一的不同点是在不同的表(也可能是在同一张表中加入不同的属性,但是这种可能性不大)中进行查找和操作。我们只需要将表的名称定位函数的一个变量,并将输入字符串定义为一个变量即可。
第三步:用例完称。(该用例为表格,具体内容在word文档中可以看到)
第四步:编写用例教本(本脚本是在TestComplete测试工具下完称)
{-------------------------------------------------------------------------------
数据库的连接参数
-------------------------------------------------------------------------------}
Function Test_Adoconntion;
begin
Result := 'Provider=SQLOLEDB.1ersist Security Info=False;'
+ 'User ID=userassword=password;Initial Catalog=database;Data Source=server';
end;
{-------------------------------------------------------------------------------
读取数据库中表信息, 这里暂时只能支持一个字段
并且由于在写sql语句的时候进行了排序,这里始终只见第一条的名称进行提取,在该函数的基础上可以修改出随机的提取函数
-------------------------------------------------------------------------------}
function ReaderDatabase(TN: string, InS: string);
var
Query: OleVariant;
sql_1: string;
OutResult: string;
begin
try
sql_1:= 'select _name from ' + TN + ' where _name like ''%' + InS + '%'' or _sc like ''%' + InS + '%'' order by _name' ;
OutResult:= '';
Query := ADO.CreateADOQuery();
Query.ConnectionString := SqlConntion;
with Query do
begin
Sql:= sql_1;
Open;
while not Eof do
begin
OutResult:= Query.FieldByName('_name').Value;
Break;// Next;
end;
Close;
Result:= OutResult;
end;
except
ErrorLog(TN,'选择读取数据库的方式的函数的参数不正确');
end;
end;
{-------------------------------------------------------------------------------
调用该函数
-------------------------------------------------------------------------------}
procedure Test_ReaderDatabase;
var
OS: String;
begin
OS:= ReaderDataBase('depot', '2');
Sys.Keys(OS);
end;
;) |
|