含測試點|淺談軟件測試之靜態測試

編程語言 軟件 C語言 程序員 恆生開發者社區 2017-03-24

小編提示:本文含靜態測試主要檢查點,純乾貨,看官們可先收藏後閱讀。

從是否執行被測試軟件來進行分類,測試可以分為靜態測試和動態測試。軟件本身包含了各種代碼,如果只是檢查代碼和文檔,而不執行被測試的軟件,此時所進行的就是靜態測試。反之,如果在測試過程中執行被測試的軟件,則所進行的就是動態測試。本文從什麼事靜態測試、為什麼進行靜態測試以及如何進行靜態測試三個方面進行講解,和大家分享下個人對於靜態測試的一些經驗總結。

01/什麼是靜態測試?

靜態測試是指無須執行被測代碼,而是藉助專用的軟件測試工具評審軟件文檔或程序,度量

程序靜態複雜度,檢查軟件是否符合編程標準,藉以發現編寫的程序的不足之處,減少錯誤出現的概率。

02/為什麼要進行靜態測試?

靜態分析潛在收益是很高的: 在軟件開發生命週期中,越是後來發現的缺陷,其去除成本呈指數上漲,所以缺陷越早發現越好。靜態分析是所有測試中可以最先發現缺陷的方法,極大的降低了軟件的修復成本。

對軟件經理,靜態分析有助於:

1) 減少部署後存在錯誤的風險,去除此時發現的錯誤是非常昂貴的;

2) 縮短產品上市時間;

3) 減少代碼審查和測試的成本和時間;

4) 自動化(部分)審查,沒有或多個有限的人工檢查;

5) 消除明顯的錯誤以便改善測試的速度和重點;

6) 提高代碼質量(堅持編碼標準);

7) 實現更高的覆蓋率(更多的代碼檢查):與測試覆蓋率相關但並不完全一樣,因為重點不同。

對軟件開發人員,靜態分析有助於:

1) 提早找到/阻止錯誤(在錯誤變得很難處理之前):工具可用作開發週期的一部分,像編譯器;更直接,明顯的反饋。

2) 發現/阻止“難以測試”的錯誤:例如,靜態分析善於檢測潛在的內存洩露和緩衝區溢出,從而使開發人員更高效,花費更少的時間調試。

03/如何進行靜態測試?

從概念中我們可以知道,靜態測試包括對代碼測試、界面測試和文檔測試三個方面:

1) 對於代碼測試,主要測試代碼是否符合相應的標準和規範。

2) 對於界面測試,主要測試軟件的實際界面與需求中的說明是否相符。

3) 對於文檔測試,主要測試用戶手冊和需求說明是否符合用戶的實際需求。

靜態測試主要檢查點:見表1

含測試點|淺談軟件測試之靜態測試

下面分別從代碼、界面、文檔三個方面進行詳細說明每一部分應該如何進行測試。

1) 界面測試:見表2

含測試點|淺談軟件測試之靜態測試

含測試點|淺談軟件測試之靜態測試

含測試點|淺談軟件測試之靜態測試

含測試點|淺談軟件測試之靜態測試

含測試點|淺談軟件測試之靜態測試

主要從聯機功能、接口測試、報表測試和批量測試幾個方面進行闡述。

1) 文檔測試

主要是需求文檔與實際設計和實現是否相符,可以根據界面測試中的點進行測試。

2) 代碼測試

程序代碼的靜態測試要複雜得多,需要我們按照相應的代碼規範模板來逐行檢查程序代碼。

對代碼的檢查我們推薦使用現有的工具進行。那麼我們從哪裡獲得這個規範模板呢?其實沒有一個統一的標準,每個公司內部一般都有自己的編碼規範,比如《c/c++編碼規範》,你只需要按照上面的條目逐條測試就可以了。

含測試點|淺談軟件測試之靜態測試

含測試點|淺談軟件測試之靜態測試

這段C語言編寫的小程序,比較簡單,實現的功能為:在主函數裡輸入兩個單精度的數a和b,

然後調用max子函數來求a和b中的大數,最後將大數輸出。我們現在就對代碼進行靜態分析,主要根據一些C語言的基礎知識來檢查。

我們把問題分為兩種,一種必須修改的,另一種建議修改的。

必須修改的問題有三個:

1)程序沒有註釋。

註釋是程序中非常重要的組成部分,一般佔到總行數的1/4左右。程序開發出來不僅是給程序員看,其他程序員和測試人員也要看。有了註釋,別人就能很快地瞭解程序實

現的功能。註釋應該包含作者,版本號、創建日期等,以及主要功能模塊的含義。

2)子函數max沒有返回值的類型。

由於類型為單精度,我們可以在max()前面加一個float類型聲明。

3)精度丟失問題。

大家注意“c=max(a,b)”語句,我們知道c的類型為整型int ,而max(a,b)的返回值z為單精度float, 將單精度的數賦值給一個整型的數,c語言的編譯器會自動地進行類型轉換,將小數部分去掉,比如z=2.5,賦給c則為2,最後輸出的結果就不是a和b 中的大

數,而是大數的整數部分。

建議修改的問題也有三個;

1)Main函數沒有返回值類型和參數列表。

雖然main函數沒有返回值和參數,但是我們將其改為void main(void),來表明main函數的返回值和參數都為空,因為在有的白盒測試工具的編碼規範中,如果不寫void會認為是個錯誤。

2)一行代碼只定義一個變量。

3) 程序適當加些空行。空行不佔內存,會使程序看起來更清晰。

含測試點|淺談軟件測試之靜態測試

04/總結

軟件測試技術是一門很深的學問,需要測試人員不斷去摸索總結,本文只是我對於靜態測試的一些看法與總結,希望能夠給大家帶來幫助。(文/畢東格)

恆生開發者社區(bbs.hscloud.cn)- 恆生電子面向所有開發者提供服務分享、技術交流和互聯共通等一站式服務平臺。

來源:恆生開發者社區恆生技術專欄

相關推薦

推薦中...