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