API 测试(13)

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

 

问题

 

      如何测试传给待测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]);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值