iOS的JSON解析及用例设计

Posted 搜狗测试

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS的JSON解析及用例设计相关的知识,希望对你有一定的参考价值。

点击
“搜狗测试”
可关注我们!
     



小编在测试过程当中发现“JSON”格式的测试往往很重要,格式错误往往会导致崩溃的严重BUG,因此,今天借此机会希望和大家简单介绍一下iOS的一个常用解析JSON数据的方式,以及常见的测试用例设计。


JSON基本格式:

JSON结构有两种,JSON 简单说就是 javascript 中的字典和数组,所以这两种结构就是字典和数组两种结构,通过这两种结构可以表示各种复杂的结构。

 

1、字典:字典在 JSON 中表示为 “{}” 括起来的内容,数据结构为 {key:value, key:value,...} 的键值对的结构,在面向对象的语言中,key 为对象的属性,value 为对应的属性值,所以很容易理解,取值方法为 对象[key] 获取属性值,这个属性值的类型可以是数字、字符串、数组、字典几种。

2、数组:数组在 JSON 中表示为 “[]” 括起来的内容,数据结构为 ["java", "javascript", "vb", ...],取值方式和所有语言中一样,使用索引获取。字段值的类型可以是数字、字符串、数组、字典几种。

    {

        "people":[

               {"firstName":"A","lastName":"AA", "email":"aa@aa"},

                {"firstName":"B","lastName":"BB", "email":"bb@bb"},

               {"firstName":"C","lastName":"CC", "email":"cc@cc"}

                ]

}

 


解析JSON数据的方法:

ios输入法中针对NSJSONSerialization类的JSONObjectWithData方法进行了重写:

首先先去判断data是否为空:

  if(data)

    {

        return [self JSONObjectWithData:dataoptions:opt error:error removingNulls:YES ignoreArrays:NO];

    }

returnnil;

 

之后会对data进行解析,使用id泛型去获取JSON解析出的结果,既可以是NSArray也可以是NSDictionary

+(id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opterror:(NSError *__autoreleasing *)error ignoreArrays:(BOOL)ignoreArrays

{

//此时的data不能为空

    // Mutable containers arerequired to remove nulls.   

id JSONObject = [self JSONObjectWithData:dataoptions:opt error:error];//如果出现错误则会出现error

   

    if (error && *error)//判断error,如果有error则直接返回nil

    {

        return JSONObject;

    }

   

    if (![JSONObjectisKindOfClass:[NSArray class]] && ![JSONObjectisKindOfClass:[NSDictionary class]]) {

        return JSONObject;

    }

   

    [JSONObjectrecursivelyRemoveNullsIgnoringArrays:ignoreArrays];//进行过滤,过滤某些特殊符号例如”\n,\r\n,\t”

    return JSONObject;

}

 

解析数据使用:

这里的JSONObject字典就是刚才看的JSON数据中最外层的字典。我们再根据键值“data”获取到里面第二层的字典dit。

NSDictionary *dit = dcit[@"data"];

然后通过键值“rows”获取到rows数组。

NSArray *rows = dit[@"rows"];

 

这样就可以逐步获取解析得到的内容

 

测试用例设计:

1.通过上文介绍我们可以看到,首先可以将整体数据设置为空:data = NULL,查看解析是否会出现问题。

2.在测试过程中并不需要对内部结构进行太多关注,因此只用制造一个非json格式的数据进行解析例如{“哈哈”【】},查看是否出现崩溃。

3.在进行测试时需要关注“数字、字符串、数组、字典”这几种数据类型,比如讲原本的字符串改为数字,将数字改为数组,将数组改为字典等等。

4.对于特殊字符也需要根据需要进行验证,例如“数字需要计算,验证0值”,“字符长度进行限制”等






关注我微信号:搜狗测试

想看之前的系列文章?

转载请注明来自“搜狗测试”


顺便推荐我司移动测试工具百宝箱:搜狗哆啦A梦

多年测试经验积累,助您摆脱繁琐操作,而且全免费


以上是关于iOS的JSON解析及用例设计的主要内容,如果未能解决你的问题,请参考以下文章

接口测试原理流程及用例设计

一图看懂6G应用及用例研究

四则运算分析与设计

用例及用例图

深度解析用例设计方法

如何高效开展测试用例评审?附用例评审检查清单及用例评审报告模板