1. 程式人生 > >使用指令碼語言 簡簡單單做C/C++單元測試(之一)

使用指令碼語言 簡簡單單做C/C++單元測試(之一)

先介紹基本概念:單元測試(unit testing),是指對軟體中的最小可測試單元進行檢查和驗證。對於單元測試中單元的含義,一般來說,要根據實際情況去判定其具體含義,如C語言中單元指一個函式,Java裡單元指一個類,圖形化的軟體中可以指一個視窗或一個選單等。總的來說,單元就是人為規定的最小的被測功能模組。單元測試是在軟體開發過程中要進行的最低級別的測試活動,軟體的獨立單元將在與程式的其他部分相隔離的情況下進行測試。

單元測試是由程式設計師自己來完成,最終受益的也是程式設計師自己。可以這麼說,程式設計師有責任編寫功能程式碼,同時也就有責任為自己的程式碼編寫單元測試。執行單元測試,就是為了證明這段程式碼的行為和我們期望的一致。對於程式設計師來說,如果養成了對自己寫的程式碼進行單元測試的習慣,不但可以寫出高質量的程式碼,而且還能提高程式設計水平。

當然,對於單元測試我們每個程式設計師都不可否認它的優點,但是為什麼很多人都不會去執行單元測試?我認為主要原因是執行過程太繁瑣,比如寫完一個小的模組動態庫,還需要再建立一個新工程,再寫同樣的程式碼量來實現他的測試功能,同時還需要編譯和執行。舉個簡單的例子:給定一個動態庫,直接寫一句呼叫,在鍵盤上敲一個快捷鍵就可以彈出來有測試結果的視窗。如果能夠像上述簡單的執行單元測試,是否會給大家帶來很大的興趣?本篇文章就會給大家一個這樣的驚喜!

單元測試最煩瑣最苦惱的是測試工具的選擇,常用的工具有:cppUnit, C++Test, Visual Unit,gtest等。其實對於程式設計師來說,語言也是個工具,而我們的工具箱裡面,不應該僅僅只有某一樣工具,小說裡面常常形容一個高手:

十八般武藝,樣樣精通。所以我們如果想在程式方面作為一個高手,也要有各種工具,才能在處理問題時得心應手。比如說文字處理,就是各種指令碼語言的強項,而是c/c++的軟肋。對於我們寫單元測試來說,測試用例很多時候都是資料和文字的處理。所以掌握某種指令碼語言也是一種武器。對於我個人來說,phpluarubypython這四種跨平臺的指令碼語言裡面,經過嘗試,我對python情有獨鍾,因為他和c/c++很像,當時接觸時,半個小時就入門了。所以文章開頭說的驚喜就是怎麼把python用到單元測試中,而不是cppUnit類似的工具。其基於的原理是:通過pythonctypes模組,可以直接呼叫動態連結庫中的匯出函式。