奇葩bug带来的测试经验
1、死锁——使用脚本聚合数据库数据并将聚合结果写入另外一张表中。因数据库数据插入id非从小到大的形式,导致脚本跑过之后,不会再跑小于已执行id的数据。测试需要注意的:数据库源数据的存入顺序与脚本逻辑的健壮性。
2、移动端串号——客户端无法获取用户设备id(应用没有获得手机的deviceid授权),采用代码规定的默认设备id登录时出现的问题。测试需要注意的:需要用到移动端授权时,需对是否获得授权进行测试。
3、服务器多token存储——多台服务器都存储了token,在一些页面操作时需要刷新token,但只有其中一台服务器的被刷新,请求的时候请求了未被刷新的服务器,导致登录态失效。测试需要注意的:从目标测试页,返回到其他页,登录状态是否正常。
4、客户端多token存储——客户端存储了有效token和失效token,在向服务端发起请求的时候,无法保证携带token的唯一性和有效性导致的问题。测试需要注意的:请求头中token携带的完整性和正确性。
5、数据格式错误:服务端返回的数据在客户端无法解析并使用,提示数据格式错误。测试需要注意的:关注接口数据格式移动端是否可正常使用。
6、第三方数据存储——与第三方合作项目,信息展示相反。测试需要注意的:与第三方合作不能放过任何一个数据一致性的确认。
7、时间戳的局限性:后台配置用户的某些功能的时间格式使用整型存储的时间戳且超过最大值,代码逻辑判断异常。测试需注意的:如需要使用超过整型最大值的时间值,可提议开发不要使用时间戳类型。
8、vip页面新增钻石兑换按钮,点击后在当前页打开h5商城页,在饰品购买框中点击充值无法外跳浏览器打开充值h5页面认为app中以h5形式嵌入的页面,存在新老webview事件定义方式不一致的情况,需要关注app内不同webview下的兼容性。
9、闪退问题汇总:a.接口数据格式与移动端不符;b.重新请求页面的时候,点击未摧毁的老数据;c.动画效果或透明效果在某些版本不兼容;d.资源过大导致的内存泄漏;e.客户端做过多页面元素的处理导致的内存泄漏;
10.app内嵌webview的缓存问题:当app使用内嵌webview时,如果多个场景都要用到登录态(如steam登录态),而多个场景登录态有效性所依赖的数据又不太一样时,可能会由于浏览器缓存导致场景a的登录态只能部分覆盖场景b的登录态,导致场景b的登录态信息无法重新获取但又不生效。
11.订单计费问题:在考虑订单扣费问题时,需要所有订单生成因素考虑进去(包括选取一个机器人进行的多件饰品取回、选取多个机器人的多件相同饰品取回、选取多个机器人的多件不同饰品取回、选取一个机器人的1件饰品取回),否则容易出现订单扣费错误。
12.问题的产生可能并不在上一步,而是在上很多步。任何变化因素都有可能导致bug的产生,因此用例设计需要考虑的可能远远超过你所能想到的。
13.redis缓存同样需要测试,否则容易导致即时数据正确,但缓存错误导致的错误的发生。
14.视频直播流地址存在时间戳参数时,具有时效性,需要不断更新解析,否则会出现无法播放的情况。
15.对于数据库的增删改查的测试不应只停留在操作本身,有时候需要将原始数据的生成考虑进去,比如基于某一个原始数据的改操作,如果原始数据本来是没有的,是否还能修改成功?
16.如果一个产品的业务逻辑在设计上有漏洞,被用户利用,是一件很恐怖的事情。比如一些猜测类的业务,如果猜测动作可以发生在猜测结果展示之后,就会成为一个漏洞。
17.存在app内嵌入的h5页面有实时刷新的动态信息时,要注意切换到app后台或锁屏后再次唤起后,页面实时信息是否还能继续正常刷新展示。
18.中断app使用流程的不止有应用页面上的各种按钮,还有杀死app。
19.对于组合数据,需要确认各个被组合元素是否存在为空的情况,如果存在为空的情况需要确认为空的数据是否会给前端带来意想不到的错误。
20.随机数可大可小,需要注意随机数范围和应用场景。一些用户身份校验机制中经常需要带随机数来加密和解密,如果加密的随机数超过解密的范围,就会出现信息落库不正确异常。也有随机数用来表示一些数量时,就需要加一些控制逻辑,而不是完全意义的随机(一会大一会小)就可能闹出笑话。
21.用例也需要测试和修复bug如最近整理和归纳出的:用例设计容易缺失的 交互部分、手机按钮操作、操作结果提示、非第一次(包括前端或后端常驻进程)、接口测试用例、并发请求、网络、某一种权限被限制后不影响其他权限使用、不同的操作对象(数据)、不同权限的操作者、不同登录状态、界面元素的不同边界、多用户在同一场景的互动、状态切换后的操作(场景)、确认前后端逻辑触发时机。
22.非自己测试的vip周返利项目中,仅通过mock领取按钮是否可点的参数为是,点击按钮对未实际产生预测流水的用户,是否可以领取成功,发现领取接口未做任务状态的再次校验,导致只要通过mock可以每人每周至少可以领取90+210+400+650四挡任务总计1350钻石的漏洞。