市面上常见的数据源

市面上常见的数据库

对比项

MySQL

Redis

数据库类型

关系型数据库(RDBMS)

键值存储(NoSQL)

数据模型

表结构(行和列),支持 SQL

键值对(Key-Value),支持多种数据结构(String、Hash、List、Set 等)

存储介质

磁盘(持久化存储)

内存(高性能),可持久化到磁盘(RDB/AOF)

读写性能

受磁盘 I/O 限制,适合复杂查询

内存操作,读写极快(10万+ QPS)

事务支持

完整 ACID 事务(适合强一致性场景)

简单事务(MULTI/EXEC),不支持回滚

持久化

默认持久化(事务日志、binlog)

可选持久化(RDB 快照、AOF 日志)

扩展性

垂直扩展或水平分库分表

主从复制、集群模式(Redis Cluster)

适用场景

核心业务数据(用户、订单等结构化数据)

缓存、实时计算(排行榜、计数器)、消息队列

查询语言

SQL(SELECT/INSERT/UPDATE 等)

无 SQL,通过命令操作(GET/SET 等)

数据容量

受磁盘空间限制(TB 级)

受内存限制(GB~TB 级)

典型用例

电商订单、银行交易系统

会话缓存、热点数据加速、分布式锁

被测服务如存在多数据源,需要关注这些测试点

1.通过被测服务对外提供的业务接口。验证数据源的数据处理是否满足业务的期望(可以基于被测服务提炼业务数据的增删改查场景)

数据源结果的验证方法

方法一:直链数据库,根据对外接口关键字信息查询数据

方法二:通过被测服务的查询接口间接验证数据源的数据处理结果

2.被测服务同时接入多个数据源或者数据库,需要保障数据一致性,需要在服务开发期间或设计评审时明确多个数据源的数据一致性类型,才能针对性设计测试用例

【不同数据源最新结果验证方法】

先通过外部接口模拟数据更新操作,接着:

方法一:直连数据库通过数据关键信息查询具体数据,并验证数据结果是否时更新后的值

方法二:如果不能直连数据库,可以通过被测服务外部接口映射数据源的结果返回

3.被测服务存在多个数据源,可能实现分布式锁

数据上锁校验

case1:数据上锁合理性判断(设计评审阶段)

case2:数据上锁是否生效

case3:数据上锁在事务结束后是否释放锁

case4:如果redis分布式锁(可以实现锁超时释放),验证锁超时释放

case5:如果是多数据源的情况下,并且提供不同入口的数据查询方式,需要验证在数据上锁时其他数据查询方式是否命中上锁逻辑

4.不同数据量的处理(增删改查)

单数据

多数据

多数据(3条)

空数据

5.稳定性、高并发(性能测试)

连接数阈值验证

数据处理是否存在慢响应

数据库资源利用率

不能存在内存泄漏等情况进而导致服务宕机

6.数据淘汰策略校验

超时淘汰

固定存储数量,淘汰更新最早的数据

定时数据初始化

还需要关注数据一致性

数据一致性是指不同数据源、系统或者组建中,相同数据应保持相同值和状态的性质。他确保无论从哪个入口访问数据,用户都能获得相同的正确信息

数据一致性的主要类型包括:

强一致性:任何读取操作都能获取最新的写入数据

弱一致性:系统不保证立即读取到最新泻入的数据

最终一致性:系统保证在没有新更新的情况下,最新所有访问都将返回最后更新的值

什么情况下需要验证数据一致性?

如果服务存在多数据源(依赖服务有>=2个数据源)

测试方法:

1.了解当前业务场景是最终一致性还是弱数据一致性(评估如果没有保障数据一致性,可能存在的问题影响面)

2.编写测试用例时,补偿数据一致性case