接口性能测试--应用性能实例

上文我们已经开发完成性能测试脚本并调试通过,接下来,我们模拟电商秒杀的业务场景对下单接口进行压力测试。

1. 超卖现象

首先我们需要明确一个很重要的业务逻辑,就是:订单商品的总数量不能超过剩余库存总量,即下单时如果库存为0,就应提示“库存不足”,无法下单成功,基于这一点,我们在设计及实现创建订单接口时就需要先判断库存是否大于0,如果大于0才可以创建订单并扣减库存,如果小于等于0,则应提示“库存不足”,核心代码如下所示(完成代码参见GitHub:https://github.com/8784285/order_web.git ,文件路径:api/run.py):

        data = dbservice.get_cursor().fetchone()   #剩余库存数量查询
        if data[0] > 0:
            try:
                order_sql = "insert into stock_order(sid,orderprice,username,receiver,phone,address) VALUES (%d,%f,'%s','%s','%s','%s')" % (int(sid),float(orderprice),username,receiver,phone,address)      #订单信息插入订单表
                stock_sql = "update stock set count = count - 1 where id = %d" %(int(sid))       #库存表扣减库存
                dbservice.exec_and_commit(order_sql)
                order_id = dbservice.get_cursor().lastrowid
                dbservice.exec_and_commit(stock_sql)
                return jsonify(code = 2003, msg = "创建订单成功", order_id = order_id)
            except Exception:
                return jsonify(code = 2004, msg = "创建订单失败", data = order_sql)
        else:
            return jsonify(code = 2005, msg = "库存不足", data = data[0])

接下来我们先将id为21的商品库存清0,可以直接在数据库执行sql模式下,执行下述sql

UPDATE stock SET count = 0 WHERE id = 21

或者直接在Web页面或通过创建订单接口下单,直到21商品库存为0为止。

1)1用户

我们在JMeter中将登录线程组的线程数和循环次数都设置为1,【启动】测试,模拟1个用户访问创建订单接口,结果如下图所示:
jmeter库存不足

可以看到,当库存为0时,我们用JMeter模拟用户下单,返回信息如下:

{
    "msg": "库存不足",
    "code": 2005,
    "data": 0
}

data为0,即剩余库存为0,请你一定注意这个剩余库存的值,后面我们还会用到它,按上述代码逻辑,理论上,库存小于等于0,if判断为假,就直接进入else分支,提示“库存不足

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

<p> 本专刊共五章 21 篇正文及 5 个对应的 GitHub 项目,主要介绍了接口测试基础知识及测试用例设计方法,认证鉴权、加密验签,自动化测试,安全性测试,性能测试等内容,每一章节都有代码实例来剖析其原理,并提供了一个完整电商系统的代码,可以直接实操演练,让你知其然知其所以然,轻松搞定接口测试。加入专刊,你就加入了一大群志同道合的优质测试人圈子,同时还有和作者及作者的朋友们互动交流的机会。 本专刊购买后即可解锁所有章节,故不可以退换哦~ </p> <p> <br /> </p>

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务