需求背景:
军团业务诞生的时候承接家族群组功能,玩法邀请成员做任务->积分升级->发送奖励。还是拉收入的一个业务载体。收入才是王道。
军团服务端核心就三个:军团创建,人员管理和军团奖励。
军团创建:
创建单独拿出来说原因:需求层面这个整个军团起点,技术实现上做的事情比较多,所以单独拿出来。
技术实现:
1.用户锁:
主要防止接口并发,并发的时候只能有一个请求获取到锁,其他请求无法获取锁直接错误返回->解决接口并发常规手段,很多接口都用这套。
2.数据库事务:
主要用于书写多个表时使用,当一个动作处理失败,整个事务就会回滚到初始状态(就是写的都清除了)。mysql提供功能,常见于大接口,所以上面5个动作都需要成功才可以。
事务具体大家可以参考博客:11. 数据库事务_从池返回的连接的默认自动提交行为是什么意思-CSDN博客
3.sqs:
是一种消息形式。形式:生产者->消息队列->消费者。这个层面异步任务,主要处理不需要同步处理功能。
4.im消息:
目前im能力都是服务端用接口调用的,技术上没啥特别的。
5.写入es:
主要就是用于未成团的军团列表和军团搜索功能考虑,因为es查询功能是现成的,不需要单独在做拆词匹配。
6.写入榜单:
这个也是调用小马哥接口,legion就是传入和查询。所有源数据都在小马哥,legion层面数据关系才是这个服务功能点。
测试要点:
1.数据库事务-多表写入:
主要看下是不是写入成功了,涉及到三个表。
2.数据库事务-调用金融接口:
业务层面我们递增金币功能点,还有就是legion创建军团次数记录。
3.im消息:
legion虽然就是消息调用方。legion->IM服务->客户端展示。我们不知道调用im服务入参是否正确,我们只能走闭环,根据客户端展示看流程是否正确。
4.异步处理:
动作1:功能上我们就是验证写入es成功,简单点就是调用查询接口看下是否有返回。测试点可以关注单个词是否可以匹配,特殊字符等等
动作2:写入榜单服务。
5.军团过期:
就是job触发,比如说7天以后没有成团的就会标记过期,清除榜单,redis,ES数据。测试时候可以让研发把时间改下,数据库status一般来说没问题,但是榜单,redis,ES数据可能会有失败,多试一次,也可以让研发加下报错提醒,主要发现及时。
ps:job触发就是任务触发,服务端一般两种形式调用一种接口形式(http,rpc,sqs),另一种就是任务触发(月底工资结算,月底降级,礼物列表同步等等)
人员管理:
技术实现:
1.这个三个功能本质就是数据库增删改查。
2.数据库表设计:
legion_info_**,legion_user_**,user_legion_**,采用md5 (legionId/uid) 32位,有些是取前两位/后两位。所以一共256个表。对于数据比较多才有这种设计高效查表,减少慢查询。
3.成员邀请链路:
客户端邀请->legion服务->im服务->客户端展示->成员确认->判断大区->写入legion表.
测试角度:
1.功能角度:
服务端常规的表写入,身份/状态值更新,人员邀请判断比较大区。
2.退出删除:
这个跟军团解散基本差不多,这里不说了
3.邀请成员:
3.1 服务端角度就是看看客户端能否展示出来->调用im正确。
3.2 大区判断,写入redis缓存和legion_user,user_legion表。
4.测试工具:
就是邀请用户比较麻烦,也需要测试军团等级成员上限。
书写比较简单:odin注册接口->调用invite接口->同意邀请。
手工和工具的关系:
工具并不是比手工高级,工具尤其明显局限性,比如说调试需要时间,重复使用次数等。大家还是要考虑一下投入产出比。
对于新业务着急上线手工肯定没问题,也是主流解决方案。业务长期迭代中总会有一些适合去做工具化的,大家尝试写下,也能对于业务有自己从测试角度理解。主要还是为了自己保持竞争力。HTTP跟语言无关,通用协议很成熟了。
军团奖励:
技术实现:
1.奖励配置化:
无论是军团升级还是宝箱,本质都是累积计分->到达配置边界值->触发奖励。
2.升级判断
所有加分途径最后都会调用UpRank的接口来判断是否升级。
外部服务调用legion的UpRank接口,军团服务来做判断。
3.周期降级
无论宝箱还是军团降级都是一样job到时间出发统一操作。
测试角度:
1.校验配置文件
首先提测之前要让研发给你写好一个加分接口(自己做任务太慢了)
校验边界值是否跟需求一致。
2.上线后校验奖励
之前出现过上线奖励id配置还是测试环境问题,所以还是要线上后门走下全部流程。奖励也是核心,做了半天任务没有奖励这不是扯嘛
自动化设计:
测试环境我们有数据库,redis增删改查权限。所以用例设计要设计到关键节点校验。
产品自己理解
军团去年下半年比较大需求,上线整体效果比较一般,用户不爱从家族群组->军团。我自己想了一下原因有三点吧。
1.功能上军团和群组没有用户感知到一个提升。
2.玩法上用户基本疲劳了,无非刷礼物->军团内部用户排名->军团排名。
3.发送奖励分数比较高,用户获得奖励都是装扮军团H5页面的,在直播间展示基本分数非常高,没有感官的刺激感。
我不是专业娱乐产品,我测试直观感受就是功能很鸡肋,有点重复造轮子的感觉。