梁利亭
(三門峽職業技術學院,河南 三門峽 472000)
〔專題研究與新論〕
基于UML的軟件測試的研究與應用
梁利亭
(三門峽職業技術學院,河南 三門峽 472000)
文章首先分析了軟件測試的起源、發展,然后分析了面向對象的軟件測試技術,接著論述了面向對象的軟件測試當中最常用的UML技術,最后利用UML圖在面向對象的系統中生成測試用例。
軟件測試;面向對象;UML
軟件的漏洞和缺陷是伴隨著軟件的出現而產生的,同時,為了盡可能地解決軟件的漏洞和缺陷,軟件測試也同樣伴隨著軟件的開發而出現。隨著軟件體系結構的日益復雜、軟件種類的日益增多、新的編程技術的不斷出現,軟件漏洞和缺陷也日益增多,并且危害性也越來越大。例如2009年7月份,微軟的OFFICE組件的一個“OFFICE內存破壞”安全漏洞,導致了7000萬人次被攻擊和近3萬個網站被掛馬,造成了巨大的損失。因此,軟件測試成為了提高軟件的開發效率和保證軟件質量的最有效的手段。
軟件測試主要經歷了如下幾個重要的發展階段:
1.軟件調試:早期的軟件規模小、結構簡單,在開發過程當中如果遇到其中的漏洞和錯誤,經過軟件開發人員的調試后基本上就可以解決了。
2.獨立的軟件測試:隨著軟件開發的日益復雜,軟件開發過程當中涉及的內容越來越多,僅靠軟件開發人員的調試不能夠發現軟件當中的漏洞和缺陷,這時就引入了一個獨立的測試小組來完成軟件的測試。
3.軟件測試概念的提出:直到20世紀70年代,Bill Hetzel在North Carllina大學舉行第一次以軟件測試為主題的正式議會提出了軟件測試的概念。在這個階段,軟件測試主要的內容是:軟件測試被用來檢測相關軟件產品能否正確執行,滿足相關需求。
4.軟件測試成了獨立的學科:20世紀80年代后,隨著軟件需求的快速發展,軟件的復雜度和規模越來越大,人們對軟件的開發效率和軟件質量要求越來越高,并開始將軟件測試作為保證軟件質量的重要手段。1981年Bill Hetzel博士開設了一門結構化軟件測試“Structured Soft-ware Testing”公共課。1983年IEEE給出了軟件測試的定義:軟件測試是使用人工或自動手段來運行或測定某個系統的過程,檢驗它是否滿足規定的需求或是弄清預期結果與實際結果之間的差別。軟件測試是一站需要經過設計、開發和維護等完整階段的軟件工程。
5.開發與測試的融合階段:20世紀90年代以來,各種各樣的軟件開發模式開始出現,特別是面向對象成為了軟件開發的主流,由于面向對象的軟件開發模式的優勢,使得人們開始將軟件測試和軟件開發進行融合,軟件開發人員和軟件測試人員開始協調工作,軟件測試和軟件開發的界限開始變得模糊,測試驅動開發(Test-Driven Development,TDD)技術出現,它的基本思路是:通過測試來推動整個開發的進行,于是測試驅動開發并不只是單純的測試工作,而是把需求分析、設計、質量控制量化的過程。
20世紀80年代后期以來,面向對象軟件技術開發發展迅速,其多態、封裝和繼承的新特性使軟件開發具有易維護、質量高、效率高、易擴展等優勢,但這些新特點也改變了軟件測試的相關要求和方法,給軟件測試提出了新的挑戰。
面向對象軟件測試是根據面向對象的軟件開發過程結合面向對象的特點提出的。它包括分析與設計模型測試技術、類測試技術、對象交互測試技術、類層次結構測試技術、面向對象系統測試技術五大部分。
與傳統的軟件測試技術相比,面向對象的單元測試就是類測試;面向對象的類和對象進行交互測試就是類簇測試;面向對象的系統測試與傳統的系統測試基本上是相同的,與傳統系統測試不同的是,面向對象的系統測試還需要驗證OOA分析的結果,對軟件的架構設計部分進行驗證,確保軟件可以順利實現用戶需求。
統一建模語言(Unified Modeling Language UML),是面向對象軟件開發的重要工具之一,它是一種可視化的建模語言,系統構建者用標準的、易于理解的方式建立一種有效的和共享的軟件開發系統藍圖。UML提供了一套描述軟件系統模型的概念和圖形表示方法,軟件開發人員可以使用UML對復雜的面向對象軟件系統建立可視化的模型,并通過增量式的不斷細化,直接控制從設計、編碼、測試到文檔編制的整個軟件開發過程。
UML包含三個方面的內容:模型的概念和表示法、語言的公用機制、對象約束語言。UML提供的標準模塊有三種:事務、關系和圖。事務是一個模型的一級抽象成員。UML定義的事務包括結構性事務、行為性事務、成組性事務和注釋性事務。而UML提供的模型之間的關系包括依賴、關聯、范化、實現四種。利用UML建立的模型,可以應用于C#、C++、Java以及任何一種面向對象的程序設計語言當中。
在利用UML模型進行軟件測試時,測試人員首先應注意利用UML的面向對象特性,其次,在利用UML進行軟件建模時,是以用戶模型視圖所捕獲的用戶規約為中心而展開的,可以利用OCL來確定描述各種UML圖所不能刻畫的不變式、前置條件和后置條件等模型約束,這些規約是UML模型功能測試和驗收測試的基礎。軟件測試的目的就是為了發現軟件系統執行期間所可能出現的錯誤,因此UML的用戶模型視圖和行為模型視圖通常是軟件測試的重點。一般來說,在面向對象的軟件測試當中,使用類圖和狀態圖進行單元測試,使用協作圖、活動圖、狀態圖和構件圖進行集成測試,使用用案圖來進行系統測試。
基于UML的測試有下列優點:通用性強,形式化好,有著強大的管理能力和描述能力,可重用性和可迭代性?;谝陨显颍琔ML不僅是軟件開發的重要工具,同時也是指導軟件測試的重要模型。
1.軟件簡介
Cacti是一套基于PHP、MySQL、SNMP及RRDTool開發的網絡流量監測圖像分析工具,可以實現網絡狀態的實時圖像化顯示、故障報警、創建監測模板等功能,同時它還提供了豐富的網絡監測插件,基于Cacti網絡管理者可以構建本地網絡的、滿足監測功能的網絡監測系統。目前,隨著IPv6網絡協議的全面實驗,特別是在高等院校當中已經進行了IPv6大規模的部署實驗,對IPv6網絡的監控管理系統的開發就顯得日益重要,本系統是一個基于Cacti和RRDTool框架開發的完整的網絡管理圖形解決方案。最重要的是支持IPv6網絡設備的監視與管理,而且通過創建圖形使網絡管理員的工作更容易照顧到網絡的細節。通過Cacti的圖形用戶界面,使得網絡管理員可以直觀地觀測到網絡的實時流量信息,為IPv6網絡在未來的大規模應用提供了良好的管理保障。
2.利用UML活動圖進行集成測試
在面向對象的軟件測試當中,集成測試的一個主要目標就是確保每個類或組件對象的消息以正確的順序發送和接收,同時確保接收消息的外部對象的狀態獲得預期的影響。利用UML活動圖,能夠針對面向對象的軟件測試生成良好的測試用例。在利用活動圖生成相應的測試用例的時候,需要的條件有:
(1)需要由客戶或開發人員進行討論后以自然語言形式給出的需求文檔,文檔描述了開發系統所具有的所有必要的行為。
(2)可以利用需求文檔給出的信息生成用案圖集,如果有必要,將這些用案圖和客戶經行進一步的修改,利用確定好的用案圖來刻畫與系統之間交互以及這些交互期望輸出的活動圖。
(3)所得到的活動圖將被變換成能區分系統的輸入、輸出以及系統本身的任務,刻畫輸入輸出的順序以及各活動之間的并發性的形式活動圖 (Formal Activity Diagrams,FAD)。為構造測試用例,FAD被劃分成多個“片段”,其中的每個片段都要單獨地進行分析以得到一個不完整的測試用例。
(4)通過特定的方法將這些不完整的測試用例合并成完整的測試用例。
(5)形式活動圖(FAD)以圖的形式來描述用戶和待測試系統之間的交互關系,用來修改后的活動圖刻畫系統的輸入和輸出所具有的特性,使得測試用例的生成較為容易。利用形式活動圖生成測試用例的基本思想是:將一個FAD分割成多個片段,接著對每個片段進行分析,以便找出其對應的可能事件序列,然后為已分成若干片段的FAD建立一個片段方程。片段方程描述了如何合并與各個片段對應的事件序列以構造出完整的測試用例。將事件序列進行合并的方法較簡單,該合并方法只使用3個操作:其中兩個是非常基本的集合操作,第3個是用來將兩個片段進行交叉的操作。最后,該方法對所得到的完整的測試用例集進行進一步的處理,以消除其中重復的或不可能操作的測試用例。
(6)根據生成的測試用例就可以用來對數據填充模塊進行集成測試,只要所有測試用例的實際輸出和期望輸出一樣,就可以說該模塊對于活動圖而言是正確的。
[1]梁利亭.基于UML的面向對象的軟件測試的研究與應用[D].南京理工大學碩士論文,2010.
TP
A
1673-0046(2011)03-0159-02