测试域: 流量回放-介绍篇

news2024/11/23 3:34:49

建设背景

测试人员回归耗时长,成本大。公司很多测试都进行手工测试,在集成测试中需要耗费一周时间进行全量测试,在各个环境(用户测试环境和预发布环境)回归测试时需要耗费三天左右。加上编写测试用例时间,理解需求时间等其他,测试人员时间紧张,无法适应两周一个迭代的敏捷交付模式,同时也无法保证各个环境充分的回归测试。

开发人员单测覆盖率低,集成环境修复耗时长。公司团队内很多外包人员,没有养成单元测试编写习惯。公司很多IT项目都有很大业务压力,大家没时间编写单元测试。这种现状导致大家在集成环境中,经常遇到各类集成问题,如自身功能主流程不同,变更接口影响到存量的业务功能等,导致团队在集成测试环境中疲于测试和修复各类集成问题,严重影响了开发进度和测试进度。

如何解决此类常见的业务痛点,行业通用解决方案是建设流量回放平台。

1.1 数据平台利用大数据智能分析、数据可视化等技术,对公司内外部经过采集、建设、管理、分析的多源异构数据进行呈现和应用,实现了数据共享、日常报表自动生成、快速和智能分析,深度挖掘数据价值,满足企业各级部门之间的数据分析应用需求。因而也具有数据量大,场景多,数据准确性要求高,查询性能要有保障等特点。

传统测试方法

1.2 基于数据平台的特点,使得我们在线下进行数据测试或者回归测试时成本比较高,难度也比较大。所以我们希望能有一种有效的手段来降低测试的成本和门槛,实现测试的标准化。一直以来我们都是通过编写自动化测试来实现的。但是传统的自动化测试其实是有很多弊端的,比如成本高,覆盖场景有限,标准化难度高等。

1.3 传统自动化的弊端1.3.1 成本高:

  • 人工编写、维护自动化用例成本高
  • 较低的测开比无法跟上迭代的速度

1.3.2 覆盖场景有限:

  • 线下构造测试场景难度大
  • 场景覆盖度有限

1.3.3 标准化难度高:

  • 强依赖 QA 个人经验和能力
  • 开发独立排查自动化问题难度高,推动开发自测效果差

因此我们希望利用线上的流量来搭建一个流量回放的平台,与自动化测试结合,来实现一个符合数据平台特点的自动化测试体系。

2 流量回放平台介绍,流量回放原理

流量回放的实现原理即是使用线上入口录制用户操作的真实流量,到预发环境进行回放,对比生产和预发环境录入接口的子调用、响应差异去定位代码问题,接入对象范围是只读、读写、只写接口,优点是业务代码零侵入,自动流量 diff,真实链路调用,数据可查,问题定位精准,发现问题的可能性提高,缺点是面向范围有一定局限性,操作不慎可能导致回放的接口中存在写操作的子调用产生脏数据,影响业务。

2.1 流量回放平台调研

确定之后我们便立刻展开了调研,研究对比了公司的流量回放平台,阿里的 Doom 以及 Twitty 的 Diffy,差异如下图。

2.2 数据平台业务特点

  1. 因为数平报表的查询特点, 导致代码中对外查询链路少,对内的维度条件业务组合多,基于这样的特点导致在使用 Pandora 平台录制线上流量时,流量录制不全,大多数场景无法完全覆盖。
  2. 复杂的数据平台一般都依赖大量属性配置管理、定时同步任务等,因此预发环境和生产环境配置库需要隔离,保护数据不被污染。而流量回放又依赖配置库和数据库相同,使用场景高度依赖配置数据, 导致回放落地难度大。
  3. 数据平台的流量回放,验证结果时往往需要对数据进行校验, 请求会对生产数据库造成一定查询压力,可能会影响生产环境稳定性。需要控制好回放速度和控制、监控和降级保护。
  4. 部分数据是实时的,回放结果需要计算波动率。

基于以上特点导致数据平台无法接入公司的 平台,我们也在第一时间联系公司平台负责人进行沟通和提出改进需求方案。

但问题的迫切使得我们决定先小成本的进行一些工作,一方面尽快缓解我们的痛点,一方面也要方便后期接入公司平台,减少资源浪费。以此为目的,我们在一期使用脚本采集流量, 并借助开源工具 Diffy 快速实验了一套简易的流量回放系统。同时给平台提出适应性接入需求。在二期时,将脚本采集的流量上传至平台,接入平台进行流量回放。

