如何提高测试设计的覆盖面

引用的原文:https://blog.csdn.net/alice_tl/article/details/79601697

对于一些测试新人来讲,很容易存在一个误区,看懂需求,弄透彻需求,就能够用例覆盖100%了。

事实并非这样。需求固然很重要,测试用例确实主要来源于产品需求,但也应该要考虑开发的实现原理,这样才能够测试的更彻底,更全面,更精准。

结合一个工作中的实例,来源于实习生负责的一个小功能,来分析如何根据开发原理进行测试设计。

功能:在APP的首页有一个广告图片,称之为banner,实现了banner缓存的功能。

增加缓存的目的:1、避免出现无网情况进来APP,首页出现空白的情况;2、避免每次进首页都重新加载,消耗用户大量流量。

对于只关注需求的同学来讲,测试设计主要就围绕网络情况,以及广告图片是否能够显示出来就够了,会忽略里面潜在的很多风险。

开发实现原理图:

综上:会发现功能需求上虽然都是要有缓存机制,但是Android和iOS的实现是有差异的。

ios设备每次访问服务器后,不管服务器是否有新数据,都会直接下载新数据,而Android当发现服务器并无新数据时,就直接显示本地缓存了,不再下载新数据。原因是ios用户对于流量并不是特别在意,Android用户会更加在意流量。

为了测试设计的更全面,可以将整个流程划分为如下阶段:

1、客户端:即通常所说的前端。服务端,即通常所说的后端。

通常情况下,一旦一个需求,涉及到前端和后端的交互,需要获取服务器的数据时,第一反应就是,除了测试前端以外,后端是否有一个可视化的交互界面,进行数据配置。

这里是有的,因此测试用例设计和覆盖,需要覆盖到APP以及可视化的web后台网站。

当然,因为web后台网站是对内主要供运营人员使用,不需要对外用户开放的,因此只需要保证功能的准确和稳定性即可,不需要关注用户体验,以及UI的美观度如何。

 2、启动程序

一旦涉及到启动程序,首要考虑热启动、冷启动。

热启动:程序的activity已经存在,只是暂时在不活跃状态。

冷启动:程序的activity不存在,首次启动。

程序安装后首次启动,非首次启动,home键回桌面再启动分别对应的是冷启动还是热启动呢?

  • 另外如果是任何情况下的启动都会触发访问服务器,那么思考一下是否是在首页才触发?
  • 假设我是点击通知栏或者其他活动链接跳转,万一进入程序一开始呈现给用户并不是首页呢?
  • 另外如果每次启动进入首页会触发访问,那么切换tab的方式回到一级页面呢?或者是二级页面返回到页面呢?

3、联网

网络类型:wifi、手机网络、无网、弱网,是否都是同样的规则?合理吗?

当本地没缓存的时候,又没有网络的情况下,首次进入程序会怎样?不显示banner区域吗,显示banner区域但内容空白吗?有一个本地默认的图片可能是大多数APP的选择。

 4、访问服务器

后端提供了哪些接口,每个接口发送的请求参数、返回的数据类型。(就是我们所看到的后台)

后端可视化平台部署哪些内容?通常涉及图片时,肯定有图片的格式?图片的大小?banner的时间有效期?

另外后端部署了无效不合法网址?前端对于后端传的异常如何处理?后端部署的内容为空或者没有按规范来时,前端是什么表现?

5、 缓存数据比对

比对的规则是怎样的?以什么为准判断是否一致或者为最新?后台部署提交的时间戳?

 6、存至本地

缓存存储到本地时,存到什么路径?android通用的路径都是/sdcard/android/data/包名/,还可能是另外创建的目录

缓存是明文还是加密??我们测试的项目里,缓存是一个md5码,并且md5码作为唯一标识去比对。

另外每次的缓存内容是覆盖替换的,还是累加的?如果是累加的,是否会有清理机制?否则会导致程序占据大量手机存储空间。

容错处理的角度考虑的话,还要考虑缓存内容被修改了不合法或者清理工具把目录给清掉了呢,程序会异常吗?

了解这些,我们再看看,当遇到后端部署了,前端测试展示并没有更新,可以怎么定位和分析?

1、后端部署的准确吗?

2、前端APP上我的操作有时机触发刷新吗?

2、如果确实行了触发刷新的操作,但是刷新之后还是显示旧的?那么服务端返回给我的数据是不是新数据了呢?

3、服务端没有返回新数据?那是否前端的请求有问题?缺失了部分必传参数?

服务端有返回新数据?那么肯定是前端APP的问题。

原文地址:https://www.cnblogs.com/liuyanerfly/p/9474389.html