糾正軟件中錯誤的方法 軟件測試
1、跟蹤法
跟蹤執行可疑的程序段,是對小型程序糾錯又一種常用的策略。它的要求是,就是讓帶錯的程序“分步執行”,即每執行完一條語(yǔ)句(或指令),就暫時(shí)停下檢查執行的結果,確認正常后再繼續進(jìn)行。許多高級語(yǔ)言都設有專(zhuān)用于跟蹤糾錯的語(yǔ)句或命令。他們都具有讓程序分步執行的功能。
對于較小的程序,用跟蹤執行來(lái)確定錯誤部位是相當有效的。例如:倘若再某一PASCAL程序中把語(yǔ)句
FOR I:=1 to 10 中的10 誤寫(xiě)為-10,則程序執行到語(yǔ)句就會(huì )直接跳過(guò)循環(huán)體中的語(yǔ)句,轉到for循環(huán)之后的語(yǔ)句去執行。
但有些時(shí)候,發(fā)現程序出錯的語(yǔ)句其本身并無(wú)錯誤,問(wèn)題倒出在位于它前面的一些語(yǔ)句上。例如,當某FORTRAN程序執行到語(yǔ)句ix=iy/(k/n)時(shí)發(fā)生了運行出錯,屏幕上顯示“整數上溢”。順著(zhù)這條語(yǔ)句返回尋找,在它的前數行找到了給k,n賦值的語(yǔ)句:
k=5
n=6
則不難想到,由于k/n整除所得結果為0,才導致iy被0除后發(fā)生上溢。像這樣從出錯處逐句返回探尋錯誤的根由,一般稱(chēng)為回溯(back tracking)或反向跟蹤。而通常高級語(yǔ)言所設置的跟蹤命令都只提供正向跟蹤,反向跟蹤只能人工進(jìn)行。
當程序較長(cháng),包含的分支與嵌套又相當多時(shí),跟蹤尤其是反向跟蹤的路徑變得多而且復雜。這是使用跟蹤法糾錯不僅效率不高,而且會(huì )變得難于執行,最好改用推理法進(jìn)行糾錯。
2、推理法
推理法來(lái)源于定理證明,又可區分為歸納法和演繹法兩大類(lèi)。
歸納法是從個(gè)別到整體的推理過(guò)程。它從收集個(gè)別的故障癥狀開(kāi)始,分析各種癥狀的相互關(guān)系后,就有可能將它們歸納為某一些假想的錯誤。如果這一些假想能被證實(shí),就找到了真實(shí)的病根。
演繹法是從一般到特殊的推理過(guò)程。根據測試獲得的錯誤癥狀,可以先列出一批可能的病因。接著(zhù)在這一大范圍的設想中,逐一的排除根據不足或與其他測試結果有明顯矛盾的病因,然后對余下的一種或數種病因作詳細的鑒別,確定真正的病因。由于真正的病因是從大量可能病因中篩選得來(lái)的,所以此法有時(shí)也稱(chēng)為“病因排除法(Cause Elimination)”
3、試湊法
這是一種不甚嚴格的糾錯策略。根據測試中暴露達到錯誤征兆,首先可設定一個(gè)可疑區。然后采用一些簡(jiǎn)單的糾錯手段(例如在程序中插入打印語(yǔ)句),進(jìn)一步獲取與可疑區有關(guān)的信息,借以肯定或修改原來(lái)的設想。如果可疑區沒(méi)有找準,便再來(lái)一遍,重置新的可疑區。這種“邊試邊瞧”的做法,糾錯的效率一般較低(這也是試湊(trial and error)一名的由來(lái)),故僅適用于結構比較簡(jiǎn)單的小程序。
文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/