朱 棣 蘭少華 顧一禾
(南京理工大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院 江蘇 210094)
伴隨著計(jì)算機(jī)的普及和網(wǎng)絡(luò)的迅速發(fā)展,計(jì)算機(jī)應(yīng)用已經(jīng)遍布各個(gè)角落,與此同時(shí)各行各業(yè)對(duì)軟件需求也越來(lái)越多,對(duì)軟件的健壯性、功能性等提出了更高的標(biāo)準(zhǔn)。計(jì)算機(jī)系統(tǒng)日益復(fù)雜,軟件規(guī)模也在迅速膨脹,必然使得缺陷出現(xiàn)的可能性大大增加,暴露出的問(wèn)題自然也逐漸增多,再加上當(dāng)前的軟件開(kāi)發(fā)和運(yùn)行環(huán)境的開(kāi)放性、多變性、動(dòng)態(tài)性等,使得軟件隱藏了許多未知隱患。例如,阿麗亞娜5型運(yùn)載火箭發(fā)射失敗,北京奧運(yùn)會(huì)售票官網(wǎng)一度癱瘓都是由軟件故障引起的。
網(wǎng)絡(luò)的迅速發(fā)展,已經(jīng)成為一個(gè)龐大的資源共享庫(kù),每時(shí)每刻傳遞著巨大信息量。通過(guò)HTML、XML、CGI等WEB技術(shù),越來(lái)越多基于網(wǎng)絡(luò)環(huán)境的Web應(yīng)用系統(tǒng)被創(chuàng)建起來(lái)。網(wǎng)絡(luò)技術(shù)、分布式計(jì)算技術(shù)、面向?qū)ο蠹夹g(shù)三者進(jìn)一步的融合發(fā)展,網(wǎng)絡(luò)應(yīng)用正朝著SOA(Service-Oriented Architecture,面向服務(wù)的體系結(jié)構(gòu))發(fā)展。Webservice正是這種原則的體現(xiàn),它為因特網(wǎng)上的分布式計(jì)算提出了一種基于 XML等開(kāi)發(fā)標(biāo)準(zhǔn)的、松散耦合的、跨語(yǔ)音、跨平臺(tái)的新型軟件構(gòu)件。軟件測(cè)試一直以來(lái)都是保證軟件質(zhì)量的重要手段,對(duì)于測(cè)試方法、技術(shù)的研究一直都沒(méi)有停止過(guò)。
軟件測(cè)試的目的是用最少的時(shí)間和人力找出軟件開(kāi)發(fā)各個(gè)階段潛在的各種錯(cuò)誤和缺陷。從證實(shí)方面說(shuō)是為了證明軟件不存在錯(cuò)誤的過(guò)程,證偽方面說(shuō)是發(fā)現(xiàn)軟件中錯(cuò)誤而執(zhí)行程序的過(guò)程。測(cè)試對(duì)象包括程序、需求分析、概要分析、詳細(xì)分析、交付件、設(shè)計(jì)文檔、源代碼等。
社會(huì)對(duì)軟件需求越來(lái)越多,規(guī)模也越來(lái)越大,對(duì)軟件安全性、可靠性、實(shí)時(shí)性等也提出更高的要求。最初軟件測(cè)試方法日益不能跟上軟件增長(zhǎng),伴隨著面向模型的開(kāi)發(fā)技術(shù)發(fā)展以及軟件自動(dòng)化測(cè)試技術(shù)進(jìn)步,基于模型的軟件測(cè)試(Mode1-Based Software Testing)技術(shù)得到了廣泛的重視和應(yīng)用。所謂基于模型的軟件測(cè)試就是對(duì)應(yīng)用程序的某個(gè)被測(cè)功能或者多個(gè)待測(cè)試功能進(jìn)行分析,得到應(yīng)用程序的規(guī)格說(shuō)明書(shū),根據(jù)這個(gè)說(shuō)明書(shū)設(shè)計(jì)出模型,以模型為依據(jù)根據(jù)某種配對(duì)原則生成測(cè)試用例,最終對(duì)測(cè)試結(jié)果進(jìn)行評(píng)估。基于模型的軟件測(cè)試的出現(xiàn)大大提高了自動(dòng)化測(cè)試技術(shù)的效率和測(cè)試水平,提高了測(cè)試用例的重復(fù)使用率。目前已經(jīng)出現(xiàn)了多種測(cè)試模型:UML模型、有限狀態(tài)機(jī)模型、文法模型、馬爾科夫鏈模型等。
Webservice技術(shù)標(biāo)準(zhǔn)復(fù)雜,網(wǎng)絡(luò)的分布性和多變性就決定了傳統(tǒng)的測(cè)試方法并不能完全的滿(mǎn)足其測(cè)試需求。Webservice作為Web應(yīng)用的一種得到了很多行業(yè)的關(guān)注和支持,如何保證其可靠性成為學(xué)術(shù)界的討論研究焦點(diǎn)。
Webservice各種角色在交互中必然牽扯到一系列標(biāo)準(zhǔn)和協(xié)議,通常描述 Webservice=SOAP++WSDL+UDDI。其中 SOAP(Simp1e Object Access Protoco1)協(xié)議是Webservice的主體,它通過(guò)HTTP或者SMTP等應(yīng)用層協(xié)議進(jìn)行通訊,自身使用XML文件來(lái)描述程序的函數(shù)方法和參數(shù)信息,從而完成不同主機(jī)的異構(gòu)系統(tǒng)間的計(jì)算服務(wù)處理。WSDL(Web Service Description Language)也是一個(gè)XML文檔,它通過(guò)HTTP向公眾發(fā)布,公告客戶(hù)端程序關(guān)于某個(gè)具體的Webservice服務(wù)的URL信息、方法的命名,參數(shù),返回值等。UDDI是一種目錄服務(wù),它集描述(Universa1 Description)、檢索(Discovery)、集成(Integration)為一體,通過(guò)這個(gè)目錄對(duì)Webservice進(jìn)行注冊(cè)和查找,在互聯(lián)網(wǎng)上發(fā)布自己所提供的服務(wù)。

