藍牙個人局域網的應用測試步驟詳解
本文以藍牙PAN的互操作性測試模型為例,從工程實際需求出發(fā),運用軟件測試的自動化技術,結合協議一致性測試的一般理論和方法說明藍牙應用的互操作性測試的特點,并總結出一種適用于藍牙軟件模型的應用規(guī)范的自動化測試方法。
本文引用地址:http://butianyuan.cn/article/201612/333245.htm測試理論概述
軟件質量是與軟件產品滿足明確或隱含需求的能力有關的特征和特性的總和(ISO 9126),軟件的質量保證一直是軟件產業(yè)的一個重大課題。隨著社會信息化程度的提高,軟件應用領域越來越廣泛,軟件產品也越來越復雜,軟件產品質量的優(yōu)劣也日益受到人們的重視,軟件的質量保證已成為開發(fā)商和用戶關注的焦點,質量保證能力的強弱直接影響著軟件業(yè)的發(fā)展與生存。
軟件測試是程序的一種執(zhí)行過程,目的是盡可能發(fā)現并改正被測試軟件中的錯誤,提高軟件的質量。它是軟件生命周期中一項非常重要且非常復雜的工作,對軟件可靠性保證具有極其重要的意義。在目前形式化方法和程序正確性證明技術還沒有成為實用性方法的情況下,軟件測試在將來相當一段時間內仍然是軟件可靠性保證的有效方法。因此,研究軟件產品測試技術,開發(fā)軟件自動測試工具,已成為軟件質量保證的一個暈重要的任務。
通信協議的測試方法
目前協議測試主要包括四種測試:
·一致性測試
一致性的含義是:如果某實際系統(tǒng)與其它實際系統(tǒng)的通信過程符合所用協議的國際標準,則稱該實際系統(tǒng)展示了一致性。一致性測試正是用來檢測所實現系統(tǒng)與協議規(guī)范的符合程度。一致性測試的主要目的是提高不同系統(tǒng)之間能夠互通的概率。雖然一致性是保證互通能力的必要條件,但并不是充分條件。即便兩個實現都與同一個協議規(guī)范一致,它們也有可能完全不能互通。如果兩個實現都能與某個協議標準的子集相一致,則這兩個系統(tǒng)之間在此情況下互通要比在其它情況下互通容易實現。因此保證協議的一致性是實現協議以及應用互操作性的基礎。
·互操作性測試
互操作性測試用來檢測同一協議的不同實現版本之間、或同一類協議(如電子郵件協議X.400和sMTP)不同實現版本之間互通能力和互連操作能力。協議上的應用模型的互操作性測試是保證應用程序能否正確實現的重要指標。
·性能測試
它用來檢測協議實體或系統(tǒng)的性能指標(數據傳輸率、連接時間、執(zhí)行速度、吞吐量、并發(fā)度等);
·魯棒性測試
檢測協議實體或系統(tǒng)在各種惡劣環(huán)境下運行的能力(信道被中途切斷、通信技術掉電、注入干擾報文等)。
軟件測試的自動化技術
軟件測試是檢驗軟件是否產生了正確輸出的過程,是通過在測試的實際輸出與預期輸出(當軟件正確執(zhí)行時的輸出)之間完成一次或多次比較來實現的。自動化執(zhí)行測試用例是自動測試的出發(fā)點,然而比較工作是重復性和復雜的任務,是軟件測試中可論證的自動化程度最高的任務。常常是從自動化中受益最多的任務。自動執(zhí)行測試用例會產生大量的輸出,通常需要用某些方法驗證這些輸出,但是并非所有的測試都需要詳細比較輸出。因此,自動化執(zhí)行測試用例和自動化比較執(zhí)行結果是自動測試關注的最主要的兩個問題。
自動化比較按比較的時機來分,可以分為動態(tài)比較和執(zhí)行后比較。動態(tài)比較就是在執(zhí)行測試事例時進行的比較。使用動態(tài)比較有助于為測試事例編入一些智能化的功能,使測試事例根據出現的輸出采取不同的動作。例如,如果出現意外的輸出,則說明測試腳本與測試的軟件不一致,因此最好以異常的方式終止測試事例,而不是繼續(xù)執(zhí)行。執(zhí)行后比較是在測試事例運行完畢后執(zhí)行的比較。這兩種比較方式對于測試結果都有決定性作用,因此自動化比較模塊的性能對于自動化測試程序的影響至關重要,也是PAN自動測試重點關注的問題。
PAN的互操作性測試模型的設計
通用互操作性測試模型
互操作性測試是一致性測試的下一步。一致性測試是驗證系統(tǒng)A和系統(tǒng)B都遵從規(guī)范X,而互操作性測試則是檢驗在多大程度上系統(tǒng)A和系統(tǒng)B相互間能進行工作.其基本結構模型如圖1所示:
圖1 互操作性測試模型
在上面的結構中,為了監(jiān)視兩個被測系統(tǒng)間傳送的數據,可以在監(jiān)視點A、B和C處放置監(jiān)視儀。
互操作性測試一般是先通過定義測試目的,指定抽象測試集(Abstract TestSuite,ATs),然后根據ATS,在某個特定的硬件平臺(如協議分析儀)上去實現ATS,變成可執(zhí)行的測試集(ExecutiveTest Sui蛾ETS),接著在分析儀上執(zhí)行ETS,對兩個或多個被測系統(tǒng)(System Under Test,SUT)進行測試,最后由測試過程獲得測試報告(可以借助監(jiān)視儀在各個監(jiān)視點獲得的數據),發(fā)現SUT中的錯誤。
PAN互操作性測試模型
PAN測試結構包括五部分,如圖3所示:自動測試程序(Auto-test Program)、被測系統(tǒng)(SUT)、測試系統(tǒng)(TestSystem)、PAN應用(Applicatiffa)、記錄日志(Trace&l og)和分析設備(Analyzer)。
自動測試程序替代通用測試模型中Test Operator的作用,負責在被測系統(tǒng)上執(zhí)行命令,并返回結果給測試系統(tǒng),同時它還負責與分析設備交互,確認每一次測試結果。
被測系統(tǒng)是正被測試下的系統(tǒng)包括客戶端和服務器端的文件傳輸應用、藍牙協議棧和為自動測試提供圖形用戶界面的人機界面單元(MMI)。由于PAN應用的復雜性,還需要相應的系統(tǒng)支持,PAN Block就是專門處理與系統(tǒng)相關的事務的模塊。
測試系統(tǒng)與通用模型類似,因為是互操作性測試,所以測試系統(tǒng)與被測系統(tǒng)需要擁有同樣的硬件設備和配置。
PAN應用是客戶端或服務器上運行的基于PAN服務的普通應用程序,它可以是telnet、FTP等應用,自動測試程序運行過程中,PAN應用被調度執(zhí)行,測試結果被記錄到日志,并由日志上報給分析設備。
分析設備作為一個監(jiān)測工具。負責在自動測試執(zhí)行過程中檢測測試結果。在互操作性測試中提供詳實的數據來驗證我們的基于PAN的應用程序執(zhí)行的可信度。
根據藍牙互操作性測試模型和藍牙規(guī)范中的相關定義,得出特定的PAN的測試模型如圖2所示:
圖2 藍牙PAN的互操作性測試模型
PAN測試模型的特點是自動測試程序在測試進行過程中要監(jiān)控測試結果,如果分析設備得到的.澳9試結果是錯誤的,分析設備就會把相關信息反饋給自動測試程序,由自動測試程序調度測試繼續(xù)進行、終止運行、排查錯誤或者直接要求測試人員干預等操作。這樣就可以使得自動測試更加高效,不會被小錯誤影響整個測試結果。
PAN互操作性自動化測試的實現
PAN自動化測試的功能
根據上述互操作性自動測試模型,結合工程實踐中對于藍牙PAN穩(wěn)定性的要求,參考了ⅣT公司的測試用例,實現了基于PAN應用規(guī)范的自動測試程序。這個自動測試程序是針對應用層程序的自動測試,因此是通過應用程序的表現來間接的反映了藍牙協議的一致性和互操作性性能。本工程中PAN的自動化測試具體功能描述如下:
1.建立連接。
模擬用戶點擊Shortcut,自動建立一個從本機到目標機器的PAN,要求本機的角色為PANU,目標機器的角色為GN(NAP),且兩端機器都能夠正確分配口地址。建立連接過程進行監(jiān)控,一旦分析設備發(fā)現連接不正確或者口地址分配有誤,立即反饋給自動測試程序,自動測試程序分析錯誤級別并重新調度。
2.酒試可達性和互聯性。
在建立連接的情況下,模擬實現ping命令,要求發(fā)送方發(fā)出命令后,接收方收到并做出回饋,回饋信息能夠正確抵達發(fā)送方。如果出現錯誤,由記錄日志保存記錄,并在測試完成之后由測試人員分析并給出最后結果。
3.傳送文件。
在已經建立連接的情況下,通過藍牙網卡,從發(fā)送端發(fā)送一個文件到接收端,要求接收端能夠收到文件,且文件的大小和內容無誤。整個傳送過程中,自動測試程序監(jiān)控發(fā)送和接收端口,這樣可以保證最精確跟蹤錯誤來源。
4.斷開連接。
模擬用戶要求斷開PAN連接,進行相應的操作。
5.調度控制。
將模塊1、2、3、4整合為一個模塊,通過自動測試程序輸入參數從外部循環(huán)次數的控制,自動依次完成上述操作,如此循環(huán),同時分析并記錄測試結果到日志文件。
測試程序的輸入信息
測試程序啟動以后會從初始化文件中讀取一些輸入信息,這些信息是測試人員針對不同的測試任務在測試開始之前設置的,測試開始之后就不能進行干預。在整個測試過程中,參與測試的設備必須安裝了藍牙應用軟件并且進行了相應的配置,否則會影響測試的準確性。
自動測試的數據結構
主要用來存放口地址信息的類
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; //發(fā)送端還是接收端
SHORT
PingTnnes; /,執(zhí)行ping命令的次數
CHAR
SendFilePath[MAX_PATH]; //要發(fā)送的文件路徑
CHAR
ReceivedFilePath[MAX_PATH]; //接收文件后存放路徑
}PANINFO,*PPANINFO;
在PAN自動測試程序總體流程如圖3所示,發(fā)送文件和接收文件分別是由不同的角色完成的,因此對于整個過程的同步的記錄、分析、除錯非常困難,有時候不得不進行人工干預。對于自動測試程序的要求是不能被異常情況所干擾。如果自動測試程序本身的健壯性都得不到保證,測試結果的正確性就很難說了。
基于上述考慮,當錯誤發(fā)生時,首先根據錯誤類型判斷錯誤的嚴重程度以及是否需要人工干預,這樣既考慮了嚴重錯誤對系統(tǒng)的影響又減輕了測試人員的負擔。當然,如果錯誤累積到一定程序,再進行測試就毫無意義,這個時候就必須中斷測試,請求人工分析處理,在本系統(tǒng)中是通過一個累加器處理的.
圖3 藍牙PAN互操作性鍘試流程圖
PAN自動測試中發(fā)送方的流程如圖4所示,這個流程圖是圖3調度執(zhí)行發(fā)送方程序”步驟的詳細流程。發(fā)送方分為PANU、G|N、NAP多種角色,因此程序開始的時候也需要初始化設備。注冊回調函數是為了在界面上顯示測試過程狀態(tài)信息和觸發(fā)記錄日志事件。發(fā)送方只能根據對發(fā)送過程的監(jiān)聽來判斷文件發(fā)送成功與否,因此這個判斷在某種程度上并不能保證完全正確,需要和接收方產生的結果匯總之后再次進行分析,這個分析過程由自動測試程序控制。
圖4 自動測試發(fā)送方流程圖
PAN自動測試中接收方的流程如圖5所示,這個流程圖是圖3調度執(zhí)行接收方程序步驟的詳細流程。接收方的流程相對比較簡單,接收方必須與發(fā)送方配合才能完成整個自動測試過程。
圖5 自動測試接受方流程圖
測試結果和總結
PAN自動測試程序目的是針對互操作性測試而進行的,整個測試流程以替代部分手工測試、節(jié)約版本測試時間和人力為出發(fā)點。通過將基本功能做成自動測試工具模擬用戶操作完成大多數功能點的驗證測試,可以很大程度上減輕測試人員的工作量。實踐中,自動測試程序一般在晚上下班時間運行,次日早上測試人員通過察看自動測試運行后產生的日志文件來對測試結果進行評估。PAN自動測試程序在這方面取得了很好的效果,通過連續(xù)運行一萬次測試用例規(guī)模的自動測試的結果進行分析,對提高軟件的穩(wěn)定性很有裨益。自動測試程序運行過程中保存下來的現場數據對于開發(fā)人員修復源程序中的Bug也很有幫助。尤其是對長期的項目、增量開發(fā)模式,自動測試不失為一種很好的選擇。
評論