接口测试|线程安全测试
线程安全测试
一、线程安全原理
什么是线程安全?通俗的讲,就是保证多个线程同时对某一对象进行操作时不会出错。比如两个客户端,同时对某个课程进行报名操作并记录总数,如果不加以并发控制,那么就会出现对当前报名总数脏读的情况。
案例分析
企业微信部门创建
总结:线程安全问题出现的三个必要条件:
1、多线程环境下
2、多个线程共享一个资源
3、对资源进行非原子操作
二、分布式线程安全问题原理
当服务器分布式集群形式时,会产生一个问题,当多个订课请求打到不同的服务器上,而多个服务器对已定课程总数的读取课程中产生脏读的问题,就叫分布式锁问题
案例分析
总结:当多个线程同时对某一对象进行读写操作时,比如读减库存,排重写入逻辑主要注意线程安全和分布式锁问题,需要对读写操作进行一个分布式的并发场景测试
三、数据库锁原理
1、表锁定:更新/删除操作会添加排他锁。此类操作的where条件如果未添加索引会升级为表级别锁定,导致其他逻辑对该表的操作失败。
2、事务中死锁:两个事务都持有对方需要的锁,并且在等待对方释放,并且双方都不会释放自己的锁。
案例分析
当我们在进行混合场景测试时,发现当分发任务执行时,会有大量的线索操作大量超时报错,最后排查是因为更新分发结果逻辑包含未加索引的检索条件升级为表锁,导致新线索的插入操作超时报错
总结:当多个逻辑同时处理某个表的数据时,需要考虑这些逻辑并行处理的场景
知道、想到、做到、得到
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)