这样的好处是:

  1. 流量自主可控,可根据需要定点扩充流量,无需担心流量稀疏、录制对线上环境的影响、接口覆盖不全等问题。
  2. 使用日志或埋点的方式采集流量,为流量采集提供了一种流量采集的新思路
  3. 开源工具只有部署和熟悉的资源投入,后期接入平台后可回收资源,没有浪费资源重复造轮子

基于以上背景,进行了数据平台的流量回放实现方案。

2.3 核心原理

整体思路依然是沿着线上获取流量,分别在不同代码环境进行回放,最后对接口返回结果进行比对,以达到检测被测代码准确性的目的。这里我们将生产的流量根据时间、接口白名单和操作人等字段进行过滤,并按照窗口进行流量的去重和筛选,最后沉淀为一个稳定的流量池。任务触发后会并发的按照指定速率向预发和生产双发回放,获取接口的返回结果,经过一系列降噪操作后,根据字段对比结果统计出整体的成功率,并产出报告。下面我会从流量采集、环境策略、执行调度、比对结果四个方面来介绍整个方案。

~ 流量回放交互构架图~

2.3.1 流量采集

通过公司的流量录制方式, 接口覆盖提升难度较大, 不太适合数平对外链路少,条件组合多的特点,因此我们想通过埋点筛选的方式进行流量采集。这样的好处是完美避免了流量录制过程中流量分布不均,降低对线上服务的性能影响,同时接口的覆盖又非常的完整。实现了自主可控,定点获取流量。

在流量采集中,我们会分批次的去生产系统上根据配置的日期和数量不断地捞取流量,对每一个批次流量根据入参和请求路径进行接口去重,并根据梳理好的接口白名单、流量操作人、接口关键字、请求类型等来过滤数据,然后需要对流量中的脏数据进行筛选、对参数中的特殊字符和多余字段进行修正。最后将清洗好的干净数据保存到本地流量池中,等待任务使用。

在后期,处理后的流量会通过接口上传至流量回放回放 Pandora 平台,通过我司的平台化工具更便捷高效的管理流量和执行。

上传后即可在流量回放平台查看流量,这里也可以通过 excel 的方式手动上传,但是每批次流量数量受限。

2.3.2 环境策略

环境采用了预发和生产两套环境对比。通过配置将预发环境的数据来源指向了生产服务。并且定时同步生产的配置库到预发环境,来解决数据和配置的 Gap。

 

2.3.3 执行调度

调度有两种方式, 一种是配置定时触发,一种是手动调用接口触发。任务触发后,会获取流量池中的流量,并对流量的关键字和执行数据量级再次判断是否可执行。确认执行后,将流量放入线程池中开始回放。这里采用了定长线程池和速率控制器来实现高并发和灵活的请求速率配置。

在任务执行后,也可以根据实际执行情况随时修改配置来停止任务或者调整任务的发送速率,控制对线上环境的影响。

2.3.4 比对结果

拿到生产和预发的返回结果之后就是对比两端结果,发现不一致的字段和返回,介于数平的特点,噪音点会非常的多,因此引入了 AAdiff 的方式,来达到自动降噪的功能。如何降噪:

a. AAdiff :在对比之前, 连续调用两次生产环境,获取结果后对比, 将不一致的字段剔除。即可去除不稳定或者有波动的字段

b. 指定字段忽略:跟对一些配置字段或者无意义字段进行手动配置忽略,降低噪点。

结果差异对比汇总后, 会根据字段进行分组汇总,对与 AAdiff 不通过的字段会直接置灰。点击字段即可在右侧查看字段下差异的数据。

通过点击差异详情,可进一步看到请求的 path、请求体、生产和预发的返回值等信息,帮助排查定位问题。

同时在结果报表中可以观测到流量数、回放成功率等信息。

3 业务实践

这里以智能运营系统为例,对比流量回放接入前后的效能成本差异。

通过流量回放的方式,不仅快速提升了自动化的接口覆盖,降低了迭代人力投入,更是增强了回归的可靠性。这一点通过迭代质量变化趋势也能很好的反应。

平台数据:

流量回放工具在 513 迭代初步使用, 但覆盖率和稳定性较差, 514 迭代完善,正式投入使用。

在 514 迭代工具正式投入使用后,发现遗漏 bug 比例达 25%,515 迭代质量有明显提升, 连续两个迭代线上无缺陷逃逸发生。平台质量和稳定性明显提升。

目前智能运营流量回放投入使用至今,已持续支持多个迭代的日常回归测试以及日常压测工作,读接口覆盖率达 86%,回放通过率稳定在 98%,发现回归漏测比率达 25%,大大提高了系统的稳定性和线上质量。

4 规划与展望

智能运营系统流量回放已进入维护阶段,在日常迭代中帮助测试实现冒烟、回归、压测、缓存验证等多种任务。后续将通过精准接口流量获取的方式,将少部分稀疏接口纳入覆盖。并将流量上传至流量回放平台。借助流量回放平台的能力,更加稳定、方便的执行计划和排查问题。

基于数据平台各系统以读接口为主的特点,非常适合流量回放的回归形式,后续会将各个系统按优先级陆续接入我司流量回放平台,并通过流量埋点的方式快速提升接口覆盖。

在介绍我们建设流量回放平台前,先介绍一下业务层流量录制回放的流程。

首先接入流量回放功能时,需要将agent下发到目标服务中,通过字节码增强对目标方法进行增强。录制时拦截对应的方法签名、入参、返回进行采集上报。回放时将录制的流量回放到指定的环境,通过流量返回的diff和断言比较接口业务代码逻辑是否存在问题。流量录制回放的流程图如下:

平台建设目标

流量回放算是比较先进成熟的自动化测试解决方案之一,它在集成测试和质量左移场景中可以解决很多用户痛点。

我们在进行用户访谈,了解了用户的业务活动中遇到了痛点后,结合自身的建设规划,确定了公司流量回放建设的产品定位:通过流量录制回放进行接口业务代码的测试和开发调试。对于测试人员而言,我们希望可以提供接口业务代码快速回归的能力,提升测试的回归效率和给回归的覆盖率。对于开发人员而言,我们希望提供接口业务代码的自测能力,减少集成过程出现的各类问题。

建设路线

第一阶段我们的建设目标是建设一个基础的流量录制回放工具。

在录制时,可以基于方法层录制线上接口的流量,包含入参、出参、异常抛出。用户可以人工线下分析线上的异常流量。在回放时,通过相同入参,比较线上环境和测试环境接口的出参,判断测试环境的接口代码逻辑是否异常。

第二阶段我们基于基础能力构建用户场景,满足用户场景痛点。

基于sandbox-repteater,我们搭建了流量录制、回放的基础能力,但是在没有构建场景化的解决方案前,产品价值还是很低的。

首先,用户发现录制线上的流量过程,会录制很多其他杂乱的流量,自己还需手动筛选所需流量。如我们在线上录制业务平台的某个功能模块,想要形成场景用例时,肯定伴随这其他的用户操作使用该平台,导致录制的流量混杂了其他业务场景的流量。基于此诉求,我们丰富了流量过滤策略。我们增加了基于流量体中的关键属性进行流量筛选的功能,用户可以通过流量体的中的header或body中的key值过滤流量。。比如用户在进行场景构建或者用户行文分析时,仅想录制某类用户的流量。我们可以配置IP=xx.xx.xxx.xx的流量,这样在录制时仅录制该IP产生的流量。同时我们增加了http入口流量过滤的功能,用户配置好http接口的URI时可仅录制该http的入口流量。比如我们针对新建功能想录制流量沉淀用例时,我们可以配置新建接口的URI,此时录制时仅录制该接口产生的流量,自动过滤其他业务接口操作流量。

第二,用户想要快速准确的定位问题。sandbox原生的接口是进行流量体所有属性的全局断言,但是实际的业务中有很多噪点信息导致全局断言不可行。比如一个流量体中response有很多随机数、ID、时间戳等业务随机信息,那么在出参对比时,这些属性肯定不同,导致系统误判流量对比有问题。基于这些复杂的业务场景,我们有两种解决方案,第一种是丰富降噪策略,消除噪点。用户在降噪策略中可通过正则表达式配置哪些属性为噪点,同时也可以在回放详情的流量体中手动标记哪些属于噪点属性,这样在对比过程可以忽略噪点的对比,专注于关键属性的对比。但是如果有些业务本身特性有很多噪点,会导致用户需要配置较多的降噪策略。第二种是配置断言策略,在流量对比时仅对比关键属性。比如在接口快速回归时,我们的测试就仅通过接口的code码和message进行断言。当接口下流量返回的code码为200,或者Message返回的是成功时,则认为接口没有问题。有些类似于接口测试的断言配置,只是相对比接口测试,无需构造脚本参数,可自动回放断言。

