集成测试和系统测试的区别是什么?

狭义上的测试活动开展,指的是研发提测到线上发布中间的这一阶段。在该阶段,按照测试范围、测试目的和测试手段的不同,通常分为四个小阶段,即:集成测试(接口测试&执行用例)、系统测试(业务链路测试&组合测试场景)、回归测试(全业务链路测试)、验收测试(产品业务方介入,评估是否符合需求要求和预期)。

其中,集成测试的主要目的是验证单一业务模块的数据交互逻辑和功能实现符合预期

集成测试要解决什么问题

问题:假设你所在的企业是电商业务,系统是微服务架构,你负责订单相关功能的质量保障工作,此时本次迭代订单相关需求已经提测,你该如何开展测试?

首先我们要明白的是,微服务架构下,每个服务甚至每个请求之间的调用关系是及其复杂的,且之间的交互和依赖关系,可能是一次请求,要和上下游依赖之间产生多次调用。下面是一个创建订单接口的代码demo:

from flask import Flask, request, jsonify

app = Flask(__name__)

# 假设这些`[函数]( )`
已经实现了调用用户、库存和优惠券接口的逻辑
def get_user_info(user_id):
    pass

def get_product_info(product_id):
    pass

def apply_coupon(coupon_code, price):
    pass

@app.route('/api/orders', methods=['POST'])
def create_order():
    data = request.get_json()
    user_id = data['user_id']
    `[product\_id]( )`
 = data['product_id']
    `[coupon\_code]( )`
 = data.get('coupon_code', None)

    # 获取用户和产品信息
    user_info = get_user_info(user_id)
    product_info = get_product_info(product_id)

    # 计算订单价格
    price = product_info['price']

    # 如果使用了`[优惠券]( )`
,则应用优惠
    if coupon_code:
        discount = apply_coupon(coupon_code, price)
    else:
        discount = 0

    # 创建订单
    order_id = create_order_in_database(user_id, product_id, price, discount, coupon_code)

    # 返回订单信息
    return `[jsonify]( )`
({
        "order_id": order_id,
        "user_id": user_id,
        "product_id": product_id,
        "price": price,
        "discount": discount,
        "coupon_code": coupon_code
    })

def create_order_in_database(user_id, product_id, price, discount, coupon_code):
    # 在这里实现将订单信息存储到数据库的逻辑
    pass

if __name__ == '__main__':
    app.run()

其中,创建订单时首先要获取用户信息进行验签,其次获取商品信息和库存数据,接着要计算价格(如果包含优惠券信息还要调用优惠券服务),最后将订单相关数据写入数据库,然后返回对应的response body,这个下单功能才算完整实现了。

你会发现你只负责订单模块,但在开展测试时要考虑到上游依赖(用户)和下游调用(商品/库存/优惠券/数据库)各自是否可用才能开展测试。当然,假设上游依赖和下游调用暂时不可用,你可以通过mock

的方式来继续测试,但这样的话你仅仅能保证自己的实现没有问题,但不代表整体没有问题。

集成测试的目的,是要保证自己负责的单元模块/服务和上下游依赖调用模块/服务之间交互结果是否符合预期,为了保证不同模块和服务之间的依赖调用正常进行,在设计阶段就应该考虑到交互部分的统一约定,即多方达成一种契约关系

这种契约关系主要包括数据库的字段设计、应用和数据库之间是直接连接还是通过DAL组件

的连接池统一提供服务,以及不同接口之间请求响应的Key和Value约定,是否加解密以及采用的算法等。

集成测试要解决的问题,就是验证契约关系是否符合预期,以及在契约关系之上的业务需求实现是否如要求所实现

接口测试

只是验证契约实现的手段,这种手段并不是唯一(比如技术方案设计阶段测试参与评审并且评估是否合理)。

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

HMok4f-1719284896348)]
[外链图片转存中…(img-U85ZQMdd-1719284896349)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值