一文了解UDS 10服务测试

文摘   2024-10-24 06:46   上海  
之前转了一篇 UDS功能测试用例梳理 (qq.com)的文章,比较全面地汇总了UDS服务的测试用例,但是只是汇总,没有实际的测试。纸上得来终觉浅,绝知此事要躬行。因此本文就主要进行10服务测试用例的测试,同时结合理论定义,更好地理解测试现象。

1 10服务简介

在正式介绍10服务测试前,先简单对其定义进行说明:10服务,即诊断会话控制服务,用来使能服务端中的不同诊断会话模式。诊断会话模式分为两大类:默认会话非默认会话,如图2所示。其中非默认会话又包括编程会话扩展会话,概括如下:

这三种会话模式主要考虑的是服务的使用权限问题,不同会话模式下能使用的服务有区别。

source: UDS诊断入门
关于10服务测试,首先有两个概念,请求方称为客户端,响应方称为服务端。10服务的请求格式是SID+SF(sub-function,子功能),其中关于SF,01代表默认会话模式,02代表编程会话模式,03代表扩展会话模式。因此默认会话模式,则客户端发送10 01;请求编程会话模式,则发送10 02;请求扩展会话模式,则发送10 03。
有了这些简单的了解之后,下面就是直接进入测试:
2 10服务测试
先编辑好10服务的测试用例,如下所示。然后逐个执行测试用例:

1)10 01请求默认会话

操作很简单,第1步选择测试用例,第2步点击执行,第3步检验测试结果。

2)10 02请求编程会话

3)10 03请求扩展会话

经过执行这三个测试用例,我们就可以知道当客户端发送诊断服务请求,那么服务端收到就会响应,其肯定响应格式为SID+40)+ SF + parameters。即请求10 01,则响应50 01 xx xx xx xx;请求10 02,则响应50 02 xx xx xx xx;请求10 03,则响应50 03 xx xx xx xx。关于4个xx的解释也如下图。

在实际测试过程中,在服务端给出肯定响应之前,经常碰到先响应7F 10 78,即先悬置当前请求,响应完上一条请求再响应当前请求

以上测试是针对10服务的肯定响应情况测试,接下来进行10服务的否定响应测试:

4)否定响应
比如请求10 04,结果响应的是 7F 10 12; 比如请求10 04 01,结果响应的是 7F 10 13; 再比如比如请求10 04 13,结果响应的还是 7F 10 13。
也就是说,当客户端发送诊断服务请求,服务端出现不支持该子功能,或不符合该服务请求格式的长度,服务端会给出否定响应,其格式为 7F+SID+NRC。
  • 比如请求10 04,由于未定义04,即不支持该子功能,其NRC为12
  • 比如请求10 03 11,不符合请求格式SID+SF的长度,其NRC为13;

  • 比如请求10 04 13,此时未定义04,也不符合请求格式SID+SF的长度,结果响应的NRC为13,这就是说明不符合请求格式长度的优先级高于不支持该子功能。

这是关于否定测试的基本情况,接下来看不同会话模式之间的跳转情况:

5)会话模式之间的跳转

测试情况如下:
不难发现,此版软件支持三种会话模式任意两者的跳转。这个具体情况取决于具体的软件需求,不同客户可能有不同的需求。

6)不同会话模式下所支持的其他UDS服务

这里先分别在默认会话模式和扩展会话模式请求11 01(ECU重启),从测试结果可以看出,这两者会话模式都支持。


然后分别在默认会话模式和扩展会话模式请求27 05(请求seed),从测试结果可以看出,仅扩展会话模式支持。

不同会话模式下所支持的其他UDS服务的具体需求,最主要取决于客户需求,下图是ISO14229中所列举的默认会话模式和非默认会话模式所支持的UDS服务:

3 总结

以上就是关于10服务测试情况的介绍,这种理论与实践相结合的方式,是不是会更容易理解,其实能动手会更加有效,本人测试的设备如下:
最后再回顾下10服务的基本概念:
  • 10服务包括三种会话模式:默认会话,编程会话和扩展会话。
  • 请求格式是SID+SF(sub-function,子功能)。
  • 肯定响应格式是(SID+40)+ SF + parameters。
  • 否定响应格式是 7F+SID+NRC。

创作不易,欢迎点赞再看收藏关注


汽车研发交流群,有兴趣的朋友请添加群主:prOmiseyes,备注:公司+职务入群。仅限汽车从业人员。

谦益行
分享汽车研发日常,助力你我共同成长。
 最新文章