張建濤,馮月永,姚世強,常怡婷
(國家海洋技術中心,天津 300112)
QTP在浮標數據接收軟件測試中的應用
張建濤,馮月永,姚世強,常怡婷
(國家海洋技術中心,天津300112)
軟件測試貫穿于整個軟件開發周期,在軟件測試中引入自動化概念可以提高測試效率。使用QTP(Quick Test Professional)作為自動化測試工具,設計與實現浮標數據接收軟件測試框架,并應用于浮標數據接收軟件的功能測試、強度測試和回歸測試中,闡述浮標數據接收軟件實現自動化測試突破的關鍵技術。結果表明:提高了測試效率,擴展了軟件測試的范圍。
軟件測試;浮標數據接收軟件;自動化測試;測試框架;QTP
海洋資料浮標是國內外海洋環境立體監測系統的重要組成部分。主要目的是自動獲取長期、有效的海洋環境資料,即使在惡劣環境,其他現場監測手段都難以或無法實施監測的時候,浮標仍能有效工作[1]。浮標數據接收軟件是整個浮標系統的重要部分,最終的氣象、水文等海洋資料都要由浮標數據接收軟件處理,并使有關氣象、水文資料得到有效的利用[3]。它的質量直接決定了浮標觀測數據的有效、準確和完整。而軟件測試是保證軟件質量、提高可靠性的最重要手段[4]。
浮標數據接收軟件測試由用戶隨機操作的場景組成,測試人員必須在每輪測試中不斷地重復操作,并且測試結果會受到測試人員工作狀態的影響,人工測試非常浪費時間而且需要投入大量的人力,因此研究自動化測試是非常有必要的。本文借助QTP自動化測試工具,提出一種適用于浮標數據接收軟件的基于關鍵詞參數化的測試方法,彌補系統手工無法實現或難以實現的測試。
QTP具有測試腳本錄制、測試執行、測試結果判斷和測試報告生成等基本功能,可減輕測試人員開發測試腳本的負擔,但仍然存在無法實現測試環境構建、測試結果保留及測試結果判定等測試過程自動化問題[5]。針對QTP在實際項目測試中的這一問題,人們也一直在探索各種有效途徑將QTP運用于各種類型的測試項目中,研究針對不同測試對象的自動化測試解決方法,即自動化測試框架,以充分發揮QTP在自動化中的作用[9]。通過綜合考慮浮標數據接收軟件自身的功能特征和業務邏輯,設計符合浮標數據接收軟件的QTP自動化測試框架。
1.1浮標數據接收軟件自動化測試框架結構
浮標數據接收軟件的自動化測試框架的設計主要遵循以下原則,即測試框架與被測程序獨立,測試框架易于維護及擴展,測試腳本所有語言與測試框架無關,測試腳本能夠被自動執行并生成相關結果。基于此,本文設計了如下浮標數據接收軟件自動化測試框架,主要由啟動引擎、關鍵字驅動、數據驅動、異常處理、報表引擎、日志記錄幾部分組成。測試執行者通過軟件的人機交互界面上傳數據驅動表,交由測試服務器,通過關鍵字驅動測試執行,測試完畢后再將測試結果及報告返回測試執行者。

圖1 浮標數據接收軟件自動化測試框架
1.2自動化測試框架的實現
針對自動化測試框架,設計基于框架模型的浮標數據接收軟件的自動化測試體系,共有以下幾個功能模塊組成。

