ATS平台保存的测试数据类型
什么是ATS
ATS(AcceptanceTestSpecification)是由AUTOSAR释放的针对AUTOSAR不同软件组件的标准测试规范。根据软件类型的不同,ATS分为了应用测试(Applicationlevel)和总线测试(Buslevel):
·应用测试包括了例如RTE,BSW服务等组件的测试
·总线测试包括了CAN,LIN,FlexRay,Ethernet等总线的测试,也包括了更高层级协议的测试,比如网络管理,诊断通信等协议的测试
为什么需要ATS
我们知道AUTOSAR的通信协议栈(CommunicationStack)是高度可配置的。对于同一协议栈,不同的用户会根据其具体项目中的应用需求来进行针对性的配置。
站在测试的角度,如果我们对这些不同配置的软件都进行单独的测试,这无疑存在很多重复性
的工作,因为软件模块的基础都是相同的,只是因为配置的不同才产生了多种不同的变体。
于是我们把这些基础的和共性的需求梳理出来,并开发测试规范进行覆盖,这样在不同的项目中就不必再重复的执行这些测试了,而这些测试就是ATS定义的内容。
这样做的益处是显而易见的:
·站在OEM的角度,他们不需要自己去开发和维护这些测试规范,甚至都不需要执行这些测试,只需审核供应商提交的报告
·站在供应商的角度,针对同一软件组件的“标准接受性”测试只需要执行一次(针对同一硬件平台和编译环境)
·站在测试服务商的角度,测试脚本只需开发一次,来自不同供应商的软件可以复用同一测试脚本主体。
所以不管站在谁的角度,这都极大的降低了测试的成本和工作量。
ATS在整个测试活动中的位置与作用
图1:AUTOSAR软件组件完整测试活动示意
般来说,AUTOSAR软件组件一般经过如下几个阶段的测试:
·UnitTests
单元级别的白盒测试。
·StandardAcceptanceTests
ATS定义的测试内容,可由第三方的测试服务商(TestHouse)完成,OEM可要求供应商来提交ATS的测试报告,作为“准入条件”。该要求由OEM制定,AUTOSAR并没有强制要求。
·OEMSpecificQualificationTests
由OEM根据自己的企业标准或需求定制的测试,作为“认证”测试。只有经过“认证”的软件才可以在具体的项目中使用。和ATS类似,这个阶段也不包含配置相关的验证,所以测试方法可以参考ATS,也可在ATS的基础上进行扩展。
·ProjectSpecificTests
与具体项目有关的配置测试。
因为ATS只覆盖了非常基础的和共性的需求,项目相关的或配置相关的需求都不在范围之内,覆盖度是非常有限的,所以ATS只能作为初步的验收测试,不能取代其他测试。就这一点来说,TC8也是类似的。
ATS中针对车载以太网的相关测试
ATS中涵盖了TCP/IP的IPv4,UDP,TCP三个部分,分别定义在AUTOSAR_ATS_IPv4,AUTOSAR_ATS_UDP,AUTOSAR_ATS_TCP三份规范中。
tcpip协议是一组协议的统称
相信不少人有这样的疑问:为什么ATS中没有ARP,ICMP,DHCP等等这些内容?
经过上面几个部分的介绍,答案应该显而易见,那就是ATS中只覆盖基础的和共性的需求,而ARP,ICMP,DHCP等部分目前不属于这个范围,如果OEM有相关的需求,需要自行开发测试规范。
关于更多AUTOSAR架构下的TCP/IP特点分析,以及AUTOSAR架构下TCP/IP是如何优化配置使其更加适用于车内网络的话题,请持续关注北汇信息后续的分享。
ATS规范体系中有一篇要特别介绍一下,那就是:
AUTOSAR_PRS_TestabilityProtocolAndServicePrimitives。
这篇文档中定义了一种测试桩(TestStub)协议,用来支持车载以太网的测试,也就是我们常说的UpperTester。我们在做TC8TCP/IP测试时用到的UpperTester,一般也是按照这份规范去开发的。更多关于UpperTester的内容,可参考之前的文章TC8车载以太网一致性测试中的介绍。
ATS与TC8
因为ATS本身属于AUTOSAR体系,所以ATS一般只适用于AUTOSAR节点。而TC8并没有对测试对象做要求,不论是AUTOSAR节点还是非AUTOSAR节点,都可以依照TC8进行测试。
但是有一点需要注意,有些商用AUTOSAR协议栈自带的UpperTester(也称ETM)一般只能满足ATS中定义的测试,也就是只包含IPv4,UDP,TCP三个部分,如果需要完整的执行TC8的ARP,ICMP,DHCP等测试,需要进行额外的开发。
在TCP/IP的测试环境和测试方法方面,ATS与TC8并无本质的区别,可参考之前的文章
AUTOSARATS与OPENTC8的覆盖度对比
家可能有这样的疑问,针对ATS与TC8重叠的部分,所对应的测试脚本是否可以复用呢?答案是否定的,因为测试用例虽覆盖了相同的需求,但测试用例的设计方法不尽相同,所以测试脚本是不能完全复用的。
ATS测试实践
展示了AUTOSARATSTCP部分的测试报告。
AUTOSARATSTCP的测试报告示意
可以看到TCP部分共有44条测试用例,其中有如下2条失败的条目。[ATS_TCP_00408]IUTsendsanACKafterreceivingadatasegmentinFIN-WAIT-1state[classifier:MAY]
[ATS_TCP_00409]IUTsendsanACKafterreceivingadatasegmentinFIN-WAIT-2state[classifier:
MAY]
我们来分析一下失败的原因
这两条测试用例分别验证了DUT作为TCP客户端时在FIN-WAIT-1和FIN-WAIT-2状态下接收数据的能力。
当客户端准备关闭连接时,会立即发送FIN,ACK来通知服务端,之后立即进入FIN-WAIT-1状态,当服务端应答之后,客户端会进入FIN-WAIT-2状态。
理论上,当TCP客户端发送FIN,ACK之后,就意味着客户端已经没有数据要发送了,但是此时还应具备接收数据的能力,也就是连接处于“半双工”(half-duplex)的状态,若此时收到服务端发送的数据,客户端应能够正确应答

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。