999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于合約狀態檢查的構件易測試研究

2014-07-19 18:08:53趙艷妮郭華磊
現代電子技術 2014年10期

趙艷妮 郭華磊

摘 要: 隨著軟件規模日趨復雜,軟件質量問題日趨突出。構件復用提高了開發效率,構件測試保證了構件質量。針對目前缺乏成熟構件測試技術的現狀,提出了基于合約狀態檢查的構件易測試方法。將Bertrand Meyer的合約概念引入到構件設計開發測試過程中,考慮構件易測試性,從構件開發者和復用者的角度分析構件及構件的測試,違反構件合約時拋出異常信息,快速定位異常位置。在一定程度上保證構件質量,縮短開發周期,提高測試效率。

關鍵詞: 合約狀態; 客戶方; 服務方; 構件易測試

中圖分類號: TP311.5 文獻標識碼: A 文章編號: 1004?373X(2014)10?0083?03

Abstract: With the continual increase of software Scale and complexity, it is more and more difficult to assure the quality of software. Component reuse is an effective way to improve the efficiency of development. Component testing is an important means to ensure the quality of components. In view of the present situation of the lack of mature component testing technology, a component testability method is proposed based on contract status checking. Bertrand Meyer's contract concept is introduced into testing process of component design and development. In consideration of the component testability, components and component testing are analyzed from the perspective of the component developers and re?users. An exception message is provided when the component contract is violated, and the exception position is quickly locked. By the research achievement, the quality of component was guaranteed, the development time was shortened and the testing efficiency was improved in a certain extent.

Keywords: contract status; client; server; component testability

0 引 言

隨著信息技術快速發展,軟件規模逐漸增大,復雜性不斷提高。為了提高軟件質量,縮短開發周期,降低開發成本,受硬件組裝計算機的啟發,提出了軟件復用,子函數→類→構件,軟件復用的粒度逐漸變大。構件質量是軟件復用的前提,構件測試是保證構件質量的重要手段之一[1]。為了確保構件在新環境中工作正常,必須對構件進行充分的測試,復用質量低下的構件或不正確部署構件,可能造成災難后果。例如,1996年Ariane 5運載火箭發射失敗,原因是復用的Ariane 4構件在新環境中未經過充分測試造成的[2]。

構件測試與軟件測試相比,有其自身特點:

(1) 缺乏構件應用的上下文依賴環境;

(2) 缺乏詳細的構件描述文檔;

(3) 構件復用者過分依賴構件開發者;

(4) 硬件平臺、操作系統、編程語言等集成環境不同[3]。本文將Bertrand Meyer的合約思想[4]引入到構件測試,提出一種基于構件合約狀態檢查的構件易測試技術。

1 基于合約的構件化軟件測試理論

1997年,Bertrand Meyer提出軟件合約化理論,把軟件模塊之間交互的規則定義為合約。圖1是構件測試過程圖,構件扮演兩種角色:客戶方與服務方,客戶方向服務方請求服務,服務方向客戶方提供服務[5]。合約分為前置條件、后置條件和不變式。前置條件是客戶方調用服務方前必須滿足的條件,客戶的義務,服務方的權利;后置條件是服務方被調用完成后必須滿足的條件,后置條件限定了服務方被調用之后必須滿足的條件,客戶方的權利,服務方的義務;不變式是描述構件正確性、完整性的規則,構件交互過程中必須保證。構件失效時,違反前置條件,責任在客戶方;違反后置條件或不變式,責任在服務方[6]。

2 基于內置合約狀態檢查的構件測試

2.1 建立構件狀態模型

構件狀態模型描述構件響應相關事件的動態行為,構件根據當前狀態對事件做出相應的響應,具體表現就是相應的狀態轉換。構件狀態轉換的觸發條件包括內部過程(函數調用、異常等)和外部事件(接口調用、指令信號等)[7]。構件狀態模型描述構件的動態行為,表現構件在生命周期內所經歷的狀態序列。

構件屬性決定構件狀態,構件狀態轉換本質是從一種屬性組合轉換到另一種屬性組合,既包含單個屬性值表示的狀態,也包含某個屬性值域表示的狀態。在特殊情況下,某個狀態可能有接近無窮的屬性組合值,找出關鍵狀態表示屬性組合。狀態模型只關注關鍵屬性[8]。

2.2 生成構件狀態轉化表

在構件整個運行期間,根據合約對構件產生的狀態進行跟蹤檢查,對每次狀態轉換進行嚴格測試。生成構件狀態轉換表內容[9]:

(1) 確定構件狀態模型中所有關鍵屬性;

