发明内容
本申请所要解决的技术问题是提供一种低成本的、可在Wi-Fi芯片未完成制作之前对Wi-Fi软件进行测试的系统。为此,本申请还要提供一种相应的Wi-Fi芯片测试方法。
为解决上述技术问题,本申请公开了一种Wi-Fi软件测试系统,包括一个测试脚本子系统、多个模拟验证子系统、一个空口模拟子系统。所述测试脚本子系统包含测试脚本及程序,它们构成了多个不同的测试用例;所述测试脚本子系统根据每个测试用例向各个模拟验证子系统发出测试命令和测试参数。每个模拟验证子系统用来模拟一台Wi-Fi设备,模拟的Wi-Fi设备选用STA模式或者AP模式;模拟验证子系统的数量及其模拟的Wi-Fi设备的模式根据不同测试用例的场景由测试脚本子系统配置;至少一台模拟的Wi-Fi设备中具有被测Wi-Fi软件。每个模拟验证子系统包括操作系统适配层、驱动软件层、MAC软件层、PHY软件层;所述操作系统适配层接收测试脚本子系统发出的测试命令和测试参数,转换为驱动软件层的指令;所述驱动软件层实现对Wi-Fi芯片硬件的控制,操作系统适配层所模拟的软件通过驱动软件层来访问Wi-Fi芯片硬件;驱动软件层还实现操作系统适配层与MAC软件层的交互;所述MAC软件层实现无线媒体介入控制、控制数据传输,包括根据上层指令或自发生成MAC数据帧、MAC管理帧、MAC控制帧;所述PHY软件层实现MAC帧的收发,包括一个模拟的空口接口用来与空口模拟子系统进行交互。所述空口模拟子系统用来模拟无线局域网的无线信道环境;所述空口模拟子系统收到各个模拟验证子系统发出的信号,再将这些信号发给对应的由其他模拟验证子系统模拟的STA或AP模式的Wi-Fi设备,完成不同Wi-Fi设备间的交互。上述Wi-Fi软件测试系统可在Wi-Fi芯片未制作出之前,对Wi-Fi芯片的软件进行测试。
进一步地,所述Wi-Fi软件测试系统采用PC。优选情况下,所述Wi-Fi软件测试系统采用一台PC即可实现,因而大大降低了测试成本。
优选地,所述Wi-Fi软件测试系统采用Windows操作系统的PC;每个子系统都是一个独立运行的Windows进程,子系统之间采用Socket通信方式进行交互。这是一种优选的实现方式,因为Windows操作系统的PC最为常见。基于同样原理,所述Wi-Fi软件测试系统也可采用其他操作系统例如Linux操作系统的PC实现。
进一步地,在模拟验证子系统中,驱动软件层、MAC软件层、PHY软件层之间的通信方式为函数内部调用、或者线程间通信方式。当所述Wi-Fi软件测试系统采用Windows操作系统的PC,每个模拟验证子系统是一个进程,那么模拟验证子系统内部的单元采用函数内部调用、或者线程间通信方式为优选的实现方式。
进一步地,至少一台模拟的Wi-Fi设备中的驱动软件层、MAC软件层、PHY软件层中的一个或多个包含被测Wi-Fi软件;如果被测Wi-Fi软件是Wi-Fi芯片的驱动软件,则在驱动软件层中;如果被测Wi-Fi软件是Wi-Fi芯片的MAC层软件,则在MAC软件层中;如果被测Wi-Fi软件是Wi-Fi芯片的PHY层软件,则在PHY软件层中。这表明本申请可以单独或同时对Wi-Fi芯片的驱动软件、MAC层软件、PHY层软件进行测试。
进一步地,所述操作系统适配层进一步包括适配单元和软件模拟单元;所述适配单元用来将测试脚本子系统发来的标准TLV格式的测试命令转换为对应于不同用户软件的调用指令,再传递给软件模拟单元;所述软件模拟单元用来模拟不同用户软件的至少部分功能,在适配单元的调用指令下与驱动软件层进行交互,最终调用Wi-Fi驱动软件提供的回调函数,以实现模拟控制Wi-Fi驱动软件。所述不同用户软件包括iw、wpa_supplicant、Hostapd中的一种或多种。这表明操作系统适配层用来在PC机的操作系统中模拟实现不同的用户软件的至少部分功能,以模拟这些用户软件对Wi-Fi驱动软件的控制功能。
进一步地,所述PHY软件层使用socket通信方式模拟空口收发,利用与空口模拟子系统的交互,模拟分布式协调以及点协调的发送接收,以实现各个模拟的Wi-Fi设备接入无线局域网;所述交互包括同步系统时间、NAV信息更新、竞争信息中的一项或多项。这是一种优选的实现方式,用来提供无线局域网的测试环境。
优选地,所述PHY软件层采用ASIC以硬件方式实现。这是一种可选的以硬件电路实现PHY软件层的实现方式。
进一步地,所述PHY软件层采用的MAC帧格式在原MAC帧之前新增了扩展的消息头部;所述扩展的消息头部包括源地址、目的地址、BSSID、时长、信道信息、广播多播信息、消息ID、消息长度、传输功率、PHY帧类型中的一项或多项;其中时长字段、信道信息字段由PHY软件层负责填写,用以更新无线信道信息。新增的扩展的消息头部更加便于PHY软件层和空口模拟子系统处理数据。
进一步地,所述Wi-Fi软件测试系统还包括日志子系统,用来实时抓取空口模拟子系统和各个模拟验证子系统之间采用socket通信方式交互的数据包,也就是对应的MAC帧以及出现的问题。这样可以更方便地记录数据用于功能调试与故障分析等。
本申请还公开了一种Wi-Fi软件测试方法,包括如下步骤:步骤S510:根据测试脚本及程序形成多个不同的测试用例,根据每个测试用例向模拟的Wi-Fi设备发出测试命令和测试参数;模拟的Wi-Fi设备的数量及其模式根据不同测试用例的场景而配置;至少一台模拟的Wi-Fi设备中具有被测Wi-Fi软件。步骤S520:模拟的Wi-Fi设备收到脚本测试命令和参数后,先转换为Wi-Fi驱动软件能够识别的指令,再由MAC层协议软件对指令进行处理实现无线媒体介入控制、控制数据传输,再经过PHY层协议软件处理实现MAC帧的收发,最后通过PHY层协议软件中模拟的空口接口发送出去。步骤S530:模拟的Wi-Fi设备发出的空口信号被送往对应的模拟的Wi-Fi设备,以形成多个模拟的Wi-Fi设备间的交互。上述Wi-Fi软件测试方法可在Wi-Fi芯片未制作出之前,对Wi-Fi芯片的软件进行测试。
进一步地,在测试开始后,至少有一个模拟的Wi-Fi设备采用AP模式,以产生无线局域网测试环境。这是一种优选的实现方式。
进一步地,在测试开始后,如有STA模式或AP模式的模拟的Wi-Fi设备加入无线局域网,则空口模拟子系统将更新设备列表;对于每一个加入无线局域网的模拟的Wi-Fi设备,产生无线局域网测试环境的那台AP模式的模拟的Wi-Fi设备将保留其socket地址、设备ID以及模拟MAC地址;此后空口模拟子系统将向设备列表中的每个模拟的Wi-Fi设备发送时钟同步消息;在多个模拟的Wi-Fi设备接入无线局域网之后,这些设备之间在进行IP通信时通过空口模拟子系统查询得到相应Wi-Fi设备的MAC地址,以实现ARP功能,完成填写MAC头部的功能。这是一种优选的实现方式。
进一步地,在测试开始后,如果某一模拟的Wi-Fi设备发出空口消息,空口模拟子系统收到消息后,将负责向设备列表中相应的模拟的Wi-Fi设备发送消息,以将信道NAV信息告知相应的模拟的Wi-Fi设备;相应的模拟的Wi-Fi设备收到NAV消息之后,更新自己的信道NAV信息,以控制信道发送;在此过程中,空口模拟子系统执行分布式协调功能。这是一种优选的实现方式。
本申请取得的技术效果是:可在通用的PC上实现,降低了测试成本;设计了操作系统适配层,易于移植到不同操作系统中;可在Wi-Fi硬件芯片未完成制作时对Wi-Fi软件进行测试;设计了空口模拟子系统用来模拟无线局域网的无线信道环境,有利于调试空口资源。
具体实施方式
请参阅图2,这是本申请提供的Wi-Fi软件测试系统。所述Wi-Fi软件测试系统采用PC,例如为Windows操作系统的PC。所述Wi-Fi软件测试系统200包括一个测试脚本子系统210、多个模拟验证子系统220、一个空口(air interface,空中接口)模拟子系统230。每个子系统都是一个独立运行的Windows进程(process),子系统之间采用Socket(套接字)通信方式进行交互。
所述测试脚本子系统210包含IEEE 802.11协议组织提供的标准测试脚本及程序,它们构成了多个不同的测试用例。所述测试脚本子系统210根据每个测试用例向各个模拟验证子系统220发出测试命令和测试参数。
每个模拟验证子系统220用来模拟一台Wi-Fi设备。模拟的Wi-Fi设备可以选用STA(Station,站点)模式或者AP(Access Point,接入点)模式。模拟验证子系统220的数量及其模拟的Wi-Fi设备的模式根据不同测试用例的场景由测试脚本子系统210配置。
每个模拟验证子系统220包括操作系统适配层222、驱动软件层224、MAC软件层226、PHY软件层228。所述操作系统适配层222接收测试脚本子系统210发出的测试命令和测试参数,转换为驱动软件层224能够识别的指令。所述驱动软件层224用来实现对Wi-Fi芯片硬件的控制,操作系统适配层222所模拟的软件也可以通过驱动软件层224来访问Wi-Fi芯片硬件。此外,驱动软件层224还实现操作系统适配层222与MAC软件层226的交互。所述MAC软件层226用来实现IEEE 802.11协议规定的无线媒体介入控制,控制数据传输;包括根据上层指令或自发生成MAC数据帧、MAC管理帧、MAC控制帧等。所述PHY软件层228用来实现MAC帧的收发。所述PHY软件层228包括一个模拟的空口接口(AIR API),用来与空口模拟子系统230进行交互。
至少一台模拟的Wi-Fi设备中具有被测Wi-Fi软件。如果被测Wi-Fi软件是Wi-Fi芯片的驱动软件,则在驱动软件层224中。如果被测Wi-Fi软件是Wi-Fi芯片的MAC层软件,则在MAC软件层226中。如果被测Wi-Fi软件是Wi-Fi芯片的PHY层软件,则在PHY软件层228中。所述驱动软件层224、MAC软件层226、PHY软件层228中的一个或多个可以同时包含被测Wi-Fi软件。
在模拟验证子系统220中,驱动软件层224、MAC软件层226、PHY软件层228之间的软件控制逻辑不变,但是它们之间的通信方式需要由原来嵌入式系统中的中断触发等方式修改为函数内部调用、或者线程(thread)间通信方式以适应Windows操作系统的PC运行环境。被测软件模块间通信方式的修改不会影响对Wi-Fi软件的测试结果。
所述空口模拟子系统230用来模拟无线局域网的无线信道环境。所述空口模拟子系统230收到各个模拟验证子系统220发出的信号,空口模拟子系统230再将这些信号发给对应的由其他模拟验证子系统220模拟的STA或AP模式的Wi-Fi设备,完成不同Wi-Fi设备间的交互。
当Wi-Fi芯片运行在嵌入式操作系统上时,利用操作系统中的iw、wpa_supplicant以及Hostapd用户软件实现对Wi-Fi芯片的控制。但是这些软件与Wi-Fi驱动软件的交互需要以Wi-Fi芯片的真实硬件存在为前提。本申请中用操作系统适配层222来替代这些用户软件,从而可在Wi-Fi芯片制造出来之前对其中的软件部分进行测试。
请参阅图3,所述操作系统适配层222进一步包括适配单元302和软件模拟单元304。所述操作系统适配层222在收到测试脚本子系统210发来的标准TLV格式的测试命令后,由适配单元302把测试命令转换为对应于iw、wpa_supplicant、Hostapd用户软件的调用指令,再传递给软件模拟单元304。软件模拟单元304模拟iw、wpa_supplicant、Hostapd用户软件的至少部分功能,在适配单元302的调用指令下,与驱动软件层224进行交互,最终去调用Wi-Fi驱动软件提供的cfg80211_ops、ieee80211_ops等回调函数,以实现模拟控制Wi-Fi驱动软件的效果。驱动软件层224返回的处理结果先经过软件模拟单元304,再经过适配单元302转换为TLV格式,最后返回至测试脚本子系统210。
优选地,所述PHY软件层228使用socket通信方式模拟空口收发,利用与空口模拟子系统230的交互(包括同步系统时间、NAV信息更新、竞争信息),模拟分布式协调(DCF,Distributed Coordination Function)以及点协调(PCF,Point Coordination Function)的发送接收,以实现各个模拟的Wi-Fi设备接入无线局域网。
可选地,所述PHY软件层228可以改为ASIC(Application Specific IntegratedCircuit,专用集成电路)以硬件方式实现。
可选地,所述PHY软件层228采用图4所示的MAC帧格式。所述MAC帧在原MAC帧之前新增了扩展的消息头部,具体来说是在原MAC帧的原MAC头部(MAC Header)之前新增了扩展的消息头部。所述扩展的消息头部例如包括源地址、目的地址、BSSID、时长(duration)、信道(channel)信息、广播多播信息、消息ID、消息长度中的一项或多项。图4所示的扩展的消息头部仅为示意,可以对其中各字段的顺序任意调整,还可增加传输功率字段、PHY帧类型字段等,还可删除部分字段。其中BSSID字段表示产生无线局域网测试环境的那台AP模式的模拟的Wi-Fi设备的MAC地址,时长字段表示这一MAC帧所需占据无线媒介时长,也即传输时长。其中时长字段、信道信息字段由PHY软件层228负责填写,用以更新无线信道信息。在现有的MAC帧中包含有时长、源地址、目的地址、广播多播消息字段,本申请提供的扩展的消息头部将这些原本在MAC帧中的字段复制到新增的扩展的消息头部,又新增了信道信息字段、传输功率字段、PHY帧类型字段中的一项或多项,更加便于PHY软件层228和空口模拟子系统230处理数据。
可选地,本申请提供的Wi-Fi软件测试系统还包括日志子系统,用来实时抓取空口模拟子系统230和各个进程之间采用socket通信方式交互的数据包,也就是对应空口的IEEE 802.11协议的MAC帧,以及出现的问题,从而方便软件协议测试。
上述Wi-Fi软件测试系统用于对Wi-Fi软件的协议行为进行测试,相较于现有的Wi-Fi设备测试系统,本申请的Wi-Fi软件测试系统可在仅一台或多台Windows操作系统的PC上实现,因而大大降低了测试成本。本申请可在Wi-Fi芯片未制作出之前,对Wi-Fi芯片的软件进行测试,弥补了现有的Wi-Fi设备测试系统的空白。
请参阅图5,与图2所示的Wi-Fi软件测试系统相对应地,本申请还提供了一种Wi-Fi软件测试方法。所述Wi-Fi软件测试方法包括如下步骤。
步骤S510:根据IEEE 802.11协议组织提供的标准测试脚本及程序形成多个不同的测试用例,根据每个测试用例向模拟的Wi-Fi设备发出测试命令和测试参数。模拟的Wi-Fi设备的数量及其模式(STA模式或者AP模式)根据不同测试用例的场景而配置。至少一台模拟的Wi-Fi设备中具有被测Wi-Fi软件。这一步例如由图2中的测试脚本子系统210实现。
步骤S520:模拟的Wi-Fi设备收到脚本测试命令和参数后,先转换为Wi-Fi驱动软件能够识别的指令,再由MAC层协议软件对指令进行处理实现无线媒体介入控制、控制数据传输,再经过PHY层协议软件处理实现MAC帧的收发,最后通过PHY层协议软件中模拟的空口接口发送出去。
这一步中,模拟的Wi-Fi设备例如由图2中的模拟验证子系统220实现。
步骤S530:模拟的Wi-Fi设备发出的空口信号被送往对应的模拟的Wi-Fi设备,以形成多个模拟的Wi-Fi设备间的交互。这一步例如由图2中的空口模拟子系统230实现。
进一步地,在测试开始后,至少有一个模拟的Wi-Fi设备采用AP模式,以产生无线局域网测试环境。
进一步地,在测试开始后,如有STA模式或AP模式的模拟的Wi-Fi设备加入无线局域网,则空口模拟子系统230将更新设备列表。对于每一个加入无线局域网的模拟的Wi-Fi设备,产生无线局域网测试环境的那台AP模式的模拟的Wi-Fi设备将保留其socket地址、设备ID以及模拟MAC地址。此后空口模拟子系统230将向设备列表中的每个模拟的Wi-Fi设备发送时钟同步消息。在多个模拟的Wi-Fi设备接入无线局域网之后,这些设备之间如需进行IP(Internet Protocol,互联网协议)通信,可通过空口模拟子系统230查询得到相应Wi-Fi设备的MAC地址,以实现ARP(Address Resolution Protocol,地址解析协议)功能,完成填写MAC头部的功能。
进一步地,在测试开始后,如果某一模拟的Wi-Fi设备发出空口消息,空口模拟子系统230收到消息后,将负责向设备列表中相应的模拟的Wi-Fi设备发送消息,以将信道NAV(Network Allocation Vector,网络分配向量)信息告知相应的模拟的Wi-Fi设备。相应的模拟的Wi-Fi设备收到NAV消息之后,更新自己的信道NAV信息,以控制信道发送。在此过程中,空口模拟子系统230执行分布式协调(DCF,Distributed Coordination Function)功能。
本申请提供的Wi-Fi软件测试系统及方法具有如下有益效果。
第一,脱离了专用的嵌入式硬件平台,可在通用的PC上实现,提升了测试与调试的通用性,降低了测试成本。
第二,设计了操作系统适配层,因而脱离了特定的操作系统环境,也易于将软件测试移植到Windows、Linux等各种操作系统中。
第三,可在无Wi-Fi硬件芯片的条件下对Wi-Fi软件(包括Wi-Fi芯片中的驱动软件、MAC层软件、PHY层软件)进行测试,更易于在Wi-Fi芯片开发过程中发现其软件协议的问题,也方便新增功能的测试。
第四,设计了空口模拟子系统用来模拟无线局域网的无线信道环境,有利于调试空口资源例如模拟802.11协议的不同版本b、g、n、ac、ax等,监测无线信道环境,以及与PHY软件层配合实现802.11协议定义的DCF、PCF功能,高效且低成本地支持测试。
以上仅为本申请的优选实施例,并不用于限定本申请。对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。