




已閱讀5頁,還剩55頁未讀, 繼續(xù)免費閱讀
(計算機軟件與理論專業(yè)論文)分布式組件軟件測試用例生成方法研究.pdf.pdf 免費下載
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
上海大學碩士學位論文 t h e p o s t g r a d u a t e l 。魄s i s o f s h a n g h a l u n i v e r s r r y 摘要 計算機網(wǎng)絡(luò)技術(shù)和面向?qū)ο蠹夹g(shù)的發(fā)展為軟件開發(fā)和應(yīng)用帶來了許多深刻 的變革。分布式組件逐步成為新一代軟件應(yīng)用的重要模式,隨著當前各種相關(guān) 規(guī)范的逐步形成和完善,相應(yīng)的開發(fā)環(huán)境和支持工具不斷出現(xiàn),分布式組件系 統(tǒng)必將迎來前所未有的應(yīng)用前景。如何保證分布式組件系統(tǒng)的質(zhì)量成為一項亟 待解決的任務(wù)擺在軟件測試工程師的面前。 本文討論了分布式組件系統(tǒng)的特點,分析了組件軟件在集成測試時可能出 現(xiàn)的錯誤類型,在此基礎(chǔ)之上,提出組件軟件的測試模型。為了更加精確描述 組件間交互行為,我們結(jié)合u m l 協(xié)作圖與狀態(tài)圖為組件軟件測試建模。 測試充分性準則是整個軟件測試的核心,它直接決定測試用例的生成。本 文給出基于u m l 協(xié)作圖和狀態(tài)圖的測試準則,基于這些準則,介紹了如何從u m l 協(xié)作圖和狀態(tài)圖中產(chǎn)生測試用例。對于u m l 協(xié)作圖,本文采用直接從協(xié)作圖中 產(chǎn)生測試用例的方法,分別對協(xié)作圖的條件、并發(fā)、循環(huán)條件迸行討論,最后 采用深度優(yōu)先算法遍歷所有測試場景,每個測試場景對應(yīng)一個測試用例;對于 u m l 狀態(tài)圖,本文首先將其轉(zhuǎn)換成測試流圖,然后從測試流圖中產(chǎn)生測試用例。 最后,實現(xiàn)了基于u m l 協(xié)作圖狀態(tài)圖的測試用例生成方法的工具u m l t c g 系統(tǒng)。這個系統(tǒng),從讀入u m l 協(xié)作圖狀態(tài)圖的規(guī)格說明x m l 文件,到測試用例 的產(chǎn)生及測試用例管理都實現(xiàn)了自動化。 關(guān)鍵詞:組件軟件,協(xié)作圖,狀態(tài)圖,測試流圖,測試用例自動生成 v 上海大學碩士學位論文 t h e p o s t g r a d u a t et h e s i so fs h a n g h a iu n i v e r s n y a b s t l t a c t t h ed e v e l o p m e n to fc o m p u t e rn e t w o r ka n do b j e c to r i e n t e db r i n g sl a r g ec h a n g e i ns o f t w a r ed e v e l o p m e n ta n da p p l i c a t i o n s d i s t r i b u t e dc o m p o n e n t sg r a d u a l l y b e c o m eo n eo ft h em o s ti m p o r t a n tm o d e l so fs o f t w a r ea p p l i c a t i o n s w i t hv a r i o u s r e l a t e ds t a n d a r d sf o r m i n ga n dp e r f e c t i n gg r a d u a l l y , r e l a t e ds o m ed e v e l o p i n gs t u d i o s a n dt o o l sh a v eb e i n gi m p l e m e n t e dc o n t i n u a l l y , d i s t r i b u t e dc o m p o n e n t - b a s e ds y s t e m s w i l lh a v ea nu n p r e c e d e n t e dp r o s p e c t h o w e v e r , h o wt oe n s u r et h eq u a l i t yo f s o f t w a r e b e c o m e sad e s i d e r a t e dt a s ki nt h ef r o n to fs o f t w a r ee n g i n e e r s t h i sp a p e rd i s c u s s e st h ec h a r a c t e ro fd i s t r i b u t e dc o m p o n e n t - b a s e da p p l i c a t i o n s , a tt h es a m et i m e ,t od e s c r i b et h et e s tm o d e l ,w ea n a l y z ep o t e n t i a lf a u l t sw h i c h m i g h t b ee n c o u n t e r e dw h i l et e s t i n gt h e ma n dt h e nw ed e s c r i b eo u l t e s t i n gm o d e l t h ek e y t os u o o e s so far e l i a b l es o f t w a r es y s t e mi st oe n s u et h ea c c l l r a c yo fi n t e r a c t i o n s a m o n gt h ec o m p o n e n t s ,s ow em o d e lt h es y s t e mw i t hu m l c o l l a b o r a t i o nd i a g r a m a n du m ls t a t e c h a r td i a g r a m t h ec o r eo fs o f t w a r et e s t i n gi st e s ta d e q u a c yc r i t e r i ao nw h i c ht h eg e n e r a t i o no f t e s tc a s e sd e p e n d t h i sp a p e rp r e s e n t st h e s ea d e q u a c yc r i t e r i aw i t l lr e s p e c tt ou m l c o l l a b o r a t i o nd i a g r a ma n du m ls t a t e c h a r td i a g r a m f o ru m lc o l l a b o r a t i o nd i a g r a m , t h i sp a p e rp r o p o s e sa na p p r o a c ht o g e n e r a t i o no ft e s tc a s e sd i r e c t l yf r o mu m l c o l l a b o r a t i o nd i a g r a m v a r i o u sm e s s a g e sa r ed e a l tw i t ho n eb yo n e ,a n dad e p t hf i r s t a l g o r i t h mi sp e r f o r m e dt os e a r c ha l lt h es c e n a r i op a t h sw h i c hc o m p o s et e s tc 嬲e s f o r u m ls t a t e c h a r td i a g r a m ,f i r s t l yw et r a n s f o r mi ti n t ot e s t i n gf l o wg r a p h ( t f g ) ,t h e n t h et f gi su s e dt og e n e r a t et e s tc a s e sb yc o v e r i n ge a c hs t a t ea n de a c ht r a n s i t i o n f i n a l l y , w ei m p l e m e n tat o o lu m l t c gt h a ta u t o m a t et h eg e n e r a t i o no ft e s t c a s e sa c c o r d i n gt ou m lc o l l a b o r a t i o nd i a g r a ma n du m ls t a t e c h a r td i a g r a m k e y w o r d s :c o m p o n e n ts o f t w a r e ,c o l l a b o r a t i o nd i a g r a m ,s t a t e c h a r td i a g r a m , t e s t i n gf l o wg r a p h ,a u t o m a t i cg e n e r a t i o no f t e s tc a s e 上海大學碩士學位論文 t h ep o s t g r a d u a t et h e s i so fs h a n g h a iu n e r s i t y 原創(chuàng)性聲明 本人聲明:所呈交的論文是本人在導師指導下進行的研究工作。 除了文中特別加以標注和致謝的地方外,論文中不包含其他人已發(fā) 表或撰寫過的研究成果。參與同一工作的其他同志對本研究所做的 任何貢獻均已在論文中作了明確的說明并表示了謝意。 簽名:1 主l 建圭日期:型2 :蘭: 本論文使用授權(quán)說明 本人完全了解上海大學有關(guān)保留、使用學位論文的規(guī)定,即: 學校有權(quán)保留論文及送交論文復印件,允許論文被查閱和借閱;學 ??梢怨颊撐牡娜炕虿糠謨?nèi)容。 ( 保密的論文在解密后應(yīng)遵守此規(guī)定) 簽名:丘灶導師簽名: 上海大學碩士學位論文 t h ep o s t g r a j ) u a d et h e s i so fs f l a n g i - i a ju n i v e r s l l y 第一章引言 1 1 論文選題及研究意義 計算機網(wǎng)絡(luò)技術(shù)和面向?qū)ο蠹夹g(shù)的發(fā)展為軟件開發(fā)和應(yīng)用帶來了許多深刻 的變革。分布式程序逐步成為新一代軟件應(yīng)用的重要模式,物理上分布的工作站 系統(tǒng)通過高速網(wǎng)絡(luò)的連接,協(xié)同完成復雜的信息處理任務(wù);面向?qū)ο蠹夹g(shù)所提出 的封裝、繼承、多態(tài)、復用等概念,使軟件開發(fā)過程有了根本性的轉(zhuǎn)變。組件技 術(shù)是對象技術(shù)的繼承和發(fā)展,借助組件技術(shù),軟件工程師可以從更抽象的級別上 認識和表達系統(tǒng),并且通過更有效地重用來加速軟件系統(tǒng)的開發(fā)。 分布式組件系統(tǒng)集中體現(xiàn)了網(wǎng)絡(luò)化和組件化這兩個現(xiàn)代技術(shù)發(fā)展的重要方 向。隨著當前各種相關(guān)規(guī)范的逐步形成和完善,相應(yīng)的開發(fā)環(huán)境和支持工具不斷 出現(xiàn),分布式組件系統(tǒng)必將迎來前所未有的應(yīng)用前景。分布式組件軟件開發(fā)平臺 如c o r b a 、d c o m 、j 2 e e 在業(yè)界已經(jīng)得到了廣泛的應(yīng)用。如何保證分布式組件系統(tǒng) 的質(zhì)量成為一項亟待解決的任務(wù)擺在軟件測試工程師的面前。 軟件質(zhì)量一直是軟件開發(fā)人員和用戶共同關(guān)心的問題,而軟件測試是保障軟 件質(zhì)量的重要手段,因而它必將面臨前所未有的挑戰(zhàn)。試想在一個遵循增量開發(fā) 或敏捷開發(fā)過程的軟件公司中,軟件版本在不斷更新,相應(yīng)的測試用例數(shù)目和運 行這些測試用例的時間也在不斷增長,如何保證在這種很短的用于進行版本更新 的時間內(nèi)進行充分的測試和回歸測試已經(jīng)成為軟件開發(fā)人員和測試人員迫切需 要解決的問題。一個大的軟件項目可能涉及多家公司,包括許多分布在世界各地 的開發(fā)測試組,需要一種有效的機制來協(xié)調(diào)和整合各組的任務(wù)、過程和工作結(jié) 果。也需要一種機制來合理地、按照項目的進展情況動態(tài)地充分利用各地的資源。 再者,僅僅在開發(fā)者的工作環(huán)境中測試軟件是不夠的,軟件產(chǎn)品的最終用戶可能 遍布世界各地,它們的操作系統(tǒng)以及軟件配置環(huán)境也千差萬剮。因此,迫切需要 建立一種新型的軟件測試模型。 通常軟件測試可以分成兩大類;基于規(guī)格說明的測試和基于程序代碼的測 試。傳統(tǒng)的測試技術(shù)不太適合面向組件測試。原因有: 傳統(tǒng)集中式測試和注重單獨的模塊結(jié)構(gòu)測試難以保證軟件分布在不同服 務(wù)器或組件上能相互協(xié)調(diào)工作; 分布式其根本特點就是其運行狀態(tài)的不確定性,即在運行的某一時刻, 軟件處于某一狀態(tài)時,其下一步的動作及該動作所導致的狀態(tài)不可預知。 因此測試分布式的組件不能僅考慮輸入和輸出對應(yīng),因為在實際執(zhí)行環(huán) 上海大學碩士學位論文 珊p o s l l g r a d u a t e t h e s i s o fs h a n g i a i u n i v e r s i t y 境中事件不可能完全按照這些事件序列發(fā)生,如出現(xiàn)非法事件; 由于組件的版權(quán)限制,組件使用者幾乎不可能獲得組件源代碼,因此, 基于軟件代碼的技術(shù),如結(jié)構(gòu)測試技術(shù)和故障測試技術(shù)在這里無法直接 使用; 對基于組件的系統(tǒng),即使組件是帶源代碼的( 如某些開放源代碼的組件) , 由于這些組件有可能是在不同開發(fā)平臺或使用不同程序語言開發(fā)的,結(jié) 構(gòu)測試技術(shù)和故障測試技術(shù)也依然無法直接使用; 由于組件常常不是根據(jù)某個具體最終用戶開發(fā)的,它提供的功能常常會 比組件使用者要求的多。在這種情況下使用傳統(tǒng)的測試覆蓋率來衡量集 成測試結(jié)果是沒有意義的,因為有可能組件提供的某些功能在該系統(tǒng)中 根本不會被使用。 目前,軟件測試在很大程度上還是一項經(jīng)驗性的工作,停留在一種啟發(fā)式的 思維方式上面,測試的效果和效率主要依賴于測試工程師個人能力,產(chǎn)生這種現(xiàn) 象的主要原因之一就是由于目前軟件測試的規(guī)范化和形式化程度很低。隨機的測 試最大的缺點就是缺乏系統(tǒng)性,不能全面地發(fā)現(xiàn)系統(tǒng)缺陷,測試過程也不容易實 現(xiàn)自動化。形式化方法能夠有效克服隨機測試帶來的缺點。在軟件方法學中,形 式方法越來越受到人們的重視,工業(yè)界現(xiàn)在要求人們能應(yīng)用基于如v 嗍、z 、 0 b j e c t - z 、c c s 和0 b j 等軟件規(guī)格說明表示的形式方法來開發(fā)軟件。最近幾年, 軟件規(guī)格說明技術(shù)的研究和發(fā)展很快,并在工業(yè)界被用來描述大型軟件系統(tǒng)。 國際對象管理組織0 m g ( 0 b j e c tm a n a g e m e n tg r o u p ) 認可的標準建模語言 嘶l ( u n i f i e dm o d e l i n gl a n g u a g e ) “1 是近年來軟件工程領(lǐng)域的重要成果。它推 動軟件開發(fā)的標準化進程,拓寬了研制與開發(fā)軟件系統(tǒng)的適用范圍。u m l 是一種 描述能力強大且涵義直觀的可視化建模語言,它提供多種視圖從不同角度和應(yīng)用 層次刻畫系統(tǒng)特性以及復雜的運行環(huán)境。基于u 札的軟件開發(fā)過程和建模環(huán)境已 經(jīng)被工業(yè)界廣泛接受?;趗 地軟件測試成為了軟件工程的一個重要研究方向, 軟件測試的關(guān)鍵是測試用例的產(chǎn)生,基于上述考慮,本文侵用u m l 協(xié)作圖和狀態(tài) 圖模型實現(xiàn)分布式組件系統(tǒng)的測試用例的自動產(chǎn)生。相信這項工作,無論是對于 目前分布式組件系統(tǒng)測試工程的實踐,還是對軟件測試理論上的探索都具有重要 的意義。 1 2 國內(nèi)外研究現(xiàn)狀 目前國內(nèi)外在組件軟件的測試技術(shù)領(lǐng)域已有一些研究。 1 組件軟件流圖 2 上海大學碩士學位論文 t h e p o s t 0 r a d u j j e t h e s i s o f s h a n o h a l u n 【v e r s l l y s a m i “等人首先把從軟件需求和源代碼中得到的信息( 如數(shù)據(jù)流和控制流) 進行可視化處理,生成流圖,借助結(jié)構(gòu)測試技術(shù)生成測試用例。但沒有給出實例 研究,不知道實際效果。 l e o n a r d 等人采用類狀態(tài)機描述類的行為,然后求出類內(nèi)和類間的相關(guān)遷移, 并在此基礎(chǔ)上構(gòu)造數(shù)據(jù)流圖,節(jié)點由狀態(tài)、遷移和條件組成,邊由相關(guān)遷移組成。 數(shù)據(jù)流圖儲存在相關(guān)數(shù)據(jù)庫中,數(shù)據(jù)庫查詢用來獲取定義一使用信息,最后查找 出定義使用對之間路徑,自動產(chǎn)生類和組件間測試用例。 2 基于u m l 的組件軟件測試 該方法采用的測試技術(shù)大致分為兩類:基于狀態(tài)的測試技術(shù)“1 和基于事件 信息流的測試技術(shù)。事件信息流測試技術(shù)類似于結(jié)構(gòu)測試技術(shù)中的程序控制流 或數(shù)據(jù)流技術(shù),不同的是事件信息流是從u m l 圖( 如協(xié)作圖,狀態(tài)圖等) 中獲得, 而不是從程序源代碼中獲得。 基于狀態(tài)機的集成測試主要是從狀態(tài)圖中提取測試相關(guān)信息的舯“。但該方 法可能存在組合狀態(tài)爆炸問題,其研究重點也就是如何較少測試用例的產(chǎn)生數(shù)量 和優(yōu)化測試過程。 u m l 順序圖和協(xié)作圖反映的是外界與對象之間或?qū)ο笈c對象之間為了完成所 需要功能而傳遞信息的關(guān)系,二者不同之處在于順序圖是以時間排序的,而協(xié)作 圖著重于對象之間的關(guān)系。所以,很多基于事件流的測試是以順序圖和協(xié)作圖為 基礎(chǔ)的“。h o i j i n 嗍根據(jù)組件的信息傳遞模式把順序圖和協(xié)作圖劃分為 a s f ( a u t o m a t i cs y s t e mf u n c t i o n ) 單元,據(jù)此得到完整的測試模型,然后根據(jù)邊 覆蓋選擇測試用例。但該技術(shù)沒有考慮順序圖或協(xié)作圖間的關(guān)系。f r a i k i n “”等 作了改進,他們認為各順序圖中如果存在相同的對象,則該對象就是不同順序圖 的組合點。但這僅表示了各順序圖和協(xié)作圖的對象關(guān)系,其它的關(guān)系( 如控制流 關(guān)系等) 并不能被表示。y e “”采用其它u m l 圖( 如活動圖) 來反映這種關(guān)系,并稱之 為連接圖。如何解決該問題成為基于順序圖和協(xié)作圖測試的研究重點。 王林章等“”提出了一個基于u m l 協(xié)作圖生成集成測試用例的方法,將表示設(shè) 計的協(xié)作圖作為測試模型,通過遍歷每條消息的直接后繼識別協(xié)作圖中的表示用 例實現(xiàn)所有可能的場景路徑,從每條場景路徑中獲取相應(yīng)協(xié)作執(zhí)行的路徑條件、 參數(shù)變量和預期方法調(diào)用序列,最后使用范疇一劃分方法確定場景路徑上的輸 入、輸出、環(huán)境條件的合理組合作為覆蓋該場景路徑的測試用例,用于測試一個 協(xié)作場景路徑上的交互行為。但系統(tǒng)對象都是自行開發(fā)的,消息類型只有普通、 條件、循環(huán)消息。而且只存在順序循環(huán)。 基于u m l 的測試生成一般都是將u m l 模型轉(zhuǎn)換到一個現(xiàn)成工具能夠處理的中 間的形式化描述,這可能產(chǎn)生可控制性和可測性問題,而這二個問題到目前還無 3 上海大學碩士學位論文 t 眥p o s t g r a d u a t et h e s i so fs h a n g h a iu n i v e r s i t y 法完全解決,用這些方法測試入員還必須掌握復雜各種形式化理論。 3 基于組件元數(shù)據(jù)的測試“” 其思想是由組件開發(fā)者提供組件的某些元數(shù)據(jù)( m e t a d a t a ) ,組件使用者不需 要組件的源代碼就可以查到組件的某些信息。元數(shù)據(jù)既可以描述組件的靜態(tài)特 性,也可以描述其動態(tài)特性;針對不同的用戶需求,可以提供不同的元數(shù)據(jù),以 便于進行系統(tǒng)化測試。但是還缺乏組件提供者的支持;到目前為止還只能測試小 型程序。 4 組件交互測試 組件交互測試淵( c o m p o n e n ti n t e r a c t i o nt e s t i n g ,c i t ) 首先建立組件交互 的形式化數(shù)學模型,建立每個組件的形式化測試需求,用來描述組件交互可能的 順序,這個模型可以處理并發(fā)和同步通訊;然后由測試需求生成單元測試用例, 進行單元測試;之后選擇組件進行集成;生成復合( c o m p o s e d ) 測試需求,進而生 成集成測試用例;不斷集成新的組件,直到整個系統(tǒng)全部完成。這種測試方法考 慮了集成的順序,所以可以避免重復測試。缺點是,理論上講模型可以從單元升 級到系統(tǒng),但實際上可能會很復雜,難以處理。 文獻 2 0 采用組件交互圖( c o m p o n e n ti n t e r a c t i o ng r a p h c i g ) 來表示接口 和事件的直接關(guān)系,把c i g 圖作為輸入,用一種深度優(yōu)先算法,得到需要測試的 路徑集合。測試充分性條件包括每個接口、每個調(diào)用事件檢測一遍,為了保證可 靠性,所有控制流路徑部分數(shù)據(jù)流路徑,也要檢測。這種方法的通用性強,可 用于各種基于組件的軟件系統(tǒng),不需要知道組件的源代碼,對于c o m 、c o r b a 、e b 組件都適用。該方法做了案例研究,通過對一個股票交易系統(tǒng)( 包含1 8 個組件, 1 0 3 7 個接口) 進行平行測試,發(fā)現(xiàn)比傳統(tǒng)方法更加有效,能夠用更少的測試用例 檢測到更多缺陷。缺點是隨著被測系統(tǒng)規(guī)模的擴大,方法的復雜性會顯著提高。 5 組件內(nèi)建測試“” 組件內(nèi)建測試( b u i l t i n t e s t si nc o m p o n e n t s ,b i t ) 采用一種新的組件規(guī) 范,要求組件支持正常模式和維護測試模式。要求在組件源代碼中增加用于內(nèi) 建測試的成員函數(shù),在維護模式下可以調(diào)用該函數(shù):在正常模式下該函數(shù)是不會 激活的。 這種內(nèi)建測試的思想不局限于組件,對類和對象也適用,用處也很廣泛,可 以不局# 艮于測試。但顯然這種方法需要源代碼。 6 基于變異的測試乜1 1 t d s ( t e c h n i q u e ,d e v e l o p m e n tf r a m e w o r k s ,a n dq u a li t y a s s u r a n c es c h e m e s ) 的第一步確定組件的接口;第二步,確定接口中提供的方法( m e t h o d ) 和異常處理 ( e x c e p t i o n ) ,哪些是必須進行覆蓋的;第三步,確定這些方法和異常處理函數(shù) 4 上海大學碩士學位論文 t h ep o s t g r a d u a t e1 啦s i so fs f i a n g h a lu n i v e r s r r y 的參數(shù),用突變算子( m u t a n to p e r a t o r s ) 對其進行處理;第四步,根據(jù)組件需求 創(chuàng)建測試集,然后運行測試;第五步,去除測試中發(fā)現(xiàn)的錯誤( e r r o r ) ;第六步, 擴充測試集達到i 0 0 的接口覆蓋率( i n t e r f a c e _ _ b a s e dc o v e r a g em e a s u r e ) 。 這個方法的特點是提出了組件軟件測試的充分性條件,并由此生成、檢驗測 試用例;但提出的測試充分性條件還需要與傳統(tǒng)的測試充分性條件進行比較,例 如對比不同的方法,看誰能更有效地檢測出軟件中播種的錯誤( s e e d e de r r o r ) 。 1 3 論文的主要研究內(nèi)容 本文在充分吸收國內(nèi)外組件軟件測試領(lǐng)域新的理論和方法基礎(chǔ)上,利用u 札 協(xié)作圖和狀態(tài)圖模型,對分布式組件軟件實施測試。本文的主要內(nèi)容如下: 第一章:引言。首先介紹了論文選題及研究意義,然后介紹了國內(nèi)外研究情 況。最后提出了本文的主要工作目標。 第二章:分布式組件軟件建模。首先介紹了分布式組件系統(tǒng),分布式組件系 統(tǒng)的開發(fā)和一般結(jié)構(gòu);然后介紹了測試分布式組件系統(tǒng)可能出現(xiàn)的錯誤,從錯誤 分析中得出組件軟件的測試模型:接著分別介紹了基于u m l 協(xié)作圖和狀態(tài)圖的測 試模型;最后介紹了如何從目前主流的三種組件軟件中提取測試元素一接口和事 件。 第三章:測試用例自動生成方法。首先介紹了基于u m l 協(xié)作圖和狀態(tài)圖的測 試準則;然后介紹了如何從u 札協(xié)作圖狀態(tài)圖規(guī)格說明中獲取所需的信息;最 后分別介紹了基于u m l 協(xié)作圖和狀態(tài)圖的測試用例生成方法。本文直接從u 虬協(xié) 作圖中產(chǎn)生測試用例,并分別討論了如何處理條件、并發(fā)和循環(huán)消息;對于狀態(tài) 圖,本文先將狀態(tài)圖轉(zhuǎn)換成測試流圖,然后從測試流圖中來產(chǎn)生測試用例。 第四章:系統(tǒng)實現(xiàn)。本文首先提出了系統(tǒng)實現(xiàn)的總體框架,共有四個模塊: p 咀。解析器、轉(zhuǎn)換器、t c g 生成器和測試用例管理;接著對這四個主要模塊 的數(shù)據(jù)結(jié)構(gòu)和類進行了較為詳細的介紹;最后給出了這個系統(tǒng)實現(xiàn)的部分界面和 簡單操作。 第五章:結(jié)論和展望??偨Y(jié)本課題主要研究成果和下一步的工作。 1 4 本章小結(jié) 分布式技術(shù)和組件開發(fā)方法為軟件測試工作帶來了新的挑戰(zhàn)。本文首先指出 了傳統(tǒng)測試技術(shù)和測試模型不適合組件軟件的測試,然后介紹u m l 開發(fā)和測試 上海大學碩士學位論文 t h ep o s t g r a d u a t et h e s i so fs h a n g h a iu n e r s y 技術(shù)情況,為后面測試工作做了背景鋪墊,并指出本文研究意義所在。接著對基 于組件軟件測試的國內(nèi)外研究情況進行全面分析。最后對全文的主要內(nèi)容作了簡 單介紹。 6 上海大學碩士學位論文 眥p o s t g r a d u a t et h e s i so fs h a n g h a il r n i v e r s 玎y 第二章分布式組件軟件建模 2 1 分布式組件系統(tǒng) 2 ,1 分布式計算 分布式系統(tǒng)是基于網(wǎng)絡(luò)互相連接的若干計算單元協(xié)同計算的軟件實現(xiàn)。通過 網(wǎng)絡(luò)的相互連接,分布式計算提供了一種跨越網(wǎng)絡(luò)透明訪問各種異構(gòu)設(shè)備所需要 的支持,用戶可以充分利用網(wǎng)絡(luò)上的各種資源完成自己的任務(wù)。 當前許多企業(yè)應(yīng)用被設(shè)計成分布式的應(yīng)用模式,用于支持企業(yè)內(nèi)部以及企業(yè) 之間透明的業(yè)務(wù)處理。 按照各個計算機之間互相連接的緊密程度,分布式系統(tǒng)可以分為緊耦合系統(tǒng) 和松耦合系統(tǒng)兩大類。緊耦合系統(tǒng)包括分布式操作系統(tǒng),而松耦合系統(tǒng)則包括網(wǎng) 絡(luò)操作系統(tǒng)和基于中間件的分布式系統(tǒng)。這三類分布式系統(tǒng)的一般特點如下: 分布式操作系統(tǒng):分布式操作系統(tǒng)與傳統(tǒng)的單機操作系統(tǒng)在功能上完全 一樣,只是分布式操作系統(tǒng)涉及到多個處理機。在分布式操作系統(tǒng)中, 每個站點都有自己的局部操作系統(tǒng)內(nèi)核,負責處理該站點機的局部資源。 分布式操作系統(tǒng)位于各個局部操作系統(tǒng)內(nèi)核之上,負責處理各種不同任 務(wù)的并發(fā)執(zhí)行,包括任務(wù)調(diào)度、存儲共享和錯誤恢復等,對于用戶而言, 看起來就像是一臺虛擬機。 網(wǎng)絡(luò)操作系統(tǒng):與分布式操作系統(tǒng)不同,網(wǎng)絡(luò)操作系統(tǒng)一般不要求所有 的站點機具有相同的局部操作系統(tǒng)內(nèi)核。這些站點機通過網(wǎng)絡(luò)彼此相互 連接,通過網(wǎng)絡(luò)操作系統(tǒng)對外提供服務(wù)。 基于中間件的分布式系統(tǒng):無論是分布式操作系統(tǒng)或者是網(wǎng)絡(luò)操作系統(tǒng), 都難以滿足分布式系統(tǒng)定義所要求的眾多屬性。目前最為流行的分布式 系統(tǒng)都采用中間件的模式,即在高層分布式應(yīng)用和底層局部操作系統(tǒng)和 網(wǎng)絡(luò)之間插入一個中間層,即用于屏蔽底層異構(gòu)的操作系統(tǒng)和網(wǎng)絡(luò)的差 異,又能對高層應(yīng)用表現(xiàn)出系統(tǒng)的同一性和透明性。中間件用于提供的 最基本系統(tǒng)服務(wù)包括通信服務(wù)、名字服務(wù)、存儲服務(wù)、分布式事務(wù)服務(wù)、 安全服務(wù)等。 7 上海大學碩士學位論文 t h ep o s t g i l a d u a t e l 。h e s i so fs h a n g h a iu n n ,e r s l t y 2 1 2 基于組件軟件開發(fā) 目前軟件工程界對組件沒有統(tǒng)一的定義,我們不妨這樣理解“組件川”:組 件是帶有一定獨立功能的,獨立發(fā)布的,遵循某個組件標準的,支持第三方集成 的二迸制軟件單元。它有如下特點: 即插即用。組件能方便地由第三方集成于軟件系統(tǒng)中,不需要修改代碼 和重新編譯: 以接口為核心。組件的接口和實現(xiàn)分離,通過接口實現(xiàn)與其它組件或系 統(tǒng)交互,具體的實現(xiàn)被封裝在組件內(nèi)部,系統(tǒng)組裝者只關(guān)心接口,不必 知道實現(xiàn)細節(jié); 標準化。組件的接口被嚴格標準化,這實際上是組件技術(shù)成熟的標志之 一。且前主要組件標準有m i c r o s o f tc o m d c o m ,j a v a b e a n s 和e j b ,以 及o m g 組織的c o r b a 。 組件市場和組件庫。在全球化的組件市場中或由開發(fā)人員開發(fā)積累的組 件庫中有大量成熟組件,軟件系統(tǒng)組裝者能從中挑選合適的組件。組件 提供者對組件的擁有版權(quán),對組件的質(zhì)量負責,并且提供詳細的組件使 用文檔。 基于組件的軟件開發(fā)過程與傳統(tǒng)的面向過程或面向?qū)ο蟮能浖_發(fā)過程有 所不同。傳統(tǒng)的軟件開發(fā)過程是圍繞用戶需求進行需求分析和設(shè)計,軟件完全根 據(jù)用戶的需求定制,稱之為基于需求的軟件開發(fā)過程。而基于組件的軟件開發(fā)過 程,由于通常從商業(yè)市場上購買的組件并不是為了某一個固定用戶定制的,或者 組件實現(xiàn)的功能并不是完全與用戶要求吻合的,因此,基于組件的軟件開發(fā)過程 是在用戶需求、軟件設(shè)計、項目管理和組件市場之間的一個平衡過程。傳統(tǒng)軟件 開發(fā)過程是對圖2 - 1 表示的子開發(fā)過程的迭代瞄1 ,而基于組件的軟件開發(fā)過程是 對圖2 - 2 表示的子開發(fā)過程的迭代啪1 。 圖2 一l 傳統(tǒng)軟件開發(fā)迭代子過程圖2 2 基于組件軟件開發(fā)迭代子過程 8 上海大學碩士學位論文 1 p o s t g r a d u t et h e s i so fs h a n g h a iu n e r s l t - 2 1 3 分布式組件系統(tǒng)一般的體系結(jié)構(gòu) 盡管不同開發(fā)環(huán)境和中間件對分布式組件系統(tǒng)開發(fā)的支持程度上存在一定 差異,但是在體系結(jié)構(gòu)上,它們卻具有很大的相同之處。通過對一般的體系結(jié)構(gòu) 的分析,可以更加容易理解分布式組件系統(tǒng)的本質(zhì),對于分布式組件系統(tǒng)的軟件 模型的認識也更加清楚。 圖2 3 是分布式組件系統(tǒng)的一般體系結(jié)構(gòu)。從圖中可以看出,本質(zhì)上分布 的組件之間還是服務(wù)器和客戶之間的關(guān)系。提供服務(wù)器的組件稱為服務(wù)器,而請 求服務(wù)的一方的角色是客戶,當然,這種角色并不是固定不變的。系統(tǒng)中客戶和 服務(wù)器是兩個主要的角色,其它成分構(gòu)成組件之闖交互的基礎(chǔ)結(jié)構(gòu)?;A(chǔ)結(jié)構(gòu)包 括請求方代理、服務(wù)器端代理和通信結(jié)構(gòu)。 i 【曩紫。 i 屬鶴謝棠方 i, 【映黼if 釜哆毳理】 涵 【譴痞 也定雀 盈務(wù)】一 li l 一一 圖2 3 分布式組件系統(tǒng)一般體系結(jié)構(gòu) 組件之間的一次交互是這樣的:請求方首先發(fā)送服務(wù)請求給本地的代理對 象,請求方此時不需要對任何分布式本身的語義進行處理;請求代理方通過基礎(chǔ) 通信結(jié)構(gòu)傳送請求,通信結(jié)構(gòu)通過對象組件定位器的服務(wù)得n n 務(wù)提供方的引 用,并將請求傳遞給它;提供方代理可以引導請求,所以提供方并不知道分布的 細節(jié)就可以得到相應(yīng)請求;如果結(jié)果存在,這些結(jié)果就會沿請求路徑返回到客戶 方組件。 通過上面的一般體系結(jié)構(gòu)的分析可見,分布式組件系統(tǒng)本質(zhì)上是底層代理和 基礎(chǔ)通信結(jié)構(gòu)支持下的一個并發(fā)系統(tǒng),組件之問的主要關(guān)系是并發(fā)與交互關(guān)系。 分布在不同物理計算機的組件運行在不同進程當中,它們的運行在時間上是并發(fā) 的,組件之間交互是在支持平臺幫助下完成的。更高抽象可以將分布式組件系統(tǒng) 理解為分布在不同物理位置的實體,實體各自具有自己的行為特征。實體之間存 在消息交換,所有的通信都是通過消息傳遞完成的。 u m l 協(xié)作圖可以描述系統(tǒng)中組件實現(xiàn)行為的交互方式,它們?yōu)橥瓿赡硞€目標 9 上海大學碩士學位論文 t h ep o s t g r a d u a t et h e s i so fs h a n g h a lu n i v e r s i t y 而在協(xié)作中進行消息交換,因此u m l 協(xié)作圖可以為這種類型的軟件建立模型。但 是u m l 協(xié)作圖本身并不能充分為組件間的交互行為建模。為了更加精確地為組件 行為建模,我們還結(jié)合u m l 狀態(tài)圖來描述組件問狀態(tài)依賴關(guān)系。這樣利用u m l 協(xié) 作圖和狀態(tài)圖就可以為組件軟件建立嚴格準確的模型。 2 2 模型分析 2 2 1 錯誤分析 為了描述測試模型,我們先描述測試組件軟件系統(tǒng)時可能遇到潛在的錯誤。 基于這些錯誤特征,我們建立測試模型來檢測組件軟件之間可能潛在的錯誤。 在組件軟件系統(tǒng)集成測試中,組件問交互評估是中心問題。組件間交互錯誤 可分為組件間錯誤和互用性錯誤。盡管組件在單元組件測試中已被單獨測試過, 但錯誤仍然存在。在單元測試中,還有屬于傳統(tǒng)的錯誤類別沒有被發(fā)現(xiàn)。下面對 上述三種錯誤分別進行分析“州: 1 組件間錯誤 在一個基于組件的軟件系統(tǒng)中,即使單個組件已被單獨測試過,當把它們集 成到一塊,仍可能存在潛在的錯誤。與多個組件相關(guān)的錯誤被稱為組件間錯誤。 例如在下列偽代碼中,這里c 代表組件,i 代表組件的接口,通過把變量i = o 加入到組件c 。的接口i 。中,同時測試i ,和i 。,不能監(jiān)測到任何錯誤。但當組件 c 。和組件c 2 ,厶集成在一起時,組件c :調(diào)用i :接口和c 。調(diào)用接口i :,那么在a 中將產(chǎn)生溢出錯誤。 c i : i l i - - - - 0 ; 1 2 一r e t u r r li : g : 1 3 一c l :i l ( ) ; c 3 : i 一j = 1 c 。:i :( ) ; 2 互用性錯誤 基于組件的軟件系統(tǒng)有許多特性,如異質(zhì)、源碼不可知、復用性等,致使有 不同類型互用性問題。這些發(fā)生的互用性錯誤從低到高劃分為不同的級別:系統(tǒng) 1 0 上海大學碩士學位論文 1 h ep o s t g r a d u a t e1 1 正s i so fs h a n g h ju n i v e r s i t y 級、程序級和規(guī)格說明級互用性錯誤。 系統(tǒng)級互用性錯誤:在一個基于組件的系統(tǒng)中,不同組件可以被建立在 不同的組織下,如不同的操作系統(tǒng)和系統(tǒng)庫的不同集合。 程序級互用性錯誤:當組件用不同的程序語言編寫,而程序語言中的不 相容性也可導致失敗發(fā)生。例如經(jīng)常遇到的不相容問題之一是v c + + 和 v b 中不相同的雙精度值的處理。 規(guī)格說明級互用性錯誤:在許多的情況下是開發(fā)者曲解了規(guī)格說明。 數(shù)據(jù)歧義曲解通過接口的數(shù)據(jù)。如返回值或輸入數(shù)據(jù)的類型和值 的誤解等。 控制歧義曲解交互模式。這包括曲解接口的執(zhí)行序列,例如,許 多組件有初始化接口,此接口必須在其它接口之前被調(diào)用,如沒有 這樣做將導致出錯;也包括曲解交互機制,例如,當異常產(chǎn)生時, 接口就需要進行異常處理,如果缺乏異常處理,軟件則會崩潰。 3 傳統(tǒng)錯誤和其它錯誤 在組件中有些錯誤是孤立的,可以采用傳統(tǒng)的測試和維護技術(shù),這些錯誤定 義為傳統(tǒng)錯誤。其它錯誤,如與特定輸入和特定執(zhí)行環(huán)境相關(guān)的錯誤也歸入這類 錯誤。 從以上錯誤分析,可以看出組件軟件的錯誤主要在于組件間及組件與其環(huán)境 間的交互性錯誤。產(chǎn)生這些錯誤所涉及的因素主要是接口、執(zhí)行的事件及相應(yīng)的 依賴關(guān)系。 2 2 2 組件軟件的測試模型 測試組件軟件時,我們假設(shè)每一個單獨的組件已經(jīng)過充分測試。因此一個可 靠軟件系統(tǒng)的關(guān)鍵就是保證組件間交互的正確性。y ew u “馴提出的測試模型重 點解決組件間的交互和上一節(jié)描述的錯誤分析類型1 和類型2 。一個組件與其它 軟件間的交互可以是直接或間接交互。直接交互包括接口調(diào)用、異常處理或用戶 觸發(fā)一個事件;間接交互是通過一個事件序列來完成的。 組件軟件通過把能實現(xiàn)一定功能的組件集成起來,以完成總體功能和需求。 所以其集成測試的中心環(huán)節(jié)是測試組件間及組件與環(huán)境間的交互操作。由于組件 源代碼不可知,組件對外提供的只是接口和事件。接口和事件是組件的基本元素, 也是組件軟件測試的基本元素。當組件集成時,程序員一般只注重如何規(guī)定接口 和事件。但這些接口和事件如何交互,以及集成系統(tǒng)中潛在的錯誤通常沒有考慮。 因此基于組件軟件測試需要考慮的關(guān)鍵要素有接口、事件及它們之間的依賴關(guān) 上海大學碩士學位論文 t h ep o s t g r a d u a t et h e s i so fs h a n g h a iu n i v e r s i t y 系。 接口是組件的入口點,通過接口客戶端組件可以請求服務(wù),該服務(wù)公布在服 務(wù)提供者組件的接口上。每一組件由接口名和唯一接口i d 來表示。接口是組件 與其環(huán)境交互的門戶。因此在集成和系統(tǒng)測試中每個接口至少被測試一次。 測試接口可以保證每個可能被調(diào)用的接口在運行時間內(nèi)至少被執(zhí)行一次,這 方面與傳統(tǒng)的要求每個函數(shù)或過程至少被測試一次相似。但在不同上下文中被不 同組件調(diào)用的接口可能有不同的結(jié)果,某些并沒有經(jīng)接口觸發(fā)的事件也對組件有 影響,也需要被測試。即在系統(tǒng)中每個事件,不管它的類型如何,都至少被測試 一次。 接口測試和事件測試確保兩個組件( 客戶端和服務(wù)器) 間的每次交互都執(zhí)行 了測試。然而一個組件軟件系統(tǒng)包括一組組件間的交互,事件觸發(fā)序列可以產(chǎn)生 意外的輸出結(jié)果,所以需要捕獲事件間的關(guān)聯(lián)關(guān)系,這類似于傳統(tǒng)程序中控制流 依賴關(guān)系。如果存在如下執(zhí)行路徑,如o 的觸發(fā)會直接或間接觸發(fā)o :,則事件e 。 和事件f l 。間有一個上下文敏感依賴關(guān)系。對給定的事件e ,需要測試與e 有敏感依 賴關(guān)系的每個事件,觀測執(zhí)行歷史對e 的執(zhí)行輸出的可能影響。這種依賴關(guān)系不 僅包括直接交互,而且包括由其它接口和事件觸發(fā)的事件與接口間的協(xié)作關(guān)系。 因此這種依賴關(guān)系適合于識別由不同組件間不恰當?shù)慕换ヒ鸬慕换バ藻e誤。 接口和事件是測試的基本元素,從組件規(guī)格說明中相對容易獲取組件接口。 識別事件第一必須知道觸發(fā)事件的接口和對應(yīng)事件的被調(diào)用的接口,事件觸發(fā)或 執(zhí)行的行為表現(xiàn)為集成組件間的交互性,所以只要可以對組件接口及接口間的交 互進行建模,事件就不難獲取。我們用u m l 協(xié)作圖和狀態(tài)圖來為組件軟件建模。 e m l 協(xié)作圖描述了系統(tǒng)的一個協(xié)作參與組件之間如何交互,但是刪l 協(xié)作圖本身 并不總是可以充分為組件間的交互行為建模。為了更加精確地為組件行為建模, 我們還結(jié)合u m l 狀態(tài)圖來描述組件間狀態(tài)依賴關(guān)系。例如,從圖2 4 我們可以 看出序列“2 a 一2 a 卜2 a 2 ,2 a 2 a 一2 a 3 ,2 a 2 a 1 ”( 2 a 2 和2 a 2 a 是一對并發(fā) 消息) 是允許用戶進行取消操作的唯一序列。然而,該序列可以發(fā)生在不同上下 文中,如用戶在正確輸入p i n 后取消當前交易,或輸入p i n 錯誤后取消當前交易。 圖2 7 是圖2 4 對應(yīng)的狀態(tài)圖。根據(jù)該狀態(tài)圖,我們可以清楚看出取消操作是 在下面三種不同場景下發(fā)現(xiàn):a ) 等待p i n ,b ) 有效的p i n ,c ) 等待客戶的選擇。 使用狀態(tài)圖可傻接口和事件間的交互描述得更精確。使用狀態(tài)圖我們描述的 依賴關(guān)系不僅包括所有可能存在協(xié)作圖中的序列,而且包括所有可能存在狀態(tài)圖 中的結(jié)合序列。 1 2 上海大學碩士學位論文 1 1 虹p o s t g r a d u 觚1 忸s i so fs 姒n g 隊il r n i v e r s i r v 2 2 3 基于u m l 協(xié)作圖的測試模型 u m l 協(xié)作圖強調(diào)發(fā)送和接受消息組件之間的結(jié)構(gòu)組織??梢杂脕戆唇换ブ械?角色及其關(guān)系對一個用例的特定實現(xiàn)場景進行建模。它描述了特定行為的參與組 件的靜態(tài)結(jié)構(gòu)和動態(tài)交互。動態(tài)交互部分是一個消息集合,包括一個和多個動態(tài) 交互,表示在執(zhí)行計算過程中不同時間里協(xié)作中的消息流,這些消息定義了行為 方面的內(nèi)容。協(xié)作圖有路徑,有順序號。協(xié)作圖中的消息箭頭表示組件之間的消 息流,消息上可以標注說明發(fā)送的順序,還可以指明條件、重復和返回值等。一 個協(xié)作圖從引起整個交互或協(xié)作的消息開始,如一個操作調(diào)用。圖2 4 是a t m 客戶端輸入p i n 用例的協(xié)作圖。 圖2 - - 4a t m 客戶端輸入p i n 用例的協(xié)作圖 協(xié)作圖描述參與交互和相互關(guān)聯(lián)的組件之間的交互,但是標準協(xié)作圖的消息 標記并不能充分描述組件間的交互信息,因此需要對協(xié)作圖的消息標記進行擴 展,以適應(yīng)組件軟件測試的需要。協(xié)作圖應(yīng)該提供如下六點信息啪”: 1 交互中的組件和這些組件的結(jié)構(gòu); 2 調(diào)用一個組件的順序: 3 操作語義; 4 和其它組件之間的協(xié)作,由其它組件而引起的操作; 5 協(xié)作圖中組件間協(xié)作圖模型( 同步或異步) ; 6 組件執(zhí)行特征( 并發(fā)或順序) 。 我們對協(xié)作圖的定義如下: 上海大學碩士學位論文 t h ep o s t g r a d u 御。r 呱s i s0 fs h a n g h a iu n i v e r s r r y 定義1 :組件協(xié)作圖c d 可以表示為一個二元組:c d = ( o s ,m ) 。其中: o s = o s 。,o s :,o s 。,o s ) 是c d 中非空有窮的組件集合。 m = m l ,m 2 ,m 3 , 是c d 上描述有窮消息的集合,每個消息定義 為:m i2 ( l n 鯽e ,g u a r d ,s e q u e n c e e x p r e s s i o n ,p a r a m e t e r _ l i s t , r e t u r n _ v a l u e ,r e c e i v e r ,s e n d e r ,t y p e ) ;其中 一mn a m e 為消息名; 一 g u a r d 為消息發(fā)送的衛(wèi)式條件; 一 s e q u e n c e e x p r e s s i o n 表示順序項列表每一項表示交互中的一個嵌 套層次,如果所有的控制并行則無嵌套;整數(shù)表示過程調(diào)用中的相 鄰高層中的消息的順序,同一整數(shù)項中的不同消息在嵌套層是順序 關(guān)系,同一前綴的消息順序號構(gòu)成序列,構(gòu)成消息之間偏序關(guān)系。 循環(huán)表示條件或迭代執(zhí)行,表示根據(jù)條件執(zhí)行零個或多個消息; 一p a r a m e t e r l i s t 為消息的參數(shù); 一r e t u r n v a l u e 為消息的返回值; 一 s e n d e r 為消息的發(fā)送組件; 一 r e c e i v e r 為消息的接收組件; 一t y p e c o n l l n o n ,p a r a l l e l ,l o o p ,c o n d i t i o n ) 。c o m m o n 表示普 通消息,p a r a l l e l 表示并發(fā)消息,用小寫字母表示;l o o p 表示循環(huán) 消息,用$ 表示;c o n d i t i o n 表示條件消息,用大寫字母表示。如2 7 和2 7 a 是一對并發(fā)消息,1 1 a 和1 1 是一對條件消息,2 6 a * 是循 環(huán)消息。 實際上,協(xié)作圖描述州l 用例圖中的場景,其中場景被定義為在相互交互組 件閫傳遞的一個消息序列,每個消息序列代表該用例的一個可能的事件流。協(xié)作 圖強調(diào)了參與交互組件的組織,體現(xiàn)交互組件間的整體連接關(guān)系,通過在組件間 的連接上帶有標簽的消息來描述組件間的交互。消息是組件間的通信,它傳達了 要執(zhí)行動作的信息,它能觸發(fā)事件,接受到了一個消息通常被認為是一個事件。 通常,當一個組件調(diào)用另外一個組件的操作時,即完成了一次
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 設(shè)備安全管理培訓體系構(gòu)建
- 暖氣跑水協(xié)議書
- 勞動合同簽訂原則
- 執(zhí)行總經(jīng)理聘用合同書
- 物流售后協(xié)議書
- 道路工程清包工合同協(xié)議
- 配送業(yè)務(wù)承包合同協(xié)議
- 水樣比對協(xié)議書
- 旱地承包協(xié)議書
- 車輛保養(yǎng)服務(wù)合同協(xié)議
- (新版)網(wǎng)絡(luò)攻防知識考試題庫(含答案)
- NPT5空氣壓縮機檢修
- 分部工程質(zhì)量驗收記錄
- Q∕SY 13123-2017 物資倉儲技術(shù)規(guī)范
- 合肥市不動產(chǎn)登記申請審批表-版本
- 防洪度汛檢查表
- 手術(shù)通知單模板
- 招商合同范本4篇-合同范本
- 《西方音樂史》課件伯遼茲
- 關(guān)于互聯(lián)網(wǎng)金融對商業(yè)銀行風險影響的實證研究會計學專業(yè)
- 十八項電網(wǎng)重大反事故措施
評論
0/150
提交評論