圖1 Webservice體系結(jié)構(gòu)模型
樹(shù)型結(jié)構(gòu)是一類(lèi)重要的非線(xiàn)性數(shù)據(jù)結(jié)構(gòu),它是以分支關(guān)系定義的層次結(jié)構(gòu),不僅在計(jì)算機(jī)領(lǐng)域,在其他非計(jì)算機(jī)領(lǐng)域同樣得到了廣泛的應(yīng)用。
本文采用ewind DesignSpace工具進(jìn)行建模并生成用例,它是一個(gè) MBT工具,并應(yīng)用算法固化的測(cè)試設(shè)計(jì)方法,其具有與模型分離的生成策略控制能力,適配敏捷測(cè)試的能力,算法固化經(jīng)典的測(cè)試設(shè)計(jì)方法,自動(dòng)根據(jù)模型生成用例包括文本用例和自動(dòng)化用例。

圖2 ewind DesignSpace用例設(shè)計(jì)流程圖
分類(lèi)樹(shù)是某種業(yè)務(wù)行為的因子的約束組合,Root節(jié)點(diǎn)下分類(lèi)節(jié)點(diǎn)是相互組合的,每個(gè)分類(lèi)節(jié)點(diǎn)下類(lèi)節(jié)點(diǎn)(葉子)是相互互斥的,即一個(gè)用例中一個(gè)分類(lèi)節(jié)點(diǎn)下面的取值只會(huì)出現(xiàn)一個(gè),類(lèi)節(jié)點(diǎn)下面還需考慮不同分類(lèi),則需在類(lèi)節(jié)點(diǎn)下繼續(xù)增加該類(lèi)取值的不同分類(lèi)。流程圖和分類(lèi)樹(shù)設(shè)計(jì)完成后,定義用例生成策略,將確定同一個(gè)模型生成用例的覆蓋深度。樹(shù)的葉子節(jié)點(diǎn)便是用例的影響因子,依據(jù)語(yǔ)句控制和生成策略對(duì)因子進(jìn)行組合便生成測(cè)試用例,用例的生成基于黑盒測(cè)試方法中的等價(jià)類(lèi)劃分。圖3為用于生成用例的分類(lèi)樹(shù),虛線(xiàn)表示省略,根據(jù)實(shí)際需求可能有多個(gè)分類(lèi)點(diǎn)。