(2) 確定構件狀態模型中的所有狀態;

(3) 確定每個狀態對應的值域;

(4) 確定狀態的隱性轉換和狀態顯性轉換;

(5) 針對關鍵狀態轉換,分別列出相應的輸入參數、初始狀態、最終狀態、前置條件和后置條件。構件狀態轉換表描述了構件的所有行為,包含了狀態模型中的全部狀態轉換,是一個測試方案。

2.3 內置構件合約測試接口

構件狀態轉換完全覆蓋是構件合約狀態測試的目標。一個測試用例表示構件狀態模型中的一次狀態轉換,最小測試用例集覆蓋了構件狀態模型中的全部狀態轉換,用于構件合約測試的接口函數由最小測試用例集實現[10]。構件合約測試接口包含初始狀態設置操作和最終狀態驗證操作。

2.4 設計構件合約測試用例

構件狀態轉換表的初始狀態映射到合約測試接口的初始狀態設置函數,而最終狀態映射到最終狀態驗證函數,可以把初始狀態設置函數和最終狀態驗證函數設置為測試用例[11]。

根據構件初始狀態,每個初始狀態表示可能的警戒條件或屬性組合,至少對應一個初始狀態設置函數。由于同一個狀態可能具有多個值。在狀態警戒條件下,通過設置函數參數形式,觸發狀態的轉換。

3 實例分析

以某網站用戶登錄賬戶為例,闡明如何基于合約狀態檢查進行構件測試。如果用戶連續3次密碼輸入錯誤,賬戶自動鎖定;用戶通過綁定的手機號碼或電子郵箱,利用短信或電子郵件驗證碼的方式申請賬戶解鎖;系統解鎖成功后,須等待一定延遲時間,賬戶激活,允許用戶重新登錄賬戶。用戶登錄狀態模型如圖2,賬戶包含三種獨立狀態:鎖定、解鎖和激活。賬戶鎖定或解鎖時禁止用戶登錄,賬戶激活時允許用戶登錄,其中,激活狀態被擴展成4個隱性狀態:第1次登錄、第2次登錄、第3次登錄和登錄成功。每種賬戶狀態和允許登錄次數LOGIN_TIMES組合分別表示構件狀態模型的一種狀態。構件關鍵屬性允許登錄次數LOGIN_TIMES大于0時,賬戶處于激活狀態。

表1是用戶登錄狀態轉換表。包含11種需要進行的狀態轉換,由測試執行前的初始狀態以及測試執行完后的最終狀態組成,每次狀態轉換要輸入參數密碼(PASSWORD)、驗證碼(CAPTCHA)或延遲時間(DELAYTIME),狀態轉換前驗證前置條件,狀態轉換后驗證后置條件。表2列出了對用戶登錄狀態轉換覆蓋的最小測試用例集,利用測試用例測試前驗證相應前置條件,測試后與預期結果比較,驗證是否滿足。

4 結 語

本文提出的基于合約狀態檢查的構件測試方法,將構件的交互關系分為客戶方與服務方。根據構件的權利和義務,在客戶方的構件中內置用于對服務方進行測試的接口,通過構件狀態的轉換分析構件的內部信息,驗證是否滿足前置條件;在服務方的構件中內置狀態設置與狀態驗證的合約測試接口,狀態設置將構件設置為測試所需要的前置條件狀態,狀態驗證根據構件的內部狀態驗證是否滿足后置條件。

在今后的工作中,將進一步完善該方法,盡可能應用到實際的構件開發和測試工作中。

參考文獻

[1] 單錦輝,姜瑛,孫萍.軟件測試研究進展[J].北京大學學報:自然科學版,2005,41(l):134?145.

[2] 張毅坤,葉濤,邢傳玉.面向構件化軟件的合約檢查測試框架[J].計算機工程,2006,32(20):78?80.

[3] 吳立松,楊根興,蔡立志.基于構件的測試腳本復用技術研究[J].計算機應用研究,2009,26(4):1323?1326.

[4] 付劍平,陸民燕.軟件測試性設計綜述[J].計算機應用,2008,28(11):2915?2918.

[5] MEYER B. Object?oriented software construction [M]. New Jersey: Prentice Hall, 1997.

[6] 劉永紅.構件及基于構件的軟件測試研究[D].成都:中國科學院,2006.

[7] 余金山,劉志偉.一種基于內置合約檢查和可配置接口的軟構件測試技術[J].計算機應用研究,2011,28(5):1756?1760.

[8] 徐亮,曹萬華,陳靖,等.一種艦載指控系統構件集成測試方法[J].計算機與數字工程,2010,38(6):54?58.

