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

圖1 Webservice體系結構模型
樹型結構是一類重要的非線性數據結構,它是以分支關系定義的層次結構,不僅在計算機領域,在其他非計算機領域同樣得到了廣泛的應用。
本文采用ewind DesignSpace工具進行建模并生成用例,它是一個 MBT工具,并應用算法固化的測試設計方法,其具有與模型分離的生成策略控制能力,適配敏捷測試的能力,算法固化經典的測試設計方法,自動根據模型生成用例包括文本用例和自動化用例。

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

圖3 用例生成分類樹
SoapUI是一個開源的Webservice測試工具,一個完整的自動化測試解決方案,通過soap/http的檢測、調用,對Webservice進行功能測試、負載測試、可靠性測試等。相比較其他工具,SoapUI提供了較為領先的技術以及對標準的良好支持,一直都是從業者的首選工具。
選取網上提供火車時刻表服務的WSDL進行測試,結果如下表。

表1 測試數據
根據以上數據可以明顯的看出用例的覆蓋率大多維持在80%上下,可以滿足正常的測試需求。實際測試工作中,并不要求也沒有明確的說明用例覆蓋率一定要達到100%,而是根據具體的軟件需求和實際出發來確定覆蓋率。實際上包括我實習的一段時間親身經歷,幾乎都將用例覆蓋率保持在80%左右。
在整個軟件開發進程中,測試被視為艱苦而又繁瑣的工作。其工作內容周而復始反反復復,倘若一個函數參數改變都要重新測試。測試工作一直占據軟件開發總量40%以上甚至更高,其重要性可見一斑。國內針對Webservice測試方法和技術已經進行了很多研究,也取得了一定的成果。其研究內容主要基于WSDL規格說明,集中在測試案例產生、變異測試、自動化測試、合約測試、劃分測試等方面。Webservice測試還是一個嶄新的研究領域,雖然已經有了部分理論和工具的支撐,也得到了良好的應用,但大多Webservice測試問題還未涉足。
[1]錢樂秋,趙文耘,牛軍鈺.軟件工程[M].第二版.北京:清華大學出版社.2013.
[2]齊治昌,譚慶平,寧洪.軟件工程[M].北京:高等教育出版社.2001.
[3]楊芙清,呂建.淺論軟件技術發展[J].電子學報.2002.
[4]Ron Patton.Software Testing[M].Sams Publishing.Second Edition.2005.
[5]傅兵.軟件測試技術教程[M].北京:清華大學出版社.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服務測試研究[J].計算機科學.2006.