圖3 用例生成分類(lèi)樹(shù)
SoapUI是一個(gè)開(kāi)源的Webservice測(cè)試工具,一個(gè)完整的自動(dòng)化測(cè)試解決方案,通過(guò)soap/http的檢測(cè)、調(diào)用,對(duì)Webservice進(jìn)行功能測(cè)試、負(fù)載測(cè)試、可靠性測(cè)試等。相比較其他工具,SoapUI提供了較為領(lǐng)先的技術(shù)以及對(duì)標(biāo)準(zhǔn)的良好支持,一直都是從業(yè)者的首選工具。
選取網(wǎng)上提供火車(chē)時(shí)刻表服務(wù)的WSDL進(jìn)行測(cè)試,結(jié)果如下表。

表1 測(cè)試數(shù)據(jù)
根據(jù)以上數(shù)據(jù)可以明顯的看出用例的覆蓋率大多維持在80%上下,可以滿(mǎn)足正常的測(cè)試需求。實(shí)際測(cè)試工作中,并不要求也沒(méi)有明確的說(shuō)明用例覆蓋率一定要達(dá)到100%,而是根據(jù)具體的軟件需求和實(shí)際出發(fā)來(lái)確定覆蓋率。實(shí)際上包括我實(shí)習(xí)的一段時(shí)間親身經(jīng)歷,幾乎都將用例覆蓋率保持在80%左右。
在整個(gè)軟件開(kāi)發(fā)進(jìn)程中,測(cè)試被視為艱苦而又繁瑣的工作。其工作內(nèi)容周而復(fù)始反反復(fù)復(fù),倘若一個(gè)函數(shù)參數(shù)改變都要重新測(cè)試。測(cè)試工作一直占據(jù)軟件開(kāi)發(fā)總量40%以上甚至更高,其重要性可見(jiàn)一斑。國(guó)內(nèi)針對(duì)Webservice測(cè)試方法和技術(shù)已經(jīng)進(jìn)行了很多研究,也取得了一定的成果。其研究?jī)?nèi)容主要基于WSDL規(guī)格說(shuō)明,集中在測(cè)試案例產(chǎn)生、變異測(cè)試、自動(dòng)化測(cè)試、合約測(cè)試、劃分測(cè)試等方面。Webservice測(cè)試還是一個(gè)嶄新的研究領(lǐng)域,雖然已經(jīng)有了部分理論和工具的支撐,也得到了良好的應(yīng)用,但大多Webservice測(cè)試問(wèn)題還未涉足。
[1]錢(qián)樂(lè)秋,趙文耘,牛軍鈺.軟件工程[M].第二版.北京:清華大學(xué)出版社.2013.
[2]齊治昌,譚慶平,寧洪.軟件工程[M].北京:高等教育出版社.2001.
[3]楊芙清,呂建.淺論軟件技術(shù)發(fā)展[J].電子學(xué)報(bào).2002.
[4]Ron Patton.Software Testing[M].Sams Publishing.Second Edition.2005.
[5]傅兵.軟件測(cè)試技術(shù)教程[M].北京:清華大學(xué)出版社.2014.
[6]Hasan J.The Web Services Description Language[J].Expert Service Oriented Architecture in C.2004.
[7]Liu C K,Booth D.Web services description language(WSDL)version 2.0 part 0[J].1.1 in W3C Note 15 March 2001,W3C,http://www.w3.org/TR/wsdl.2007.
[8]Luo Zuomin,Zhu Yan.Web ,rvice Testing Tool SoapUI and Its Analysis,Computer Applications and Software.2010.
[9]Kankanamge C.Web services testing with soapUI[M].Packt Publishing Ltd.2012.
[10]白曉穎,趙沖沖,戴桂蘭.Web服務(wù)測(cè)試研究[J].計(jì)算機(jī)科學(xué).2006.