小编在测试过程当中发现“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[selfJSONObjectWithData:dataoptions:opterror:errorremovingNulls:YESignoreArrays:NO];
}
returnnil;
之后会对data进行解析,使用id泛型去获取JSON解析出的结果,既可以是NSArray也可以是NSDictionary
+(id)JSONObjectWithData:(NSData*)dataoptions:(NSJSONReadingOptions)opterror:(NSError*__autoreleasing*)errorignoreArrays:(BOOL)ignoreArrays
{
//此时的data不能为空
//Mutablecontainersarerequiredtoremovenulls.
idJSONObject=[selfJSONObjectWithData:dataoptions:opterror:error];//如果出现错误则会出现error
if(error&&*error)//判断error,如果有error则直接返回nil
{
returnJSONObject;
}
if(![JSONObjectisKindOfClass:[NSArrayclass]]&&![JSONObjectisKindOfClass:[NSDictionaryclass]]){
returnJSONObject;
}
[JSONObjectrecursivelyRemoveNullsIgnoringArrays:ignoreArrays];//进行过滤,过滤某些特殊符号例如”,, ”
returnJSONObject;
}
解析数据使用:
这里的JSONObject字典就是刚才看的JSON数据中最外层的字典。我们再根据键值“data”获取到里面第二层的字典dit。
NSDictionary*dit=dcit[@"data"];
然后通过键值“rows”获取到rows数组。
NSArray*rows=dit[@"rows"];
这样就可以逐步获取解析得到的内容
测试用例设计:
1.通过上文介绍我们可以看到,首先可以将整体数据设置为空:data=NULL,查看解析是否会出现问题。
2.在测试过程中并不需要对内部结构进行太多关注,因此只用制造一个非json格式的数据进行解析例如{“哈哈”【】},查看是否出现崩溃。
3.在进行测试时需要关注“数字、字符串、数组、字典”这几种数据类型,比如讲原本的字符串改为数字,将数字改为数组,将数组改为字典等等。
4.对于特殊字符也需要根据需要进行验证,例如“数字需要计算,验证0值”,“字符长度进行限制”等。
iOS的JSON解析及用例设计
发表于:2017-08-06
作者:网络转载
来源:
 相关文章
如何使测试用例可执行? 漫谈测试成长之探索——测试用例评审 七分钟教会你如何编写一个合格的测试用例 软件测试技术之测试用例场景法的3个例子 测试用例基础:接口测试流程及用例设计 软件测试人员一定要会的用例设计思路- 周排行
- 月排行
-   测试用例之支付功能测试点整理
-   相机测试用例:手机、相机和摄像头测...
-   阿里巴巴B2B测试用例编写规范
-   我所理解的测试策略——功能用例设计策略
-   如果让你来测试扫码支付,你会考虑哪...
-   软件测试用例设计的基础概述
-   用单例的方法实现夜间模式
-   相机测试用例:手机、相机和摄像头测...
-   测试用例之支付功能测试点整理
-   浅谈测试用例分级
-   嵌入式软件测试方法、案例与模板详解...
-   系统测试用例设计思路/模型
-   史上最详细的测试用例设计方法讲解
-   测试流程 - 关于用例评审,给你的 9 点建议