测试基础 那些年抓过的 “BUG”,你见过几只?

中通科技测试 for 上海中通吉网络技术有限公司 · 2021年09月06日 · 最后由 ws 回复于 2022年06月07日 · 2977 次阅读

Bug 真是个神奇的 “物种”
它既能提升一个人的成就感
也能引发一场战争
有一批人兢兢业业,日日与 Bug 纠缠
有那么几个 Bug,矫健灵活,大隐于市……

各位看官,夏日安好,很开心能在这里与您相见。小编是来自快递行业的一名软件测试从业者。熟悉这行的看官都知道软件测试者的日常工作主要就是抓 Bug,确认 Bug 被肢解(现场很过瘾,一点都不残忍),最后清扫一遍 Bug 老巢。

软件测试人最大的成就感莫过于:发现了一个极其狡猾隐蔽的 Bug 界泰斗;最难过打脸的时刻无非是:Bug 逃出测试人的结界,跑到线上作威作福。一般来说,工作上遇到的 Bug 大部分都是普通的 “毛贼”,一个测试用例就能抓住。Bug 界也遵循二八定律,20% 的时间就能抓住 80% 的 Bug,剩下 80% 的时间都用来寻找那隐蔽的 20%。

说了老半天的 Bug,还没有说明 Bug 的定义和类型呢。我们一般用 Bug 来代指软件缺陷。

软件缺陷的概念

错误 Error:人类会犯错误,很接近的一个同义词是过错(mistake).人们在编写代码时会出现过错,我们把这种过错称为 bug.错误可能会扩散,需求错误在设计期间有可能被放大,在编写代码时还会进一步扩大。

缺陷 fault:缺陷是错误的结果。更确切地说缺陷是错误的表现,表现的模式有:叙述性的文字,数据流图,层次结构图,源代码等。缺陷又分为过错缺陷和遗漏缺陷(考虑不全面)

失效 Failure:缺陷执行时发生失效。有两点需要解释:一是失效只出现在可执行的表现中,通常是源代码,或更确切地说是被装载的目标代码;二是这种定义只与过错缺陷有关。

一般情况下 Error,Fault,Fauilre 都可以统称为 Defect 或 Bug。文章中都用 Bug 来代表。

而缺陷类型呢,有这么几种

  1. 没有实现产品产品规格说明书要求的;

  2. 实现了产品产品规格说明书不要求的;

  3. 实现了产品规格说明书没有提到的;

  4. 没有实现产品规格说明书没有提到但是需要的;

  5. 难以理解的,不易用的,性能慢的,或者测试人员觉得终端用户会认为不正确的。

关于第四,五点,您没看错,这种在测试人员眼中也是缺陷哟。

工作多年,熬到头发稀少,游泳圈是老友,与无数 Bug 过招,如果还没有一点点套路,确实需要被大声耻笑。今天兴起,翻看近两年的 Bug 家族分类排行榜,发现了几个比较偶然发现的 Bug,特与君分享。

为了方便看官理解,我先给大家简单介绍一下快递的基本流程。以下是一个快件的生命周期(也就是包裹)。

从用户的角度看: 下单(各大电商平台,APP),等待,收到包裹;如果是需要亲自寄件的场景,也就是:联系寄件(打电话或者小程序、网站下单),把包裹给快递小哥,确认对方是否收到包裹。

从快递服务提供者的角度,涉及的角色比较多,关键流程节点如上图所示:有揽收,分装,转运,派件,签收。每个环节都有很多软件系统在支持业务的正常运转。而其中最重要的一个角色,也是用户和快递服务公司之间的媒介,当之无愧的就是业务员,俗称快递小哥。

今天给大家介绍的 Bug 都来自快递小哥必备 APP:ZZT。

当当当, 第一个幻影 Bug 登场

发现它的经过有些曲折,曲折中饱含着感情,感情中又带有一丝丝玄幻的色彩……

还记得那是一个风和日丽的夏日中午,因为办公楼周围没有树所以也并听不到什么蝉鸣,流火的八月,外面骄阳似火,里面清凉舒爽。

测试 A 君刚吃完中饭准备惬意的休息一会儿,突然听到 B 君一声比一声高的声音,看了下原来是在打电话,A 君手势提醒了一下,B 君会意,匆匆挂了电话。

A 君:你干嘛呢,声音怎么越来越大,可能会影响别人休息。

B 君:不好意思,我在和我爸打电话呢,最近忙跟他联系少了,他想我了,就给我打电话了,可是我爸那边有点吵,他听不到。

A 君:那你给他发微信啊。

B 君:我也想啊,可是我爸不会打字,只会电话或者看视频。

A 君:这还不简单,不会打字,还不会手写么,给你出个主意:给你爸爸寄一份礼物,而且把寄礼物的过程录制下来,发给你爸爸看,里面要包含你手写你家地址的过程,一举两得呢。

B 君眼睛一亮说:还是你聪明啊,谢啦!

说干就干,B 君马上打开自己每日用的掌中通 APP,开始录单,录制视频。A 君也过来凑热闹。

突然

A 君:这怎么字是重复的?A 君指了指屏幕上寄件人地址那个位置。

B 君看过去,发现显示:上上海海市

A:你是不是 “帕金森” 犯了,多抖出了两个字?

B:你才帕金森呢,不可能,我是手写的,不可能两次写同一个字没知觉。感觉就是我输入下一个字,上一个字自动重复了一遍。

A:再试试

B 就删除信息再次手写上海市,还是如此

A:我试试

……

AB 两君不断的输入不同内容、换手机型号、换 app 不同版本、换 IOS 及 Android 客户端、更换不同输入法,一系列完(fan)美(suo)的操作后最终确定:Android 系统仅手写模式下当前正在做的版本会出现此问题,其余都没有问题。

