Skip to content

实战:会员中心系统设计测试用例

1.业务逻辑

  1. 会员指什么?
对于管理系统来说,管理员是它的用户,也就是项目中的 system_users 表。
而对于商城、论坛、博客等前台系统来说,会员是它的用户,也就是会员中心的 member_user 表。
  1. 会员中心系统分为:会员管理、会员标签、会员等级、会员分组、会员签到、会员积分等模块

  2. 会员管理:会员中心 -> 会员管理 进入,同时给用户进行「编辑」「发优惠劵」「修改等级」「修改余额」等操作,基础信息包含:头像、手机号、昵称、等级、分组、用户标签、积分、状态(启用/停用)、登录时间、注册时间等信息。 alt text

点击「详情」按钮,可以查看该会员用户的基本信息、账户信息、相关明细 alt text

移动端可以在: [我的] 导航,点击顶部头像,进入会员信息界面 alt text

  1. 会员等级:会员中心 -> 会员等级 进入,将会员分成不同的等级,给予相应的折扣。例如说:商城下单时,会员等级为 1 的用户,可以享受 9 折优惠 alt text

  2. 会员标签:会员中心 -> 会员标签 进入,每个会员可以标记标签,便于筛选进行优惠券发放。 alt text

  3. 会员分组:会员中心 -> 会员分组 进入,每个会员可以规划分组,便于筛选进行优惠券发放。 alt text

  4. 会员积分:会员中心 -> 会员积分 进入,一般用于积分抵扣金额。例如说:商城下单时,会员积分为 100 的用户,可以抵扣 1 元。

2.数据表结构

  1. 会员用户、标签、分组表关系 alt text

  2. 会员用户、等级关系 将会员分成不同的等级,给予相应的折扣。例如说:商城下单时,会员等级为 1 的用户,可以享受 9 折优惠 alt text

2.1 会员等级基础表:member_level

关键表字段说明: member_level 会员等级(配置)表

CREATE TABLE `member_level` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
  `name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '等级名称',
  `level` int NOT NULL DEFAULT '0' COMMENT '等级',
  `experience` int NOT NULL DEFAULT '0' COMMENT '升级经验',
  `discount_percent` tinyint NOT NULL DEFAULT '100' COMMENT '享受折扣',
  `icon` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '等级图标',
  `background_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '等级背景图',
  `status` tinyint NOT NULL DEFAULT '0' COMMENT '状态',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='会员等级';

① level 字段:会员等级,从 1 开始,越大等级越高。 ② experience 字段:升级经验,当用户的经验值达到此值时,会员等级自动升级。 ③ discount_percent 字段:享受折扣,例如说:100 表示不打折,90 表示 9 折,80 表示 8 折。

2.2 会员等级变更表:member_level_record

member_level_record 表,会员等级记录变更表

CREATE TABLE `member_level_record` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
  `user_id` bigint NOT NULL DEFAULT '0' COMMENT '用户编号',
  `level_id` bigint NOT NULL DEFAULT '0' COMMENT '等级编号',
  `level` int NOT NULL DEFAULT '0' COMMENT '会员等级',
  `discount_percent` tinyint NOT NULL DEFAULT '100' COMMENT '享受折扣',
  `experience` int NOT NULL DEFAULT '0' COMMENT '升级经验',
  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '备注',
  `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '描述',
  
  `user_experience` int NOT NULL DEFAULT '0' COMMENT '会员此时的经验',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `idx_user_id` (`user_id`) USING BTREE COMMENT '会员等级记录-用户编号'
) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='会员等级记录';

每次会员等级变更时,都会记录到此表中。并且,会记录 user_experience 字段,表示会员此时的经验值。

2.3 会员经验变更记录表:member_experience_record

member_experience_record 表,会员经验变更记录表

CREATE TABLE `member_experience_record` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
  `user_id` bigint NOT NULL DEFAULT '0' COMMENT '用户编号',
  `biz_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '业务编号',
  `biz_type` tinyint NOT NULL DEFAULT '0' COMMENT '业务类型',
  `title` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '标题',
  `description` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '描述',
  `experience` int NOT NULL DEFAULT '0' COMMENT '经验',
  `total_experience` int NOT NULL DEFAULT '0' COMMENT '变更后的经验',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `idx_user_id` (`user_id`) USING BTREE COMMENT '会员经验记录-用户编号',
  KEY `idx_user_biz_type` (`user_id`,`biz_type`) USING BTREE COMMENT '会员经验记录-用户业务类型'
) ENGINE=InnoDB AUTO_INCREMENT=63 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='会员经验记录';