[9] 葉婷婷,王映輝.一種基于AOP的構件合約化測試方法與實現[J].計算機技術與發展,2012,22(6):71?74.

[10] 陳錦富,盧炎生,謝曉東.軟件錯誤注入測試技術研究[J].軟件學報,2009,20(6):1425?1443.

[11] 韋群,王玨.軟件缺陷及其對軟件可靠性的影響分析[J].計算機應用與軟件,2011,28(001):145?149.

2.2 生成構件狀態轉化表

在構件整個運行期間,根據合約對構件產生的狀態進行跟蹤檢查,對每次狀態轉換進行嚴格測試。生成構件狀態轉換表內容[9]:

(1) 確定構件狀態模型中所有關鍵屬性;

(2) 確定構件狀態模型中的所有狀態;

(3) 確定每個狀態對應的值域;

(4) 確定狀態的隱性轉換和狀態顯性轉換;

(5) 針對關鍵狀態轉換,分別列出相應的輸入參數、初始狀態、最終狀態、前置條件和后置條件。構件狀態轉換表描述了構件的所有行為,包含了狀態模型中的全部狀態轉換,是一個測試方案。

2.3 內置構件合約測試接口

構件狀態轉換完全覆蓋是構件合約狀態測試的目標。一個測試用例表示構件狀態模型中的一次狀態轉換,最小測試用例集覆蓋了構件狀態模型中的全部狀態轉換,用于構件合約測試的接口函數由最小測試用例集實現[10]。構件合約測試接口包含初始狀態設置操作和最終狀態驗證操作。

2.4 設計構件合約測試用例

構件狀態轉換表的初始狀態映射到合約測試接口的初始狀態設置函數,而最終狀態映射到最終狀態驗證函數,可以把初始狀態設置函數和最終狀態驗證函數設置為測試用例[11]。

根據構件初始狀態,每個初始狀態表示可能的警戒條件或屬性組合,至少對應一個初始狀態設置函數。由于同一個狀態可能具有多個值。在狀態警戒條件下,通過設置函數參數形式,觸發狀態的轉換。

3 實例分析

以某網站用戶登錄賬戶為例,闡明如何基于合約狀態檢查進行構件測試。如果用戶連續3次密碼輸入錯誤,賬戶自動鎖定;用戶通過綁定的手機號碼或電子郵箱,利用短信或電子郵件驗證碼的方式申請賬戶解鎖;系統解鎖成功后,須等待一定延遲時間,賬戶激活,允許用戶重新登錄賬戶。用戶登錄狀態模型如圖2,賬戶包含三種獨立狀態:鎖定、解鎖和激活。賬戶鎖定或解鎖時禁止用戶登錄,賬戶激活時允許用戶登錄,其中,激活狀態被擴展成4個隱性狀態:第1次登錄、第2次登錄、第3次登錄和登錄成功。每種賬戶狀態和允許登錄次數LOGIN_TIMES組合分別表示構件狀態模型的一種狀態。構件關鍵屬性允許登錄次數LOGIN_TIMES大于0時,賬戶處于激活狀態。

表1是用戶登錄狀態轉換表。包含11種需要進行的狀態轉換,由測試執行前的初始狀態以及測試執行完后的最終狀態組成,每次狀態轉換要輸入參數密碼(PASSWORD)、驗證碼(CAPTCHA)或延遲時間(DELAYTIME),狀態轉換前驗證前置條件,狀態轉換后驗證后置條件。表2列出了對用戶登錄狀態轉換覆蓋的最小測試用例集,利用測試用例測試前驗證相應前置條件,測試后與預期結果比較,驗證是否滿足。

4 結 語

本文提出的基于合約狀態檢查的構件測試方法,將構件的交互關系分為客戶方與服務方。根據構件的權利和義務,在客戶方的構件中內置用于對服務方進行測試的接口,通過構件狀態的轉換分析構件的內部信息,驗證是否滿足前置條件;在服務方的構件中內置狀態設置與狀態驗證的合約測試接口,狀態設置將構件設置為測試所需要的前置條件狀態,狀態驗證根據構件的內部狀態驗證是否滿足后置條件。

在今后的工作中,將進一步完善該方法,盡可能應用到實際的構件開發和測試工作中。

參考文獻

[1] 單錦輝,姜瑛,孫萍.軟件測試研究進展[J].北京大學學報:自然科學版,2005,41(l):134?145.

[2] 張毅坤,葉濤,邢傳玉.面向構件化軟件的合約檢查測試框架[J].計算機工程,2006,32(20):78?80.

