毛嶺霞
摘要:本文較系統(tǒng)地闡述了作者經(jīng)過實踐、總結(jié)的系統(tǒng)開發(fā)所必須經(jīng)歷的重要階段-調(diào)試與測試的步驟和方法,實踐證明了它的實用性和可行性。
關鍵詞:系統(tǒng)設計;調(diào)試;系統(tǒng)模型;斷點
系統(tǒng)設計在經(jīng)過了系統(tǒng)分析、系統(tǒng)設計、系統(tǒng)實施階段后,便有了一個完整的應用系統(tǒng)。但設計一個系統(tǒng)的目的是為了應用,設計過程所做的全部工作都是為了讓系統(tǒng)能夠正常運行,且運行結(jié)果正確,滿足用戶的需求。因此,應用程序設計完成后,雖然語法上已無錯誤,但可能在邏輯上存在錯誤,不能實現(xiàn)其設計功能,所以還要進行關鍵的調(diào)試運行工作。下面,就本人開發(fā)的《企業(yè)合同管理系統(tǒng)》的工作實踐,總結(jié)其調(diào)試步驟及方法如下(以使用PowerBuilder為例)。
一、 系統(tǒng)調(diào)試步驟
1. 程序調(diào)試
內(nèi)容包括程序的語法調(diào)試和邏輯檢查。在邏輯檢查之前,需要編造測試數(shù)據(jù)。測試數(shù)據(jù)除采用正常數(shù)據(jù)外,還應該編造一些異常數(shù)據(jù)和錯誤數(shù)據(jù),用來考驗程序的正確性和可靠性。
(1)用正常數(shù)據(jù)調(diào)試。程序能否完成系統(tǒng)所要求的各種功能;寫入文件的各項記錄是否正確(包括首/末記錄);輸出的數(shù)據(jù)是否正確,是否有遺漏;各項檢驗測試是否正確。本系統(tǒng)經(jīng)過這項工作后,尚難以確定應用程序運行的正確性。
(2)用異常數(shù)據(jù)調(diào)試。例如用空數(shù)據(jù)文件去進行測試,檢查程序能否正確運行。本系統(tǒng)經(jīng)過這個階段的測試,進一步驗證程序的運行是否正常。
(3)用錯誤的數(shù)據(jù)調(diào)試。試驗應用程序?qū)﹀e誤的處理能力,包括顯示出錯信息以及允許修改錯誤的可能等。輸入數(shù)據(jù)錯誤時能否及時查出或發(fā)出出錯信息,并允許修改;操作錯誤時能否及時查出或發(fā)出警告信號,并允許修改。經(jīng)過運行調(diào)試,本系統(tǒng)基本具備上述功能。
2. 功能調(diào)試
系統(tǒng)的應用軟件是按處理功能劃分成模塊的,一個處理功能模塊由一個或多個程序段組成。所以,在單個程序段調(diào)試成功后,還需要對其功能模塊進行調(diào)試,即將一個功能模塊包含的所有程序段按邏輯次序串聯(lián)起來調(diào)試。這種測試的目的主要是保證內(nèi)部控制關系和數(shù)據(jù)內(nèi)容正確,同時測試模塊的運轉(zhuǎn)效率。
3. 總調(diào)
(1)主控制程序和調(diào)度程序調(diào)試。這部分程序的語句不多,但邏輯控制復雜。調(diào)試時將所有的控制程序與各功能模塊相連的接口(界面)用“短路”程序替代原來的功能模塊。所謂“短路”程序,就是直接送出預先安排計算結(jié)果的聯(lián)系程序。調(diào)試目的不是處理結(jié)果的正確性,而是控制來往通路和參數(shù)傳送的正確性,發(fā)現(xiàn)并解決資源調(diào)度中的問題。
(2)程序的總調(diào)。經(jīng)過功能模塊和控制與調(diào)度程序的調(diào)試,即可開始整個系統(tǒng)程序的總調(diào)。對系統(tǒng)各種可能的使用形態(tài)及其組合在軟件中的流通情況進行可行性測試。這一階段最容易查出系統(tǒng)中屬于相互關系方面的錯誤和缺陷。進行系統(tǒng)程序調(diào)試時,通常采用“系統(tǒng)模型”法來解決如何編造最少量輸入數(shù)據(jù)達到較全面檢查軟件的目的。采用這種方法所輸入的數(shù)據(jù)是經(jīng)過精心選擇的。數(shù)據(jù)量較少,不僅可以使工作量大為減少,而且也更容易發(fā)現(xiàn)錯誤和確定錯誤的范圍。但系統(tǒng)中的數(shù)據(jù)庫或文件是真實的,調(diào)試中要嚴格核對計算機和人工兩種處理的結(jié)果,通常是先校對最終結(jié)果,發(fā)現(xiàn)錯誤再返回到相應中間結(jié)果部分校對,直到基本上確定錯誤范圍。總調(diào)測試通過以后,還需要進行實況測試。實況測試以過去原系統(tǒng)手工操作方式得出正確的數(shù)據(jù)作為新系統(tǒng)的輸入,由計算機處理后,將所得到的結(jié)果與手工作業(yè)結(jié)果相核對。這一階段,除嚴格校對結(jié)果外,主要考察系統(tǒng)的運轉(zhuǎn)合理性與效率,包括可靠性(作業(yè)處理的成功率是否高)。
二、 調(diào)試的一般方法
1. 使用斷點
斷點是在程序邏輯中作的標記,設置斷點可使程序在需要的地方自動停止執(zhí)行。使用斷點要做以下的準備工作:設置并清除斷點、從斷點進入中斷模式。
2. 使用stop語句
PB執(zhí)行到stop語句會自動暫停程序并切換到中斷模式,插入stop語句就相當于設置斷點。但是,程序中設置的斷點在程序加載時會自動清除,而stop語句卻一直存在。因此,調(diào)試完成后要手工清除所有的stop語句。
3. 控制程序的運行
調(diào)試的最重要部分就是控制程序的運行。如果程序只運行一條語句,那么要確定哪一部分有問題就相當容易了。為此,我設計了如下響應步驟:逐個語句執(zhí)行、整個過程執(zhí)行、從過程中出來、繞過部分代碼、設置下一條執(zhí)行的語句。
4. 直接查看變量的值
調(diào)試程序時,經(jīng)常要查看某些變量的值。PB提供了一個非常簡單的方法,只要將鼠標停留在要查看的變量上,稍停一會就會彈出一個小方框。通過小方框,就可以了解變量的值。
5. 通過本地窗口查看變量的值
通過本地窗口,可以顯示當前過程中所有變量的值,要打開本地窗口,請選擇“視圖”菜單的“本地窗口”。本地窗口僅顯示當前過程中變量的值,當程序的執(zhí)行從一個過程切換到另一個過程時,本地窗口上的內(nèi)容就會發(fā)生變化。
(1)監(jiān)視表達式與監(jiān)視窗口。監(jiān)視表達式是一種中斷表達式,當監(jiān)視表達式的值改變或者等于一個特殊值時,程序的執(zhí)行就會進入中斷模式。添加監(jiān)視表達式、監(jiān)視窗口。
(2)立即窗口。輸出信息到立即窗口、直接從立即窗口打印、從立即窗口設置變量或者屬性的值、從立即窗口測試過程、檢查錯誤號。
按照前面講的調(diào)試方法和步驟,對系統(tǒng)進行調(diào)試。先采用逐句法進行檢查,然后逐個過程調(diào)試。在調(diào)試的過程中遇到了不少錯誤,它們或是語法錯誤,或是編譯錯誤,或是執(zhí)行結(jié)果不符合預定的要求,最終系統(tǒng)調(diào)試成功,完全正常運行。
參考文獻:
[1]董軍.PowerBuilder案例開發(fā)集錦[M].
北京:電子工業(yè)出版社,2002.
(新鄉(xiāng)市新鄉(xiāng)職業(yè)技術學院)