一.实践思路:
ARP是TCP/IP协议栈中最经典和基础的协议之一,它是一个有状态的协议。搞清楚ARP协议在实现的上下文,以协议的状态为分析视角是对ARP协议测试设计的一个不错的思路。当然同一个被测对象可以采用多种不同的设计对其进行测试分析和设计,这里没有绝对和最优的最优的答案。
二.实践过程:
2.1走读代码了解ARP协议在产品实现中所处的上下文环境:
Arp协议在产品实现中所处的上下文环境(整体架构,子系统、模块之间的协作关系等)
……略(此处不便展开具体介绍)
2.2 梳理ARP协议状态机:
ARP协议在产品实现中定义了五种协议状态:ARP_CLEAR、ARPF_WAITING、ARPF_INUSE、ARPF_ALWAYS_USE及ARPF_NOQUEUE。其中ARPF_NOQUEUE状态在目前的实现中基本上没有使用,为了便于理解,我自行定义了NULL这个状态。那么协议状态机如下图所示:
经过代码的学习和走读,得到如下的协议转换关系:
- NULL(ARP实例未创建状态)状态的迁移:
1) NULL->NULL状态保持:
a) 收到并非请求本段IP地址的Arp Request。
b) 收到请求本段I