第三,用户想要屏蔽外部依赖,减少外部依赖对接口验证的影响。流量回放本身提供了丰富的方法增强和MOCK插件。比如redis插件,数据库插件等,用户启动后自动MOCK接口方法redis、数据库调用,快速验证代码本身业务逻辑。同时针对于业务本身的复杂性,可能有一些定制化的依赖,比如某些接口就是需要调用外部接口方法,这时我们仅需在MOCK策略中手动配置哪些方法的子调用需要MOCK,在回放时这些方法的子调用就不会真实执行,而是通过匹配request的入参,MOCK返回原子调用的出参。有些业务的随机数也可以进行MOCK,如在某些方法调用了雪花算法,我们可以MOCK雪花算法,返回录制时response的ID值,避免对比时出现ID对比失败导致流量对比失败的问题。

第四,用户想要构建测试场景,方便回归测试。测试人员在构造场景时需要优雅的筛选工具,方便快速筛选所需场景流量。比如筛选时间在一周内,变更服务的流量,这样既可以保证流量实时性,也可以快速测试变更服务。我们建设了流量编排功能,提供方法的筛选聚合组件,用户在流量池中可快速筛选所需流量,并进行聚合进行场景构建,方便用例的沉淀。

推广的思考

在推广任何产品时,用户场景、接口人、用户期望匹配度是三个最重要的要素,决定了产品推广的成功与否。

为什么要明确用户场景。用户当前的使用场景决定着用户对产品的接受度。比如用户处于落后的石器时代,给予他热武器,还不如给予冷兵器更能帮助到他们,超出用户认知的工具虽然便捷,但是也会因为使用不当导致还不如当前工具使用的效果。我们当时想推广给测试团队,但是发现推广效果差。

当前测试团队绝大部分都是功能测试,每次人工回归的标准是整个场景链路没有问题。他们也没有质量左移概念,没有想法去做质量左移工作,如单元测试、接口快速回归。也没有任何的测试策略,不知道哪些场景需要重点测试,哪些场景需要快速回归验证,优雅的分分配人力。

流量回放本身是单接口测试,无法覆盖全链路场景。流量回放通过接口测试可以做到接口约业务代码的快速验证,测试的质量左移(将接口代码回归无问题作为测试的准入条件)。但是当用户的使用场景是全链路测试,且没有质量左移,测试策略时,推广成本极大,既要引导用户改变测试策略,做好质量左移工作,也要引导用户接受新型的测试工具。这种推广方式对于长尾用户可以花时间逐步攻克,但是推广初期需要产品立刻产生价值,这类场景的用户明显不适合初期产品的推广对象。

一个具有话语权的接口人能够给推广带来巨大的便捷。我在做敏捷工具、devops工具、灰度发布工具、效能平台、流量回放项目的推广过程发现,内部产品的推广,最好的落地方式一定是至上而下推广。内部效能提升产品的很多都是有一定的接入成本,且价值不是立竿见影,而是使用一段时间才能感受巨大的效能提升。比如我们推广流量回放,虽然我们通过功能开发降低了很多接入成本,但是agent下发、策略配置、参数配置还是需要一定的工作量。如果不是领导层要求接入,可能大部分开发测试人员都会已业务忙、使用体验有瑕疵,推迟或者拒绝接入。

要明确用户的期望,了解产品和用户期望的匹配度,这样会减少很大的沟通成本。对于流量回放,如果用户的期望是完全替代手工测试,我会给介绍我们能解决的场景问题和带来价值,如果用户觉得不改变他的期望,建议还是把这个用户作为长尾用户,换一个用户快速推广。只有产品的功能和用户的期望匹配,用户才觉得我们产品能带来价值,才能作为金种子用户帮助我们打磨产品,否则双方可能会基于场景不匹配有很多的沟通,平台方做了再多的努力,没有达到预期,业务方也会认为产品的成熟度不够,这样的用户推广成本较大,但是收益很低。

