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