張建濤,馮月永,姚世強,常怡婷
(國家海洋技術(shù)中心,天津 300112)
QTP在浮標數(shù)據(jù)接收軟件測試中的應用
張建濤,馮月永,姚世強,常怡婷
(國家海洋技術(shù)中心,天津300112)
軟件測試貫穿于整個軟件開發(fā)周期,在軟件測試中引入自動化概念可以提高測試效率。使用QTP(Quick Test Professional)作為自動化測試工具,設(shè)計與實現(xiàn)浮標數(shù)據(jù)接收軟件測試框架,并應用于浮標數(shù)據(jù)接收軟件的功能測試、強度測試和回歸測試中,闡述浮標數(shù)據(jù)接收軟件實現(xiàn)自動化測試突破的關(guān)鍵技術(shù)。結(jié)果表明:提高了測試效率,擴展了軟件測試的范圍。
軟件測試;浮標數(shù)據(jù)接收軟件;自動化測試;測試框架;QTP
海洋資料浮標是國內(nèi)外海洋環(huán)境立體監(jiān)測系統(tǒng)的重要組成部分。主要目的是自動獲取長期、有效的海洋環(huán)境資料,即使在惡劣環(huán)境,其他現(xiàn)場監(jiān)測手段都難以或無法實施監(jiān)測的時候,浮標仍能有效工作[1]。浮標數(shù)據(jù)接收軟件是整個浮標系統(tǒng)的重要部分,最終的氣象、水文等海洋資料都要由浮標數(shù)據(jù)接收軟件處理,并使有關(guān)氣象、水文資料得到有效的利用[3]。它的質(zhì)量直接決定了浮標觀測數(shù)據(jù)的有效、準確和完整。而軟件測試是保證軟件質(zhì)量、提高可靠性的最重要手段[4]。
浮標數(shù)據(jù)接收軟件測試由用戶隨機操作的場景組成,測試人員必須在每輪測試中不斷地重復操作,并且測試結(jié)果會受到測試人員工作狀態(tài)的影響,人工測試非常浪費時間而且需要投入大量的人力,因此研究自動化測試是非常有必要的。本文借助QTP自動化測試工具,提出一種適用于浮標數(shù)據(jù)接收軟件的基于關(guān)鍵詞參數(shù)化的測試方法,彌補系統(tǒng)手工無法實現(xiàn)或難以實現(xiàn)的測試。
QTP具有測試腳本錄制、測試執(zhí)行、測試結(jié)果判斷和測試報告生成等基本功能,可減輕測試人員開發(fā)測試腳本的負擔,但仍然存在無法實現(xiàn)測試環(huán)境構(gòu)建、測試結(jié)果保留及測試結(jié)果判定等測試過程自動化問題[5]。針對QTP在實際項目測試中的這一問題,人們也一直在探索各種有效途徑將QTP運用于各種類型的測試項目中,研究針對不同測試對象的自動化測試解決方法,即自動化測試框架,以充分發(fā)揮QTP在自動化中的作用[9]。通過綜合考慮浮標數(shù)據(jù)接收軟件自身的功能特征和業(yè)務(wù)邏輯,設(shè)計符合浮標數(shù)據(jù)接收軟件的QTP自動化測試框架。
1.1浮標數(shù)據(jù)接收軟件自動化測試框架結(jié)構(gòu)
浮標數(shù)據(jù)接收軟件的自動化測試框架的設(shè)計主要遵循以下原則,即測試框架與被測程序獨立,測試框架易于維護及擴展,測試腳本所有語言與測試框架無關(guān),測試腳本能夠被自動執(zhí)行并生成相關(guān)結(jié)果。基于此,本文設(shè)計了如下浮標數(shù)據(jù)接收軟件自動化測試框架,主要由啟動引擎、關(guān)鍵字驅(qū)動、數(shù)據(jù)驅(qū)動、異常處理、報表引擎、日志記錄幾部分組成。測試執(zhí)行者通過軟件的人機交互界面上傳數(shù)據(jù)驅(qū)動表,交由測試服務(wù)器,通過關(guān)鍵字驅(qū)動測試執(zhí)行,測試完畢后再將測試結(jié)果及報告返回測試執(zhí)行者。
圖1 浮標數(shù)據(jù)接收軟件自動化測試框架
1.2自動化測試框架的實現(xiàn)
針對自動化測試框架,設(shè)計基于框架模型的浮標數(shù)據(jù)接收軟件的自動化測試體系,共有以下幾個功能模塊組成。
圖2 浮標數(shù)據(jù)接收軟件自動化測試體系結(jié)構(gòu)
(1)主控模塊:程序入口,主要功能是控制軟件各功能模塊的業(yè)務(wù)處理,負責與其他模塊通信,協(xié)調(diào)完成浮標數(shù)據(jù)接收軟件整體測試。
(2)業(yè)務(wù)處理:完成浮標數(shù)據(jù)接收軟件的功能與性能測試業(yè)務(wù)流程處理操作,并針對測試結(jié)果及漏洞(Bug)信息對測試業(yè)務(wù)的合理性和邏輯性進行優(yōu)化處理。
(3)時間統(tǒng)計:完成浮標數(shù)據(jù)接收軟件的查詢、數(shù)據(jù)導出等操作所耗費時間統(tǒng)計,進行性能評估。
(4)異常處理:處理浮標數(shù)據(jù)接收軟件在執(zhí)行自動化測試過程中出現(xiàn)的所有異常情況,在無人干預前提下,保證自動化測試流程的完整持續(xù)運行。
(5)結(jié)果驗證:通過在測試腳本中插入位圖檢查點的方式,對浮標數(shù)據(jù)接收軟件測試過程中實際輸出的測試結(jié)果與預期值進行比較,以判斷測試輸出結(jié)果的正確性。
(6)Bug信息記錄:對測試過程中發(fā)現(xiàn)的浮標數(shù)據(jù)接收軟件設(shè)計缺陷和功能缺陷進行分類記錄。
(7)結(jié)果存儲/分析:對浮標數(shù)據(jù)接收軟件測試過程中產(chǎn)生的運行結(jié)果和系統(tǒng)Bug信息進行存儲,并對測試結(jié)果進行分析,針對分析結(jié)果對浮標數(shù)據(jù)接收軟件進行優(yōu)化處理。
2.1制定測試計劃
首先,根據(jù)浮標數(shù)據(jù)接收軟件的需求說明書,細化軟件功能和業(yè)務(wù)流程,制定軟件測試計劃。對浮標數(shù)據(jù)接收軟件進行分析,確認軟件是否有明確的輸入條件及期望輸出結(jié)果、是否有可以自動化測試的功能點,以判斷QTP是否符合測試需求。
針對浮標數(shù)據(jù)接收軟件的特點,系統(tǒng)的主要業(yè)務(wù)功能為:數(shù)據(jù)接收、數(shù)據(jù)處理、數(shù)據(jù)存儲、數(shù)據(jù)查詢、數(shù)據(jù)導出等。比如浮標數(shù)據(jù)接收軟件是通過打開通信方式接收數(shù)據(jù)來觸發(fā)后續(xù)數(shù)據(jù)接收處理業(yè)務(wù),因此打開相應通信方式是進行自動化測試的一個輸入條件。
2.2建立測試原型
確定自動化測試的輸入條件之后,將輸入條件參數(shù)化,并依據(jù)測試計劃確定參數(shù)化變量的取值,建立自動化測試原型,形成Excell格式的數(shù)據(jù)集。浮標數(shù)據(jù)接收軟件關(guān)鍵字驅(qū)動的參數(shù)化變量主要有:端口號、波特率、查詢?nèi)掌?、查詢時間、傳感器類型等。
2.3生成測試用例
根據(jù)建立的參數(shù)化測試原型、輸入指定的參數(shù)化變量值,生成全覆蓋設(shè)定條件的Excel數(shù)據(jù)格式測試用例集合。邏輯數(shù)據(jù)驅(qū)動表中對應的參數(shù)值,腳本運行時將逐條執(zhí)行,也可循環(huán)執(zhí)行若干次。
2.4錄制測試腳本
腳本錄制之前,QTP通過啟動引擎加載系統(tǒng)自動化測試必要的配置服務(wù),包括建立QTP與數(shù)據(jù)驅(qū)動表之間的連接,從測試用例集合中獲取參數(shù)化變量值。然后根據(jù)讀取的參數(shù)值查詢?nèi)掌?、查詢時間、查詢參數(shù)名稱、通信方式名稱、端口號、波特率等信息來觸發(fā)系統(tǒng)的后續(xù)業(yè)務(wù)處理。通過關(guān)鍵字參數(shù)化和數(shù)據(jù)驅(qū)動方式錄制一個標準業(yè)務(wù)流程,QTP便能將其直觀地記錄下來并生成測試腳本。然后用For語句實現(xiàn)循環(huán),使QTP在運行腳本時能夠通過循環(huán)逐條讀取表中每一行數(shù)據(jù)。
2.5編輯測試腳本
在對象庫管理界面編輯管理被測軟件的對象庫,將整個軟件中所有的對象添加到對象庫中。另外,還要調(diào)整測試步驟、編輯測試邏輯、插入檢查點、添加測試輸出信息、添加注釋等。對于錄制下來的測試腳本,需要進一步修改和調(diào)整。
2.6優(yōu)化測試腳本
利用“Check Syntax”功能檢查測試腳本的語法錯誤,利用QTP腳本編輯界面的調(diào)試功能檢查測試腳本邏輯的正確性。由于浮標數(shù)據(jù)接收軟件界面是基于圖形化編程,控件的文本信息QTP無法自動識別,通過位圖檢查點比對,控制不同界面之間的跳轉(zhuǎn)。
2.7結(jié)果驗證
為了直觀地將測試結(jié)果展現(xiàn)出來,以便問題的記錄和回歸,針對浮標數(shù)據(jù)接收軟件的測試需求,單獨編寫測試結(jié)果輸出函數(shù)和圖表生成函數(shù)供測試腳本調(diào)用,測試人員能在查看測試結(jié)果的基礎(chǔ)上更全面了解系統(tǒng)的測試過程,尤其系統(tǒng)異常情況的處理,對測試結(jié)果按照測試需求進行合理性驗證。
3.1功能測試實例
功能測試是為確保軟件以期望的方式運行。功能測試的關(guān)鍵是測試用例的選擇,要用最少的用例覆蓋盡量大的范圍。浮標數(shù)據(jù)接收軟件進行測試過程中,數(shù)據(jù)查詢功能界面需要人工手動輸入,而查詢條件包括的可輸入數(shù)據(jù)非常多,如果每次測試都需要人工逐個輸入,則需要耗費大量人力資源。使用QTP自動化測試工具,通過編輯所錄制的測試腳本,統(tǒng)一設(shè)置各輸入框的值,可大大縮短測試周期,減少人力重復勞動。以歷史數(shù)據(jù)查詢?yōu)槔▓D3所示),主要測試“日期”設(shè)置為不同值時是否能正常顯示查詢結(jié)果,或顯示提示信息。
圖3 歷史數(shù)據(jù)查詢界面
其中,“年”的輸入已經(jīng)做了限制,只能輸入2000~9999之間的四位數(shù)字,“月份”只能在下拉框中選擇,包括“一月、二月、…、十二月”,日期的取值隨著月份的不同范圍也有所變化,尤其是二月份,在閏年為29 d。結(jié)合邊界值等價類方法,對浮標數(shù)據(jù)接收軟件數(shù)據(jù)查詢界面的輸入值進行等價類邊界值劃分,每類中抽取1個有效值數(shù)據(jù)作為查詢條件輸入數(shù)據(jù),基本覆蓋了所有可輸入條件。
表1 日期輸入等價類表
通過以上邊界值分析和等價類劃分后,確定了各變量值的取值個數(shù),在設(shè)計測試用例時,要使一條用例盡量多的覆蓋有效等價類,而無效等價類則要求一對一的覆蓋,設(shè)計的測試用例如表2所示。在每一個測試用例中,輸入條件的每一個變量值設(shè)置操作過程都相同,其他測試用例的執(zhí)行是一個簡單的機械重復過程。這類情況非常適合自動化測試。
表2 測試用例表
在采用自動化測試時,只需手工完成一個測試用例,用測試工具QTP捕獲其操作過程并錄制成腳本,然后對錄制的腳本進行修改,即可循環(huán)執(zhí)行整個測試過程,同時在后期做回歸測試時,也只需將該腳本重放即可,而不需要做簡單重復且無創(chuàng)意的編寫腳本工作。
表3 測試用例輸出結(jié)果
使用自動化測試的目的是為了提高測試效率,從而節(jié)約成本。將該自動化測試框架應用于浮標數(shù)據(jù)接收軟件測試中,達到了預期的效果。在歷史數(shù)據(jù)查詢功能模塊測試時,采用自動化測試時,除需人工在測試執(zhí)行前進行簡單的環(huán)境參數(shù)配置外,測試執(zhí)行時間遠遠少于手工測試,實際運行14個測試用例,在1 min以內(nèi)即可完成,發(fā)現(xiàn)3個BUG。
3.2強度測試實例
強度測試是為了確認被測系統(tǒng)是否能夠支持性能需求,以及預期的負載增長,它可以從響應時間、資源占有率等進行評價。其中的響應時間是用戶最直接感受到的系統(tǒng)性能,也是故障定位迫切需要解決的問題。浮標數(shù)據(jù)接收軟件的歷史數(shù)據(jù)查詢功能為用戶提供符合要求時間段歷史數(shù)據(jù)的查詢和顯示,參照互聯(lián)網(wǎng)采用的2/5/10 s原則,考慮響應時間應在10 s以內(nèi)。實際測試過程中需測試響應時間隨著數(shù)據(jù)量增加的變化情況。若采用手工測試,每次改變數(shù)據(jù)量后都要重新運行,操作過程相同,只是一個簡單的重復。采用QTP后,通過編輯錄制的腳本可使程序自動調(diào)用不同的數(shù)據(jù)集,同時調(diào)用性能監(jiān)視器記錄系統(tǒng)資源使用情況,并將測試結(jié)果以圖表形式輸出,采用簡單的for循環(huán)編寫函數(shù)即可使程序重復不間斷運行,實現(xiàn)長時間的軟件響應時間和資源占有率的測試,從而降低了測試人員的勞動強度,節(jié)省了時間。在以后的回歸測試時可直接調(diào)用這個測試腳本,運行并得出結(jié)果。
圖4 響應時間曲線圖
圖5 系統(tǒng)資源占有率曲線圖
3.3回歸測試實例
回歸測試是指在軟件BUG修改、軟件升級等軟件發(fā)生變化后需要重復以前的全部或部分測試的過程。多個測試用例的執(zhí)行若采用手工變換,效率較低。在對多個測試用例的回歸測試過程中,使用自動化測試可以加速回歸測試進度。
回歸測試中,只需直接運行已編輯好的測試腳本,即可實現(xiàn)對所測系統(tǒng)的回歸測試。
由以上測試實驗可知,QTP自動化測試工具可用于浮標數(shù)據(jù)接收軟件中的功能測試、強度測試及回歸測試,通過調(diào)整測試腳本,可使自動化測試更加優(yōu)化,從而大大節(jié)約人力資源。
浮標數(shù)據(jù)接收軟件自動化測試,實現(xiàn)了以下幾個關(guān)鍵技術(shù)的突破:
(1)規(guī)避浮標數(shù)據(jù)接收軟件的人機交互操作。在浮標數(shù)據(jù)接收軟件的數(shù)據(jù)查詢和通信方式設(shè)置等過程中,需要人工將條件輸入,方可進行處理。通過改寫并重新封裝驅(qū)動動態(tài)庫,將條件輸入及鼠標點擊動作巧妙規(guī)避,無需人工干預,即可實現(xiàn)浮標數(shù)據(jù)接收軟件的自動化測試。
(2)測試用例自動生成技術(shù)。測試用例的設(shè)計好壞直接影響系統(tǒng)的測試結(jié)果,由于手工設(shè)計的測試用例難以完全覆蓋系統(tǒng)的功能場景,在建立測試原型后,參數(shù)化關(guān)鍵字,生成全覆蓋的滿足測試需求的測試用例集合。
(3)測試結(jié)果圖形化展現(xiàn)。采用位圖比較法實現(xiàn)測試結(jié)果的對比驗證,并針對關(guān)鍵業(yè)務(wù)測試,輸入結(jié)果采用改進的柱狀圖及餅狀圖直觀展現(xiàn)測試結(jié)果。
采用測試工具進行自動化測試能減輕測試人員負擔,提高難以重現(xiàn)的低概率事件處理能力,節(jié)省時間,同時將測試人員從反復、煩雜的測試執(zhí)行中解放出來,用更多的時間進行測試設(shè)計和結(jié)果分析。但測試工具所能提供的基本功能是有限的,要將測試工具有效運用于測試項目中,需對測試工具進行二次開發(fā)。本文通過構(gòu)建符合浮標數(shù)據(jù)接收軟件的QTP自動化測試框架實現(xiàn)軟件的自動化測試。該測試框架采用INI文件配置環(huán)境,增強了測試用例設(shè)計模板的靈活性,也增強了函數(shù)庫的可重用性,同時還可重用于其他相似的數(shù)據(jù)接收處理及數(shù)據(jù)庫相關(guān)軟件的測試。在實際應用中,可根據(jù)測試需求進行擴充,通過二次開發(fā)最大限度地發(fā)揮QTP的測試潛能。
[1]趙聰蛟,周燕.國內(nèi)海洋浮標監(jiān)測系統(tǒng)研究概況[J].海洋開發(fā)與管理,2013(11):13-18.
[2]王軍成.國內(nèi)外海洋資料浮標技術(shù)現(xiàn)狀與發(fā)展[J].海洋技術(shù),1998(1):9-15.
[3]李民.Ⅱ型海洋資料浮標接收岸站設(shè)計[J].海洋技術(shù),1998(17):34-37.
[4]王洪磊.QTP在windows應用軟件測試中的應用[J].信息與電腦,2010(6):24-30.
[5]王敏,網(wǎng)智超,等.基于QTP的數(shù)據(jù)庫系統(tǒng)測試框架[J].計算機與數(shù)字工程,2014(1):117-121.
[6]劉霞.基于QTP的GUI數(shù)據(jù)驅(qū)動自動化測試框架[D].上海:復旦大學,2009.
[7]Steven Holzner(美).Visual basic 6.0技術(shù)內(nèi)幕[M].北京:機械工業(yè)出版社,1994.
[8]杜麗潔.基于QTP自動化測試框架的開發(fā)與應用[D].武漢:武漢理工大學,2012:13-17.
[9]杜斌.QTP腳本參數(shù)化的應用方法[J].應用開發(fā),2010(6):67-71.
Application of QTP in the Testing of Buoy Data Receiving Software
ZHANG Jian-tao,F(xiàn)ENG Yue-yong,YAO Shi-qiang,CHANG Yi-ting
National Ocean Technology Center,Tianjin 300112,China
Software testing is frequently conducted throughout the entire cycle of software development.To enhance testing efficiency,the concept of automation should be introduced into software testing.With Quick Test Professional(QTP)as the automatic testing tool,this paper designs and implements the testing framework of buoy data receiving software,which is applied in the function,strength and regression testing for the buoy data receiving software.This paper also focuses on the key techniques to achieve breakthroughs in automatic testing for the buoy data receiving software.The results indicate that the method proposed in this paper can improve the testing efficiency and expand the scope of software testing.
software testing;buoy data receiving software;automatic testing;testing framework;QTP
P715.2;TP311.56
A
1003-2029(2016)03-0082-06
10.3969/j.issn.1003-2029.2016.03.016
2015-12-03
張建濤(1985-),男,碩士,工程師,主要從事浮標軟件設(shè)計和通信系統(tǒng)開發(fā)。E-mail:13821562205@163.com