接口测试流程 以企业微信分析为例

需求评审:

需求评审问题示例:(业务角度)

 

序号

用户故事

1

添加一个部门

2

给一个部门添加子部门

3

修改子部门的相关信息

4

删除一个包含成员的部门

5

删除一个不包含成员的部门

6

删除一个不包含子部门的部门

7

删除一个包含子部门的部门

8

查询某部门下子部门的树状结构

用户故事整理出的需求问题:

1,添加部门信息是否包含父子关系

2,删除部门时是否校验包含了子部门

3,无部门查询功能 ---缺陷

需求评审问题示例:(交互角度)

得到的需求问题:

考勤异常系统个性化逻辑不应该放在企业微信平台中,应该是一套通用的开放接口

需求评审问题示例:(功能点角度)

1、数据约束。
添加的成员电话、邮件、是否可以重复。-需补充。
2、分支逻辑
添加员工后是否自动邀请该员工使用企业微信,邀请和不邀请逻辑是什么? -需明确。
3、权限相关
没有对各项操作的权限进行准确的说明。-需补充说明。

开发设计评审

 

python检测企业微信聊天 企业微信测试用例_数据

python检测企业微信聊天 企业微信测试用例_python检测企业微信聊天_02

ER图

python检测企业微信聊天 企业微信测试用例_python检测企业微信聊天_03

python检测企业微信聊天 企业微信测试用例_线程安全_04

接口文档评审

python检测企业微信聊天 企业微信测试用例_python检测企业微信聊天_05

python检测企业微信聊天 企业微信测试用例_数据_06

开发设计问题发现模型

 

开发评审问题示例:(数据角度)

问题举例:
1、数据对象完整性。
成员对象缺少部门]负责人标识。--需调整表结构。
2、多余数据属性
在user表中存储这个用户所在群聊的list,用户与群聊的关系应该是chat数据对象要负责的关系,
user表存储了不属于自己的数据字段。--调整表结构。
3、字段的单一职责
定义一个字段即标识成员是否为部门门]负责人,又标识是否有踢出权限,则该字段违背了单一职责
原理,当想扩展为某些普通员工也能拥有踢人权利时,无法扩展。--增加一个单独的管理员标识。
4、字段二义性
定义一个字段,当用户登记手机号时存手机号,当没有手机号时存邮箱。一应该调整为两个字
.段,每介字段只负责存储一种数据

开发评审问题示例:(编辑角度)

问题举例: .
1、数据特性兼容。
有些企业,一个员工兼顾与几个部门,但是接口校验一个员工只能属于一个部门。--与产
品沟通后放开限制。
2、功能的通用性
经过沟通,某企业希望部门中职务信息带“部长”后缀的自动识别为部门负责人。--不是所有企
业都遵循这一规律,此功能不通用,应该单独给定参数指定负责人。

开发评审问题示例:(特定技术栈)

问题举例:
1、Redis技术栈检查套路 。
Redis是否考虑数据的主动刷新、数据穿透、容灾、数据全量恢复等问题。--需在设计初期就对这些情况进行
计划。
2、MQ技术栈检查套路
MQ丢消息、时序性等问题。--循环推送和成功状态回写、接收消息回调获取最新消息。
3、Task技术栈检查套路
任务防重措施、防漏措施、处理结果幂等性。-首先要确定任务处理幂等性,调整合适的偏移量和执行频率。
4. DB技术栈检查套路
是否存在锁表问题、数据线程安全。一当前读条件是否添加索引,共享数据争抢的逻辑是否加线程锁和分布
式锁。

开发评审问题示例:(异常情况)

python检测企业微信聊天 企业微信测试用例_python检测企业微信聊天_07

python检测企业微信聊天 企业微信测试用例_python检测企业微信聊天_08

测试用例编写

python检测企业微信聊天 企业微信测试用例_线程安全_09

python检测企业微信聊天 企业微信测试用例_数据_10

 

基本流程测试

python检测企业微信聊天 企业微信测试用例_数据_11

python检测企业微信聊天 企业微信测试用例_线程安全_12

边界值测试

python检测企业微信聊天 企业微信测试用例_线程安全_13

故障注入测试

python检测企业微信聊天 企业微信测试用例_数据_14

python检测企业微信聊天 企业微信测试用例_字段_15

线程安全测试

线程安全的原理

python检测企业微信聊天 企业微信测试用例_字段_16

python检测企业微信聊天 企业微信测试用例_数据_17

什么是线程安全?

通俗的说,就是保证多个线程同时对某一对象进行操作时不会出错。比如两个客户端,同时对某个课程进行报名操作并记录总数,如果不加以并发控制,那么就会出现对当前报名总数脏读的情况。

分布式线程安全的原理

python检测企业微信聊天 企业微信测试用例_线程安全_18

python检测企业微信聊天 企业微信测试用例_字段_19

当服务器是分布式集群时,会产生一个问题,当多个订课请求打到不同的服务器上,而多个服务器对已定课程总数的读取过程中产生脏读的问题,就叫做分布式锁问题。

问题特征分析

python检测企业微信聊天 企业微信测试用例_python检测企业微信聊天_20

线程安全性问题出现的三个必要条件:
1、多线程环境下
2、多个线程共享同一个资源
3、对资源进行非原子性操作

当多个线程同时对某一对象 当多个线程同时对某一对象进行读写操作时,比如读减 进行读写操作时,比如读减库存,排重写入逻辑需要注 库存,排重写入逻辑需要注意线程安全和分布式锁问 意线程安全和分布式锁问题,

需要对读写操作进行一 题,需要对读写操作进行一个分布式的并发场景测试。

数据库锁原理

1、表锁定:更新/删除操作会添加排它锁。此类操作的

where条件如果未添加索引|会升级为表级锁定,导致其他逻  

辑对该表的操作失败。

2、事务中死锁:两个事务都持有对方需要的锁,并且在

等待对方释放,并且双方都不会释放自己的锁。

python检测企业微信聊天 企业微信测试用例_数据_21

python检测企业微信聊天 企业微信测试用例_线程安全_22

当多个逻辑同时处理某个表的数据时,需要考虑这些逻辑并行处理的场景。