[發明專利]基于內部狀態檢查的單元測試方法有效
| 申請號: | 201310250702.0 | 申請日: | 2013-06-21 |
| 公開(公告)號: | CN103365775A | 公開(公告)日: | 2013-10-23 |
| 發明(設計)人: | 熊英飛;祝韜;郝丹;張路;謝冰 | 申請(專利權)人: | 北京大學 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 北京萬象新悅知識產權代理事務所(普通合伙) 11360 | 代理人: | 朱紅濤 |
| 地址: | 100871*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 基于 內部 狀態 檢查 單元測試 方法 | ||
技術領域
本發明提供一種單元測試方法,具體涉及一種針對內部狀態的測試預言,屬于軟件測試領域。
背景技術
軟件測試是保證軟件質量和可靠性的一種重要技術,開銷在整個軟件開發成本中占很大比重。隨著測試驅動開發的流行,開發者需要花大量時間在測試和調試工作上。對于開發者,編寫測試用例和根據測試的失敗信息進行調試是一個非常耗費精力和時間的任務。如何有效地進行測試,減輕開發人員的負擔,成為測試領域的一個重要問題。
現有的單元測試工具的測試用例通常包含兩個部分:測試輸入和測試預言。測試輸入包含變量的初始化和對被測代碼的一系列調用。測試預言是用來驗證一個測試用例是運行通過還是失敗。開發者編寫好測試用例后,測試框架就能自動運行這些測試用例,完成對被測代碼的測試。對于開發者,手動編寫測試用例是一個非常繁重的工作,往往不能編寫足夠的測試用例對被測代碼進行徹底的測試。有些測試用例雖然能夠通過,但其中間狀態是不合法的,這些不合法的中間狀態往往代表著錯誤的存在。這樣就可能漏掉很多錯誤。
開發者根據失敗單元測試用例去分析定位錯誤是一個非常復雜耗時的過程。測試用例運行失敗后,開發者看到的只是錯誤的征兆,但這些錯誤的外部表現和內在原因沒有明顯的聯系。在組成程序的眾多元素中,每個元素都有可能導致錯誤的產生。開發者往往只能根據經驗一個一個地去排查這些可能導致測試用例失敗的因素,而這是一個非常耗時的過程。如果在測試用例中能檢查被測代碼的中間狀態,就能將被測代碼進行切分,幫助開發者更快的排查錯誤。
發明內容
針對單元測試中的上述不足,本發明提供了一種基于內部狀態檢查的單元測試方法。通過本發明,開發者可以只編寫較少測試用例,而發現更多的錯誤;還能在調試階段更快地排查錯誤。
本發明的基本原理:使用者在測試用例中添加被測代碼中間狀態的約束,約束形如,在運行到目標位置(如,classA的代碼中第i行)時,須滿足“a+b==5”,a、b可以是在目標位置有效的局部變量和屬性等。
本發明的技術方案如下:
一種基于內部狀態檢查的單元測試方法,其特征在于,用戶在測試用例中編寫內部狀態約束,所述約束為執行到被測代碼的目標位置時,相關變量應滿足的算術或邏輯約束,從而最終實現對被測代碼內部狀態進行檢查。
優選的,所述的單元測試方法,包括如下步驟:
A.使用者在測試用例中添加被測代碼中間狀態的約束;
B.根據用戶添加的約束生成插樁代碼(如,Java字節碼),插樁代碼的功能是:獲取所關心的變量的值,并將其傳出,調用驗證方法對約束進行驗證;
C.從執行環境(如JVM)中獲取目標類的字節碼;
D.對目標字節碼進行插樁;
E.將插樁后的字節碼裝載進執行環境中,替換原來的可執行代碼;
F.運行測試用例,完成驗證。
所述的單元測試方法,其特征在于,所述步驟A包括:
A1.確定約束的內容,約束形如,在運行到目標位置(如,classA的代碼中第i行)時,須滿足“a+b==5”,a、b可以是在目標位置有效的局部變量和屬性等;
A2.在測試用例中調用工具的添加約束的接口,添加上述約束的內容。
所述的單元測試方法,其特征在于,所述步驟B包括:
B1.對約束的主體部分解析,提取出相關的變量;
B2.根據提取的相關變量,生成插樁的字節碼。
所述的單元測試方法,其特征在于,所述步驟B包括:不提取相關變量,直接獲取目標位置有效的全部變量和屬性,簡化實現時的工作和簡化了插樁代碼。
所述的單元測試方法,其特征在于,所述步驟D包括:
D1.在目標字節碼中找到目標位置(如,目標代碼中第15行);
D2.在目標位置插入上面生成的插樁代碼;
D3.修改目標字節碼,使整體保持合法性。
所述的單元測試方法,其特征在于,所述步驟F包括:
F1.運行到目標位置時,運行插樁代碼,獲取相關變量的值;
F2.調用驗證函數,結合獲取的變量值和約束主體判斷約束是否滿足;
F3.運行結束,展示運行結果。所述的運行結果包括:測試用例的通過、失敗數,以及失敗用例的錯誤路徑等。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京大學,未經北京大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310250702.0/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:閃速存儲器模塊的地址映射方法
- 下一篇:一種方便使用的烤箱食品包裝袋





