一種基于合約的構件易測試性設計方式論文
認識到應該把質量做到軟件產品中或至少預防軟件“產品質量問題。因此,軟件測試呈現向軟件開發的前軟件復用是提高軟件產品質量與生產效率的關期發展、與軟件開發的設計和編程階段相融合的趨鍵技術。軟件構件概念的提出為軟件復用提供了技勢,軟件的易測試性設計正在成為新的研究熱點。構術基礎。構件的高質量是構件能被成功復用的前提。件測試一個重要的發展方向是基于合約的構件易測構件測試是保證構件質量的重要手段之一。構件的試性設計。開發者和復用者必須對構件進行充分的測試,以確本文提出一種基于合約的構件易測試性設計方保它在新的環境中正常工作。
例如1996年Ariane5法,在構件的設計和編碼階段由設計人員和編程人運載火箭的飛行失敗表明,復用的構件在新的環境員在構件的接口和內部根據構件的規約增加構件的中未經過充分測試會引起災難性的后果。合約,然后由工具自動檢查合約語法、語義的正確與傳統的軟件測試相比,構件測試有其自身的性,插裝合約檢查代碼,以便在軟件運行時自動對固有特點:⑴不能?對構件的執行環境和用戶的使用合約進行檢查,當發生合約違反時自動拋出異常。模式進行完全準確的預測,故構件開發者不能完全、本文還開發相應的支持工具,并且進行實驗。徹底地對構件進行測試,并且很難確定何時結束測_試;(2)構件復用者和第二方測試人員通常無法翻構件的源代碼及詳細的設計知識,故通常只能對構軟件的易測試性是一個系統或構件有利于建立件進行黑盒測試,即調用構件的方法后只能通過觀測試準則和執行測試以便確定該測試準則是否被滿察執行的結果判斷構件的行為是否正確,無法檢查足的難易程度Pl。
直觀上我們也可以將軟件的易測試執行過程中的構件的內部狀態,使得構件執行過程性理解為對軟件進行測試以保證其無缺陷和滿足其中的一些故障被隱藏。這些困難對構件測試提出了規約的難易程度。軟件的易測試性包括可控制性、可嚴峻的挑戰。傳統的軟件測試技術不能完全適用于觀察性、可操作性、可分解性、簡單性、穩定性等幾個構件測試。方面,其中可控制性是通過軟件的輸入來控制它的長期以來,雖然人們將軟件測試作為一種重要輸出,而可觀察性是通過輸出能更好地分析測試的的軟件質量保證手段,但是通常都是在軟件開發的結果。
后期,即編碼階段結束之后才開始對軟件進行測試。軟件的易測試性是衡量軟件質量的一項重要指此時已為時太晚,軟件已經開發成型。近年來,人們標。對軟件的易測試性的研究可以分為軟件的易測試性分析和易測試性設計兩個方面。常,便于就近定位故障。軟件的易測試性分析研究如何對軟件的易測試DBC方法不僅能夠讓用戶按一定的格式書寫合性進行度量,其目的為:(1)為軟件的.易測試性度約,而且提供相應的機制自動對合約進行處理和檢量提供有效手段;(2)為軟件的測試提供指導;查,并且當程序在運行過程中違反合約時及時給出(3)為軟件的易測試性設計,進而為軟件的設計提出錯信息。軟件的內建式測試方法是在程序中添加供幫助。額外的測試機制,使軟件能夠工作在測試模式下。軟軟件易測試性設計即是在軟件的設計和編碼件的內建式自測試方法就是在此基礎上再增加測試中考慮測試問題,它借鑒了硬件易測試性設計的用例生成機制。思想。軟件易測試性設計的目的是在不增加或者
2.軟件合約的定義方法少增加軟件復雜性的基礎上,將易于測試的原則現在主要有二種定義軟件合約的方法,第一種融合到設計和編碼之中。軟件易測試性設計符合方法利用面向對象程序設計語言的繼承機制專門設軟件測試的一個原則:盡早開始軟件測試工作,計一個負責測試的超類、第二種方法在程序代碼不斷進行軟件測試工作。軟件易測試性設計體現的注釋中嵌入合約,并且使用預處理器在編譯之前軟件測試的如下觀點:軟件產品的質量是生產對程序進行插裝;第〒種方法設計一種獨立的語言(包括分析、設計、編碼、測試)出來的,而不是框架,它所描述的合約與目標程序設計語言相分僅僅依靠軟件測試來保證。軟件易測試性設計也離。體現了軟件測試的一個發展趨勢:向軟件開發的嵌入式合約語言的原型是C語言中的assert。目前期發展,與軟件開發的設計和編碼階段相融合。前比較有代表性的嵌入式合約語言包括ANNA(AN-易于測試的軟件本身所包含的缺陷也會減少。軟Notated燗da)141、APP(Annotation燩re-Processor)爘51、件易測試性設計將有效地提高軟件測試的效率和Nan#以及Eiffel等。質量,提高軟件設計和編程的質量,進而提高軟ADL(Assertion燚efinition燣anguage)171是一種獨立件產品的質量。的語言框架,它是一組可以翻譯成不同編程語言語軟件的易測試性設計方法包^合約式設計法的通用概念。AD1VC是專為C語言接口設計的(Design燘y燙ontract,簡稱DBC)、內建式測試ADL框架。ADL/Java擴展了燗DL方法,使之適應面(Built-in燭esting,簡稱BIT)和內建式自測試等幾向對象的概念,如繼承、多態、重載等。
種方法。盡管第一種方法容易實現、易于理解,但是它存合約是管理對象之間交互的一組規則,其主要在以下缺點:對于某些不支持多繼承的程序設計語來源是軟件的規約。常見的表達合約的種類有:前言(例如java),該方法不能從未插裝類進行特化;更置條件、后置條件、不變式、斷言、循環變式、循嚴重的是,當父類中的方法在子類中被重新定義后,環不變式和軌跡等。例如,在一個求平方根的方法父類的方法中的合約將被遺忘|81。float燬quareRoot(float爊um)中定義的合約為:米用嵌人式合約語目設計合約可以提高可觀察@爌re爊um>=0性,使得軟件失效與軟件故障點更加接近,從而節省@爌ost燤ath.abs((result*result)-num)<=0.001測試和調試的開銷,并且還能夠保持合約隨程序代合約表明了過程調用方(客戶方)與實現方相互碼同步更新,不會產生歧義。的職責和利益:客戶方只有在滿足前置條件的情3一種基于合約的構件易測試性設計方法后置條件指明的工作將被完成,并且不變式仍然滿我們定義了描述構件合約的巴科斯-諾爾范式足。合約可用于區分軟件失效時的責任:如果前置條(BNF范式)、然后在此基礎上提出一種基于合約的件被違反,則應該在客戶方尋找錯誤;如果后置條件構件易測試性設計方法。或不變式被違反,責任在實現方。
合約有助于減少冗3.1構件合約信息的表達余的檢查代碼,提高軟件設計的效率和運行的性能;為了便于用戶定義合約,我們在Java語言語法利用自動檢查合約的工具,能夠減輕用戶的負擔,減的基礎上提出了如圖1所示的描述構性令約的巴科少用戶犯錯誤的機會;并且合約被違反時將引發異斯-諾爾范式。牬雍顯急澩鍤講喚隹梢允遣級表達式,還可以是初始標量的語句,這使得invariant(循環不變式)和forall(全稱量詞)表達式(描述一個集合中的元素同variant(循環變式)的表達式中可以具有更加復雜的時滿足某個條件)、exist(存在量詞)表達式(描述一語句,增強了爈oop合約的描述能力。由于Sun燡DK1.4個集合中存在滿足某個條件的元素),以及implies提供了斷言檢查的check語句,故我們在圖1中沒(蘊涵)表達式(描述當某一條件滿足的時候,另一個有提供斷言的描述。條件必須滿足)。增加的這幾種表達式的類型增強了3.2基于合約的構件易測試性設計方法合約的描述能力,使得用布爾表達式很難表達的意犜諫鮮雒枋齬辜合約的巴科斯-諾爾范式基礎思能夠較為簡潔地表達出來。
同時,loop合約(包括上,我們所提出的基于合約的構件易測試性設計方循環不變式和循環變式)在循環之前具有設置循環法包括以下步驟:5結束語Pacific燬oftware燛ngineering燙onference,燤acau燬AR,燙hina,2001.431-434.構件測試是保證構件質量的重要技術手段之牎2丨ANSIAEEE爏td610.12.營EEE燬tandard燝lossary爋f燬oftware一。本文提出一種基于合約的構件易測試性設計方Engineering燭enninology,1990.法’在構件的設計和編碼階段由設計人員和編程人.[3]燤artins燛’燭_a燙燤’燳anagawa燫燣.燙cmstrucUng爏elf-testable員在構件的接口和內部根據構件的規約增加構件的牐:1"5comp°nnents,th;2001mnaiConlerence爋n燚ependable燽ystems燼nd燦etworks,燝oteborg,燬weden,合約,提高了構件的易測試性。本文所提出的方法將2001151_160營EEE構件的質量保證活動向構件開發的前期發展、與構[4]燣uckham燚燙,爒on燞enke燜燱.燨verview爋f燗NNA,燗燬pecification件開發的設計和編碼階段相融合,從而能夠更好地燣anguage爁or燗da.營EEE燬oftware,1985,2(2):9-22.保證構件的質量。
本文還開發相應的支持工具JD-【5】Rosenblum燚燬.燗燩ractical燗pproach爐o燩rogramming爓ithBCT,并且進行了實驗,驗證了我們所提出的方法有燗sserti°ns’IEEE燭ransac,ions°n燬oflware燛ngineering‘1995’21(1):效性和燡DBCT牭耐酚瞇浴[6]燤aker燩燡.燝NU燦ana-燯ser'爏燝uide(version2.4).燭echnical目前JDBCT能夠支持的合約的類型包括前置report,燬chool爋f營nformation燭echnology,燦orthern燭erritory條件、后置條件、不變式、循環變式和循環不變式,下University,爅uly1998.一步將提供對軌跡等類型合約的支持。
構件的合約燵7]燬ankar燬,Hayes燗DL:燗n營nterface燚efinition燣anguage爁or來源于軟件的規約,可以作為我們進行測試工作的燬pedfying311(1燭esting‘ACM燬IGPLAN燦otices'I994,29f8V13—21依據。在今后的工作中,我們將進一步完善我們藤⑷Jezequel風Dev飄D燭raon燳燣.燫eliable爋bjefts燯ghtweight出的方法,并&研究如何與變異測試技術相結合,即TeSting爁or00燣anguages.營EEE燬oftware,2001,18(4):76-83研究如何針對構件合約進爁T變異測試。
【一種基于合約的構件易測試性設計方式論文】相關文章:
探究基于構件技術的信息管理系統的設計論文10-31
基于RFID物品防盜系統的設計方式論文11-17
基于RFID物品防盜系統的設計方式的論文11-13
對網站易訪問性設計的理念分析論文07-17
基于學習興趣的角度設計教學的方式創新論文09-06
反思性學習方式論文04-12
一種基于傳感器的智能谷倉的設計論文11-15
招貼設計裝飾性語言創意方式分析論文11-20
基于模型的軟件測試技術探析論文05-03