zoukankan      html  css  js  c++  java
  • 接口测试|线程安全测试

    线程安全测试

    一、线程安全原理

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

    案例分析

    企业微信部门创建

     总结:线程安全问题出现的三个必要条件:

    1、多线程环境下

    2、多个线程共享一个资源

    3、对资源进行非原子操作

    二、分布式线程安全问题原理

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

    案例分析

     总结:当多个线程同时对某一对象进行读写操作时,比如读减库存,排重写入逻辑主要注意线程安全和分布式锁问题,需要对读写操作进行一个分布式的并发场景测试

    三、数据库锁原理

    1、表锁定:更新/删除操作会添加排他锁。此类操作的where条件如果未添加索引会升级为表级别锁定,导致其他逻辑对该表的操作失败。

    2、事务中死锁:两个事务都持有对方需要的锁,并且在等待对方释放,并且双方都不会释放自己的锁。

     案例分析

    当我们在进行混合场景测试时,发现当分发任务执行时,会有大量的线索操作大量超时报错,最后排查是因为更新分发结果逻辑包含未加索引的检索条件升级为表锁,导致新线索的插入操作超时报错

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

    知道、想到、做到、得到
  • 相关阅读:
    Modelsim中观测代码覆盖率
    Allegro中Thermal relief Pad 和Anti Pad
    时序逻辑中阻塞赋值引起的仿真问题
    如何提高FPGA工作频率(转载)
    `include在Verilog中的应用
    forever
    wxpython 应用 使用 google gauth 认证
    sql to sqlalchemy 转换
    django 简易博客开发 5 markdown支持、代码高亮、gravatar头像服务
    simpletodo: 一个简易的 todo 程序 django版
  • 原文地址:https://www.cnblogs.com/Durant0420/p/15002645.html
Copyright © 2011-2022 走看看