军团服务QA角度总结

news2024/10/23 19:43:07

需求背景:

军团业务诞生的时候承接家族群组功能,玩法邀请成员做任务->积分升级->发送奖励。还是拉收入的一个业务载体。收入才是王道。

军团服务端核心就三个:军团创建,人员管理和军团奖励。

军团创建:

创建单独拿出来说原因:需求层面这个整个军团起点,技术实现上做的事情比较多,所以单独拿出来。

技术实现:
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页面的,在直播间展示基本分数非常高,没有感官的刺激感。

我不是专业娱乐产品,我测试直观感受就是功能很鸡肋,有点重复造轮子的感觉。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2221822.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

每天练打字8:今日状况——常用字后五百击键4.5第1遍进行中,赛文速度105.75

今日跟打:738字 总跟打:125701字 记录天数:2459天 (实际没有这么多天,这个是注册账号的天数) 平均每天:50字 本周目标完成进度: 练习常用单字后500,击键3.5,…

kernel32.dll的功能、作用,教大家几种修复kernel32.dll错误的办法

当这个文件出现问题时,用户可能会遇到各种错误消息,例如“缺失kernel32.dll”或“kernel32.dll发生错误”。这些错误不仅令人困扰,还可能威胁到您的数据安全和系统性能。接下来,本文将教大家几种修复kernel32.dll错误的有效方法&a…

群控系统服务端开发模式-业务流程图补充

进天有读者给我反馈,业务流程图看的不是很明确,所以我把未画完的业务流程图补充完毕。也希望以后更多的读者给我评论及意见。 一、业务流程梳理 1、非业务流程 a、添加部门、添加级别、添加执行方式。因为这些参数都是要被其他地方调用的,更…

word中的内容旋转90度

在vsto、Aspose.Words 中,默认没有直接的 API 可以让表格整体旋转 90 度。然而,我们可以通过一些方式来实现类似的效果,具体思路如下: 将表格插入到一个形状(Shape)或文本框中,然后旋转该形状。…

影刀RPA实战番外:excel函数应用指南

Excel函数是用于执行特定计算、分析和数据处理任务的预定义公式。它们可处理数学计算、文本处理、逻辑判断、日期和时间运算、查找和引用数据等。例如,SUM函数可以计算一系列数字的总和,IF函数进行逻辑测试,VLOOKUP函数在表格中查找数据&…

Oracle CONNECT BY、PRIOR和START WITH关键字详解

Oracle CONNECT BY、PRIOR和START WITH关键字详解 1. 基本概念2. 数据示例3. SQL示例3.1. 查询所有员工及其上级3.2. 显示层次结构3.3. 查询特定员工的子级 4. 结论 在Oracle数据库中,CONNECT BY、PRIOR和START WITH关键字主要用于处理层次结构数据,例如…

我悟了,华为FreeBuds 6i这样戴更稳了!

谁懂啊,才知道华为FreeBuds 6i标配多种尺寸的耳塞(如S、M、L),方便大家根据自己耳道大小自由选择。如果耳机戴上后感到耳朵不适或松动,可能是耳塞尺寸不匹配。 小提示: 耳塞过大 可能会造成压迫感&#xf…

kafka自定义配置信息踩坑

