关闭

API测试(七)

发表于:2009-10-21 14:30

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:James D. McCaffrey    来源:51Testing软件测试网采编

  处理输入参数为空字符串的情况

  问题

  如何测试传给待测API方法的参数为空字符串的情况

  设计

  使用一个特殊的字符串标记来表示测试用例文件中的空字符串,并且在测试套件中加入相应的逻辑处理分支,把真正的空字符串作为参数传给待测API方法。

  方案

  创建如下测试用例数据:

  0001:SubString:put:computer:true

  0002:SubString:xyz:computer:false

  0003:SubString:emptystring:computer:true

  在测试套件中加入特殊的逻辑处理代码处理"emptystring"这个标记:

  tokens = line.Split(':');
  if (tokens[2] == "emptystring")//特殊输入
  arg1 = " ";
  else
  arg1 = tokens[2];
  bool actual = StringLib.Methods.SubString(arg1, tokens[3]);
  if (actual == bool.Parse(tokens[4]))
  Console.WriteLine("Pass");
  else
  Console.WriteLine("*FAIL*");

  注解

  当测试以字符串为参数的API方法时,应该总是测试字符串为空的情况。一种方法是,在测试用例文件里存储一个特殊的字符串标记,比如"emptystring",然后在程序读到这个标记的时候转入相应的处理分支。例如,设想正在测试一个名为StringLib的程序库,它包含一个SubString()方法,这个方法接受两个字符串参数,如果第二个字符串包含第一个字符串,则返回true。在设计的时候,规定:如果传给它的第一个参数是空字符串,那么SubString()方法返回true。

  与输入值为null的情况不同,我们可以间接地在测试用例数据文件里存储空字符串。例如,如下测试用例数据:

  0003:SubString::computer:true

  当通过String.Split()解析成一个名为tokens的字符串数组的时候,tokens[2]存储的就是一个空字符串,因为有两个相邻的的冒号中间没有值。但是,通常来说,最好还是存储一个特殊的字符串,因为这样可以例测试用例数据更容易读懂并且易于通过程序进行验证。

  在测试用例数据文件里嵌入特殊字符串标记来处理空字符串输入,这种同样可以应用到测试其他不常用的输入数据。例如,设想正在测试一个以字符为输入参数的方法。你需要测试控制字符,比如"<CR>"和"<LF>",并且比较ASII字符和Unicode字符。可以在测试用例数据存储一些像"<cr>","<lf>"以及"\n0041“这样的字符串,并且在测试套件里加入特殊的处理逻辑来处理它们:

  char input
  if(tokens[2] == "<CR>") //特殊输入
  input = '\x000d';
  else
  input = char.Parse(tokens[2]);

  如果测试用例数据文件经常有许多特殊字符,可以写一个叫作Map()的辅助方法,Map方法把从测试用例数据文件读到输入值转换成合适的参数值,这样测试套件代码就更为简洁并且易于扩展或裁减。例如,可以把Map()写成这样:

  private static char Map(string token)
  {
  if(token == "<CR>")
  return '\x000d";
  else if (token == "<LF>")
  return '\x000a';
  //etc
  else
  return char.Parse(token)
  }

  然后就可以在测试套件里这么使用它:

  char input = Map(token[2]);

相关阅读:

API测试(六)

API测试(五)

API 测试(四)

API 测试(三)

API 测试(二)

API 测试(一)

22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号