为实现智能车载软件的快速开发,包含面向服务的设计过程,应对不断测试过程中出现的新场景的快速迭代,满足客户千人千面的需求,缩短整个汽车开发周期。此外,通过软件的快速部署,软硬分离,软件重组,应用新增,实现外部资源的有效整合,增加车辆服务的丰富性。
此外,对于上述大数据交互来说,也需要设置相应的交换传输单元进行相应的数据交换。这些交换单元包括PCIe Switch、Ehternet Switch、TSN Switch;其中,PCIe Switch满足算力芯片之间的实时大数据交互;解决高带宽、低延时的痛点需求实现任意端到端之间的数据传输,且带宽在20Gb/s以上,物理隔离,单点失效不影响系统失效。TSN Switch具备CAN/CANFD/LIN到以太网的双向传输协议转换功能。实现了TSN协议中的NC/EE/BE不同优先级数据流转发和数据交换。可兼容其它符合车载规范的TSN设备。Ethernet Switch 用于连接以太网之间或者以太网与快速以太网之间的交换机,该交换机通过物理编址、网络拓扑结构、错误校验、帧序列以及流控,从而节省了资源和时间,提高了数据传输的速率。
这里我们需要说明一下,集中式域控设计中需要支撑SOA实现的技术载体。包括了面向服务的通信SOC:DDS、SOME/IP等及服务接口定义和实现;同时面向服务的软件架构支撑SOSA:如AP,是可满足功能安全的一定实时性要求的方案;面向服务重用共享架构设计SORS:自上而下与自下而上的结合,保证服务重用共享以及扩展;基于SOA范式的产物包含了服务实现的代码/模型,集成了(服务代码+SOC代码+支持SOSA系统环境)的控制器,整车由该控制器组成的子系统。下图显示了一种典型的对域控来说基于SOA从系统设计到代码实现模型的流程图。

首先,是需要进行整车层面分析,使得整个过程更加智能(如自动/辅助驾驶、人车监测)、更加友好(如语音控制、娱乐冲浪)、更加灵活(如功能升级);其次,是要进行系统层面分析,包括传统基于信号的分布式功能实现,基于高内聚低耦合的服务及服务组合实现,实现混合异构。在下一层是进行部件层面分析,包含ECU功用和形态分析,即实现“阶层”分化。首先是核心阶层、大脑级,包含域控制器、计算平台多系统多处理器AP+CP,应用服务的提供者和消费者,大网关。桥梁中枢,新生代的区域控制器(VIU类),大量通信端口与IO同时存在,CP;区域网关/代理网关(S2S),兼顾区域部分控制功能,提供基本服务和扩展服务。延续过度,夹心层:底盘控制、被动安全类,典型嵌入式系统,功能安全即实时性要求高的系统;终端层包含传感器及执行器等。2、基于SOA服务的终端测试方法论对于SOA的测试来说,首先需要建立和适配测试规范。我们知道,整个测试的分层包括部件、系统、实车。其中部件和系统级别包括验证功能等行为是否与需求规范一致;对于实车来说需要确认是否满足用户、法律法规等需求。测试的关键是基于需求规范、用户使用、行业法规和标准角度开发测试用例;基于经验和场景开发测试用例和被测对象。增量和变量需求包括新车载通信技术SOME/IP、DDS、TSN、同步CAN等;新增测试类别包括服务接口测试;新增形态和载体包括服务、S2S、异构型域控/HPC、ZCU/VIU/PDC;新功能和应用场景包括个性化配置、远程诊断、网络/数据安全等。整个测试规范的开发包括,新的车载通信技术测试、服务接口测试、服务“逻辑”测试。
这三大测试包括SOME/IP中的TC8的协议一致性测试、基于自定义需求规范和配置规范,开发测试规范,源自经验的鲁棒性和场景测试;DDS中有基于自定义需求规范和配置规范,开发测试规范,如端到端延时、QoS配置不兼容等;TSN中针对AS、开发测试规范及启动、延迟、稳定性等方面的测试。服务接口测试包含基于服务接口规范开发基础服务、扩展服务和应用服务接口定义的一致性测试,消息时序、数据合法性和鲁棒性测试。服务逻辑测试主要是按照不同层级的需求建立部件级、系统级和实车级测试规范,越向上层,测试用例复用度越高。基于SOA特点,将实现机制、应用场景相结合,在不同层级增加测试用例,如可引起资源消耗场景,端到端服务稳定性和交互响应性能测试,服务与信号转换的性能测试。
其影响是在部件级测试中,针对核心控制器的自动化测试更重要,而测试环境的复杂度取决于ECU处于何种阶层。系统级测试则更为重要,环境复杂取决于功能实现方式和分配方案。整车级测试是对传统大VV HIL将一定程度弱化。通常,HIL测试系统常规硬件IO的比重大幅降低,通信资源类型和数量更多,特殊需求采用特殊方案;如TSN、LVDS等专门的通信测试。而对于HIL测试系统软件及工程开发而言,测试系统软件的适应性、扩展性更为关键,这主要可以降低二次开发工作量:如对SOME/IP、DDS、HTTP、MQTT等协议支持。另一方面,仿真环境开发工作将增加:如需要搭建SOME/IP、DDS“参考ECU”的“交互行为”开环模型。对CI/CT的支持:包括系统远程/云端控制、实时监测和自我保护;支持被测对象的远程刷写和编码;支持软件迭代变更点与测试范围的关联等。对于整个SOA测试而言,其测试手段主要包括虚拟ECU测试技术,其中需要了解实现原理、其适应对象分析、前提条件分析、实现关键技术构建等。同时使用汽车行业主流工具链对前端模型、软件代码进行有效测试,同时除“在线”自动化测试外,基于数据的“离线”测试也成为可选和补充。为了保证测试颗粒度更细,可以通过将测试工作前移,快速构建,适配性强,适应“适合于”汽车领域的敏捷开发。
如下图表示了针对基于SOA服务模型开发过程中,典型的服务接口测试规范实例。可以看出整体的SOA测试规范、步骤和需求结果。