AB 两君仔细对照了下本迭代的需求,想找出产生这个问题的原因,最终却只有感叹一句:母鸡呀!没有改这里啊

B 君带着问题去找了开发 C 君,描述完问题,C 君也表示一头雾水,态度异常坚定的表示没改输入这一块,在测试 B 君的 “纠缠” 下,仔细看了代码后发现这次代码改了打印时的限制字符。看上去只有这个改动最可能导致问题了,开发帅哥哥们迅速改正,B 君验证时候,果然此问题被修复了。

这是什么鬼,改了打印时候的限制字符竟然影响到了手写输入?!这以后的回归范围还能不能缩小了?此处无声哭泣…

温馨提示: Bug 小朋友是很调皮的,可能隐藏在我们开发大神们写的每一个段落中与我们斗智斗勇,他在不起眼的角落不经意的时候凭着千丝万缕的关系随时跑出来给我们几个飞毛腿,然而我们要做的就是采用各种常规及非常规操作,正常及反人类的思维来把他们找出来,送他们登上极乐~~他们登上极乐了,我们才能真的快乐!

通过第一个 Bug 大家是不是被勾起了一些兴趣呢,那紧跟着第二个 “逗你玩” Bug 登场。

快递小哥呼声很高的不撕底单签收终于被我们做好了,提测后迫不及待的想测试一下功能性和实用性如何,测试 A 君做了一个不撕底单签收,给小伙伴炫耀说,快在你们的底单查询里查下这个单子,看看我的签名,艺术签哦~~

B 君:我也来签一个,让你们见识见识我 “当代王羲之” 的书法

C 君笑说:让我 “自学成才颜真卿” 来看下你俩的书法是什么样的,刚好验证下底单查询。

B 君:你赶紧去开眼吧,我的墨宝可不是什么人轻易都能见着的,还是电子版的。

C 君一顿操作后:哈哈哈,果然不是随意见着的,查询出来为空白,是你的书法羞于见人还是我不配?

此处伤害性不大,但侮辱性极强。

玩笑中大家敏锐的感觉到这里可能有 Bug 了,就都搜了一下 B 君的底单,发现有的人可以正常查询并显示,有的人仅能查询出空白底单,汇总后发现 Android 客户端都可以查到这个底单,而 IOS 客户端无法查询。

而使用 IOS 客户端查询 IOS 登记底单的可以查询到,用 Android 客户端查 IOS 登记的底单也可以查询到,就是 Android 登记的不撕底单签收 IOS 客户端查询显示空白。

迅速找到开发小伙伴一起查找原因,在这个过程中 B 君通过抓包把客户端的入参图片文件拷出来使用浏览器访问,发现可以正常访问。

大家开始怀疑是不是文件存储过程产生了问题,不然为啥通过抓包抓到的 Android 和 IOS 客户端传的图片通过浏览器都可正常访问?

在有了这个大胆的猜想之后感觉真相就快要呼之欲出了,差点当场就把自己给说服了。

很快文件存储那边的开发同学一盆凉水泼了过来,文件存储没有任何问题。

得到这个答案后看似好像已经要拨云见日的局面再次不明朗了起来,只能再次埋头苦查,再深入查找后发现 Android 客户端使用了 webp,Android 和浏览器都支持这个格式,仅 IOS 不支持。

看来真相只有一个,那就是图片格式的问题。对于此问题服务端对客户端传的图片统一做了格式转换的处理。验证后发现问题完美的解决了。

看,又是一个小调皮吧~~

友情提醒: 此类型的问题在涉及到图片或者不同类型文件传输时应该会频发,大家在测试或者开发过程中,可以考虑到此点,能省掉很多不必要的麻烦哦~~~

看到这里是不是感觉还不太过瘾呢,那第三个 Bug 隆重登场。

ZZT App 新做了一个蓝光捐步的功能,背景是我们广大的快递小哥每天都很辛苦,“飞来飞去” 的取件送件,一天几万步小 Case,如果能用这些来做公益,那真的是极好的,传递爱心的同时也增加工作中的趣味感和成就感,所以蓝光捐步粉墨登场~~~

怀着一颗感恩的心,测试 A 君欢快的迈动着他的大(xiao)长 (duan) 腿,测试捐步功能,摩擦摩擦,快乐的步伐,摩擦的过于欢快,当天测试完成时多了 100 步没有捐,想留着看第二天在未产生任何新步数的情况下待捐步数。

第二天一到公司,A 君就迫不及待打开手机查看,在大家毫无防备的情况下突然就听到了他的仰天长啸:果然有问题!!!

大家过去一看,发现待捐步数显示:-100

开发此功能的同学虎躯一震,迅速的从长啸的余威中清醒过来打开代码,在 A 君的大(xiao)长 (duan) 腿摩擦到他面前时已经定位到了代码问题行,深情的看着 A 君说:别说,我懂!

两个人携手在电脑前,通过代码发现:逻辑写错了,应该是 0 点对昨天数据清零,捐步时,正确算法应该是:如果今天已捐过再次捐时要减去上一次已捐的步数,而这里是直接减去之前的数据,导致出现负数。

B 君迅速改好代码,向 A 君发起邀请:代码已经改好,再次摩擦可好?

怎么样?这个 Bug 是不是没想到呢,任你虐他千百遍,他总待你如初恋,就躲在暗夜里偷袭你~~~

各位看官,有没有看过瘾呢?今天就先分享到这里,如果想了解更多 Bug,敬请期待下期哟。

更多详情可加微信 :

共收到 3 条回复 时间 点赞

好有才

愿称你为大侠

大侠好文采

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册