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

2023-12-04

前面的文章聊过测试过程效率提升和演变,也分享了我对于单元测试的一些实践和思考。

这篇文章接着上篇单元测试的内容,聊聊集成测试的特点,要解决什么问题,以及实践的注意事项。

下图是 从需求出现到最后的线上发布,大致要经历的几个阶段。

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

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

集成测试要解决什么问题

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

首先我们要明白的是,微服务架构下,每个服务甚至每个请求之间的调用关系是及其复杂的,且之间的交互和依赖关系,可能是一次请求,要和上下游依赖之间产生多次调用。下面是一个创建订单接口的代码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']
    
 = data['product_id']
    
 = 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 
({
        "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,这个下单功能才算完整实现了。

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

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

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

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

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

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

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

集成测试的实践注意事项

现在我们回到上面的问题,此时你该如何开展测试呢?下面是一些实践经验和注意事项:

  • 测试计划:最好有集成测试方案,不一定要写详细的文档,但最好是形成一种流程规范;
  • 测试方法:除了接口测试,还应该考虑到异常场景、故障注入以及性能测试(基准性能摸底);
  • 测试数据:上下游依赖调用和可能的mock所需数据,以及数据库中的铺底数据(用户/商品/库存/优惠券);
  • 测试用例:除了正向场景,还应该考虑
  • (退款/取消订单)、数据边界(商品限购/优惠券仅可使用一张);
  • 安全验证:比如未登录、未授权场景和跨域权限(普通用户享受VIP会员的折扣);
  • 持续集成:将接口测试纳入CICD流水线中,确保每次变更后都能及时得到验证;

以上观点和实践注意事项仅供参考,在测试执行中,建议根据具体情况制定方案,采用合理的方法进行验证。

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

集成测试和系统测试的区别是什么? 的相关文章

  • JMeter 3.2 中不存在 SOAP/XML-RPC Sampler

    我有点惊讶我的 JMeter 3 1 脚本在 3 2 中不起作用 JMeter 3 2 中删除 SOAP XML RPC Sampler 的原因是什么 是否存在一些性能问题等 这是 JMeter 的一部分change http jmeter
  • JMeter 将变量设置为随机选项

    我一直在使用 JMeter 我知道 Random and RandomString功能 我需要选择一个随机选项并将其存储在变量中 因为它将用作多个调用的参数路径的一部分 例如 http www example com pets random
  • JMeter 基本身份验证

    我试图暗示使用 JMeter 的 Web 服务的基本身份验证过程 但每次它都会抛出错误 401 Unauthorized 我尝试使用 HTTP 标头管理器向其添加标头授权和值 但它仍然不起作用 我还尝试过使用 HTTP 授权管理器 还是没有
  • CentOS 中的 JMeter 整数表达式预期错误

    在 CentOS 中执行 JMeter 脚本时出现以下错误 我的JMeter版本是4 0 Java是1 8 我的脚本在 Windows 中运行良好 这是我的 JMeter 命令和我收到的错误 root localhost bin sh jm
  • jmeter http请求的每个线程的唯一ID

    我的 jmeter 测试发出一个包含唯一 ID 的 http 请求 http myserver com uniqueId 我想为每个线程设置基数 比如 35000 和增量 例如我的 id 是 35001 35002 35003 http m
  • JMeter(活动?)FTP 到 VLTrader

    情况 我正在使用 JMeter 来加载测试我的通信应用程序 Cleo VLTrader 我是 JMeter 的新手 并且能够使 HTTP 通信工作 但不能使 FTP 工作 当我尝试使用 JMeter FTP 请求采样器时 我可以在服务器端看
  • JMeter 使用什么 Maven 插件? jmeter-maven-plugin 还是 chronos-jmeter-maven-plugin?

    我需要设置由 CI 系统自动触发运行的性能测试 为此 我想使用 JMeter 因为已经存在一些脚本和经验 并且我想将其与 Maven 结合起来 在我对合理插件的研究过程中 我发现存在两个插件 jmeter maven 插件 http wik
  • JMeter - 根据平均响应时间测试失败

    我正在使用性能插件在 Jenkins 中运行 JMeter 作业 如果平均响应时间 这是我尝试添加 BeanSehll Listener 和 Assertion 的方法 Recording Controller Home Page Bean
  • Jmeter JSR223 Sampler - 无法将数据写入 CSV 文件

    我正在使用 Jmeter v4 0 r1823414 根据这个答案 https stackoverflow com questions 50820389 unable to set incremental variable in jmete
  • JMeter 记录使用 HTTPS 的 iOS 本机应用程序会导致 SSL 握手问题

    我有一个用于我们的应用程序的 IPAD 混合应用程序 它会在登录过程中尝试访问我们的 https 服务器 我想使用 JMeter 来记录这个简单的流程 我正在本地计算机上运行 JMeter 代理服务器 我更新了 IPAD 代理详细信息 以便
  • Apache JMeter 的 Cookie 管理器未将 cookie 添加到 POST 请求

    我制定了非常简单的测试计划 登录 POST 返回会话cookie 获取状态 GET 返回用户状态 创建资源 POST 为资源提供 JSON 正文 所以我的 测试计划 如下所示 Test Plan Thread Group HTTP 请求默认
  • 如何通过java编码生成Jmeter仪表板报告。 (不是 Windows 或 shell 命令)

    我必须通过java编码生成Jmeter仪表板报告 在java代码下面 我用来生成正常的jmeter报告 我必须生成一个 通过java的仪表板报告 public class JMeterFromExistingJMX public stati
  • 暂停和恢复 jmeter 执行

    我正在寻找暂停和恢复 JMeter 执行 单 多线程 的选项 1 Pausing and Resuming through command line 2 From the Jmeter UI 3 By coding in some lang
  • 在jmeter中设置整个请求url

    我有一个请求 它提供上传网址作为响应正文 uploadUrl https test com 9000 sample uploadurl I m able to extract the uploadUrl using JSON extract
  • Jmeter 下降的最佳方法?

    我们都知道 Jmeter 并不是最擅长在运行期间更改活动线程的数量 除非您喜欢并创建以不同时间间隔触发的单独线程组 有没有人想出一个好的解决方案来在测试结束时降低速度 例如 我从 50 个线程开始 在 30 分钟内我想要 0 个活动线程 查
  • 使 .jmx 文件在 Windows 10 上使用 jmeter GUI 默认打开(双击文件)

    当我双击它时 我试图让我的 Windows 10 使用 jmeter GUI 打开 jmx 文件 我使用 apache jmeter 3 2 目前 为了打开 jmx 文件 我打开 jmeter jar apache jmeter 3 2 b
  • 在 JMETER 中循环遍历 JSON 响应 +

    我正在使用 Jmeter 进行性能测试并卡在以下点 我从 Webapi 收到 JSON 响应 如下所示 PersonInfoList Person 0 id 1 name Steve 1 Person id 2 name Mark 我需要根
  • Jmeter动态生成请求的json负载

    我有一个 Jmeter 测试计划 我希望 HttpSampler 发送发布请求 请求正文应包含 Json 如下所示 productIds p1 p2 我设置了一个随机变量生成器 每次调用都会返回格式正确的 ProductId 我想做的是通过
  • Jmeter 和 Bitbucket 服务器负载测试

    我是 Jmeter 的新手 我有一个本地托管的 Bitbucket 服务器 有时 当 Bamboo plan 触发并发 git 克隆操作时 会发现 Bitbucket 服务器变得缓慢 无响应 我必须重新启动服务 我想通过对另一个本地创建的
  • JMeter 为子功能添加 Think Time

    在 JMeter 中 当我右键单击 线程 控制器 时 我有一个选项 Add Think Time to children功能 当我点击它时 我会看到每个采样器Test Action暂停与Uniform Random Timer随机延迟 10

随机推荐

  • java spring cloud 企业电子招标采购系统源码:营造全面规范安全的电子招投标环境,促进招投标市场健康可持续发展

    功能描述 1 门户管理 所有用户可在门户页面查看所有的公告信息及相关的通知信息 主要板块包含 招标公告 非招标公告 系统通知 政策法规 2 立项管理 企业用户可对需要采购的项目进行立项申请 并提交审批 查看所有的立项信息 主要功能包含 招标
  • Jmeter测试移动接口性能 —— 压测

    一般的公司都想知道自己产品的性能瓶颈和以及提升性能 以期大流量来了还撑得住 其实性能测试很难 难点在你不知道性能要达到怎样的需求 难点在于你没有实际的环境场景给你测试 总不能给线上环境你测试吧 难点在于找性能瓶颈 即便找出来了 调优也是一件
  • 快速提升测试技术:必备技能大揭秘!

    很多小伙伴在成功入职后 进入测试开发发展后 都会进入一个瓶颈过渡期 当然能够自己意识到这个问题说明还来得及 那么作为测试开发人员 如何走出舒适区 需要学习和掌握那些内容 从而实现自己的最终目标呢 今天我们就来说一说 在职场中如何不断的提升自
  • 从容应对:如何精准分析测试风险并制定有效策略?

    软件测试 是一项高风险的工作 它是不可避免的 总是存在的 作为一名测试管理人员必须在平时的工作中 分析这些风险的类别 并且想出对策尽最大程度的降低这些风险 01 软件需求的风险 主要表现在以下的几个方面 需求变更风险 在项目的后期用户总是不
  • 夯实c基础

    夯实c基础 区别 图一的交换 交换的是地址而不是两数 无法实现两数的交换 题干 以下程序的输出结果为 c void fun int a int b int c c a b void main int c 6 fun 3 5 c printf
  • 测试人员为什么要去了解业务架构和技术架构?

    问题 在入职公司不久 我参加老员工再给新来的员工和管培生宣讲产品的业务 功能 直接拿着功能清单和实际页面在讲解 等把产品功能讲完了 我问了一下实习生和管培生怎么样 他们都说功能讲的太多 太乱 不清楚讲解产品的核心业务逻辑及操作流程 后来发现
  • UI自动化测试的正确姿势 —— Airtest设备连接&API详解第一篇

    一 背景 Airtest作为一款优秀的自动化测试工具 有着强大的API功能 处理日常自动化测试过程中需要的各类操作 今天就给大家逐一介绍关于设备连接和常用API部分 结合自动化测试中的各类需求 看看如何通过使用Airtest来快速实现 二
  • 7个简单技巧,让你从容应对压力面试!

    01 什么是压力面试 压力面试是指有意制造紧张 以了解求职者将如何面对工作压力的一种面试形式 事实上 压力面试不是单独存在的一类面试 往往是穿插在面试过程中 面试人通过提出不礼貌 冒犯的问题 或者用怀疑 尖锐 挑衅的语气发问 使应聘者感到不
  • 商城免费搭建之java商城 鸿鹄云商 B2B2C产品概述

    B2B2C平台 以传统电商行业为基石 鸿鹄云商支持 商家入驻 平台自营 多运营模式 积极打造 全新市场 全新 模式 企业级B2B2C电商平台 致力干助力各行 互联网创业腾飞并获取更多的收益 从消费者出发 助力企业构建完整 电商交易生态 整合
  • 【涨薪技术】深入接口测试之Mock技术

    01 为什么要用Mock 服务端与客户端约定了接口 但服务端还没有完成开发时 客户端一般由如下处理方式 1 在程序中写模拟数据 程序中增加垃圾代码 后期还要删除 可能对代码造成影响 模拟异步请求不方便 服务端接口开发完成后 需要重新书写网络
  • OBC、DCDC自动化测试解决方案!

    OBC 车载充电机 和DCDC 直流 直流变换器 是电动汽车的核心部件 DCDC和OBC的功能质量对于整车的性能和安全性至关重要 在OBC和DCDC 以及整车开发测试过程中 需要对OBC和DCDC进行功能和性能方面进行全面的测试 针对OBC
  • 鸿鹄工程项目管理系统 Spring Cloud+Spring Boot+Mybatis+Vue+ElementUI+前后端分离构建工程项目管理系统项目背景

    鸿鹄工程项目管理系统 Spring Cloud Spring Boot Mybatis Vue ElementUI 前后端分离构建工程项目管理系统 1 项目背景 一 随着公司的快速发展 企业人员和经营规模不断壮大 为了提高工程管理效率 减轻
  • 一文搞懂 chatGPT 原理

    目前关于chatGPT的资料过于零散 没有详尽所有知识点 系统概述的文章 因此 笔者作了这篇总结性文章 训练过程总览 理清演化路径 预训练 pretrain GPT 3概述 GPT 3模型的理念 GPT 3如何学习 数据集 指令微调 Ins
  • d3dcompiler_47.dll缺失怎么修复?一招搞定电脑弹窗问题

    在计算机使用过程中 我们常常会遇到一些错误提示 其中之一就是 d3dcompiler 47 dll缺失 这个错误通常出现在游戏或应用程序运行时 它会导致程序无法正常启动或运行 为了解决这个问题 我们需要采取一些措施来修复缺失的文件 本文将介
  • 绝地求生PUBG提示msvcp140.dll缺失的5个解决方法,亲测有效

    在玩 绝地求生 这款游戏时 我们可能会遇到各种各样的问题 其中之一就是 吃鸡提示msvcp140 dll缺失怎么办 这个问题可能导致游戏无法正常启动运行 但是不用担心 下面我将为大家详细介绍如何解决这个问题 msvcp140 dll文件的概
  • 加强网站稳定性!学习如何进行高效压力测试!

    前言 1 什么是压力测试 软件压力测试是一种基本的质量保证行为 它是每个重要软件测试工作的一部分 软件压力测试的基本思路很简单 不是在常规条件下运行手动或自动测试 而是在计算机数量较少或系统资源匮乏的条件下运行测试 通常要进行软件压力测试的
  • Java电子招投标采购系统源码-适合于招标代理、政府采购、企业采购、等业务的企业

    项目说明 随着公司的快速发展 企业人员和经营规模不断壮大 公司对内部招采管理的提升提出了更高的要求 在企业里建立一个公平 公开 公正的采购环境 最大限度控制采购成本至关重要 符合国家电子招投标法律法规及相关规范 以及审计监督要求 通过电子化
  • 「JMeter」数据参数化大集合:让你的测试数据更加强大!

    大家好 我是小马哥 每天进步一点点 今天分享的内容是 Jmeter之数据参数化方法汇总 一 什么是参数化 Jmeter参数化是指将脚本中的某些需要输入数据使用参数来代替 在脚本运行时指定参数的取值范围和规则 脚本在运行时就可以根据需要选取不
  • 题解 | #筛选某店铺最有价值用户中消费最多前5名#

    背景 双非本211硕 编程语言 c cuda python方向是算法部署 AI框架 算子开发目标行业 互联网 半导体已oc 深势科技 高性能计算浙 思路 首先join两张表获取所有员工对应的薪水信息 题目为获取每个部门中当前员工薪水最高 拆
  • 集成测试和系统测试的区别是什么?

    前面的文章聊过测试过程效率提升和演变 也分享了我对于单元测试的一些实践和思考 这篇文章接着上篇单元测试的内容 聊聊集成测试的特点 要解决什么问题 以及实践的注意事项 下图是 从需求出现到最后的线上发布 大致要经历的几个阶段 狭义上的测试活动