每次会员经验变更时,都会记录到此表中。并且,会记录 total_experience 字段,表示变更后的经验值 biz_type 字段,表示业务类型: 管理员调整、签到奖励、下单奖励等

2.4 会员积分表:member_point_record

会员积分,一般用于积分抵扣金额。例如说:商城下单时,会员积分为 100 的用户,可以抵扣 1 元。

CREATE TABLE `member_point_record` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '自增主键',
  
  `user_id` bigint NOT NULL COMMENT '用户编号',
  
  `biz_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '业务编码',
  `biz_type` tinyint NOT NULL COMMENT '业务类型',
  `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '积分标题',
  `description` varchar(5000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '积分描述',
  
  `point` int NOT NULL COMMENT '积分',
  `total_point` int NOT NULL COMMENT '变动后的积分',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `index_userId` (`user_id`) USING BTREE,
  KEY `index_title` (`title`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=89 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户积分记录';

① user_id 字段:用户编号,属于哪个会员用户。

② biz_type 字段:业务类型,对应 MemberPointBizTypeEnum 枚举,目前有管理员调整、签到奖励、下单奖励等等。

③ point、total_point 字段:积分、变动后的积分。所以会员积分变更时,都会记录到此表中。

2.5 会员签到表:member_sign_in_config

每天签到赠送积分 member_sign_in_config 表,会员签到配置表

CREATE TABLE `member_sign_in_config` (
  `id` int NOT NULL AUTO_INCREMENT COMMENT '编号',
  `day` int NOT NULL COMMENT '第几天',
  `point` int NOT NULL COMMENT '奖励积分',
  `experience` int NOT NULL DEFAULT '0' COMMENT '奖励经验',
  `status` tinyint NOT NULL COMMENT '状态',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='签到规则';

① day 字段:第几天,例如说:第 1 天、第 2 天、第 3 天等等。 ② point、experience 字段:奖励积分、奖励经验。

member_sign_in_record 表,会员签到记录表

CREATE TABLE `member_sign_in_record` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '签到自增id',
  
  `user_id` int DEFAULT NULL COMMENT '签到用户',
  
  `day` int DEFAULT NULL COMMENT '第几天签到',
  
  `point` int NOT NULL DEFAULT '0' COMMENT '签到的分数',
  `experience` int NOT NULL DEFAULT '0' COMMENT '奖励经验',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='签到记录';

① user_id 字段:用户编号,属于哪个会员用户。

② day 字段:第几天签到,例如说:第 1 天、第 2 天、第 3 天等等。

③ point、experience 字段:签到的分数、奖励经验。冗余的原因,是 member_sign_in_config 表的 point、experience 字段,可能会变更。

3.测试用例

3.1 会员管理测试用例

测试用例编号测试场景输入预期结果
1.1添加新会员(app端)通过app端app接口创建:手机号:12345678901,昵称:张三,等级:1,积分:100,状态:启用会员创建成功,会员列表中显示新会员
1.2编辑会员信息会员ID:1,昵称修改为李四会员信息更新成功,会员列表中显示更新后的会员信息
1.3删除会员会员ID:1会员删除成功,会员列表中不再显示该会员
1.4修改会员等级会员ID:1,等级修改为2会员等级更新成功,会员信息中显示更新后的等级
1.5修改会员余额会员ID:1,余额修改为100会员余额更新成功,会员信息中显示更新后的余额
1.6查看会员详情会员ID:1显示该会员用户的基本信息、账户信息、相关明细
1.7会员启用/停用会员ID:1,状态修改为停用会员状态更新成功,会员列表中显示更新后的状态

3.2 会员等级测试用例

测试用例编号测试场景输入预期结果
2.1添加新会员等级等级名称:黄金会员,折扣:0.9会员等级创建成功,会员等级列表中显示新等级
2.2编辑会员等级信息等级ID:1,折扣修改为0.8会员等级信息更新成功,会员等级列表中显示更新后的折扣
2.3删除会员等级等级ID:1会员等级删除成功,会员等级列表中不再显示该等级
2.4会员等级折扣应用会员等级:1,订单金额:100订单金额更新为90,应用了会员等级折扣

3.3 会员标签测试用例

测试用例编号测试场景输入预期结果
3.1添加新会员标签标签名称:VIP会员标签创建成功,会员标签列表中显示新标签
3.2编辑会员标签信息标签ID:1,标签名称修改为SVIP会员标签信息更新成功,会员标签列表中显示更新后的标签名称
3.3删除会员标签标签ID:1会员标签删除成功,会员标签列表中不再显示该标签
3.4为会员添加标签会员ID:1,标签:VIP会员标签添加成功,会员信息中显示新标签

3.4 会员分组测试用例

测试用例编号测试场景输入预期结果
4.1添加新会员分组分组名称:A组会员分组创建成功,会员分组列表中显示新分组
4.2编辑会员分组信息分组ID:1,分组名称修改为B组会员分组信息更新成功,会员分组列表中显示更新后的分组名称
4.3删除会员分组分组ID:1会员分组删除成功,会员分组列表中不再显示该分组
4.4为会员添加分组会员ID:1,分组:A组会员分组添加成功,会员信息中显示新分组

3.5 会员积分测试用例

测试用例编号测试场景输入预期结果
5.1添加会员积分会员ID:1,积分:100会员积分添加成功,会员信息中显示更新后的积分
5.2扣除会员积分会员ID:1,积分:-50会员积分扣除成功,会员信息中显示更新后的积分
5.3会员积分抵扣金额会员ID:1,订单金额:100,积分:100订单金额更新为99,应用了会员积分抵扣

3.6 App端-会员等级测试用例

测试用例编号测试场景输入预期结果
6.1不同等级会员查看优惠用户等级:铜牌银牌金牌不同等级会员在app端看到的优惠不同
6.2用户升级后等级更新用户等级:铜牌 升级为 银牌用户在app端看到的优惠更新为银牌会员优惠

3.7 App端-会员积分测试用例

测试用例编号测试场景输入预期结果
7.1积分抵扣账单会员ID:1,积分:100,订单金额:100订单金额更新为0,积分抵扣成功
7.2多次积分抵扣会员ID:1,积分:200,订单金额:100(两次)订单金额更新为0,积分抵扣成功,剩余积分0
7.3积分边界值抵扣会员ID:1,积分:0-100几亿,订单金额:100系统提示积分不足或积分无效,抵扣失败

3.8 用户分组与用户关系测试用例

测试用例编号测试场景输入预期结果
8.1一个用户分组绑定多个用户用户分组:A组,用户:用户1用户2用户3绑定成功,A组下显示三个用户
8.2多个分组被一个用户绑定用户:用户1,用户分组:A组B组绑定失败,系统提示一个用户只能属于一个分组

4.测试用例说明

  • 会员管理:验证会员信息的增加、编辑、删除功能是否正常工作,以及会员状态的变更和会员详情的查看是否符合预期。
  • 会员等级:测试会员等级的创建、编辑、删除功能,以及会员等级在app端的展示和应用是否正确,包括会员等级升级后等级更新的及时性。
  • 会员标签:验证会员标签的创建、编辑、删除功能,以及会员标签的添加和筛选功能是否正常。
  • 会员分组:测试会员分组的创建、编辑、删除功能,以及会员与分组的绑定关系是否正确,包括一个用户分组下绑定多个用户和多个分组被一个用户绑定的情况。
  • 会员积分:验证会员积分的增加、扣除功能,以及积分抵扣账单的功能是否正常,包括积分边界值的处理。
  • App端会员等级:测试不同类型的会员等级用户在app端查看到的优惠是否不同,以及用户升级后等级是否及时更新。
  • App端会员积分:验证通过积分进行抵扣账单的功能,包括多次抵扣、积分边界值(0,负数、几亿)等情况。
  • 用户分组与用户关系:测试用户分组与用户的1对多和多对1关系,包括一个用户分组下绑定多个用户和多个分组被一个用户绑定的预期结果。