蓝牙个人局域网的应用测试步骤详解
扫描二维码
随时随地手机看文章
本文以蓝牙PAN的互操作性测试模型为例,从工程实际需求出发,运用软件测试的自动化技术,结合协议一致性测试的一般理论和方法说明蓝牙应用的互操作性测试的特点,并总结出一种适用于蓝牙软件模型的应用规范的自动化测试方法。
测试理论概述
软件质量是与软件产品满足明确或隐含需求的能力有关的特征和特性的总和(ISO 9126),软件的质量保证一直是软件产业的一个重大课题。随着社会信息化程度的提高,软件应用领域越来越广泛,软件产品也越来越复杂,软件产品质量的优劣也日益受到人们的重视,软件的质量保证已成为开发商和用户关注的焦点,质量保证能力的强弱直接影响着软件业的发展与生存。
软件测试是程序的一种执行过程,目的是尽可能发现并改正被测试软件中的错误,提高软件的质量。它是软件生命周期中一项非常重要且非常复杂的工作,对软件可靠性保证具有极其重要的意义。在目前形式化方法和程序正确性证明技术还没有成为实用性方法的情况下,软件测试在将来相当一段时间内仍然是软件可靠性保证的有效方法。因此,研究软件产品测试技术,开发软件自动测试工具,已成为软件质量保证的一个晕重要的任务。
通信协议的测试方法
目前协议测试主要包括四种测试:
·一致性测试
一致性的含义是:如果某实际系统与其它实际系统的通信过程符合所用协议的国际标准,则称该实际系统展示了一致性。一致性测试正是用来检测所实现系统与协议规范的符合程度。一致性测试的主要目的是提高不同系统之间能够互通的概率。虽然一致性是保证互通能力的必要条件,但并不是充分条件。即便两个实现都与同一个协议规范一致,它们也有可能完全不能互通。如果两个实现都能与某个协议标准的子集相一致,则这两个系统之间在此情况下互通要比在其它情况下互通容易实现。因此保证协议的一致性是实现协议以及应用互操作性的基础。
·互操作性测试
互操作性测试用来检测同一协议的不同实现版本之间、或同一类协议(如电子邮件协议X.400和sMTP)不同实现版本之间互通能力和互连操作能力。协议上的应用模型的互操作性测试是保证应用程序能否正确实现的重要指标。
·性能测试
它用来检测协议实体或系统的性能指标(数据传输率、连接时间、执行速度、吞吐量、并发度等);
·鲁棒性测试
检测协议实体或系统在各种恶劣环境下运行的能力(信道被中途切断、通信技术掉电、注入干扰报文等)。
软件测试的自动化技术
软件测试是检验软件是否产生了正确输出的过程,是通过在测试的实际输出与预期输出(当软件正确执行时的输出)之间完成一次或多次比较来实现的。自动化执行测试用例是自动测试的出发点,然而比较工作是重复性和复杂的任务,是软件测试中可论证的自动化程度最高的任务。常常是从自动化中受益最多的任务。自动执行测试用例会产生大量的输出,通常需要用某些方法验证这些输出,但是并非所有的测试都需要详细比较输出。因此,自动化执行测试用例和自动化比较执行结果是自动测试关注的最主要的两个问题。
自动化比较按比较的时机来分,可以分为动态比较和执行后比较。动态比较就是在执行测试事例时进行的比较。使用动态比较有助于为测试事例编入一些智能化的功能,使测试事例根据出现的输出采取不同的动作。例如,如果出现意外的输出,则说明测试脚本与测试的软件不一致,因此最好以异常的方式终止测试事例,而不是继续执行。执行后比较是在测试事例运行完毕后执行的比较。这两种比较方式对于测试结果都有决定性作用,因此自动化比较模块的性能对于自动化测试程序的影响至关重要,也是PAN自动测试重点关注的问题。
PAN的互操作性测试模型的设计
通用互操作性测试模型
互操作性测试是一致性测试的下一步。一致性测试是验证系统A和系统B都遵从规范X,而互操作性测试则是检验在多大程度上系统A和系统B相互间能进行工作.其基本结构模型如图1所示:
图1 互操作性测试模型
在上面的结构中,为了监视两个被测系统间传送的数据,可以在监视点A、B和C处放置监视仪。
互操作性测试一般是先通过定义测试目的,指定抽象测试集(Abstract TestSuite,ATs),然后根据ATS,在某个特定的硬件平台(如协议分析仪)上去实现ATS,变成可执行的测试集(ExecutiveTest Sui蛾ETS),接着在分析仪上执行ETS,对两个或多个被测系统(System Under Test,SUT)进行测试,最后由测试过程获得测试报告(可以借助监视仪在各个监视点获得的数据),发现SUT中的错误。
PAN互操作性测试模型
PAN测试结构包括五部分,如图3所示:自动测试程序(Auto-test Program)、被测系统(SUT)、测试系统(TestSystem)、PAN应用(Applicatiffa)、记录日志(Trace&l og)和分析设备(Analyzer)。
自动测试程序替代通用测试模型中Test Operator的作用,负责在被测系统上执行命令,并返回结果给测试系统,同时它还负责与分析设备交互,确认每一次测试结果。
被测系统是正被测试下的系统包括客户端和服务器端的文件传输应用、蓝牙协议栈和为自动测试提供图形用户界面的人机界面单元(MMI)。由于PAN应用的复杂性,还需要相应的系统支持,PAN Block就是专门处理与系统相关的事务的模块。
测试系统与通用模型类似,因为是互操作性测试,所以测试系统与被测系统需要拥有同样的硬件设备和配置。
PAN应用是客户端或服务器上运行的基于PAN服务的普通应用程序,它可以是telnet、FTP等应用,自动测试程序运行过程中,PAN应用被调度执行,测试结果被记录到日志,并由日志上报给分析设备。
分析设备作为一个监测工具。负责在自动测试执行过程中检测测试结果。在互操作性测试中提供详实的数据来验证我们的基于PAN的应用程序执行的可信度。
根据蓝牙互操作性测试模型和蓝牙规范中的相关定义,得出特定的PAN的测试模型如图2所示:
图2 蓝牙PAN的互操作性测试模型
PAN测试模型的特点是自动测试程序在测试进行过程中要监控测试结果,如果分析设备得到的.澳9试结果是错误的,分析设备就会把相关信息反馈给自动测试程序,由自动测试程序调度测试继续进行、终止运行、排查错误或者直接要求测试人员干预等操作。这样就可以使得自动测试更加高效,不会被小错误影响整个测试结果。
PAN互操作性自动化测试的实现
PAN自动化测试的功能
根据上述互操作性自动测试模型,结合工程实践中对于蓝牙PAN稳定性的要求,参考了ⅣT公司的测试用例,实现了基于PAN应用规范的自动测试程序。这个自动测试程序是针对应用层程序的自动测试,因此是通过应用程序的表现来间接的反映了蓝牙协议的一致性和互操作性性能。本工程中PAN的自动化测试具体功能描述如下:
1.建立连接。
模拟用户点击Shortcut,自动建立一个从本机到目标机器的PAN,要求本机的角色为PANU,目标机器的角色为GN(NAP),且两端机器都能够正确分配口地址。建立连接过程进行监控,一旦分析设备发现连接不正确或者口地址分配有误,立即反馈给自动测试程序,自动测试程序分析错误级别并重新调度。
2.酒试可达性和互联性。
在建立连接的情况下,模拟实现ping命令,要求发送方发出命令后,接收方收到并做出回馈,回馈信息能够正确抵达发送方。如果出现错误,由记录日志保存记录,并在测试完成之后由测试人员分析并给出最后结果。
3.传送文件。
在已经建立连接的情况下,通过蓝牙网卡,从发送端发送一个文件到接收端,要求接收端能够收到文件,且文件的大小和内容无误。整个传送过程中,自动测试程序监控发送和接收端口,这样可以保证最精确跟踪错误来源。
4.断开连接。
模拟用户要求断开PAN连接,进行相应的操作。
5.调度控制。
将模块1、2、3、4整合为一个模块,通过自动测试程序输入参数从外部循环次数的控制,自动依次完成上述操作,如此循环,同时分析并记录测试结果到日志文件。
测试程序的输入信息
测试程序启动以后会从初始化文件中读取一些输入信息,这些信息是测试人员针对不同的测试任务在测试开始之前设置的,测试开始之后就不能进行干预。在整个测试过程中,参与测试的设备必须安装了蓝牙应用软件并且进行了相应的配置,否则会影响测试的准确性。
自动测试的数据结构
主要用来存放口地址信息的类
class CIPAddress
{
public:
charm_sHostName[MAX__PATH]; ,,用来标识主机名
charm
sIPAddress[MAX PATH]; ,/用来标识口地址
public:
CIPAddress0;
int startupo;
int CleanUP0;
int GetLocalHostName(ch卸r‘sHostName);
int
GetIPAddress(char。slPAddress);
void ShowIP0;
};
2.定义的用来获取PAN设置信息的数据结构
typedef
stnm PanInfo
{
SHORT
Role; //发送端还是接收端
SHORT
PingTnnes; /,执行ping命令的次数
CHAR
SendFilePath[MAX_PATH]; //要发送的文件路径
CHAR
ReceivedFilePath[MAX_PATH]; //接收文件后存放路径
}PANINFO,*PPANINFO;
在PAN自动测试程序总体流程如图3所示,发送文件和接收文件分别是由不同的角色完成的,因此对于整个过程的同步的记录、分析、除错非常困难,有时候不得不进行人工干预。对于自动测试程序的要求是不能被异常情况所干扰。如果自动测试程序本身的健壮性都得不到保证,测试结果的正确性就很难说了。
基于上述考虑,当错误发生时,首先根据错误类型判断错误的严重程度以及是否需要人工干预,这样既考虑了严重错误对系统的影响又减轻了测试人员的负担。当然,如果错误累积到一定程序,再进行测试就毫无意义,这个时候就必须中断测试,请求人工分析处理,在本系统中是通过一个累加器处理的.
图3 蓝牙PAN互操作性铡试流程图
PAN自动测试中发送方的流程如图4所示,这个流程图是图3调度执行发送方程序”步骤的详细流程。发送方分为PANU、G|N、NAP多种角色,因此程序开始的时候也需要初始化设备。注册回调函数是为了在界面上显示测试过程状态信息和触发记录日志事件。发送方只能根据对发送过程的监听来判断文件发送成功与否,因此这个判断在某种程度上并不能保证完全正确,需要和接收方产生的结果汇总之后再次进行分析,这个分析过程由自动测试程序控制。
图4 自动测试发送方流程图
PAN自动测试中接收方的流程如图5所示,这个流程图是图3调度执行接收方程序步骤的详细流程。接收方的流程相对比较简单,接收方必须与发送方配合才能完成整个自动测试过程。
图5 自动测试接受方流程图
测试结果和总结
PAN自动测试程序目的是针对互操作性测试而进行的,整个测试流程以替代部分手工测试、节约版本测试时间和人力为出发点。通过将基本功能做成自动测试工具模拟用户操作完成大多数功能点的验证测试,可以很大程度上减轻测试人员的工作量。实践中,自动测试程序一般在晚上下班时间运行,次日早上测试人员通过察看自动测试运行后产生的日志文件来对测试结果进行评估。PAN自动测试程序在这方面取得了很好的效果,通过连续运行一万次测试用例规模的自动测试的结果进行分析,对提高软件的稳定性很有裨益。自动测试程序运行过程中保存下来的现场数据对于开发人员修复源程序中的Bug也很有帮助。尤其是对长期的项目、增量开发模式,自动测试不失为一种很好的选择。