You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET MVC项目商品购买功能的并发测试需求

ASP.NET MVC 购买功能并发测试解决方案

一、先确保代码层面的并发安全性

测试前必须先堵住代码逻辑的漏洞,不然工具操作再正确也会出问题:

  • 库存检查与扣减必须放在同一数据库事务内,同时使用行级锁(以SQL Server为例,用UPDLOCK,HOLDLOCK),避免两个事务同时读取到相同的库存值。示例代码:
using (var transaction = db.Database.BeginTransaction())
{
    try
    {
        // 加行级锁查询商品,防止脏读
        var product = db.Products.FromSqlRaw("SELECT * FROM Products WHERE Id = {0} WITH (UPDLOCK, HOLDLOCK)", productId).FirstOrDefault();
        if (product == null || product.Stock < quantity)
        {
            throw new Exception("库存不足");
        }
        // 扣减库存
        product.Stock -= quantity;
        db.SaveChanges();
        // 创建订单
        var order = new Order { ProductId = productId, Quantity = quantity, /* 其他字段 */ };
        db.Orders.Add(order);
        db.SaveChanges();
        
        transaction.Commit();
    }
    catch (Exception ex)
    {
        transaction.Rollback();
        throw;
    }
}
  • 绝对不能用「先查询库存、再修改库存」的无锁逻辑,这种写法100%会出现超卖。

二、Postman 并发测试正确操作

Postman没有原生并发功能,但可以用以下方式模拟:

  1. 把结算接口做成独立请求,配置好参数(商品ID、购买数量、用户Token等)。
  2. 打开Collection Runner,选择该请求,设置迭代次数为2,延迟时间设为0毫秒。
  3. 必须给两个请求配置不同的用户凭证(比如不同的Token),避免会话冲突导致购物车数据混乱。
  4. 运行后查看结果:正常情况下应该一个请求成功创建订单,另一个返回「库存不足」,不会出现两个都成功的超卖情况。

三、JMeter 并发测试精准配置

JMeter是专业压测工具,配置步骤更严谨:

  1. 添加线程组:设置线程数为2(模拟两个用户),Ramp-Up时间设为0(让两个线程同时启动),循环次数1。
  2. 添加HTTP请求:配置结算接口的URL、请求方法(POST)、参数、请求头(比如Authorization Token)。
  3. 添加Cookie管理器:如果项目用Cookie维持会话,必须添加这个来隔离不同用户的会话。
  4. 添加用户凭证隔离:可以用「用户定义的变量」配合${__threadNum}给每个线程分配不同Token,或者用「CSV数据集配置」导入多个用户账号。
  5. 添加查看结果树和响应断言:断言可以检查返回结果是否符合预期(比如一个成功、一个库存不足)。
  6. 运行测试:如果代码逻辑没问题,不会出现超卖,也不会有异常报错。

四、常见操作错误排查

  • Postman测试时如果用同一个用户会话,会因为购物车数据冲突导致测试无效,必须用不同用户。
  • JMeter的Ramp-Up时间不能设得太大,否则两个请求不是同时发起,无法模拟真实并发。
  • 测试前要把商品库存设置为刚好等于单个用户的购买量(比如库存1,两个用户各买1),这样能直观看到并发处理效果。
  • 不要用VS自带的IIS Express测试,它默认是单线程处理请求,会自动排队,无法模拟真实并发环境,要部署到IIS或用Kestrel运行项目。

内容的提问来源于stack exchange,提问作者Mahdi Rh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 03:22:14