很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
我正在尝试使用ruby和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我
我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..
我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当
我有一个围绕一些对象的包装类,我想将这些对象用作散列中的键。包装对象和解包装对象应映射到相同的键。一个简单的例子是这样的:classAattr_reader:xdefinitialize(inner)@inner=innerenddefx;@inner.x;enddef==(other)@inner.x==other.xendenda=A.new(o)#oisjustanyobjectthatallowso.xb=A.new(o)h={a=>5}ph[a]#5ph[b]#nil,shouldbe5ph[o]#nil,shouldbe5我试过==、===、eq?并散列所有无济于事。
在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',
我有一些Ruby代码,如下所示:Something.createdo|x|x.foo=barend我想编写一个测试,它使用double代替block参数x,这样我就可以调用:x_double.should_receive(:foo).with("whatever").这可能吗? 最佳答案 specify'something'dox=doublex.should_receive(:foo=).with("whatever")Something.should_receive(:create).and_yield(x)#callthere
Sinatra新手;我正在运行一些rspec测试,但在日志中收到了一堆不需要的噪音。如何消除日志中过多的噪音?我仔细检查了环境是否设置为:test,这意味着记录器级别应设置为WARN而不是DEBUG。spec_helper:require"./app"require"sinatra"require"rspec"require"rack/test"require"database_cleaner"require"factory_girl"set:environment,:testFactoryGirl.definition_file_paths=%w{./factories./test/
最近,当我启动我的Rails服务器时,我收到了一长串警告。虽然它不影响我的应用程序,但我想知道如何解决这些警告。我的估计是imagemagick以某种方式被调用了两次?当我在警告前后检查我的git日志时。我想知道如何解决这个问题。-bcrypt-ruby(3.1.2)-better_errors(1.0.1)+bcrypt(3.1.7)+bcrypt-ruby(3.1.5)-bcrypt(>=3.1.3)+better_errors(1.1.0)bcrypt和imagemagick有关系吗?/Users/rbchris/.rbenv/versions/2.0.0-p247/lib/ru
在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo