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