专栏首页搜狗测试【总结】ios端被忽略的文件容错测试

【总结】ios端被忽略的文件容错测试

前言

容错性测试是主要检查系统的容错能力,检查软件在异常条件下自身是否具有防护性的措施或者某种灾难性恢复的手段。容错测试的类型有很多,常见的有接口容错测试、数据边界值测试、数据库容错测试、并发容错测试、文件容错测试等。 一般在安卓系统中,以上内容都会在测试过程中考虑到,由于苹果手机系统相对封闭,与安卓相比来说,病毒少,底层数据被恶意删除或修改的几率少,所以从自我意识上对于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)文件中的字段对应的内容路径不存在

欢迎添加我们的搜狗测试微信号,与我们一起聊聊测试。

本文分享自微信公众号 - 搜狗测试(SogouQA)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 微服务测试策略制定

    微服务架构是近些年来比较流行的一种架构模式,它提倡将单一应用程序划分成一组小的服务,每个服务运行在其独立的进程中,服务间采用轻量级通信机制互相沟通。每个服务都围...

    用户5521279
  • 接口测试&管理续集

    上期给大家介绍了app端接口关于请求层面的用例设计方法,收到了小伙伴们的关注和支持,今天应大家需要,接着谈app端数据返回层面的用例设计方法。第二部分给大家安利...

    用户5521279
  • 用例覆盖度不高怎么办?我来这么想

    1、子功能 子功能是指将一个较大的功能,拆分为N个小功能,例如简单的登录/注册功能,可以拆分为登录功能和注册功能。 2、检查点 检查点是指每一个子功能或者...

    用户5521279
  • Wins批处理基本语法

    在Windows平台下,批处理可以和Wins系统很好地结合,处理一些简单的任务,比如:重复删除某种类型的文件;开机执行一些特定的命令等。 本文主要介绍批处理的基...

    陈树义
  • Linux部分常用命令学习记录

    ls -a 显示所有档案及目录(ls内定将档案名或目录名称为“.”的视为影藏,不会列出);

    天钧
  • 你真的了解Linux系统吗?

    现在很多公司项目部署都使用的是 Linux 服务器,互联网公司更是如此。对于大一些的互联网公司,系统可能会非常复杂,本地无法启动,一般都会采用专门的开发机给开发...

    谭庆波
  • Android文件各种存储路径的比较

    应用内部存储空间(数据文件私有)文件存储到这个路径下,不需要申请权限,当应用被卸载的时候,目录下的文件会被删除。 需要注意的是,这个文件的目录和应用的存储位...

    用户3030674
  • 必看 | Centos7学习笔记-常用命令写的好详细,一看就用心了!

    CentOS7服务器,默认网卡名为ifcfg-eno16777736,如果我们想改成ifcfg-eth0,使用如下步骤即可:

    网络技术联盟站
  • Linux 第一天

    /Lost+found 这个目录平时是空的, 系统非正常关机而留下“无家可归”的文件

    A2Data
  • 一.Linux基础

    末行模式主要用于保存或退出文件,以及设置Vim编辑器的工作环境,还可以让用户执行外部的Linux命令或跳转到所编写文档的特定行数。要想切换到末行模式,在命令模式...

    对弈

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动