專利名稱:自動檢驗測試結果的程序單元測試方法
技術領域:
本發明涉及程序單元測試領域,尤其是能夠對測試結果進行自動化檢測的程序單元測試方法。
背景技術:
單元測試是集中對由源代碼實現的每一個程序單元進行測試,檢查各個程序模塊是否正確地實現了規定的功能,檢查各程序模塊的返回值是否正確。單元測試檢查每一個控制結構的分支以確保完全覆蓋和最大可能的錯誤檢查。
有些單元測試方法,雖然設計了一個控制模塊來控制程序的被測代碼的運行,有限的提高了編寫測試代碼的效率和回歸測試的效率。但是,對單元測試執行結果的檢查卻沒有實現自動化。目前的對單元測試執行結果的檢查都是通過程序單步跟蹤或者輸出測試結果來進行人工檢查的方式來進行,單步跟蹤操作繁瑣、工作量大,而人工的檢查有以下三個不足的地方一、對測試路徑覆蓋的完全程度、測試結果和返回值等用人工的方法檢測要花費很大的精力,檢查速度很慢。
二、檢查是人工的,由于主觀因素的影響,很容易因為人的大意而產生誤判。
三、回歸測試很不方便。單元測試是為了盡可能多的發現程序的錯誤,發現錯誤后,為了修正錯誤,是需要對程序代碼進行修改的。每當程序代碼被修改的時候,程序配置的某些方面(如文檔或者數據)也會被修改。回歸測試是對修改過的程序再重新測試一遍,以保證修改是正確的,同時保證所做的修改不會帶來不可預料的行為或者新的錯誤。由于測試結果不能自動檢測,因此對于錯誤修改后的回歸測試過程就會十分繁瑣。必需將測試正確的測試用例再重新測試一遍,重新檢查測試結果,以確保修改是正確的,并且沒有引入其他的錯誤,沒有由于失誤造成誤判而錯過了某些問題的發現。
此外,現有的測試方法還存在另一個弊端,當測試完成、發布版本的時候,還需要從程序代碼中刪除大量的測試代碼,這個過程往往復雜而且極易出錯。
發明內容
本發明所要解決的技術問題在于提供一種自動檢驗測試結果的程序單元測試方法,自動檢驗單元測試的路徑覆蓋情況和返回值的正確性,提高單元測試的測試效率,避免人工檢測的低效率和高誤差率的弊端。
為解決上述技術問題,本發明所采用的技術方案是提供一種自動檢驗測試結果的程序單元測試方法,測試控制模塊控制主測試過程,測試腳本由多個測試用例組成,該測試方法包括以下的步驟(a).在構成測試腳本的每個測試用例中根據需要通過插樁函數構建被測代碼運行的一種環境,控制測試代碼的運行;(b).在每個測試用例中設定一個標準路徑,代表在本測試用例環境下被測代碼要走的分支的先后次序和走的總分支數,同時根據需要在相應的測試用例中定義一個本測試用例環境下被測代碼應該返回的標準返回值;(c).測試控制模塊執行測試腳本,按順序依次運行該測試腳本的測試用例;(d).測試控制模塊判斷測試用例中是否有標準返回值,如果有,轉步驟(e),如果沒有,轉步驟(f);(e).測試用例記錄在控制被測代碼運行時,記錄下測試代碼運行得出的實際返回值;
(f).測試用例按順序依次控制被測單元走相應的分支,并通過被測單元的插樁函數將走過的分支記錄下來;(g).測試腳本運行結束時,通過自動檢測模塊比較檢測路徑是否覆蓋完全,如果覆蓋完全則提示成功信息,如果沒有覆蓋完全,則提示出覆蓋不完全信息,同時自動測試模塊比較定義的標準返回值與實際運行得到的返回值是否相符,如果完全相符則提示成功信息,如果不完全相符,則提示出返回值不符信息;(h).測試控制模塊判斷是否所有的測試腳本都已經被執行完畢,如果還有未被執行的測試腳本,測試控制模塊執行下一個測試腳本,轉步驟(c),如果所有的測試腳本都已經執行完畢,測試結束。
本發明的有益效果是實現了單元測試的全自動,自動檢驗單元測試的路徑覆蓋情況和返回值的正確性,大大提高了單元測試的測試效率,避免了由于人工的誤判而帶來的失誤,并且可以方便的進行回歸測試。
圖1是測試工程的整體結構圖。
圖2是測試自動檢驗的流程圖。
具體實施例方式
為了使本發明的目的、技術方案和優點更加清楚,下面與附圖結合說明本發明的具體實施方式
。
本發明的技術方案大致可分為四個部分第一個部分為測試控制模塊,控制整個單元測試的進行。
第二個部分是測試腳本,測試腳本由很多個測試用例構成,這些測試用例是通過不同的插樁函數為被測單元構建的各種測試環境,測試用例越豐富,被測單元就會被測試的越充分。測試控制模塊按順序依次執行各個測試腳本,控制整個測試過程。測試用例和被測代碼的運行結果通過測試結果自動檢測模塊來檢測其正確性。
第三個部分是測試自動檢測模塊,負責對測試結果進行自動檢測,如路徑覆蓋是否完全,如果被測單元有返回值,則需要判斷返回值是否正確。
第四個部分就是被測單元,被測單元在測試過程中只需要在相應分支增加一個插樁函數,不需要增加代碼,當代碼測試完成,發布版本的時候,只需要把插樁函數定義成空函數就可以了。
如圖1測試工程的整體結構圖所示,測試控制模塊控制主測試過程,測試腳本由很多個測試用例組成,每個測試用例都根據需要通過插樁函數構建被測代碼運行的一種環境,來控制被測代碼的運行,在每個測試用例中設定一個標準路徑,這個標準路徑可以以字符串或有代表性的數字等多種方式設定,代表在本測試用例環境下被測代碼要走的分支的先后次序和走的總分支數。運行測試腳本的時候,每個測試用例控制被測單元走相應的分支,并通過被測單元的插樁函數將走過的分支記錄下來,測試腳本運行結束時,通過自動檢測模塊檢測路徑是否覆蓋完全。如果覆蓋完全則報成功信息,如果沒有覆蓋完全,則報出未覆蓋的分支位置。
如果被測單元有返回值,則在測試用例中設定一個標準的正確的返回值,代表在本測試用例的環境下被測代碼執行后返回的正確結果。測試用例在控制被測代碼運行時,記錄下測試代碼運行得出的返回值,在自動檢驗過程中將通過自動檢測模塊比較標準返回值和測試代碼運行得出的返回值,檢測測試代碼運行得出的返回值是否正確。
如圖2測試自動檢驗的流程圖所示(1)在測試腳本中定義一個標準路徑數組,記錄下測試用例依次要走的被測單元分支路徑1、路徑2、路徑3……路徑n,同時定義一個實際執行路徑數組,這個數組在測試過程中記錄下被測單元在測試用例構建的環境下實際所走的分支路徑1′、路徑2′、路徑3′……路徑n′;然后在被測代碼的每一個分支做一個插樁函數(這個插樁函數將在發布版本的時候重新定義成空函數,不需再更改經過測試的代碼);下一步執行測試腳本,測試腳本依次控制每一個測試用例的執行,同時通過插樁函數將所走的分支記錄在實際執行路徑數組中。
(2)如果被測單元有返回值,則對應相關的測試用例定義一個本測試用例環境下被測代碼應該返回的正確返回值,例如返回值1、返回值2……返回值n,在代碼執行過程中,每個測試用例記錄被測代碼實際運行得到的返回值1′、返回值2′、返回值n′等。
(3)自動測試模塊執行自動檢測過程,比較標準路徑與其對應的實際執行路徑,判斷路徑1′與路徑1是否相符、路徑2′與路徑2是否相符……路徑n′與路徑n是否相符,如果相符則提示成功信息,如果不相符則指出失敗位置以及失敗原因等信息;如果被測單元有返回值,自動測試模塊比較返回值1′與返回值1是否相符、返回值2與返回值2′是否相符……返回值n′與返回值n是否相符,如果相符則提示成功,如果不相符則指出失敗位置以及失敗原因等信息。
如果單元測試發現了程序錯誤并且對程序代碼進行了修改,此時執行回歸測試,也就是對修改過的程序再重新測試一遍,以保證修改是正確的,同時保證所做的修改不會帶來不可預料的行為或者新的錯誤。依據本發明的技術方案,在測試腳本中增加相應的測試用例,然后執行上述的測試過程即可施行回歸測試。
測試完畢,將前述的插樁函數重新定義成空函數,直接發布版本,不需再更改經過測試的代碼。
權利要求
1.一種自動檢驗測試結果的程序單元測試方法,測試控制模塊控制主測試過程,測試腳本由多個測試用例組成,其特征在于該測試方法包括以下的步驟(a).在構成測試腳本的每個測試用例中根據需要通過插樁函數構建被測代碼運行的一種環境,控制測試代碼的運行;(b).在每個測試用例中設定一個標準路徑,代表在本測試用例環境下被測代碼要走的分支的先后次序和走的總分支數,同時根據需要在相應的測試用例中定義一個本測試用例環境下被測代碼應該返回的標準返回值;(c).測試控制模塊執行測試腳本,按順序依次運行該測試腳本的測試用例;(d).測試控制模塊判斷測試用例中是否有標準返回值,如果有,轉步驟(e)如果沒有,轉步驟(f);(e).測試用例記錄在控制被測代碼運行時,記錄下測試代碼運行得出的實際返回值;(f).測試用例按順序依次控制被測單元走相應的分支,并通過被測單元的插樁函數將走過的分支記錄下來;(g).測試腳本運行結束時,通過自動檢測模塊比較檢測路徑是否覆蓋完全,如果覆蓋完全則提示成功信息,如果沒有覆蓋完全,則提示出覆蓋不完全信息,同時自動測試模塊比較定義的標準返回值與實際運行得到的返回值是否相符,如果完全相符則提示成功信息,如果不完全相符,則提示出返回值不符信息;(h).測試控制模塊判斷是否所有的測試腳本都已經被執行完畢,如果還有未被執行的測試腳本,測試控制模塊執行下一個測試腳本,轉步驟(c),如果所有的測試腳本都已經執行完畢,測試結束。
2.根據權利要求1所述的程序單元測試方法,其特征在于步驟(b)中所述的標準路徑可以以字符串或有代表性的數字來設定。
3.根據權利要求1所述的程序單元測試方法,其特征在于步驟(g)中所述的返回值不符信息包括返回值不符的測試用例和返回值不符的原因信息。
4.根據權利要求1所述的程序單元測試方法,其特征在于步驟(g)中所述的覆蓋不完全信息包括未完全覆蓋位置和未完全覆蓋的原因信息。
5.根據權利要求1所述的程序單元測試方法,其特征在于所述的插樁函數在代碼測試完成后可重新定義為空函數以發布版本,不需要再更改被測試的代碼。
6.根據權利要求1所述的程序單元測試方法,其特征在于在所述的測試過程中,如果發現了程序錯誤并且對程序代碼進行了修改,此時執行回歸測試,即對修改過的程序再重新測試一遍。
7.根據權利要求6所述的程序單元測試方法,其特征在于所述回歸測試是在測試腳本中增加相應的測試用例,然后執行上述的測試過程。
全文摘要
本發明提供一種自動檢驗測試結果的程序單元測試方法,在測試用例中通過不同的樁函數為被測單元構建的各種測試環境,以字符串或者有代表性的數字設定標準路徑,同時針對有返回值的被測單元在相應的測試用例中設定標準返回值。測試控制模塊按順序依次控制運行每個測試腳本,每個測試用例控制被測單元走相應的分支,并通過被測單元的插樁函數將走過的分支記錄下來,測試用例在控制被測代碼運行時,記錄下測試代碼運行得出的返回值,然后通過自動檢測模塊比較檢測路徑是否覆蓋完全、返回值是否正確。本發明實現了自動檢驗單元測試的路徑覆蓋情況和返回值的正確性,大大提高了單元測試的測試效率,并且可以方便的進行回歸測試。
文檔編號G05B23/00GK1952818SQ20051010065
公開日2007年4月25日 申請日期2005年10月22日 優先權日2005年10月22日
發明者李巧珍 申請人:康佳集團股份有限公司