后续的建设

一、接口的可视化编排

用户希望通过流量回放进行全链路测试和压测,减少自动化脚本编写维护成本。比如用户先测试新建订单,后续查询该订单后删除该订单复合场景是否有问题。流量回放为单接口测试,只能测试新建订单,查询订单、删除订单三个接口的代码逻辑是否有问题,但是不能测试这个场景是否有问题,比如无法判断新建的订单是否真实入库。

基于全链路场景,需要建设接口可视化编排工具。借助接口可视化编排工具编排接口好接口调用顺序,流量回放为接口提供相应入参,和出参对比,减少用户构造参数成本。后续深入建设,可以通过录制流量调用链路(比如拿到skywalking的调用traceID),自动化生成接口的调用顺序,减少用户编排成本。

二、精准测试

代码变更后自动推荐匹配对应接口的流量回放调用链路,回放该链路下流量,提高测试效率和测试覆盖率,达到精准测试的诉求。根据线上流量的调用链路,真实评估代码链路热度、方法热度、调用热度等,建立变更风险模型,评估变更风险。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1021095.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习vue3源码

🎬 岸边的风:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 1. 为什么要学习源码 阅读优秀的代码的目的是让我们能够写出优秀的代码 不给自己设限,不要让你周围人…

C++——模板,template

函数模板 我们经常会遇到一种情况:用相同的方法处理不同的数据。对于是函数,我们可以用函数重载来解决。虽然重载可以解决这种情况,但还是很繁琐。如果函数重载10次,有一天你突然发现有新的需求,函数需要修改&#xf…

Linux CentOS7 tree命令

tree就是树,是文件或文件名输出到控制台的一种显示形式。 tree命令作用:以树状图列出目录的内容,包括文件、子目录及子目录中的文件和目录等。 我们使用ll命令显示只能显示一个层级的普通文件和目录的名称。而使用tree则可以树的形式将指定…

管理类联考——数学——汇总篇——知识点突破——代数——等比数列——性质

