精华内容
下载资源
问答
  • 1. RFID协议一致性测试系统发展现状  近年来,RFID技术得以快速发展,已被广泛... RFID协议一致性测试规范是随着RFID协议标准的发展而发展起来的,测试规范的目的即确定被测单元的特性与协议标准的规定一致。ISO和EP
  • 1. RFID协议一致性测试系统发展现状  近年来,RFID技术得以快速发展,已被广泛... RFID协议一致性测试规范是随着RFID协议标准的发展而发展起来的,测试规范的目的即确定被测单元的特性与协议标准的规定一致。ISO和EP
  • 3GPP GCF终端一致性测试 测试用例表 3.50.0_20130426_r002 GCF是由运营商和终端制造商共同成立的一个组织,目的是通过独立的认证过程来确保终端的全球互操作。它包含了主要GSM,UMTS,LTE网络运营商和世界上主流的...
  • 以TD-LTE(时分—长期演进)系统RRC(无线资源控制)实现的协议一致性为目的,并结合TD-LTE协议一致性测试的特点和实际开发经验,设计一种通过开发TTCN-3(测试和测试控制表示法版本3)测试套来验证一致性的新方案。...
  • 本文档提出的目的在于对各终端厂家生产的TD-SCDMA终端和仪表厂家开发的TD-SDCDMA一致性测试仪表应该支持的AT命令提出明确的需求,以方便TD-SCDMA终端一致性测试的进行... ...
  • 本文针对一致性测试,采用形式化的SDL测试语言作为协议标准的描述语言,协议语义不存在二义性,该抽象描述采用标准实用的测试方法和工具实现,达到了简化测试模型,提高测试效率的目的,非常适合于GPRS 协议的软件...
  • 本期给大家介绍的是TC8中的TCP/IP协议一致性测试(以下简称TCP/IP测试)。 TCP/IP测试-设备环境组成 TTworkbench TTworkbench是思博伦旗下一款功能强大的测试自动化平台,它能够提供完整特性的集成式测试开发和...

    前言

    车载以太网测试之石锤系列,之前我们已经从环境设备组成、被测对象组成再到测试过程和测试结果分析,将完整的PMA测试(点此回顾>>)、IOP测试(点此回顾>>)过程做了一个经验分享。本期给大家介绍的是TC8中的TCP/IP协议一致性测试(以下简称TCP/IP测试)。



    TCP/IP测试-设备环境组成

    TTworkbench

    TTworkbench是思博伦旗下一款功能强大的测试自动化平台,它能够提供完整特性的集成式测试开发和执行环境(IDE),可进行测试脚本开发、编译,测试参数配置,测试执行,测试监控,生成测试报告。

    在这里插入图片描述

    图1 TTworkbench平台示意

    TTsuite

    思博伦提供了多种现成可用的货架式测试套装(TTsuite),包括OPEN Alliance SIG一致性测试(TC8),汽车AVB一致性测试,AUTOSAR一致性测试等套装,每个测试套装都包含多种经过验证的测试用例,配合TTworkbench,能够实现车载以太网常见协议的一致性测试的自动化执行。



    C50

    C50是思博伦推出的一款性能强大的硬件,具有第2至3层流量生成和分析能力,可搭配不同的网卡(100BASE-T1、100BASE-TX等)来满足不同用户的需求。通过网线连接至PC后,可实现TTsuite的远程执行,即测试脚本运行在C50中,PC监控测试过程,收集测试数据,生成测试报告等。



    在这里插入图片描述

    图2 C50实物图

    Upper Tester(UT)

    Upper Tester(UT)本质上是一个运行在DUT中的应用,用于辅助测试执行。它能够接收Test System发送的指令,来配置被测协议栈(IUT)的参数,或触发被测协议栈产生某种行为。UT支持的指令和格式遵循AUTOSAR体系下的《Testability Protocol and Service Primitives》规范,目前新版的TTsuite已经支持到了1.2.0版本。

    OEM或供应商可按照规范自行开发和集成UT,也可购买第三方源代码自行集成,或通过第三方服务商来进行开发或集成。目前,北汇信息可提供UT的集成服务。

    在这里插入图片描述

    图3 Upper Tester(UT)工作原理

    TCP/IP测试-被测对象组成

    DUT

    被测设备为实现了TCP/IP协议栈的非AUTOSAR控制器。

    调试接口

    为了更好地监视测试过程,DUT最好能提供一个调试接口,这样UT可通过这个接口输出一些调试信息,以帮助测试工程师更好地判定问题。这个接口可以是串口、SSH、或TELNET等,具体的类型并不限定。

    需要注意的一点是,《Testability Protocol and Service Primitives》目前不支持TC8中的ARP测试,这时候就必须依赖上面提到的调试接口才能进行测试,并需要支持清除ARP动态缓存等配置和功能(详情可面对面沟通)。若提供的是SSH调试接口,可配合TTsuite实现ARP自动化测试,若是其他接口类型,则只能进行半自动化测试。



    TCP/IP测试-测试过程

    测试准备

    • 连接Test System与DUT
    • 加载对应的TTsuite
    • 配置TTsuite参数,如IP地址,MAC地址等
    • 启动UT

    在这里插入图片描述

    图4 配置测试参数

    执行测试

    • 运行测试脚本

    在这里插入图片描述

    图5 测试脚本运行示意图
    • 获得测试数据和测试报告

    在这里插入图片描述

    图6 测试报告示意图

    TCP/IP测试-小结

    我们经常会听到这样的问题,TCP/IP协议栈已经发展了近30年,想必是十分成熟可靠了,那么为什么还要投入精力去测试呢?

    这个问题回答起来很简单,只需要举一个例子即可。

    很多车载信息娱乐域的控制器采用了Linux系统,因为它成熟可靠,性能强大,应用资源丰富,且开源免费。但是对于Linux的TCP/IP协议栈,大多参数都采用缺省的配置,这就使有些特性可能不满足车载的应用要求。比如,任意目的 IP 地址的 ARP数据包都会被Linux接收,而TC8 要求 DUT 应忽略掉这些数据包,以提高安全性。

    这些细节也是做正向架构设计和参数配置需要约束的,是测试带来的价值之一,尤其是在当前摸石头过河的阶段,深入的测试完全可以“反哺”设计,当然这需要对应用场景和协议本身(缺一不可)有足够的认知。

    所以我们想表达的是,TCP/IP更多的是为互联网设计的,它的很多机制只有在海量用户和数据,并且在非常复杂且未知的网络环境下才会起作用,否则可能起到相反的效果。

    我们必须意识到,车内的局域网是相对静态的,封闭的,简单的,我们必须做一些针对性的优化,才能达到更好的网络性能和更好的安全性。而TC8的意义,可能就在于此。



    在这里插入图片描述



    ------------------------------------------------------------------------------------------------------------------------------------------




    喜欢此篇文章的话欢迎一键三联支持小编吧~!

    更多相关资讯及业务介绍,欢迎访问上海北汇信息官方网站:上海北汇信息科技有限公司
    北汇官方知乎账号:北汇信息-知乎
    更多技术干货,行业前沿动态,请关注上海北汇信息官方公众号:
    在这里插入图片描述

    联系方式:

    电话:021-34716271

    邮箱:info@polelink.com

    北汇信息成立于2010年,是一家技术驱动的创新型服务企业。北汇信息始终专注于汽车电子领域的新技术和新产品,为整车厂和零部件企业提供完整的研发、测试解决方案。从测试工具、专用测试设备、完整测试方案到实车测试服务,我们与我们的客户一起努力,让中国的汽车变得越来越安全、越来越舒适、越来越智能。

    展开全文
  • 电口以太网物理层一致性测试原理与过程    关键字: 以太网 物理层 一致性测试  1、 以太网物理层信号特点  以太网对应OSI七层模型的数据链路层和物理层,对应数据链路层的部分又分为逻辑链路控制子层...

    电口以太网物理层一致性测试原理与过程 
     
    关键字: 以太网  物理层  一致性测试
      1、 以太网物理层信号特点
      以太网对应OSI七层模型的数据链路层和物理层,对应数据链路层的部分又分为逻辑链路控制子层(LLC)和介质访问控制子层(MAC)。MAC与物理层连接的接口称作介质无关接口(MII)。物理层与实际物理介质之间的接口称作介质相关接口(MDI)。在物理层中,又可以分为物理编码子层(PCS)、物理介质连接子层(PMA)、物理介质相关子层(PMD)。根据介质传输数据率的不同,以太网电接口可分为10Base-T,100Base-Tx和1000Base-T三种,分别对应10Mbps,100Mbps和1000Mbps三种速率级别。不仅是速率的差异,同时由于采用了不同的物理层编码规则而导致对应的测试和分析方案也全然不同,各有各的章法。下面先就这三种类型以太网的物理层编码规则做一分析。
      1、1 10Base-T 编码方法
      10M以太网物理层信号传输使用曼彻斯特 编码方法,即“0”=由“+”跳变到“-”,“1”=由“-”跳变到“+”,因为不论是”0”或是”1”,都有跳变,所以总体来说,信号是DC平衡的, 并且接收端很容易就能从信号的跳变周期中恢复时钟进而恢复出数据逻辑。

      1、2 100Base-Tx 编码方法
      100Base-TX又称为快速以太网,因为通常100Base-TX的PMD是使用CAT5线传输,按TIA/EIA-586-A定义只能达到100MHz,而当PCS层将4Bit编译成5Bit时,使100Mb/s数据流变成125Mb/s数据流,所以100Base-TX同时采用了MLT-3(三电平编码)的信道编码方法,目的是使MDI的5bit输出的速率降低了。MLT-3定义只有数据是“1”时,数据信号状态才跳变,“0”则保持状态不变,以减低信号跳变的频率,从而减低信号的频率。

     
      100Base-Tx的MAC层在数据帧与帧之间,会插入IDEL帧(IDEL=11111),告诉网上所连接的终端,链路在闲置但正常的工作状态中(按CSMA/CD,DTE数据终端机会检测链路是否空闲,才会发送数据)。事实上链路绝大部分时间,以IDEL“11111”为主,5Bit IDLE“11111”若每个“1”都跳变的话,MDI信号的频率将会是125MHz,但是经过MLT-3编码后,原来的125MHz变成31.25MHz的信号,使频率变成原来的1/4。FCC要求以太网不能产生过大的EMI,因为链路绝大部分时间是传输IDEL,MLT-3编码会使频率集中在31.25MHz范围,因此,在MLT-3编码前,PCS层会对数据流进行伪随机的Scrambling扰码,使“11111”分散,同时将能量与频谱扩散。
      1、3 1000Base-T 以太网编码方法
      1000Base-T在物理层使用5电平4D-PAM编码,每个电平表示5符号-2,-1,0,1,2中的一个符号,每个符号代表2比特信息(其中4电平中每个电平代表2比特位,分别表示00,01,10,11,还有一个电平表示前向纠错码FEC),这比二电平编码提高了带宽利用率,并能把波特率和所需信号带宽减为原来的一半(125Mbps)。但多电平编码需要用多位A/D,D/A转换,采用更高的传输信噪比和更好的接收均衡性能。
      五个符号与电平的映射关系为:-2->-1, -1->-0.5, 0->0, 1->0.5, 2->1。

      1000Base-T采用了UTP里所有的4对线,并且同时收发,在全双工的模式下,加上使用4D-PMA5编码方法实现1000MB/s的数据传输率。每对线的数据率为100Mb/s,经8b/10b编码后变为125Mb/s。每个Baud波特码元代表两个比特的信息,4对线的总带宽为
      • 125Mb/s x2 x4=1000Mb/s
      所以,尽管是千兆速率,但实际上对示波器的带宽要求只需能高保真采集125MHz信号即可,原因就是每对线上实际传输率是125Mbps。
      2、 测试参数说明
      负责制定以太网标准化规范的是IEEE学会下属的802.3委员会,该规范的一部分内容就是标准测试流程,包括需要分析的参数集、测试工具的使用、结果如何判定等,目的是保证世界上各个不同厂家生产的以太网产品能满足“互操作性”。三种速率以太网物理层由于编码方法不同,自然而然也就有完全不同的测试规程。下面逐一解释标准测试集中各参数的具体含义。
      2、1 10 Base-T测试项目
       DOV Mask and Voltage Test(差分输出电压的模板以及电压测试)
      • DOV Mask MAU Ext for external MAU testing ( MAC 模块与PHY模块分离情况下的差分输出电压模板测试)
      • DOV Mask MAU Ext Inv for external MAU testing of the negative-going pulses ( MAC 模块与PHY模块分离情况下的差分输出电压负脉冲模板测试)
      • DOV Mask MAU for internal MAU testing ( MAC 模块与PHY模块集成情况下的差分输出电压负脉冲模板测试)
      • DOV Mask MAU Inv for internal MAU testing of the negative-going
      pulses( MAC 模块与PHY模块集成情况下的差分输出电压负脉冲模板测试)
       Link Test Pulse Mask (链接脉冲测试)
      • Link Test Pulse head Mask (链接脉冲帧头模板测试)
      • Link Test Pulse tail Mask (链接脉冲帧尾模板测试)
       TP_IDL Mask Test (空闲信号模板测试)
      • TP_IDL Head Mask(空闲信号帧头模板测试)
      • TP_IDL Tail Mask (空闲信号帧尾模板测试)
       Output Timing Jitter (输出抖动测试)
      • Output Timing Jitter 8 BT (触发点后8 bit的抖动测试)
      • Output Timing Jitter 8 BT (触发点后8.5 bit的抖动测试)
      2、2 100Base-Tx测试项目
       Mask Test (眼图/模板测试)
       Jitter(抖动测试)
       Duty cycle distortion (占空比失真)
       Amplitude, Symmetry, and Overshoot(信号幅度,对称性,以及过冲测试)
       Rise and Fall Time(信号上升,下降时间测试)
      2、 3 1000Base-Tx测试项目
       测试模式1:模板测试、峰值电压测试、衰落测试
      模式1信号是由+2,然后接着127个0,-2,然后接着127个0,+1,然后接着127个0,-1,然后接着127个0,接着是128个+2,128个-2,128个+2,128个-2,最后是1024个0。
      验证的目的是:
       接口有否驱动足够的能量将信号传送100米距离。
       上升时间是否足够快得以实现快速的数据交换
       接口有否发射过多的EMI,超过FCC Class A的要求
       信号是否对称,即A与B,C与D是否对称

       对测试模式1信号的F点500nS后的G点以及H点500nS后的J点,测量他们的电压验证插入磁损耗是否过大。规范要求,G点的幅度需要大于73.1% F点的幅度,同样J点的幅度需要大于73.1%H点的幅度。
       测试模式2:主模式抖动
       测试模式3:从模式抖动
       测试模式4:波形失真测试、共模输出电压
      3、测试配置
      3、1 示波器的选择
       10/100M 以太网电口测试
      要求示波器带宽高于400MHz,支持型号有力科WaveRunner 6Zi,WavePro 7Zi-A,WaveMaster 8Zi-A,LabMaster 10Zi系列。
       1000M 以太网电口测试
      每路数据线传输速率是125Mbps;
      示波器主机带宽至少为 1GHz;
      支持型号包括 WaveRunner 610Zi ~ 640Zi;WavePro 7Zi-A,WaveMaster8 Zi-A,LabMaster 10Zi。
       1000M 以太网电口测试
      每路数据线传输速率是125Mbps;
      示波器主机带宽至少为 1GHz;
      支持型号包括 WaveRunner 610Zi ~ 640Zi;WavePro 7Zi-A,WaveMaster8 Zi-A,LabMaster 10Zi。
      3、2 测试夹具
      测试夹具的主要功能是将双绞线信号转换成示波器能够直接识别的探头或通道信号。
      力科为测试工程师提供的新型以太网测试夹具TF-ENET-B,具有优势特性包括:
      * 同时支持10/100/1000Mbps三种 以太网速率级别
      * 免探头设计,只需使用SMA线缆,降低费用,操作便利
      * 高信号质量转发,支持全部以太网测试项目

      3、3 测试报文生成
      802.3标准委员会规定,完全测试以太网必须DUT(被测设备)发出专门的测试报文,物理层PHY芯片内部都有测试寄存器。底层驱动设计工程师通过编程置位此寄存器,PHY芯片就会向UTP线路上发出特定的测试序列报文。有些厂商,比如Intel和Realtek公司提供高层应用软件,允许测试人员能够直接操作以Intel(或RealTek)以太网芯片为核心处理单元的网卡,并驱动该网卡发送特定测试序列报文到双绞线,示波器采集这种测试序列并加以后处理与分析!
      4. 力科以太网物理层测试方案
      力科的以太网物理层信号测试和分析解决方案包括全系列带宽的数字示波器、串行数据分析仪、测试夹具和功能强大、易于使用的QualiPHY软件包,其具有的优势特性包括:
      4.1、用户可定制测量项目
      完整的一致性测试包含十几个甚至几十个项目,但不是每次测试都要遍历全部项目。

     
      QualiPHY软件支持用户可定制化测试项目,可以选择单个或多个项目分别测试,从而大大提高了灵活性。图5描述的是100Base-T测试项目定制窗口。
      4.2、 自动化测试
      根据选择好的测试项目,QualiPHY 随即展开一系列自动化测试过程:自动设置示波器工作参数包括采样率、存储深度、采集时间、纵轴刻度、触发电平等;自动定义测量参数;自动调用第三方软件如Matlab 对波形运算,自动分析波形和测量结果,自动输出分析结果,整个测试过程完全是自动化的,无需任何人工干预。在测试过程中会同步显示测试状态和过程提示。
      4.3、图表化提示
      QualiPHY 软件的用户界面设计非常人性化和直观实用,它会以图表化的方式显示出一致性测试的每个环节中测试夹具、示波器主机和DUT 三者之间的拓扑关系,使用者无需记忆,就能正确设置测试环境。下图7 清晰 显示了100Base-T 测试中的夹具、DUT 和示波器连接关系。

     
      4.4、自动分析测量数据
      示波器采集波形并按规程测量参数后,QualiPHY 软件会自动将其与标准值做对比,并输出此参数通过或失败的结论。下图8 展示了QualiPHY 软件包对上升时间分析的结果,实际测量值为4.323ns,802.3 标准合格范围是3ns 到5ns,显然此参数测试通过。

     
      4.6、自动输出报告
      QualiPHY 软件在完成所有指定项目的测量和分析任务后,会自动生成美观、实用、符合标准规范的测试报告,如图9所示,报告格式可以选择是XML、HTML或PDF格式。节省了编写测试报告的时间,工程师就可以把更多精力放在产品设计上,而不是测试上。

    分享到: QQ空间 新浪微博 腾讯微博 人人网 更多 0
    (本文转自电子工程世界:http://www.eeworld.com.cn/Test_and_measurement/2014/0722/article_9221.html)

    展开全文
  • 保证性能测试与真实生产环境的一致性,具体从以下三个方面来看: 1、硬件环境,包括服务器环境、与网络环境  如服务器的型号以及是否和其它应用程序共享此服务器,是否在集群环境下,是否通过BIGIP进行负载均衡,...

    保证性能测试与真实生产环境的一致性,具体从以下三个方面来看:

    1、硬件环境,包括服务器环境、与网络环境

      如服务器的型号以及是否和其它应用程序共享此服务器,是否在集群环境下,是否通过BIGIP进行负载均衡,客户使用的硬件配置情况,使用的交换机型号,网络传输速率。

     

    2、软件环境

    版本一致性

      包括包括操作系统、数据库、中间件的版本,被测系统的版本。

    配置一致性

      系统(操作系统/数据库/中间件/被测试系统)参数的配置一致,这些系统参数的配置有可能对系统造成巨大的影响。所以,除了保证测试环境与真实环境所使用的软件版本一致,也要关注其参数的配置是否一致。

     

    3、使用场景的一致性

    基础数据的一致性

      包括预测的业务数据量,以及数据类型的分配。很简单的一个列子,一个系统的数据库只有10条数据和一条数据库里几千万条数据,我们在对其进行性能测试时,得到的性能指标可能会有非常大的差别。

      为了保证每次测试环境的更加一致性,磁盘的使用情况以及磁盘的碎片情况也会或多或少的影响的性能。

    使用模式的一致性

      尽量模拟真实场景下用户的使用情况,其实,我们在做性能测试前期的需求分析,其主要目的也就是为了更真实的模拟用户的使用情况。

    如何压测保证压测的用户数?

            不同的工具对应的能够产生的压测是虚拟用户数是不一样的。比如Loadrunner单机500个左右(4g),locust单机能够支持几千。最后采用压力机的方式根据需要产生高并发。

    如何保证服务器的资源是充足的?

            答案是多增加几台服务器!

            不管是直接采用nginx负载均衡,还是采用node集群的方式。

         对于较大的系统来说,单台服务器的处理能力是有限的,通常都会采用集群的方式来进行负载均衡,完成对海量请求的处理。虽然无法获得整体集群的测试环境,但是可以对集群上的一个节点进行性能测试,得出该节点的处理能力,再计算每增加一个节点的性能损失,同样也可以能过建模的方式得到大型负载均衡情况下的预计性能指标。

      例如:首先在单台服务器上获得具体的性能指标,每台服务器能够承受500用户并发,平均TPS为60,响应时间为2秒,接着,添加负载均衡策略,再次测试负载策略下的数据损耗。得出数据后添加1台负载均衡服务器,测试在两台服务器下每台服务器的性能指标,以此类推,可以得到下表:

      随着负载均衡服务器的添加,平均每台服务器的处理能力会逐渐稳定,从而了解在什么情况下需要多少台负载均衡服务器。

      对于测试环境的搭建,建议生成专门的文档进行管理,并进行配置管理,确保对测试环境做到基线控制。

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • 看到别的博客说,一致性是事务的最终目的,原子性、隔离性、持久性都是为了实现一致性。 在这里,我打算验证一番。 怎么验证呢? 假设,这个事务系统如果是由我们来设计的话。 首先,场景是这样的,小范转100块...

    (PS:黄色字体为二次修改的内容)

    关于事务的一致性,《数据库系统概念》中是这样描述的

    第二段说的三个特性是指原子性、隔离性、持久性。

    就算这样,相信大家也是懵懵的,我也是,所以才会写下这篇博客。

    看到别的博客说,一致性是事务的最终目的,原子性、隔离性、持久性都是为了实现一致性。

    在这里,我打算验证一番。

    怎么验证呢?

    假设,这个事务系统如果是由我们来设计的话。

    首先,场景是这样的,小范转100块钱给小黄,那么这个事务系统必须要保证小范扣了100块钱,而且小黄也必须要加了100块钱。

    这个我们要怎么保证呢?

    有了,我们可以先用一本本子记下来,小范扣100块钱,小黄加100块钱,然后,我们再根据本子上写的,顺序执行,这样的话,小范或者小黄就没法耍赖了。

    OK,那么我们现在就开干,把这个事务系统开发出来,下面是伪代码:

    //事务系统
    abstract class transaction{
    
        void transaction(){
    
            /* todo:将所有操作写进日志
             * args: 事务名称, 事务操作, 事务写入状态(0 未写完 1已写完)
             */
            setLog("小范转100块钱给小黄", "小范-100", 0);
            setLog("小范转100块钱给小黄", "小黄+100", 1);
    
            //获取日志
            Log logs = getLog("小范转100块钱给小黄");
    
            //解析日志,获取操作事件
            Event events = parseLog(logs);
            
            //执行操作并回写日志状态标记该事务已完成
            doEvent(events, logs);
    
        }
    
    }

    OK,系统开发出来了,我们把它应用上去跑起来试下。

    但是,可能是因为计算机内存不够,系统跑到一半,闪退了。。。

    也就是doEvent的时候,小范扣了100块钱,这个时候闪退了。。。

    上数据库一看,完了,小范已经扣了100,但是小黄并没有增加100,事务也没有执行下去。

    所以我们这个事务系统是有问题的,我们的事务系统,应该要保证小范扣100,而且小黄也要加100,我们姑且称这种状态为一致性,因为我们要保证这两个操作对数据而言是一致的嘛。

    从目前来看,我们这个事务系统,没有完全实现一致性,那如果发生了这种状况,系统闪退停机等等异常情况,我们该怎么处理,才能保证一致性呢?

    有了,我们可以在日志中多加一个状态,用来标记该操作有没有执行,然后用一个定时器,每隔几秒找出日志中没有完成的事务,把它执行完,这样一来,就能保证小范扣了100,小黄加了100了,哪怕中途停机了,也能用定时器把事务执行完。

    就这样测试了十来次,结果跟操作都一致,确实能保证一致性了,就正式给用上生产环境了。

    可是才不到一天,就出问题了,怎么呢?有个业务,小张向老李转账300元,可是小张的账户上只有298,该死的初级程序员又没有对小张的金额作校验,直接就给执行了。

    这下小张的账户余额变成了-2,老李的账户变成了300。闹了个大笑话。

    这虽然主要责任不在我们开发的事务系统,但是,我们也要做处理,也就是在小张的余额做加减的时候,减成了负数,这个时候程序应该需要抛出异常的,不能让程序再执行下去了,所以,这就需要我们的事务系统,可以在执行到一半的时候,回滚到初始状态。

    也就是说,如果同一个事务中,有操作ABC三个顺序操作,操作A成功了,操作B失败了,那这操作C还要执行吗?当然不能,这种情况,B失败了,我们就只能把A给回滚到操作之前。

    这样一来,我们这个事务系统就是,要么事务都完成,要么事务都不完成,我们姑且就把这个叫做原子性吧。

    增加了原子性的功能后,事务系统又开始跑了。

    过了几天,又出问题了,怎么呢?原来啊,小范有300块钱,小张向小范转了500块钱,事务还没操作完呢,小刘又给小范转了300块钱,这样一来,问题就来了,小张给小范转500,本应该事务结束的时候小范有800块钱,可是小刘又给小范转了300,还是用小范原有的300去增加的,这样一来,小刘的事务结束,小范就有600块钱,小张的事务执行完,把800写回给小范,接着,小刘的事务也执行完,把600写回给小范,导致最终小范账上只有600块钱,小张的500被吞了。

    这样,数据完全混乱了。问题出在哪呢?在于小张事务执行的时候,读取到小范有300,事务没完,小刘也读取到小范有300,这样就错乱了,我们应该要让小张在转账的时候,小刘要等小张转完了,才能转。这样,才能解决掉数据混乱的问题,我们,姑且把这个叫做隔离性。

    隔离性修复完之后,项目又开始运作了,事务系统运行了很长一段时间,也没有出现问题。

    到这里,验证就结束了,上面写日志的行为其实就是事务的持久性,也可以看到,上面出现的隔离性、原子性、持久性,也都是为了彻底实现一致性而产生的。

    所以,总的来说,一致性是一个比较笼统的概念,是事务的基础,一致性和原子性的区别就是,原子性强调的是操作的完整,要么都成功、要么都不成功,而一致性包含的比较多,数据的一致性啊等等。

    不过其实,我觉得一致性不应该跟原子性、隔离性、持久性放在一起,因为这三个都是为了实现一致性,如果有大佬知道,麻烦跟我说下原因。

    到这,本文就结束了,写的真的不是很好,以后,要是我对事务一致性、原子性有了新的理解,我会再回来修改的,也欢迎各位大佬留言或者私聊我,给我写关于一致性的启发。

    知乎上有个回答也是写的蛮好的,大家可以看看,https://www.zhihu.com/question/30272728

    展开全文
  • 单元测试之测试目的

    千次阅读 2007-04-03 16:14:00
    在javaeye学习一段时间单元测试后,虽然测试的文章不多,但都是经典帖子。同时也发现这里面讨论的关注点大部分是对测试的目。对于该怎么测试,怎么样...做事往往要带很强的目的性去做才可以成功,单元测试也不例外单元
  • ASPICE对追踪性和一致性要求

    千次阅读 2019-02-20 21:11:31
    Automotive SPICE PAM V3.1中对双向追踪性和一致性要求主要在系统系统工程过程组、软件工程过程组、变更管理过程以及相关管理过程中。 双向追踪性和一致性整体要求如下: 系统工程和软件工程过程中,双向追踪性...
  • Raft 一致性算法论文

    万次阅读 2019-05-17 09:52:13
    本篇博客为著名的 RAFT 一致性算法论文的中文翻译,论文名为《In search of an Understandable Consensus Algorithm (Extended Version)》(寻找一种易于理解的一致性算法)。 Raft 是一种用来管理日志复制的一致性...
  • 黑盒测试目的: 1、是否有不正确或遗漏的功能。 2、数据或者参数上,输入能否正确接收?能否输出正确的结果。 3、是否有数据结构错误或外部信息(例如数据文件)访问错误。 4、性能上是否能够满足要求。
  • 移动端UI一致性解决方案

    万次阅读 多人点赞 2020-11-26 20:00:21
    总第424篇2020年 第48篇外卖UI一致性项目是外卖UI设计团队与研发团队共建的项目,目的是改善用户端体验的一致性,提升多技术方案间组件的通用性和复用率,降低整体视觉改版带来的研发成...
  • 数据库中原子性,隔离性,一致性如何实现
  • 应用场景  1. 数据库分表分库规则,数据库服务器扩容降低对之前原有数据库数据的影响,并达到负载的均衡。  2. 分布式缓存负载算法规则,缓存数据库扩容降低对... 一致性Hash:加入一个新节点,对已存在的节点的影
  • 10分钟带你了解一致性hash算法

    千次阅读 多人点赞 2019-03-30 18:33:10
    文章目录环境描述场景描述以下是运算原理图:一致性hash算法概念一致性hash算法的优点hash环偏斜问题虚拟节点 环境描述 在了解hash算法之前先去了解一下缓存中的一个应用场景,再来理解一致性hash算法就会简单很...
  • 单元测试目的及使用

    万次阅读 2019-07-05 14:46:06
    单元测试是代码正确验证的最重要的工具,也是系统测试当中最重要的环节。也是唯一需要编写代码才能进行测试的一种测试方法。在标准的开发过程中,单元测试的代码与实际程序的代码具有同等的重要。每一个单元测试...
  • 分布式缓存的一致性Hash的Java实现

    千次阅读 2016-12-24 22:27:48
    分布式缓存的一致性Hash的Java实现关于分布式缓存一致性Hash算法的原理,有很多书籍、博客都有详细的介绍。本文主要是想对一致性Hash算法进行一个小小的实现,方便自己更好的理解。算法的具体原理如下:先构造一个...
  • ZooKeeper一致性原理

    千次阅读 2016-06-07 22:34:16
    ZooKeeper学习第七期--ZooKeeper一致性原理 一、ZooKeeper 的实现 1.1 ZooKeeper处理单点故障 我们知道可以通过ZooKeeper对分布式系统进行Master选举,来解决分布式系统的单点故障,如图所示。 ...
  • 凌晨一点半的深圳雨夜: 引用上一篇文章: ...在这篇文章中,我将一个spinlock拆解成了per cpu的,然而并没有提及spinlock本身的性能和可伸缩(scalable),那么本文就来说一下。 一点说明 正...
  • DMA导致的CACHE一致性问题解决方案

    千次阅读 2018-08-21 18:10:07
    先简单说一下DMA的CACHE一致性是个啥问题。 复制:   CPU在访问内存时,首先判断所要访问的内容是否在Cache中,如果在,就称为“命中(hit)”,此时CPU直接从Cache中调用该内容;否则,就 称为“ 不命中”,CPU...
  • 随机抽样一致性;RANSAC;Random Sample Consensus: A Paradigm for Model Fitting with Applications to Image Analysis and Automated Cartography
  • 一、为什么要用白盒测试 白盒测试能够或更容易发现黑盒测试发现不了的问题 二、什么是白盒测试 ...三、白盒测试目的 保证程序中所有关键路径的测试,防止由于没有执行的路径在实际投入运行后执行到意外...
  • 性能测试目的与类型

    千次阅读 2014-09-28 11:27:46
    1.1 性能测试目的 性能测试的最终目标是为了最大限度的满足用户的需求,我们通常为了达到以下目标而进行性能测试: (1)评估系统的能力:测试中得到的负荷和响应时间数据可以被用于验证所计划的模型的能力,并帮助...
  • 一致性Hash算法的深入理解

    万次阅读 2016-09-05 16:35:49
    关于一致性Hash算法,在我之前的博文中已经有多次提到了,MemCache超详细解读一文中”一致性Hash算法”部分,对于为什么要使用一致性Hash算法、一致性Hash算法的算法原理做了详细的解读。 算法的具体原理这里再次...
  • Raft 是一种为了管理复制日志的一致性算法。它提供了和 Paxos 算法相同的功能和性能,但是它的算法结构和 Paxos 不同,使得 Raft 算法更加容易理解并且更容易构建实际的系统。为了提升可理解性,Raft 将一致性算法...
  • 数据库一致性、完整性

    万次阅读 2016-11-20 13:09:44
    来源: http://www.zybang.com/question/e23cf724ee5a0d00d2cba4f9ccb2d23b.html ... ...数据完整(data integrity)是 ... 指数据的精确(accuracy) 和可靠(reliability)。它是应防
  • 目的:事务一致性 组网图:不涉及 工具:java version “1.8.0_65” ;Apache Maven 3.6.3;mysql-5.7.26;IDEA版本 2018.3 (准备步骤见本人其它博文); 简介:Springboot中使用@Transactional完成...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 238,056
精华内容 95,222
关键字:

一致性测试的目的