[3] 吳立松,楊根興,蔡立志.基于構件的測試腳本復用技術研究[J].計算機應用研究,2009,26(4):1323?1326.

[4] 付劍平,陸民燕.軟件測試性設計綜述[J].計算機應用,2008,28(11):2915?2918.

[5] MEYER B. Object?oriented software construction [M]. New Jersey: Prentice Hall, 1997.

[6] 劉永紅.構件及基于構件的軟件測試研究[D].成都:中國科學院,2006.

[7] 余金山,劉志偉.一種基于內置合約檢查和可配置接口的軟構件測試技術[J].計算機應用研究,2011,28(5):1756?1760.

[8] 徐亮,曹萬華,陳靖,等.一種艦載指控系統構件集成測試方法[J].計算機與數字工程,2010,38(6):54?58.

[9] 葉婷婷,王映輝.一種基于AOP的構件合約化測試方法與實現[J].計算機技術與發展,2012,22(6):71?74.

[10] 陳錦富,盧炎生,謝曉東.軟件錯誤注入測試技術研究[J].軟件學報,2009,20(6):1425?1443.

[11] 韋群,王玨.軟件缺陷及其對軟件可靠性的影響分析[J].計算機應用與軟件,2011,28(001):145?149.

2.2 生成構件狀態轉化表

在構件整個運行期間,根據合約對構件產生的狀態進行跟蹤檢查,對每次狀態轉換進行嚴格測試。生成構件狀態轉換表內容[9]:

(1) 確定構件狀態模型中所有關鍵屬性;

(2) 確定構件狀態模型中的所有狀態;

(3) 確定每個狀態對應的值域;

(4) 確定狀態的隱性轉換和狀態顯性轉換;

(5) 針對關鍵狀態轉換,分別列出相應的輸入參數、初始狀態、最終狀態、前置條件和后置條件。構件狀態轉換表描述了構件的所有行為,包含了狀態模型中的全部狀態轉換,是一個測試方案。

2.3 內置構件合約測試接口

構件狀態轉換完全覆蓋是構件合約狀態測試的目標。一個測試用例表示構件狀態模型中的一次狀態轉換,最小測試用例集覆蓋了構件狀態模型中的全部狀態轉換,用于構件合約測試的接口函數由最小測試用例集實現[10]。構件合約測試接口包含初始狀態設置操作和最終狀態驗證操作。

2.4 設計構件合約測試用例

構件狀態轉換表的初始狀態映射到合約測試接口的初始狀態設置函數,而最終狀態映射到最終狀態驗證函數,可以把初始狀態設置函數和最終狀態驗證函數設置為測試用例[11]。

根據構件初始狀態,每個初始狀態表示可能的警戒條件或屬性組合,至少對應一個初始狀態設置函數。由于同一個狀態可能具有多個值。在狀態警戒條件下,通過設置函數參數形式,觸發狀態的轉換。

3 實例分析

以某網站用戶登錄賬戶為例,闡明如何基于合約狀態檢查進行構件測試。如果用戶連續3次密碼輸入錯誤,賬戶自動鎖定;用戶通過綁定的手機號碼或電子郵箱,利用短信或電子郵件驗證碼的方式申請賬戶解鎖;系統解鎖成功后,須等待一定延遲時間,賬戶激活,允許用戶重新登錄賬戶。用戶登錄狀態模型如圖2,賬戶包含三種獨立狀態:鎖定、解鎖和激活。賬戶鎖定或解鎖時禁止用戶登錄,賬戶激活時允許用戶登錄,其中,激活狀態被擴展成4個隱性狀態:第1次登錄、第2次登錄、第3次登錄和登錄成功。每種賬戶狀態和允許登錄次數LOGIN_TIMES組合分別表示構件狀態模型的一種狀態。構件關鍵屬性允許登錄次數LOGIN_TIMES大于0時,賬戶處于激活狀態。

表1是用戶登錄狀態轉換表。包含11種需要進行的狀態轉換,由測試執行前的初始狀態以及測試執行完后的最終狀態組成,每次狀態轉換要輸入參數密碼(PASSWORD)、驗證碼(CAPTCHA)或延遲時間(DELAYTIME),狀態轉換前驗證前置條件,狀態轉換后驗證后置條件。表2列出了對用戶登錄狀態轉換覆蓋的最小測試用例集,利用測試用例測試前驗證相應前置條件,測試后與預期結果比較,驗證是否滿足。

4 結 語