下标和定理 在等比数列中,若 m + n p q ( m , n , p , q ∈ N + ) m+npq(m,n,p,q∈N_+) m+npq(m,n,p&#x…

面经学习三

目录 Java 与 C 的区别 面向对象和面向过程的区别 面向对象特性 Java的基本数据类型 深拷贝和浅拷贝 Java创建对象的几种方式 final, finally, finalize 的区别 Java 与 C 的区别 Java 是纯粹的面向对象语言,所有的对象都继承自 java.lang.Object&#xff0c…

mybatis学习记录(三)-----关于SQL Mapper的namespace

关于SQL Mapper的namespace 视频总结笔记&#xff1a; 在SQL Mapper配置文件中<mapper>标签的namespace属性可以翻译为命名空间&#xff0c;这个命名空间主要是为了防止SQL id 冲突的。 创建CarMapper2.xml文件&#xff0c;代码如下&#xff1a; CarMapper2.xml: <?…

天机学堂项目微服务架构实战

1.学习背景 各位同学大家好&#xff0c;经过前面的学习我们已经掌握了《微服务架构》的核心技术栈。相信大家也体会到了微服务架构相对于项目一的单体架构要复杂很多&#xff0c;你的脑袋里也会有很多的问号&#xff1a; 微服务架构该如何拆分&#xff1f;到了公司中我需要自己…

JDK14特性——概述语法变化

文章目录 Java14概述语法变化&#xff1a;instanceof语法变化&#xff1a;switch表达式语法变化&#xff1a; 文本块的改进语法变化&#xff1a; Records记录类型Records限制Records额外的变量类型 Java14概述 Oracle在2020年3月17日宣布JAVA14 全面上市&#xff0c;JAVA14通过…

Anomalib库安装以及使用

Anomalib: A Deep Learning Library for Anomaly Detection PDF&#xff1a;https://arxiv.org/pdf/2202.08341.pdf 代码&#xff1a;https://github.com/openvinotoolkit/anomalib 1 概述 Anomalib是一个专注于异常检测的深度学习库。它的目标是收集最新的异常检测算法&…

旧版office如何卸载干净,Mac电脑移除office教程

版office卸载不干净导致无法激活新版Microsoft office&#xff0c;这个问题如何解决呢&#xff1f;深受这一烦恼的小伙伴看过来&#xff01; 旧版office由于证书一直清理不干净&#xff0c;电脑上有旧证书存在导致新版offce激活不成功&#xff0c;具体手动清理方法带给大家。 …

Makefile 神奇:驾驭编译的力量

一.make和Makefile 当谈到 make 和 Makefile 时&#xff0c;通常是指构建工具 make 和用于描述编译和构建过程的文本文件 Makefile。 make 是一个在类Unix系统中广泛使用的构建工具。它基于文件的时间戳比较&#xff0c;只编译发生了变化的文件&#xff0c;从而提高了编译效率…

软考和PMP哪个含金量更高?

软考中&#xff0c;能和pmp一起来比较的是软考高项&#xff0c;软考高级信息系统项目管理师&#xff0c;和PMP的共同点&#xff0c;基本来说都是项目管理类的证书。本质也都是适用于项目经理岗位的证书&#xff0c;软考高项中大部分考试内容是PMPIT技术两部分&#xff0c;其中项…

JDK19特性

文章目录 JAVA19概述1. 记录模式(预览版本)2.Linux/RISC-V 移植3.外部函数和内存 API &#xff08;预览版&#xff09;4.虚拟线程(预览版)5.Vector API &#xff08;第四次孵化&#xff09;6.Switch 模式匹配&#xff08;第三预览版&#xff09;7.结构化并发&#xff08;孵化阶…

uniapp视频播放功能

UniApp提供了多种视频播放组件&#xff0c;包括视频播放器&#xff08;video&#xff09;、多媒体组件&#xff08;media&#xff09;、WebView&#xff08;内置Video标签&#xff09;等。其中&#xff0c;video和media组件是最常用的。 video组件 video组件是基于HTML5 vide…

北工大汇编——子程序设计

题目要求 完成一个字母或数制之间的转化程序&#xff0c;主程序分别具有 5种可选择的子功能&#xff0c;按相应的宇符可分别进入相应的子功能并在屏幕上显示结果&#xff0c;按“q”键退出。子功能分别为&#xff1a; 1&#xff09; 实现小写字母向大写字母的转换&#xff1b;…

Cesium与Threejs融合

融合demo 一、简介 将Cesium与three.js进行融合,从而是3d具备大场景GIS能力,使GIS具备3d能力。 关键步骤如下: 1、局部坐标系定义和坐标转换 2、相机同步 3、事件同步 二、代码 <script setup lang="ts"> import { onMounted } from vue import @ano…

批量剪辑的视频重复率高怎么去重?有可以批量剪出原创视频、脚本创作、矩阵分发的软件推荐吗?

对于批量剪辑生成的视频&#xff0c;大多朋友都会为重复率发愁&#xff0c;速度是快了&#xff0c;但是视频都是重复的&#xff0c;发出去效果不好又有什么用呢&#xff1f; 网上也能看到许多人提出&#xff0c;对素材进行改变&#xff0c;比如更换不一样的BGM&#xff0c;修改…

【MongoDB】docker部署社区版(一)

0、背景介绍 项目中使用MongoDB了&#xff0c;服务器挂掉&#xff0c;自己在本地搭一个试试。 1、版本选择 首先有社区版和和商业版。我选的是社区版。链接&#xff1a;https://hub.docker.com/r/mongodb/mongodb-community-server/tags 1.1、标签选择 看到标签有两个大类…

23 DRF快速入门+部分源码分析

文章目录 前言知识前后端不分离前后端分离RESTful APIHTTP请求方法详解部分状态码&#xff08;常见&#xff09; Django补充知识创建多个app 安装安装完后的配置 Drf框架介绍相比于Django的优势基础介绍--快速入门--了解框架的大概实现Serializers基础准备编写Serializers.py 以…

S1FD40A180H-ASEMI快恢复二极管S1FD40A180H

编辑&#xff1a;ll S1FD40A180H-ASEMI快恢复二极管S1FD40A180H 型号&#xff1a;S1FD40A180H 品牌&#xff1a;ASEMI 封装&#xff1a;TO-247 特性&#xff1a;大功率、快恢复二极管 正向电流&#xff1a;40A 反向耐压&#xff1a;1800V 恢复时间&#xff1a;<300n…