27
2017
09

测试中易出现的问题

前言
最近公司让我们iOS和Android互相测试,发现了好多简单的错误却有常常被测试出来了。这就是代码经验不足,写出的代码不够健壮。这里我统计了一些在写代码时就可以避免的错误,预先处理掉这些问题,就能很好的减少测试之后要修改的bug。

问题

  • 清单文件配置

    1. 横竖屏配置 android:screenOrientation=”portrait” 可以写在application节点也可以写在activity节点或者在代码中设置,这个配置很简单,但是对应用 的影响很大。
      1.1 activity的生命周期是会变化,
      1.2 宽高的值是对换 , 所以如果应用没做横竖屏适配最好固定横屏或竖屏。
    2. 软键盘显示配置 android:windowSoftInputMode=”stateAlwaysHidden|adjustResize”
      通用可以通过代码配置,一般影响的是客户输入的体验效果。
    3. 多进程配置 process=”:remote”
      有”:”表示私有进程,否则全局进程,对应用的影响:
      3.1 各静态变量失效;
      3.2 单例模式失效;
      3.3 application的onCreate方法多次调用;
      3.4 线程同步失效;
      3.5 SP文件可靠性失效。
  • 网络连接状态

    网络状态可以分为三种:正常,弱网,断网,
    一般应用对这三种状态都有处理,关键是好多人写代码时忽略了弱网或断的状态,一直往下写,最后测试发现各种空指针异常或界面显示异常,这些我们都可以在测试前就考虑到的尽量在写代码时就写上判断逻辑。

  • 适配问题

    1. 布局适配
      一般写代码测试数据都是比较正常的,所以很容易忽略文本过长显示不全。
      布局太宽或太高显示到屏幕外边,导致布局残缺,文本显示不全或换行显示导致布局变形。
    2. 图片适配 略
    3. SDK版本适配
      大部分公司开发的测试机有限,所以不能做到各个版本的SDK都可以适配到。这里我们可以采取开模拟器的方式进行开发,因为大多数情况sdk是向下兼容的,我们可在模拟器中设置高版本的sdk进行开发,尽量避免在客户或测试人员手里出现版本适配问题。
  • 默认值和列表排序

    这两个都是影响用户体验的,测试不严格的话其实并不会影响程序的。

  • 文本编辑框特殊符号输入支持

    这个是测试经常提出的问题,每次一输入表情提交就提示报错,而且一般都是提示服务器异常,所以经常把问题推给了后端。如果不支持表情就禁止掉表情输入,能少一事就少一事。

  • 在使用对象时之前进行null判断

  • 重复点击处理 略
  • 首次启动应用黑屏或白屏处理

    这个问题一般在启动慢的应用中出现, 由于主题是白色或黑色导致启动Application时先白屏或黑屏。我们只需把启动页的主题改成透明即可。

  • 按Home后再次进入应用处理

    按下home键之后,很长时间之后再次进入时,应用被回收很多静态变量被丢失,
    所以很容易造成空指针或没有显示数据的问题。解决办法:在application定义int
    code=-1,进入应用之后赋值为1,在activity基类中判断code的值是否重启了应用,如果code=-1,可以让应用重新从启动页进入。

  • 相对布局相互遮挡 略

  • ViewPager+Fragment这种情况onResume一般情况之后走一次

    这个问题估计很多人都遇到过并解决过,不知道的小伙伴们可以搜索“setUserVisibleHint“的使用 。

  • 高版本和低版本原生的JSONObject实现对象不一样

    其实这个属于版本适配问题,我给大家看看高低版本的源码大家就可以找出它们的区别:

    高版本:
    这里写图片描述
    低版本:
    这里写图片描述

  • DialogFragment在dissmiss时报错 略
  • 网络请求

    网络请求最普遍出现的问题就是前后端都不承认自己的代码有问题,但测试调接口有问题,这就尴尬了。作为前端开发我们应该做好的就是确认不是我们自己的问题再去找后端确认问题,抓包是一种很好的方式。我这里给大家列举几个状态码:
    500 服务器遇到错误,无法完成请求
    501 服务器不具备完成请求的功能
    503 服务器目前无法使用
    400 请求语法错误
    401/407 Token过期或者未授权
    403 服务器拒绝请求
    408 服务器等候请求超时
    413 无法处理请求,请求实体过大
    414 请求URI过长,服务器无法进行请求
    301 请求网页已被永久转移到新的位置
    304 自从上次请求后,请求的网页未被修改过(表示如果有缓存,可以使用缓存数据)

  • 代码中动态修改了布局

    每次在代码中修改布局样式,很久一段时间之后再去修改xml中的样式,结果每次运行跟xml里面的样式不一样,或者代码动态设置可点击,选中都会可能忘记。

  • Fragment添加含有参数的构造方法

    就是在创建Fragment时使用带参数的构造方法,某些情况下(横竖屏切换),当fragment依附的activity被销毁重建之后,系统会通过无参构造方法创建fragment对象,导致参数值丢失。

总结
上面都是我在开发和测试中发现的一些常见的问题,而且都是我们在开发中容易忽略,如果大家有什么好的建议或者其他问题,可以相互交流。

上一篇:Activity面试题目整理 下一篇:数组的拷贝及对象clone