1.  起因

前两天我公布了一个京东微信端截取到的三张图。并简单阐述了这三张图中的bug发现过程:

有朋友的评价是图中这种,可实际上。他应该是没有看出来这个bug代表的内容有多少。今天心血来潮决定具体写一下。展现一下老程序猿的酸腐气质!

2.  过程详述

京东微信端能够签到获取金币,每天一次一个金币,结果没有不论什么提醒,签到积累30金币的时候就不能签到了,我一直不知道怎么回事。

这一天决定兑换一下这种100-10的券。由于提示是早上9点開始,此前9点多点击。都没有抢到,我仅仅是认为奇怪。

今天我仍然在9点多进行了点击兑换,系统提演示样例如以下图所看到的:

系统告诉我兑换优惠券须要花费10金币,我点击马上兑换。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

结果系统显示说,手速太慢。券已经被抢光了哦!

明天记得早点来抢哦!

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

但是我明明记得抢光了应该是灰色的。而这时候是红色的。

注意。不是上面已领取得券。而是金币30下方的券。

10点多。意外过来看了一眼,点了一下,竟然兑换成功了,我连点了两次,结果扣了我20金币,系统告知仅仅能抢一张,我没有太注意,也忘记截图了。

下午最终看到系统表示券已经被抢完了。截了张图例如以下。

这里才是抢光的结果。这时候,我看了一眼100-10的券。确实仅仅有一张。晚上又看了一次,发现变成两张了,具体这里就先不分析这个问题了。由于要分析,我须要积累超过20金币以后才干进行这项測试。

以下我们来分析一下为什么会发生上面的情况,或者说。什么情况下会发生上面的情况。

3.  分析

以下逐项进行相关bug的分析描写叙述。

3.1          实际兑换时间与界面提示兑换时间不同

实际能够兑换的时间是10点,而界面提示是9点。

从这个现象能够看到例如以下问题:

1,         京东的測试团队是分离的

业务逻辑測试团队和界面測试团队应该不是同一个人或者同一组人。

这在互联网软件測试中是有问题的。当然也可能就是同一个人,这个人太过于粗心了。只是,从常理来看一般不至于犯这种错误。

2。         代码层面上界面推送和逻辑推断没有同步

这个问题非常严重,常规来说应该有两种实现方式:

一种是懂一些技术的业务人员进行后台设定和前台页面改动,当然,最大的可能是一開始就考虑是9点。结果一个需求变更认为是10点,而开发者忘记对页面进行改动。測试由于是两批人在做。也没有完毕同步。

或者说,京东研发測试团队的需求跟踪做得不到位,需求变更发生后没有对全部涉及到该需求的点进行全面检视。

还有一种是通过后台逻辑代码进行业务实现的设定和界面设定。

这种方式应该是最好的方式。也最easy避免这类问题。但,非常明显京东没有这样做,可能是人力不足。也可能是仓促上线。但是上线已经半年的系统还是这样。就有点奇怪了。

Btw:我仅仅能说京东的开发团队问题实在不是一般得多,大家可能会说,我靠打击京东来宣传自己,抱歉。假设这样说,我四年前给几个大学做的演讲中对腾讯的批评很多其它,当中涉及到腾讯游戏内部的非常多管理问题和开发问题的推演分析结果,这些结果都是得到了腾讯游戏集团级专家人员的承认。

3.2          提示信息与逻辑不符

明显应该是灰色的时候才应该提示:手速太慢,券已经被抢光了哦!明天记得早点来抢哦!

却在早上9点还没有開始抢的时候做出了这种提示。

这里能看出来,京东研发中的任意性,提示是默认设定的,而不是与逻辑关联的。

或者说,提示仅仅是前端的推送和后台业务全然无关。

这种设定会使得推送的结果由于前端程序猿的偷懒或者疏忽等问题而造成不必要的麻烦。甚至可能应该是每个页面单独写提示。而不是系统进行的统一提示告警处理模块完毕的。

对于成熟的系统。全部的异常和提示信息应该是同一模块统一完毕的。要依据不同的逻辑展现不同的提示结果,不至于让用户认为非常奇怪。

当然,这里非常有可能是为了降低前后台的交互而刻意做的提示结果,也就是我前面提到的。前端程序猿疏忽或者偷懒就进行了默认设定。结果測试人员ye没有測出来或者不负责任就直接通过上线执行了。

3.3          提示信息欠缺

金币最多30枚。超过就不能领用。一个简单的提示都没有做,更能够看到京东系统的薄弱和问题所在。

这种系统逻辑错误放在十多年前我们研发的电信行业业务系统中都是不可容忍的,京东的实际业务处理水平确实是相当得有问题。

3.4          前台提示与后台逻辑冲突后前台的错误提示

还是3.2问题的一个延续。

9点多点击,提示:兑换优惠券需花费10金币。说明这个业务逻辑没有走后台推断。

而被拒绝后,前台没有获取业务逻辑推断的提醒代码或者说没有代码。仅仅是给了一个拒绝信息,于是仅仅能提示用户:手速太慢。券已经被抢光了哦!明天记得早点来抢哦!

这说明后台逻辑的推送要么没有异常处理,要么就是前后台分离开发后,前台对后台的异常处理做了简单化地响应处理。

