测试人员必须有的-缓存测试分享

天秤 2024-05-28 11:18:12

一.背景描述

为提高应用的访问速度,很多业务会使用缓存机制。作为常用测试场景,可制定一套通用测试方案供参考

二.缓存设计评估

1.缓存使用评估

·实时性要求不严格

·频繁进行读取操作

·对性能要求较高

切记将redis当成数据库使用

1.缓存设计合理评估

2.1数据结构的确认

数据机构

说明

应用场景

字符串(String)

存储字符串类型数据

访问量、在线人数、计数器等

列表(List)

存储多个有序的字符串

文章列表、分页展示等

集合(Sort)

存储多个不重复无序的字符串

点赞 、收藏、关注、共同好友等

有序集合(Sorted set)

存储多个不重复有序的字符串

排行榜等

哈希(Hash)

存储关系型对象

用户信、商品信息等

避免使用大key(建议不超过1KB或3KB )

2.2缓存时间合理性

缓存时间长用户数据不是最新的,时间短对数据库访问频繁,可结合具体业务场景评估缓存时间的设置,如车险投保用户操作大致需要半小时,结算缓存数据设置为小于30分钟;配置数据1天不会变动,缓存时长设置为1天

2.3缓存更新机制

·更新数据库,删除缓存

·更新数据库,更新缓存/更新缓存,更新数据库-----无效写操作多

·删除缓存,更新数据库----易造成数据不一致

·延时双删

三.测试设计

1.正常流程:

1) 缓存增加 :功能正常,缓存与DB数据一致

2) 缓存读取 :缓存中有无数据,功能正常

3) 缓存更新 : 更新缓存,功能正常,缓存和DB数据一致

4) 缓存删除 : 删除缓存,功能正常,缓存被重新写入,缓存和DB数据一致

5) 缓存过期 : 缓存在设置时间内过期,再次写入缓存,过期时间更新

1.特殊流程:

1) 缓存雪崩:短时间大量缓存过期/失效,直接请求数据库,功能是否正常

2)缓存穿透 :大量请求在缓存和DB中都无数据(无法回写),直接请求数据库,功能是否正常

3)缓存击穿:单个key(如热点数据)失效,直接请求数据库,功能是否正常

4)缓存预热:提前将相关数据写入到缓存,缓存预热期间功能是否正常

5)缓存停服:缓存服务关闭,功能是否正常;服务启动过程中,功能是否正常

6)并发测试:并发请求缓存中的数据,功能正常

四.测试工具

进行缓存测试时,一般需要登录redis服务器去查看缓存数据有效性及手动更改数据辅助测试

查看、删除缓存,设置缓存过期时间.

五.测试用例

序号

用例名称

测试步骤

预期结果

1

缓存增加

用户首次访问功能

功能正常,将库中数据更新到缓存

(无DB设计,将接口的数据更新到缓存)

查看缓存数据

缓存数据和DB数据一致

(无DB设计,关注第一步)

2

缓存读取--命中缓存

用户访问功能,命中缓存

功能正常

查看缓存数据

缓存数据和DB数据一致

(无DB设计,将接口的数据更新到缓存)

3

缓存读取--没有命中缓存

用户访问功能,没有命中缓存

功能正常,将库中数据更新到缓存

查看缓存数据

缓存数据和DB数据一致

(无DB设计,将接口的数据更新到缓存)

4

缓存更新

触发缓存更新(如web端更改配置)

缓存被删除

用户访问功能

功能正常,将库中数据更新到缓存

(无DB设计,将接口的数据更新到缓存)

查看缓存数据

缓存数据和DB数据一致

(无DB设计,将接口的数据更新到缓存)

5

缓存删除----自动删除功能

设置的缓存时间到期后,查看缓存

缓存被删除

用户访问功能

功能正常

6

缓存删除

手动/定时任务删除缓存,查看缓存数据

缓存被删除

用户再访问功能

功能正常,将库中数据更新到缓存(无DB设计,将接口的数据更新到缓存)

查看缓存数据

缓存数据和DB数据一致(无DB设计,将接口的数据更新到缓存)

7

缓存过期

查看缓存过期时间

有值

缓存过期后,用户访问功能

功能正常

8

缓存雪崩

将大量缓存数据失效,进行并发请求

功能正常

将大量缓存数据失效,进行并发请求

功能异常(开发进行分析优化)

9

缓存穿透

构造并发请求,请求获取的数据缓存和DB中都不存在

功能正常,返回数据为空

10

缓存击穿

将某一缓存失效,进行并发请求(命中改缓存)

功能正常

将某一缓存失效,进行并发请求

功能异常(开发进行分析优化)

11

缓存预热

系统上线后,查看缓存

缓存中有数据

预热期间,用户访问功能

功能正常

12

缓存停服

关闭缓存服务,用户访问功能

功能正常

缓存服务启动过程中,用户访问功能

功能正常

13

缓存大小测试

获取key值和对应value值

key和value不超过1KB

14

缓存值计算

(根据业务进行边界值测试)

手动将缓存值修改到边界临近值,重新触发业务N次

功能正常

0 阅读:5