圖2 浮標數據接收軟件自動化測試體系結構
(1)主控模塊:程序入口,主要功能是控制軟件各功能模塊的業務處理,負責與其他模塊通信,協調完成浮標數據接收軟件整體測試。
(2)業務處理:完成浮標數據接收軟件的功能與性能測試業務流程處理操作,并針對測試結果及漏洞(Bug)信息對測試業務的合理性和邏輯性進行優化處理。
(3)時間統計:完成浮標數據接收軟件的查詢、數據導出等操作所耗費時間統計,進行性能評估。
(4)異常處理:處理浮標數據接收軟件在執行自動化測試過程中出現的所有異常情況,在無人干預前提下,保證自動化測試流程的完整持續運行。
(5)結果驗證:通過在測試腳本中插入位圖檢查點的方式,對浮標數據接收軟件測試過程中實際輸出的測試結果與預期值進行比較,以判斷測試輸出結果的正確性。
(6)Bug信息記錄:對測試過程中發現的浮標數據接收軟件設計缺陷和功能缺陷進行分類記錄。
(7)結果存儲/分析:對浮標數據接收軟件測試過程中產生的運行結果和系統Bug信息進行存儲,并對測試結果進行分析,針對分析結果對浮標數據接收軟件進行優化處理。
2.1制定測試計劃
首先,根據浮標數據接收軟件的需求說明書,細化軟件功能和業務流程,制定軟件測試計劃。對浮標數據接收軟件進行分析,確認軟件是否有明確的輸入條件及期望輸出結果、是否有可以自動化測試的功能點,以判斷QTP是否符合測試需求。
針對浮標數據接收軟件的特點,系統的主要業務功能為:數據接收、數據處理、數據存儲、數據查詢、數據導出等。比如浮標數據接收軟件是通過打開通信方式接收數據來觸發后續數據接收處理業務,因此打開相應通信方式是進行自動化測試的一個輸入條件。
2.2建立測試原型
確定自動化測試的輸入條件之后,將輸入條件參數化,并依據測試計劃確定參數化變量的取值,建立自動化測試原型,形成Excell格式的數據集。浮標數據接收軟件關鍵字驅動的參數化變量主要有:端口號、波特率、查詢日期、查詢時間、傳感器類型等。
2.3生成測試用例
根據建立的參數化測試原型、輸入指定的參數化變量值,生成全覆蓋設定條件的Excel數據格式測試用例集合。邏輯數據驅動表中對應的參數值,腳本運行時將逐條執行,也可循環執行若干次。
2.4錄制測試腳本
腳本錄制之前,QTP通過啟動引擎加載系統自動化測試必要的配置服務,包括建立QTP與數據驅動表之間的連接,從測試用例集合中獲取參數化變量值。然后根據讀取的參數值查詢日期、查詢時間、查詢參數名稱、通信方式名稱、端口號、波特率等信息來觸發系統的后續業務處理。通過關鍵字參數化和數據驅動方式錄制一個標準業務流程,QTP便能將其直觀地記錄下來并生成測試腳本。然后用For語句實現循環,使QTP在運行腳本時能夠通過循環逐條讀取表中每一行數據。
2.5編輯測試腳本
在對象庫管理界面編輯管理被測軟件的對象庫,將整個軟件中所有的對象添加到對象庫中。另外,還要調整測試步驟、編輯測試邏輯、插入檢查點、添加測試輸出信息、添加注釋等。對于錄制下來的測試腳本,需要進一步修改和調整。
2.6優化測試腳本
利用“Check Syntax”功能檢查測試腳本的語法錯誤,利用QTP腳本編輯界面的調試功能檢查測試腳本邏輯的正確性。由于浮標數據接收軟件界面是基于圖形化編程,控件的文本信息QTP無法自動識別,通過位圖檢查點比對,控制不同界面之間的跳轉。
2.7結果驗證
為了直觀地將測試結果展現出來,以便問題的記錄和回歸,針對浮標數據接收軟件的測試需求,單獨編寫測試結果輸出函數和圖表生成函數供測試腳本調用,測試人員能在查看測試結果的基礎上更全面了解系統的測試過程,尤其系統異常情況的處理,對測試結果按照測試需求進行合理性驗證。
3.1功能測試實例
功能測試是為確保軟件以期望的方式運行。功能測試的關鍵是測試用例的選擇,要用最少的用例覆蓋盡量大的范圍。浮標數據接收軟件進行測試過程中,數據查詢功能界面需要人工手動輸入,而查詢條件包括的可輸入數據非常多,如果每次測試都需要人工逐個輸入,則需要耗費大量人力資源。使用QTP自動化測試工具,通過編輯所錄制的測試腳本,統一設置各輸入框的值,可大大縮短測試周期,減少人力重復勞動。以歷史數據查詢為例(圖3所示),主要測試“日期”設置為不同值時是否能正常顯示查詢結果,或顯示提示信息。

圖3 歷史數據查詢界面
其中,“年”的輸入已經做了限制,只能輸入2000~9999之間的四位數字,“月份”只能在下拉框中選擇,包括“一月、二月、…、十二月”,日期的取值隨著月份的不同范圍也有所變化,尤其是二月份,在閏年為29 d。結合邊界值等價類方法,對浮標數據接收軟件數據查詢界面的輸入值進行等價類邊界值劃分,每類中抽取1個有效值數據作為查詢條件輸入數據,基本覆蓋了所有可輸入條件。

表1 日期輸入等價類表
通過以上邊界值分析和等價類劃分后,確定了各變量值的取值個數,在設計測試用例時,要使一條用例盡量多的覆蓋有效等價類,而無效等價類則要求一對一的覆蓋,設計的測試用例如表2所示。在每一個測試用例中,輸入條件的每一個變量值設置操作過程都相同,其他測試用例的執行是一個簡單的機械重復過程。這類情況非常適合自動化測試。

表2 測試用例表
在采用自動化測試時,只需手工完成一個測試用例,用測試工具QTP捕獲其操作過程并錄制成腳本,然后對錄制的腳本進行修改,即可循環執行整個測試過程,同時在后期做回歸測試時,也只需將該腳本重放即可,而不需要做簡單重復且無創意的編寫腳本工作。