这在业务逻辑上是不可能被容忍的。而这种错误竟然都检查不出来,京东的測试团队的能力不是一般得弱小。

[技术讨论]关于前几天公布的京东bug上的问题分析的更多相关文章

  1. sae-v2ex 一个运行在SAE上的类似v2ex的轻型python论坛 - 技术讨论 - 云计算开发者社区 - Powered by Discuz!

    sae-v2ex 一个运行在SAE上的类似v2ex的轻型python论坛 - 技术讨论 - 云计算开发者社区 - Powered by Discuz! sae-v2ex 一个运行在SAE上的类似v2e ...

  2. VR技术在数据中心3D机房中的应用(上)

    VR技术在数据中心3D机房中的应用(上)   前两天跟朋友A吃饭,吃着吃着就说到了VR.近几年来,VR技术越来越火,感觉能跟VR沾点边的都特别高大上,朋友A也是,一提到VR,就怎么都掩盖不住他发自肺腑 ...

  3. 向PE文件植入后门代码技术讨论

    写在前面的话 这篇文章将介绍使用codecaves对PE文件植入后门代码.有几个很好的工具可以帮到你了.比如BackdoorFactory和Shelter将完成相同的工作,甚至绕过一些静态分析几个防病 ...

  4. 【技术讨论】RF环境搭建手册

    (原创文章,转载请注明出处.) 简要整理下环境搭建的步骤,以便快速.准确的搭建测试环境. 一.环境搭建 一.Python 2.7 1. 不要用Python3.6,很多库3.6中还没有,wxPython ...

  5. 技术讨论]mongodb驱动的正确使用方法

    原文地址:http://cnodejs.org/topic/5190d61263e9f8a542acd83b mongo数据库在nodejs平台有2个常用驱动,mongodb和mongoose,mon ...

  6. vue+Ueditor集成 [前后端分离项目][图片、文件上传][富文本编辑]

    后端DEMO:https://github.com/coderliguoqing/UeditorSpringboot 前端DEMO:https://github.com/coderliguoqing/ ...

  7. [ 技术人员创业Tips ] 1:抓住优质客户(上)

    写一篇技术以外的内容,可能会得罪一些人,轻拍,此外本文写的比较随意,写到哪里算哪里,轻拍. IT业不知道从什么时候起特别流行谈创业,似乎不谈创业就落伍,我不评价这种风气的好坏,只提一些自己的一些经验和 ...

  8. 分布式缓存技术redis学习(一)——redis简介以及linux上的安装

    redis简介 redis是NoSQL(No Only SQL,非关系型数据库)的一种,NoSQL是以Key-Value的形式存储数据.当前主流的分布式缓存技术有redis,memcached,ssd ...

  9. VC++大数据量绘图时无闪烁刷屏技术实现(我的理解是,在内存上作画,然后手动显示,而不再直接需要经过WM_PAINT来处理了)

    http://hantayi.blog.51cto.com/1100843/383578 引言 当我们需要在用户区显示一些图形时,先把图形在客户区画上,虽然已经画好但此时我们还无法看到,还要通过 程序 ...

随机推荐

  1. element el-cascader设置默认值

    原文:https://www.jianshu.com/p/b690d7fe6ec0 注意两点就行了 <el-form-item label="AP名称"> <el ...

  2. css3上下翻页效果

    翻页效果显示当前时间 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> &l ...

  3. NodeJS学习(1)--- 安装配置介绍

    Node.js 安装配置 本章节我们将向大家介绍在window和Linux上安装Node.js的方法. 本安装教程以Node.js v6.10.1 LTS(长期支持版本)版本为例. Node.js安装 ...

  4. 关于Delphi cxGrid主从表中从表只能编辑第一条记录的问题

    在Delphi cxGrid主从表中从表只能编辑第一条记录,这个问题是由于设置主从关联字段错误造成的. 从表DBtableView2的keyfieldnames,DetailKeyFieldNames ...

  5. 配置 L3 agent

    上一节我们介绍了路由服务(Routing)的基本功能,今天教大家如何配置. Neutron 的路由服务是由 l3 agent 提供的. 除此之外,l3 agent 通过 iptables 提供 fir ...

  6. [LeetCode] Jump Game II 贪心

    Given an array of non-negative integers, you are initially positioned at the first index of the arra ...

  7. 实现多线程sokect

    上一篇文章说到怎样写一个最简单的Java Socket通信,但是在上一篇文章中的例子有一个问题就是Server只能接受一个Client请求,当第一个Client连接后就占据了这个位置,后 续Clien ...

  8. DNS+CDN

    参考: 一起学DNS系列文章:http://jeffyyko.blog.51cto.com/28563/186026 CDN技术原理:http://kb.cnblogs.com/page/121664 ...

  9. Spring Boot学习——表单验证

    我觉得表单验证主要是用来防范小白搞乱网站和一些低级的黑客技术.Spring Boot可以使用注解 @Valid 进行表单验证.下面是一个例子. 例子说明:数据库增加一条Student记录,要求学生年龄 ...

  10. 【C/C++】知识点

    1.C++中的参数传递机制:值传递.指针传递.引用传递 2.C++的内部类和外部类: 一个讲得不错的博客,不过不让转载:C++内部类 3.static 可以修饰局部变量.全局变量和函数. 不可修饰类! ...