前言
容错性测试是主要检查系统的容错能力,检查软件在异常条件下自身是否具有防护性的措施或者某种灾难性恢复的手段。容错测试的类型有很多,常见的有接口容错测试、数据边界值测试、数据库容错测试、并发容错测试、文件容错测试等。
一般在安卓系统中,以上内容都会在测试过程中考虑到,由于苹果手机系统相对封闭,与安卓相比来说,病毒少,底层数据被恶意删除或修改的几率少,所以从自我意识上对于ios端的文件容错性测试关注点就比较弱,最终导致一次严重上线问题。
问题现象
1. 点击表情键盘的“颜文字icon”后崩溃
2. 点击App中的“表情tab”崩溃
问题原因
本次版本中由于新增功能,所以修改了本地config.plist文件的格式,在修改config.plist格式的同时又用到了newInfo.plist文件,但是由于历史原因部分用户newInfo.plist文件丢失,客户端未进行相关容错保护,所以出现以上问题
思考总结
虽然ios端有沙盒机制,底层数据一般不会被恶意删除或修改,但是依然存在文件丢失问题,所以iOS端也需要针对本地文件进行容错、边界值测试。那如何进行相关测试呢?
1.了解ios的文件存储方式
iOS沙盒机制
应用程序只能在该程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等
1)每个应用程序都有自己的存储空间
2)应用程序不能翻过自己的围墙去访问别的存储空间的内容
3)应用程序请求的数据都要通过权限检测,假如不符合条件的话,不会被放行。通过这张图只能从表层上理解sandbox是一种安全体系,应用程序的所有操作都要通过这个体系来执行,其中核心内容是:sandbox对应用程序执行各种操作的权限限制
iphone沙盒模型的有四个文件夹:分别是 documents,Library,tmp,app包。手动保存的文件在documents文件里,NSUserdefaults保存的文件在tmp文件夹里。
1) Documents 目录:一般需要持久的数据都放在此目录中,可以在当中添加子文件夹,iTunes备份和恢复的时候,会包括此目录。您应该将所有的应用程序数据文件写入到这个目录下。这个目录用于存储用户数据或其它应该定期备份的信息。
2) Library 目录:这个目录下有两个子目录:Caches 和 Preferences
Preferences 目录:包含应用程序的偏好设置文件。您不应该直接创建偏好设置文件,而是应该使用NSUserDefaults类来取得和设置应用程序的偏好.
Caches 目录:用于存放应用程序专用的支持文件,保存应用程序再次启动过程中需要的信息。
3) Tmp 目录:这个目录用于存放临时文件,当iOS设备重启时,文件会被自动清除。
4) AppName.app 目录:这是应用程序的程序包目录,包含应用程序的本身。由于应用程序必须经过签名,所以您在运行时不能对这个目录中的内容进行修改,否则可能会使应用程序无法启动。
2.确认哪些文件需要进行容错测试?
不同的App本地存储文件的个数、属性都不同,如果所有的文件都要手动进行容错测试,成本与收益可能不成正比,除非通过白盒测试、自动化容错测试等手段来进行避免。那么在以上测试条件不满足时,如何进行精准测试呢?
通过该bug分析发现,出现问题是因为config.plist文件格式发生了变化,所以需要针对特殊测试场景进行考虑:
1)当本地文件格式发生变化时,一定要进行相关文件的容错测试
2)当某文件为App通用文件(比如配置文件),需要重点进行容错测试
3)当文件目录用户容易修改时,需要进行容错关注
3.文件容错测试检查内容
文件或文件夹的检查
1)文件或文件夹不存在
2)文件或文件名称与预期不符
3)文件或文件夹损坏文件内容的检查
1)文件内容为空
2)文件中的字段被删除
3)文件中的字段类型错误
4)文件中的字段值超出最大值
5)文件中的字段值超出最大长度
6)文件中的字段对应的内容路径不存在
欢迎添加我们的搜狗测试微信号,与我们一起聊聊测试。