表3 測試用例輸出結果
使用自動化測試的目的是為了提高測試效率,從而節約成本。將該自動化測試框架應用于浮標數據接收軟件測試中,達到了預期的效果。在歷史數據查詢功能模塊測試時,采用自動化測試時,除需人工在測試執行前進行簡單的環境參數配置外,測試執行時間遠遠少于手工測試,實際運行14個測試用例,在1 min以內即可完成,發現3個BUG。
3.2強度測試實例
強度測試是為了確認被測系統是否能夠支持性能需求,以及預期的負載增長,它可以從響應時間、資源占有率等進行評價。其中的響應時間是用戶最直接感受到的系統性能,也是故障定位迫切需要解決的問題。浮標數據接收軟件的歷史數據查詢功能為用戶提供符合要求時間段歷史數據的查詢和顯示,參照互聯網采用的2/5/10 s原則,考慮響應時間應在10 s以內。實際測試過程中需測試響應時間隨著數據量增加的變化情況。若采用手工測試,每次改變數據量后都要重新運行,操作過程相同,只是一個簡單的重復。采用QTP后,通過編輯錄制的腳本可使程序自動調用不同的數據集,同時調用性能監視器記錄系統資源使用情況,并將測試結果以圖表形式輸出,采用簡單的for循環編寫函數即可使程序重復不間斷運行,實現長時間的軟件響應時間和資源占有率的測試,從而降低了測試人員的勞動強度,節省了時間。在以后的回歸測試時可直接調用這個測試腳本,運行并得出結果。

圖4 響應時間曲線圖

圖5 系統資源占有率曲線圖
3.3回歸測試實例
回歸測試是指在軟件BUG修改、軟件升級等軟件發生變化后需要重復以前的全部或部分測試的過程。多個測試用例的執行若采用手工變換,效率較低。在對多個測試用例的回歸測試過程中,使用自動化測試可以加速回歸測試進度。
回歸測試中,只需直接運行已編輯好的測試腳本,即可實現對所測系統的回歸測試。
由以上測試實驗可知,QTP自動化測試工具可用于浮標數據接收軟件中的功能測試、強度測試及回歸測試,通過調整測試腳本,可使自動化測試更加優化,從而大大節約人力資源。
浮標數據接收軟件自動化測試,實現了以下幾個關鍵技術的突破:
(1)規避浮標數據接收軟件的人機交互操作。在浮標數據接收軟件的數據查詢和通信方式設置等過程中,需要人工將條件輸入,方可進行處理。通過改寫并重新封裝驅動動態庫,將條件輸入及鼠標點擊動作巧妙規避,無需人工干預,即可實現浮標數據接收軟件的自動化測試。
(2)測試用例自動生成技術。測試用例的設計好壞直接影響系統的測試結果,由于手工設計的測試用例難以完全覆蓋系統的功能場景,在建立測試原型后,參數化關鍵字,生成全覆蓋的滿足測試需求的測試用例集合。
(3)測試結果圖形化展現。采用位圖比較法實現測試結果的對比驗證,并針對關鍵業務測試,輸入結果采用改進的柱狀圖及餅狀圖直觀展現測試結果。
采用測試工具進行自動化測試能減輕測試人員負擔,提高難以重現的低概率事件處理能力,節省時間,同時將測試人員從反復、煩雜的測試執行中解放出來,用更多的時間進行測試設計和結果分析。但測試工具所能提供的基本功能是有限的,要將測試工具有效運用于測試項目中,需對測試工具進行二次開發。本文通過構建符合浮標數據接收軟件的QTP自動化測試框架實現軟件的自動化測試。該測試框架采用INI文件配置環境,增強了測試用例設計模板的靈活性,也增強了函數庫的可重用性,同時還可重用于其他相似的數據接收處理及數據庫相關軟件的測試。在實際應用中,可根據測試需求進行擴充,通過二次開發最大限度地發揮QTP的測試潛能。
[1]趙聰蛟,周燕.國內海洋浮標監測系統研究概況[J].海洋開發與管理,2013(11):13-18.
[2]王軍成.國內外海洋資料浮標技術現狀與發展[J].海洋技術,1998(1):9-15.
[3]李民.Ⅱ型海洋資料浮標接收岸站設計[J].海洋技術,1998(17):34-37.
[4]王洪磊.QTP在windows應用軟件測試中的應用[J].信息與電腦,2010(6):24-30.
[5]王敏,網智超,等.基于QTP的數據庫系統測試框架[J].計算機與數字工程,2014(1):117-121.
[6]劉霞.基于QTP的GUI數據驅動自動化測試框架[D].上海:復旦大學,2009.
[7]Steven Holzner(美).Visual basic 6.0技術內幕[M].北京:機械工業出版社,1994.
[8]杜麗潔.基于QTP自動化測試框架的開發與應用[D].武漢:武漢理工大學,2012:13-17.
[9]杜斌.QTP腳本參數化的應用方法[J].應用開發,2010(6):67-71.
Application of QTP in the Testing of Buoy Data Receiving Software
ZHANG Jian-tao,FENG 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-),男,碩士,工程師,主要從事浮標軟件設計和通信系統開發。E-mail:13821562205@163.com