org.apache.kafka.common.config.ConfigException: Invalid value 0 for configuration acks: Expected value to be a string, but it was a java.lang.Integer 场景描述: 单个kafka使用springboot框架自带的 yml 配置完全OK(因为底层会帮我们处理好类…

CSS 设置网页的背景图片

背景 最近正好在写一个个人博客网站“小石潭记”,需要一张有水,有鱼的图片。正好玩原神遇到了类似场景,于是截图保存,添加到网站里面。以下是效果图: css 写个class,加到整个网页的body上 .bodyBg {ba…

接口测试 —— 如何测试加密接口?

接口加密是指在网络传输过程中,将数据进行加密,以保护数据的安全性。接口加密可以采用多种加密算法,如AES、DES、RSA等。测试接口加密的目的是验证接口加密算法的正确性和安全性。以下是一些详细的测试方法和注意事项: 接口加密字…

A-【项目开发知识管理】Android AIDL跨进程通信

Android AIDL跨进程通信 文章目录 Android AIDL跨进程通信0.我为啥要写这篇文章1.AIDL是干啥的?1.1简述1.2官方话 2.在AndroidStudio中怎么干?2.1准备工作2.2在项目A中创建AIDL文件夹2.3在项目A中创建一个aidl文件2.4将项目A进行一次Rebuild操作2.5在项目…

计算机专业大学四年的学习路线(非常详细),零基础入门到精通,看这一篇就够了

前言 许多学子选择踏上计算机这条充满挑战与机遇的道路。但在大学四年中,如何规划自己的学习路线,才能在毕业时脱颖而出,成为行业的佼佼者呢? 第一学年:基础知识的奠基 1.1 课程安排 在大学的第一年,重…

超详解C++类与对象(下)

目录 1. 初始化列表 1.1. 定义 2.2. 注意 2. 隐式类型转换 2.1. 内置类型 2.2. 自定义类型 2.3. explicit关键字 3.类的静态成员 2.1. 定义 2.2. 注意 4.const成员函数 5. 友元 5. 1友元函数 5.2. 友元类 6. 内部类 6.1. 定义 6.2. 注意 7. 匿名对象 7…

手撕布隆过滤器:原理解析与面试心得

前言 说来话长,话来说长。前些天我投了一些日常实习的简历,结果足足等了两个礼拜才收到面试通知,看来如今的行情确实是挺紧张的。当时我是满怀信心去的,心想这次一定要好好拷打面试官一番,结果没想到,自我…

一、python基础

python基础 认识Python1. Python介绍1.1 为什么学习Python1.2 Python发展历史 2. 语言分类简介2.1 编译型2.2 解释型 Python环境搭建1. Python 解释器1.1 Python解释器下载1.2 Python解释器安装 2. 解释器运行Python脚本2.1 演练步骤 PyCharm1. PyCharm介绍2. PyCharm安装3. Py…

15分钟学Go 第6天:变量与常量

第6天:变量与常量 在Go语言中,变量和常量是编程的基础概念。理解如何定义和使用它们不仅能帮助我们管理数据,还能增强代码的可读性和可维护性。在本章中,我们将详细探讨Go语言中的变量和常量,涵盖它们的定义、使用、作…

机器学习建模分析

机器学习 5.1 机器学习概述5.1.1 机器学习与人工智能5.1.2 python机器学习方法库 5.2 回归分析5.2.1 回归分析原理5.2.2 回归分析实现 5.3 分类分析5.3.1 分类学习原理5.3.2 决策树5.5.3 支持向量机 5.4 聚类分析5.4.1 聚类任务5.4.2 K-means算法 5.5 神经网络和深度学习5.5.1神…

python配合yolov11开发分类训练软件

上一篇文件写了用yolo分类模型开发分类软件,这边文章在上个分类软件的基础上加入训练功能环境配置:pycharm,PySide6 6.6.1 ,PySide6-Addons 6.6.1,PySide6-Essentials 6.6.1,torch 2.3.1cu121,torchaudio 2…

dynadot设置域名动态DNS(DDNS)

需求:本地测试代理,代理需要绑定IP或者域名,本地IP是动态变化的,解决办法就是给域名设置动态DNS 1.dynadot设置 开启动态DNS选项会显示动态DNS密码,该密码后续将会用在DDNS-GO工具上 2.DDNS-GO设置 GitHub介绍页面&a…

WIFI、NBIOT、4G模块调试AT指令连接华为云物联网服务器(MQTT协议)

一、前言 随着物联网(IoT)技术的飞速发展,越来越多的设备开始连接到互联网,形成了一个万物互联的世界。在这个背景下,设备与云端之间的通讯变得尤为重要。 本文将探讨几种常见的无线通信模块——EC20-4G、Air724ug-4…