本文提出的基于合約狀態檢查的構件測試方法,將構件的交互關系分為客戶方與服務方。根據構件的權利和義務,在客戶方的構件中內置用于對服務方進行測試的接口,通過構件狀態的轉換分析構件的內部信息,驗證是否滿足前置條件;在服務方的構件中內置狀態設置與狀態驗證的合約測試接口,狀態設置將構件設置為測試所需要的前置條件狀態,狀態驗證根據構件的內部狀態驗證是否滿足后置條件。

在今后的工作中,將進一步完善該方法,盡可能應用到實際的構件開發和測試工作中。

參考文獻

[1] 單錦輝,姜瑛,孫萍.軟件測試研究進展[J].北京大學學報:自然科學版,2005,41(l):134?145.

[2] 張毅坤,葉濤,邢傳玉.面向構件化軟件的合約檢查測試框架[J].計算機工程,2006,32(20):78?80.

[3] 吳立松,楊根興,蔡立志.基于構件的測試腳本復用技術研究[J].計算機應用研究,2009,26(4):1323?1326.

[4] 付劍平,陸民燕.軟件測試性設計綜述[J].計算機應用,2008,28(11):2915?2918.

[5] MEYER B. Object?oriented software construction [M]. New Jersey: Prentice Hall, 1997.

[6] 劉永紅.構件及基于構件的軟件測試研究[D].成都:中國科學院,2006.

[7] 余金山,劉志偉.一種基于內置合約檢查和可配置接口的軟構件測試技術[J].計算機應用研究,2011,28(5):1756?1760.

[8] 徐亮,曹萬華,陳靖,等.一種艦載指控系統構件集成測試方法[J].計算機與數字工程,2010,38(6):54?58.

[9] 葉婷婷,王映輝.一種基于AOP的構件合約化測試方法與實現[J].計算機技術與發展,2012,22(6):71?74.

[10] 陳錦富,盧炎生,謝曉東.軟件錯誤注入測試技術研究[J].軟件學報,2009,20(6):1425?1443.

[11] 韋群,王玨.軟件缺陷及其對軟件可靠性的影響分析[J].計算機應用與軟件,2011,28(001):145?149.

主站蜘蛛池模板: 黄色网页在线播放| 宅男噜噜噜66国产在线观看| 国产福利免费在线观看| 国产亚洲第一页| 在线免费不卡视频| 国产小视频a在线观看| 国产av无码日韩av无码网站| 国产91透明丝袜美腿在线| 国产欧美精品午夜在线播放| 国产自在线播放| 99无码熟妇丰满人妻啪啪| 精品国产www| 亚洲va视频| 国产在线观看精品| 国产成人亚洲综合A∨在线播放| 黄色免费在线网址| 欧类av怡春院| 一级毛片免费播放视频| 国产精品美乳| 色呦呦手机在线精品| 中文字幕亚洲综久久2021| 亚洲欧美成人影院| 色妞永久免费视频| 欧美国产菊爆免费观看| 国产青青操| 国产精品密蕾丝视频| 国产情侣一区| 91精品视频播放| 国产女人在线观看| 亚洲精品无码av中文字幕| 国产成人精品高清不卡在线| AV天堂资源福利在线观看| 久久公开视频| 国产成本人片免费a∨短片| 国产高清在线观看91精品| 国产成人亚洲精品无码电影| 国产SUV精品一区二区| 91青草视频| 国产91无码福利在线| 欧美成人二区| 国产精品粉嫩| 亚洲首页国产精品丝袜| 中文字幕在线看| 国产一级裸网站| 日本人真淫视频一区二区三区| 无码内射中文字幕岛国片| 国产 在线视频无码| 欧美视频二区| 欲色天天综合网| 手机精品视频在线观看免费| 久久福利片| 最新无码专区超级碰碰碰| 亚洲日本在线免费观看| 亚洲欧美一区二区三区蜜芽| 人妻少妇久久久久久97人妻| 天天色天天操综合网| 国内黄色精品| 毛片视频网址| 91小视频在线观看| 亚洲免费毛片| 重口调教一区二区视频| 国产系列在线| 久久99国产视频| 国产情侣一区| 国产原创演绎剧情有字幕的| 九九热视频在线免费观看| 老熟妇喷水一区二区三区| 免费xxxxx在线观看网站| 国语少妇高潮| 91麻豆精品国产高清在线| 成人综合网址| 国产第一页第二页| 青青草一区| 国产精品视频导航| 中文字幕免费播放| 992Tv视频国产精品| 中文字幕2区| 九月婷婷亚洲综合在线| 91香蕉国产亚洲一二三区 | 国产91麻豆视频| 欧美激情一区二区三区成人| 国产呦精品一区二区三区下载 |