您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > cppUnit
用CPPUnit做單元測試
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/3/4 16:11:41 ] 推薦標(biāo)簽:

CPPUnit是基于C++的單元測試框架,可以有效提高開發(fā)的系統(tǒng)質(zhì)量。
引言:
QA過程常采用兩種測試方法:
1、單元測試(acceptance測試):為軟件系統(tǒng)中的每一個(gè)邏輯單元制定的一系列驗(yàn)證方法。僅測試單元的功能,而不考慮各個(gè)單元之間的協(xié)作關(guān)系。
2、系統(tǒng)測試(集成測試):測試系統(tǒng)的功能,尤其是各單元模塊之間的協(xié)作關(guān)系。
下面要講的是如何采用CPPUnit對C/C++工程進(jìn)行單元測試。
文章假設(shè)讀者熟悉單元測試的概念及其重要性。
單元測試設(shè)計(jì):
想一下開發(fā)團(tuán)隊(duì)中常常出現(xiàn)的一種場景:程序員正在使用Debugger工具測試代碼。采用Debugger工具可以可以隨時(shí)隨地檢查每個(gè)變量。步步跟蹤,檢查變量的值是否異常。Debugger是一種強(qiáng)有力的調(diào)試工具,但是調(diào)試速度相當(dāng)慢,并且包含不少錯(cuò)誤。在這種情況下調(diào)試是讓人崩潰的。這些復(fù)雜有大量重復(fù)的驗(yàn)證方法是可以通過自動(dòng)化的手段完成的,需要做的是選擇合適的工具并編寫少量代碼。
下面要介紹的工具叫做“單元測試框架”,借助這種工具,可以通過編寫一些小的模塊來完成模塊(可以是類、函數(shù)和庫)的單元測試。
下面來看一個(gè)例子:編寫一個(gè)小的模塊,主要功能是求兩數(shù)之和。其C語言代碼如下:
BOOL addition(int a, int b)
{
    return (a + b);
}
測試單元編寫成另外一個(gè)模塊(C函數(shù))。該模塊測試所有可能的求兩數(shù)之和的組合,通過返回True或False來判斷被測模塊是否通過了測試。代碼如下:
BOOL additionTest()
{
    if ( addition(1, 2) != 3)
    {
        return (FALSE);
    }

    if ( addition(0, 0) != 0)
    {
        return (FALSE);
    }

    if ( addition(10, 0) != 10)
    {
        return (FALSE);
    }

    if ( addition(-8, 0) != -8)
    {
        return (FALSE);
    }

    if ( addition(5, -5) != 0)
    {
        return (FALSE);
    }

    if ( addition(-5, 2) != -3)
    {
        return (FALSE);
    }

    if ( addition(-4, -1) != -5)
    {
        return (FALSE);
    }

    return (TRUE);
}
測試的情況包括:
正數(shù)+正數(shù)
0+0
正數(shù)+0
負(fù)數(shù)+0
正數(shù)+負(fù)數(shù)
負(fù)數(shù)+正數(shù)
負(fù)數(shù)+負(fù)數(shù)
每一次測試都是通過對比被測模塊的返回值和期望值,如果二者不同,返回FALSE。如果終返回TRUE,說明模塊通過了所有的測試。
這個(gè)用以測試其他模塊的小模塊(函數(shù))被稱為Test Case, 其中包含了程序員需要對被測單元的一系列檢查。每一個(gè)確認(rèn)(對被測單元的一次調(diào)用)都必須和被測單元相對應(yīng)。在這個(gè)例子中,檢查了“求和操作”在操作數(shù)符號(hào)不同的情況下的運(yùn)行情況。當(dāng)然了,還需要另外寫一些Test Case來驗(yàn)證其他情況下的運(yùn)行情況。比如其他一些常見的加法組合。

上一頁1234下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd