1 引言

  軟件測試的目的在于找出軟件缺陷,提升軟件質(zhì)量。軟件測試是軟件產(chǎn)品的質(zhì)保員,是軟件生命周期的重要一環(huán)。根據(jù)大量統(tǒng)計數(shù)據(jù)顯示,在典型的軟件項目開發(fā)中,軟件測試投入的成本往往占到軟件總成本的40%以上。為了降低測試成本,提升測試效率,自動化測試工具逐步受到人們的重視,越來越多地被應用于軟件測試。

2 QTP簡介

  QTP的全稱是Quicktest Professional,是Mercury公司開發(fā)的企業(yè)級自動化測試工具,后來被惠普公司收購,正式命名為HP Quicktest Professional Software,從11.5版本,改名為Unified Functional Testing,目前最新版本是12.00,可以支持中文,是市場上普遍應用的一款自動化測試工具。

  2.1 QTP的特點

  QTP的內(nèi)置插件可支持多種開發(fā)環(huán)境的軟件,在啟動QTP時,可根據(jù)被測軟件的環(huán)境,選擇合適的插件,進行加載;QTP擁有強大的對象庫和對象識別機制,支持用戶以錄制的方式生成腳本,擁有的多種回放模式,可方便進行腳本維護;QTP使用VBScript作為腳本語言,并可實例化.net對象,封裝的函數(shù)和對象豐富,可擴展性強;使用QTP的數(shù)據(jù)池(Data Table)可進行數(shù)據(jù)驅(qū)動測試。

  2.2 QTP的適用范圍

  自動化測試能幫助提高軟件的質(zhì)量,協(xié)助測試人員提高工作效率,但自動化測試不是萬能的,不可能完全取代手工測試,它有其適用的范圍。(1)適用于需求變更不頻繁、項目周期長的軟件系統(tǒng)。需求變更過于頻繁會增加QTP測試腳本的維護成本。對于項目周期短的軟件系統(tǒng),引入QTP,不但會增加測試成本,而且會延長系統(tǒng)的發(fā)布時間,得不償失。(2)待測系統(tǒng)使用的控件必須可以被QTP識別。這是使用QTP進行自動化測試的前提。一個自動化測試工具的好壞評判最基本的標準就是,是否能夠識別更多的系統(tǒng)控件以及對無法識別的控件能否提供各種解決方案或自定義開發(fā)各種控件的識別代碼。(3)QTP測試腳本復用率高,腳本維護成本低。也是應用QTP的一個很重要的前提。

3 國家科技計劃預算管理系統(tǒng)測試背景

  3.1 系統(tǒng)簡介

  本文所說的國家科技計劃是指三大計劃,分別是國家重點基礎研究發(fā)展計劃(簡稱973計劃)、國家科技支撐計劃(簡稱支撐計劃)、國家高技術研究發(fā)展計劃(簡稱863計劃)。國家科技計劃預算管理系統(tǒng)是用于支撐三大計劃經(jīng)費管理工作的,它包含概算填報、預算申報、預算評審、預算擬安排、預算批復、預算書、中期財務檢查、財務驗收和決算九個子系統(tǒng),涵蓋了課題經(jīng)費的整個生命周期。其系統(tǒng)結(jié)構如圖1所示。

  973計劃、863計劃和支撐計劃的預算管理系統(tǒng)是三個獨立的系統(tǒng),它們的功能類似,只是各子系統(tǒng)的流程和功能有細微的區(qū)別。

  3.2 系統(tǒng)測試特點

  預算管理系統(tǒng)包含的九個子系統(tǒng),除預算評審、預算擬安排和預算批復系統(tǒng)的功能簡單些之外,其他6個子系統(tǒng)的流程和測試功能點都非常多,它們的功能和流程大同小異,我們以973計劃的預算申報系統(tǒng)為例進行說明,973預算申報系統(tǒng)的填報流程如圖2所示。

  圖2只是973預算申報系統(tǒng)的填報流程,不包含預算申報系統(tǒng)的管理流程。如果對每個子系統(tǒng)進行全流程測試,那么對測試數(shù)據(jù)的需求量是相當大的。每個流程的起點是,填報一套平衡關系符合上報要求的報表數(shù)據(jù),如果需要N套數(shù)據(jù),那么就要填平N套報表。

  973預算申報系統(tǒng)包含封面、課題基本情況表、課題參加人員基本情況表、國家科技計劃課題預算表、設備費——購置/試制設備預算明細表、測試化驗加工費預算明細表、承擔單位研究經(jīng)費支出預算明細表和國家科技計劃課題自籌經(jīng)費來源證明8個需要填報的報表,不僅報表內(nèi)有需要平衡的審核關系,報表間也存在鉤稽關系審核,所有這些需要平衡的審核條件有50條之多。填平一套報表,就需要平衡這幾十條審核關系。

  如果升級測試的重點,不是報表審核關系,而是流程測試或者是后續(xù)功能點的測試,那么把大量的測試時間花費在報表填報以及平衡審核關系上,那就太不必要了。但是填平報表又是流程測試和后續(xù)功能點測試的前提,我們需要填平大量的報表以備后續(xù)測試,但又不想花費大量的時間在填平報表上,于是我們將QTP自動化測試引入到測試中來,讓QTP幫助我們批量造數(shù)。

4 QTP在系統(tǒng)測試中的應用

  4.1 QTP自動化測試腳本的實現(xiàn)

  QTP自動化測試腳本分為兩部分,第一部分是取數(shù)腳本,實現(xiàn)了報表數(shù)據(jù)的取出、存儲及導出功能。其核心代碼如下:

  with Browser("國家重點基礎研究發(fā)展計劃預算申報填報系統(tǒng)").Page("國家重點基礎研究發(fā)展計劃預算申報填報系統(tǒng)").Frame("frmRight").ActiveX("CellWeb5 Control").Object

  For i=0 to .GetTotalSheets

  .SetCurSheet i

  DataTable.Value("rowCount","mysheet")=.GetRows(i)

  DataTable.Value("sheetNum","mysheet")=i