最后更新:2022-08-02 08:59:22 手机定位技术交流文章
什么是ATS
ATS(Acceptance Test Specification)是由AUTOSAR释放的针对AUTOSAR不同软件组件的标准测试规范。根据软件类型,ATS分为了应用测试(Application level)和总线测试(Bus level):
应用测试包括测试组件,例如RTE和BSW服务
· 总线测试包括了CAN,LIN,FlexRay,Ethernet等总线的测试,也包括了更高层级协议的测试,比如网络管理,诊断通信等协议的测试
为什么需要ATS
我们知道AUTOSAR的通信协议栈(Communication Stack)是高度可配置的。对于同一协议栈,不同的用户会根据其具体项目中的应用需求来进行针对性的配置。
站在测试的角度,如果我们对这些不同配置的软件都进行单独的测试,这无疑存在很多重复性的工作,因为软件模块的基础都是相同的,只是因为配置的不同才产生了多种不同的变体。
因此,我们汇编了这些基本的统一要求,并制定了测试规范,以涵盖这些要求,以便不需要在不同的项目中重复这些测试,这是ATS定义的内容。
这样做的好处很明显。
从 OEM 的角度来看,他们不需要自己开发和维护这些测试规范,他们甚至不需要进行这些测试,他们只需要核查供应商提交的报告
·从供应商的角度来看,同一软件组件的“标准接受”测试仅一次(适用于同一硬件平台和编译环境)
·从测试服务提供商的角度来看,测试脚本只能开发一次,而来自不同供应商的软件可以复制相同的测试脚本主题。
所以不管谁站在它的前面,这大大降低了测试的成本和工作量。
ATS在整个测试活动中的地位和作用

图1: AutoSAR软件组件的完整测试活动指标
一般来说,AUTOSAR软件组件通常在以下阶段进行测试:
· Unit Tests
单元水平的白盒测试。
· Standard Acceptance Tests
ATS所定义的测试内容可由第三方测试服务提供商(测试中心)完成, OEM可要求供应商提交ATS测试报告作为“准入条件”。 OEM制定了这项要求,而AUTOSAR并没有规定强制性要求。
· OEM Specific Qualification Tests
按照企业标准或要求,由 OEM 定制测试,作为“认证”测试。只有经过“认证”的软件才能在特定项目中使用。和ATS类似,此阶段不包括与配置有关的验证,因此,测试方法可以指ATS,它也可以根据ATS扩展。
· Project Specific Tests
与特定项目相关的配置测试。
因为ATS只覆盖了非常基础的和共性的需求,项目相关的或配置相关的需求都不在范围之内,覆盖度是非常有限的,所以ATS只能作为初步的验收测试,不能取代其他测试。就这一点来说,TC8也是类似的。
带有 Ethernet的ATS相关测试
ATS中涵盖了TCP/IP的IPv4,UDP,TCP三个部分,分别定义在AUTOSAR_ATS_IPv4, AUTOSAR_ATS_UDP,AUTOSAR_ATS_TCP三份规范中。
我相信许多人有以下问题:为什么没有ARP、ICMP、DHCP等在ATS中?
在上述的引入之后,答案应该很明显:ATS只涵盖基本和一致的要求,而ARP、ICMP、DHCP等部分目前不属于这一范围,如果 OEM 有相关要求,他们需要制定自己的测试规格。
为进一步分析AUTOSAR架构下的TCP/IP功能,以及如何优化AUTOSAR架构下的TCP/IP配置,使其更适合车内网络,请继续注意北汇信息公号的后续分享。
ATS规范体系中有一篇要特别介绍一下,那就是AUTOSAR_PRS_TestabilityProtocolAndServicePrimitives。
这篇文档中定义了一种测试桩(Test Stub)协议,支持汽车载入的Ethernet测试,这就是我们经常所说的“上级测试员”。在测试TC8TCP/IP时,我们使用顶端测试器,它通常根据这个标准开发。更多关于Upper Tester的内容,本文介绍TC8载 Ethernet连贯性测试的前文。
ATS与TC8
由于ATS本身属于AUTOSAR系统,ATS一般只适用于AUTOSAR节点。TC8不需要测试对象,无论AUTOSAR节点还是非AUTOSAR节点都可以根据TC8进行测试。
但有一件事值得注意,一些商用AUTOSAR协议堆自动驱动的上测试器(也称为ETM)通常只满足ATS定义的测试。也就是说,它只包含IPv4,UDP,TCP三个部分,如果需要全面执行 TC8 ARP,ICMP,DHCP等测试,需要 进一步 发展 。
在测试环境和TCP/IP测试方法方面,ATS与TC8之间没有内在差异。
TC8 TCP/IP协议的一致性测试,以便理解。
在覆盖范围方面,两者有交叉点和差异,我们为参考编制了一个简单的比较统计。

图2: AutoSAR ATS 覆盖范围与开放TC8的比较
大家可能有这样的疑问,针对ATS与TC8重叠的部分,所对应的测试脚本是否可以复用呢?答案是否定的,因为测试用例虽覆盖了相同的需求,但测试用例的设计方法不尽相同,所以测试脚本是不能完全复用的。
ATS测试实践
下图显示了AutoSAR ATS TCP部分的测试报告.

图3:AUTOSARATSTCP的测试报告指示
你可以看到,TCP部分有44个测试例子,下面是两个失败的例子。[ATS_TCP_00408] IUT sends an ACK after receiving a data segment in FIN-WAIT-1 state [classifier: MAY]
[ATS_TCP_00409] IUT sends an ACK after receiving a data segment in FIN-WAIT-2 state [classifier: MAY]
让我们分析失败的原因.
这两个测试例分别验证了当DUT是TCP客户端时,在FIN-WAIT-1和FIN-WAIT-2条件下接收数据的能力。
当客户端准备关闭连接时,它将立即发送 FIN, ACK通知服务器,然后立即输入 FIN-WAIT-1状态,当服务器响应时,客户端将输入 FIN-WAIT-2状态。
理论上,当TCP客户端发送 FIN时,ACK之后,这意味着客户不需要发送数据,但现在它还应该能够接收数据,也就是连接处于“半双工”(half-duplex)的状态,如果服务端发送的数据在此时收到,客户应该能够正确地作出反应。
然而,检测到的设备没有响应,而是发送了一个RST通知服务器数据已经丢失,导致测试失败。
关于连接半组件的要求,原文为RFC 793,但是,在第1122号决议中重新开会了讨论,因为许多协议堆栈被操作系统限制,不支持这个机制,在这些操作系统中,如果应用程序启动一个TCP关闭请求(例如“关闭”()”),你不再能够发送或接收数据。
在AUTOSAR_SWS_TcpIp的[SWS_TCPIP_00104]要求中,我们可以看到AUTOSAR实际上不需要节点执行连接半断,这就是为什么测试例的属性被标记为“MAY”。

图4:自动SAR_SWS_TcpIp选择
如果协议堆栈不支持这个机制,这意味着如果服务端在客户端启动连接关闭请求后继续发送数据,一些数据将丢失给客户端,这在设计业务流程时尤其重要。
参考文档:
[1] AUTOSAR_EXP_AcceptanceTestsOverview.pdf
[2] AUTOSAR_ATS_IPv4.pdf
[3] AUTOSAR_ATS_UDP.pdf
[4] AUTOSAR_ATS_TCP.pdf
[5] AUTOSAR_SWS_TcpIp.pdf
本文由 在线网速测试 整理编辑,转载请注明出处。