• 2
  • 4
分享
  • 京东面试题:如何测试优惠券功能?——软件测试圈
  • 曼倩诙谐 2022-11-10 10:35:58 字数 2223 阅读 6711 收藏 4

  免费的性能测试框架搭建课程快来领啊,成功提交问卷后还有精选好课任你挑选,数量有限,先填先得~链接:http://vote.51testing.com/


  早些时候,京东家电出了一个事故。

  部分用户在领取京东的无门槛优惠券之后,可以用极低的价格(几十块几块甚至0元)购买数百元的小家电,主要是烤箱及微波炉类产品。

  吸引了不少羊毛党,前来薅羊毛。

  传闻在极短的时间里,出现了24万笔低价订单,涉及商品金额数千万。

  关于此次事故,引发了圈子的热烈探讨。

1-1.jpg

  影响面无疑是巨大的,甚至有传闻说,小家电组全部开除!但其实传言难辨真假,我们作为吃瓜群众,并非内部人士,也不清楚后续的处理情况。

  假如抛开一切,单从测试的视角来看:测试是保证质量的最后一环,发生这么严重的线上事故,也是难辞其咎。在测试环节,设计测试用例的时候,考虑到会存在这样的风险了么?

  正文来了

  那么,问题来了,测试优惠券的时候,我们需要考虑哪些方面?

  先来了解一下优惠券的生命周期:

1-2.jpg

  优惠券的生命周期主要包括制券、领券、核销三个环节,缺一不可。

  在这三个环节当中,作为测试人员,都需要对里面的各个环节进行测试。

  一、制券环节

  制券环节,一般会有一个优惠券的后台,在后台中需要配置一张优惠券,并且把优惠券绑定到相应的活动或者相应的商品上去。

1-3.jpg

  在测试的时候,我们首先要搞清楚,我们将要配置的优惠券是什么类型的优惠券:优惠券是代金券还是物品券,是有门槛的优惠券还是无门槛的优惠券。

  文章开头提到的优惠券的事故,就是出在配置无门槛的优惠券没有考虑券池的容量,才导致了那么多羊毛党能够疯抢家电。

  其次,券信息也是我们主要考虑的测试点,包括金额的设置、领券的条件、兑换的条件、用户限制、时效配置以及细化到活动规则的文案等等,都应该考虑到。

  这里尤其是要说的是,我们在测试功能没问题后,一定要模拟上线预演,也就是一定要在测试环境或预发布环境中,严格按照上线标准,配置出真实且可供回归测试的优惠券。

  之前就碰到过,测试环境为了方便测试,活动规则都是随意配置的。

  但是由于运营同学的粗心,活动规则里面有好几个错别字,在测试环境中,又没有真正的进行配置预演,上线之后就被带上线了。

  当时因为还没有优惠券平台,活动规则都是直接写死在代码里的,导致又得改完错别字,重新上一次线。

  这种问题虽然谈不上什么功能bug,但是上线之后,被用户看到,也会被吐槽的。

  二、领券环节

  领券环节,用户一般会活动、积分兑换、短信/push及触发一些事件弹窗,来获得优惠券。

  至少30%的bug会出现在此处。

1-4.jpg

  大家都知道,优惠券是运营为了激励用户进行下单的一种营销手段。不同的用户,能够领取的优惠券也未必相同。

  测试的时候,应该多配备几种不同角色的账号进行测试。

  版本控制也十分重要,假如你的优惠券是在老版本app上领取的,但是你必须下载最新的app,才能核销掉这张app,那在领券的时候,应该对此进行说明。

  另外一个关注点是状态同步,当你领完优惠券之后,并不是领完就完了,你还需要到“我的优惠券”里面,看看是不是真的已经领取到优惠券了。

  曾经就有过,领取完了优惠券之后,MQ同步出现了问题,虽然看到“领取成功”了,但是在“我的优惠券”却没能看到优惠券,这种情况要是出现在线上,可是百分百会遭致投诉的。

  于此同时,优惠券的信息、领券次数和反作弊策略等,也都是我们必须要关注到的。

  三、核销环节

  核销环节是重中之重,假如这个环节出问题,前面2个环节做得再怎么优秀,都没有用。

  一般来说有核销有两种情况:

  1、代金券,在支付页选择优惠券,并且在结算页,能够查看价格优惠扣减。

  2、物品券,一般直接可以在“我的优惠券”页面,直接进行相应的兑换。

  现在市面上见得最多的,还是代金券,大家经常逛电商或外卖平台,肯定都接触得比较多了,这里就不提了。

1-5.jpg

  相反,物品券的兑换,还是见的比较少的,但不排除没有。

  像物品券的兑换,有一些坑是值得大家注意的:

  1.优惠券和礼品是一对一的关系。

  2.需要先有礼品,再上优惠券。

  3.优惠券一定是要有数量限制的,并且结合礼品的数量进行考虑。

  之前听朋友提起,他就是因为一个特别低级的bug流露线上,组内case study了。

  原因是物品券,没有优惠券的数量限制!

  当时这个优惠券的逻辑是这样婶的:

  不限用户,也就是新老用户都可以领取,只要到首页,点击广告弹窗,留下手机号,就可以拿到优惠券,优惠券是2000元京东券。

  没有设置券池大小。

  凭借数据库一段时间内的订单号,判定是否有兑奖资格。

  第2点,没有设置券池大小,当时产品估计也没有想到这点,需求文档并没有体现,开发也没有做这个限制。

  然后测试就糊里糊涂的开始测试了,项目紧急,测试完毕之后,就匆匆忙忙上线了。后面一看数据,领券的用户数量特别庞大,才醒悟过来,奖池会不会亏空,万一礼品数量不够,短期之内能不能补充上礼品。

  后来好在,客单价实在是太高了,还是是买房才送的京东券!万一这种低级失误放在京东或者淘宝这种客单价相对来说比较低的电商平台,那得损失多严重!

  所以,无门槛的优惠券和物品类的优惠券,务必要考虑优惠券的数量限制!



作者:程序员臻叔    

来源:http://www.51testing.com/html/85/n-4477485.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •        为什么要开展软件测试工作       因为没有经过测试的软件很难在发布之前知道该软件的质量,就好比ISO质量认证一样,测试同样也需要质量的保证,这个时候就需要在团队中开展软件测试的工作。在测试的过程发现软件中存在的问题,及时让开发人员得知并修改问题,在即将发布时,从测试报告中得出软件的质量情况。以往从事过哪些工作?最擅长部分是?       我曾经做过web测试,后台测试,客户端软件,其中包括功能测试,性能测试,用户体验测试。最擅长的是功能测试  &n...
            12 13 3090
            分享
          •   第一部分:复用思想概述  在工作中,你有没有过这种感觉 ,某个功能用例之前设计过或者类似的工作之前干过。  再次干还需要重新设计,所以感觉有一种浪费时间或者没有意义的感觉。  本文希望提供一种策略和原则,指出测试工作的中的‘道’,让我们找到工作中的解决方案即‘复用思想’,那么何为复用?  复用是一种软件开发原则,它鼓励使用现有的资源来构建新的软件系统或其组件。这种思想基于一个简单的观察:许多软件问题和需求在不同的项目和上下文中是相似的,因此可以利用已有的解决方案,而不是从头开始。  比如深入现代软件开发中,库和框架的广泛使用是复用思想的一个明显例子,如Java的Spring框架或Pytho...
            0 0 496
            分享
          •   某系统的批量程序和联机程序同时发起交易、操作数据库同一张表时,出现了交易间相互影响导致交易失败。  分析原因为事务A对数据库表操作全表删除时,数据库机制会自动触发产生排他行锁,当行锁数达到“升级到表锁前允许的最大行锁数”时,会自动升级为表锁。但因事务B已对数据库表产生了排他行锁,则事务A自动升级表锁失败。直至事务A消耗掉了数据库“最大锁资源数”,系统会报错“锁资源耗尽”、交易失败。  因此,设计程序时,如涉及多事务操作数据库同一张表,需考虑事务间的关联影响,是否会引发事务冲突。  下文将详细描述和分析该问题。  1 数据库锁  首先介绍一下数据库锁的相关概念。  1.1 行锁、页锁和表锁 ...
            14 14 1667
            分享
          •   大家好,今天给大家分享一个写代码的设计模式,就是我们最最耳熟能详的单例设计模式。  可能很多人都听说过这个单例设计模式了,甚至都写的贼溜,但是今天给大家说说用这个这个单例设计模式,咱们是怎么把代码的性能大幅度提升的,单例模式跟代码性能的关系,恐怕很多兄弟还没认真研究过呢!  一次请求执行流程  首先我们先来看看什么叫做单例模式,要理解单例模式,我们就得先说说不用单例模式的时候,我们平时创建对象是怎么弄的。  平时创建对象这个简单吧,比如我们搞一个对外的web接口,然后再接口收到一个请求的时候,就创建一个对象。  这个伪代码如下:  @RestController("/user&q...
            0 0 1045
            分享
          • 一、手动修改hosts文件的方法:Windows:hosts文件目录位于 C:\Windows\System32\drivers\etc,默认没有权限修改,需要手动修改权限后才能保存生效。步骤如下:1. 选中hosts文件,右键选择点击【属性】,2. 默认勾选了【只读】,取消勾选;3. 切换到【安全】选项卡,点击【编辑】;4. 在hosts 的权限窗口选中正在使用的组或用户名,勾选允许【修改】和【写入】,点击【应用】;5. 以记事本格式打开hosts文件,输入ip 地址和域名(之间加一个空格)保存即可。6. 打开浏览器设置,清空浏览器缓存,即可访问。Mac和Linux:默认在 /etc/hos...
            0 0 8873
            分享
      • 51testing软件测试圈微信