靜態(tài)測試 靜態(tài)方法是指不運行被測程序本身,僅通過分析或檢查源程序的文法、結(jié)構(gòu)、過程、接口等來檢查程序的正確性。靜態(tài)方法通過程序靜態(tài)特性的分析,找出欠缺和可疑之處,例如不匹配的參數(shù)、不適當(dāng)?shù)难h(huán)嵌套和分支嵌套、不允許的遞歸、未使用過的變量、空指針的引用和可疑的計算等。靜態(tài)測試結(jié)果可用于進(jìn)一步的查錯,并為測試用例選取提供指導(dǎo)。 動態(tài)測試 動態(tài)方法是指通過運行被測程序,檢查運行結(jié)果與預(yù)期結(jié)果的差異,并分析運行效率和健壯性等性能,這種方法由三部分組成:構(gòu)造測試實例、執(zhí)行程序、分析程序的輸出結(jié)果。 它們只是一個測試的不同分類角度而已,同一個測試,既有可能屬于黑盒測試,也有可能屬于測試;既有可能屬于靜態(tài)測試,也有可能屬于白盒測試。而且它們之間還有包括交叉的關(guān)系,總結(jié)以下4句話: ● 黑盒測試有可能是動態(tài)測試(運行程序,只看輸入和輸出),也有可能是靜態(tài)測試(不運行程序,只是查看界面) ● 白盒測試有可能是動態(tài)測試(運行程序,并分析代碼結(jié)構(gòu)),也有可能是靜態(tài)測試(不運行程序,只是靜態(tài)查看代碼) ● 動態(tài)測試有可能是黑盒測試(運行程序,只看輸入和輸出),也有可能是白盒測試(運行程序,并分析代碼結(jié)構(gòu)) ● 靜態(tài)測試有可能是黑盒測試(不運行程序,只是查看界面),也有可能是白盒測試(不運行程序,只是靜態(tài)查看代碼) 區(qū)別一:靜態(tài)測試是用于預(yù)防的,動態(tài)測試是用于矯正的 區(qū)別二:多次的靜態(tài)測試比動態(tài)測試要效率和效益高 區(qū)別三:靜態(tài)測試綜合測試程序代碼 區(qū)別四:在相當(dāng)短的時間里,靜態(tài)測試的覆蓋度能達(dá)到100%,而動態(tài)測試經(jīng)常是只能達(dá)到50%左右,原因動態(tài)測試發(fā)現(xiàn)的bug大部分只是在測試實際執(zhí)行的那部分代碼 區(qū)別五:動態(tài)測試比靜態(tài)測試更花時間 區(qū)別六:靜態(tài)測試比動態(tài)測試更能發(fā)現(xiàn) bug 區(qū)別七:靜態(tài)測試的執(zhí)行可以在程序編碼編譯前,動態(tài)測試只能在編譯后才能執(zhí)行 區(qū)別八:靜態(tài)測試能發(fā)現(xiàn)動態(tài)測試所不能發(fā)現(xiàn)的一些:“Syntax error,code that hard to maintain,code that hard to test,code that does not confirm to coding standard, and ANSI violations” 靜態(tài)測試的和動態(tài)測試淺析 根據(jù)程序是否運行,測試可以分為靜態(tài)測試和動態(tài)測試。靜態(tài)測試就是靜態(tài)分析,對模塊的源代碼進(jìn)行研讀,查找錯誤或收集一些度量數(shù)據(jù),并不需要對代碼進(jìn)行編譯和仿真運行。靜態(tài)測試采用人工檢測和計算機(jī)輔助靜態(tài)分析手段進(jìn)行檢測,只進(jìn)行特性分析。 ● 人工檢測:人工檢測是指不依靠計算機(jī)而完全靠人工審查或評審軟件。人工檢測這種方法可以有效地發(fā)現(xiàn)邏輯設(shè)計和編碼錯誤,發(fā)現(xiàn)計算機(jī)不易發(fā)現(xiàn)的問題。 ● 計算機(jī)輔助靜態(tài)分析:利用靜態(tài)分析工具對被測程序進(jìn)行特性分析,從程序中提取一些信息,以便檢查程序邏輯的各種缺陷和可疑的程序構(gòu)造。如用錯的局部變量和全局變量,不匹配的參數(shù),潛在的死循環(huán)等。靜態(tài)分析中還可以用符號代替數(shù)值求得程序結(jié)果,阻便對程序進(jìn)行運算規(guī)律的檢驗。 靜態(tài)測試包括對軟件產(chǎn)品的設(shè)計規(guī)格說明書的審查,對程序代碼的閱讀、審查等。靜態(tài)分析的查錯和分析功能是其他方法所不能替代的.已被當(dāng)做一種自動化的代碼校驗方法。 動態(tài)測試是通過觀察代碼運行時的動作,來提供執(zhí)行跟蹤、時間分析,以及測試覆蓋度方面的信息。動態(tài)測試通過真正運行程序發(fā)現(xiàn)錯誤。通過有效的測試用例,對應(yīng)的輸入腳出關(guān)系來分析被測程序的運行情況。 不同的測試方法各自的目標(biāo)和側(cè)重點不一樣,在實際工作中。應(yīng)將這兩種方法結(jié)合起來運用,以達(dá)到更完美的效果。 以上的測試方法各有所長,每種方法都可設(shè)計出一組有用的例子,用這組測試用例可以比較容易地發(fā)現(xiàn)某種類型的錯誤,卻不易發(fā)現(xiàn)另一種類型的錯誤。因此在實際測試中,應(yīng)結(jié)合各種測試方法,形成綜合策略。在單元測試主要用白盒測試;在系統(tǒng)測試時主要用黑盒測試,或者以黑盒測試為主要測試方法,白盒測試為輔助方法等。