国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

軟件測(cè)試之互操作性測(cè)試及SOAP協(xié)議實(shí)踐策略

2012-09-21 08:21:44趙霞邱薇高智杰
中國(guó)科技信息 2012年19期
關(guān)鍵詞:互操作性數(shù)據(jù)類型數(shù)組

趙霞 邱薇 高智杰

第二炮兵裝備研究院科研試驗(yàn)中心

軟件測(cè)試之互操作性測(cè)試及SOAP協(xié)議實(shí)踐策略

趙霞 邱薇 高智杰

第二炮兵裝備研究院科研試驗(yàn)中心

互操作性測(cè)試作為軟件測(cè)試的一種重要測(cè)試類型在實(shí)踐中易于與其他測(cè)試類型混淆,或測(cè)試不充分。本文描述了信息系統(tǒng)互操作性等級(jí)模型及互操作性測(cè)試的三個(gè)重要特征,并以SOAP協(xié)議測(cè)試為例,給出了互操作性測(cè)試從概念到實(shí)踐的關(guān)鍵技術(shù)。

軟件測(cè)試;互操作性測(cè)試;SOAP協(xié)議測(cè)試

引言

在信息系統(tǒng)領(lǐng)域,互操作性是一個(gè)很寬泛的概念。目前的信息系統(tǒng)主要基于計(jì)算機(jī)系統(tǒng),因此,按照計(jì)算機(jī)系統(tǒng)機(jī)構(gòu)來(lái)劃分,信息系統(tǒng)的互操作性一般包括了硬件和軟件兩部分的互操作性問(wèn)題。

IEEE標(biāo)準(zhǔn)化術(shù)語(yǔ)集給出的互操作性定義是:兩個(gè)或多個(gè)系統(tǒng)或系統(tǒng)組件交換并使用所交換信息的能力。

我軍目前對(duì)互操作性所做的定義是:兩個(gè)或多個(gè)系統(tǒng)或應(yīng)用之間交換信息并相互利用所交換的信息的能力[1]。

互操作性的三個(gè)本質(zhì)特征:一、發(fā)生在兩個(gè)或兩個(gè)以上的實(shí)體之間,二、系統(tǒng)間能夠交換信息,三、系統(tǒng)間能夠利用所交換的信息。

1 信息系統(tǒng)互操作性等級(jí)模型

工程實(shí)踐的經(jīng)驗(yàn)表明, 問(wèn)題領(lǐng)域的抽象模型對(duì)系統(tǒng)的創(chuàng)建和維護(hù)具有重要的參考價(jià)值。2003 年, Tolk提出了概念互操作性等級(jí)模型LCIM, 形成了概念域的5層互操作性等級(jí)模型[2],見(jiàn)下表1:

表1 信息系統(tǒng)互操作性等級(jí)模型

表 1(續(xù))

2 SOAP協(xié)議互操作性測(cè)試實(shí)例

SOAP 是一種簡(jiǎn)單的基于 XML 的協(xié)議,它使應(yīng)用程序通過(guò) HTTP 來(lái)交換信息。它提供了一種標(biāo)準(zhǔn)的方法,使得運(yùn)行在不同的操作系統(tǒng)并使用不同的技術(shù)和編程語(yǔ)言的應(yīng)用程序可以互相進(jìn)行通信[3]。

協(xié)議的互操作性測(cè)試檢查兩個(gè)協(xié)議實(shí)現(xiàn)之間的兼容程度,協(xié)議一致性測(cè)試對(duì)協(xié)議實(shí)現(xiàn)的約束仍是功能性的,未精確到足以保證協(xié)議實(shí)現(xiàn)之間的互相可操作性,因?yàn)椴煌膮f(xié)議實(shí)現(xiàn)對(duì)PDU的數(shù)據(jù)結(jié)構(gòu),參數(shù)的選取,尤其是參數(shù)值域的選定可能不相同。另外,協(xié)議的定義規(guī)范中對(duì)例外事件的處理規(guī)定往往不夠全面,這是因?yàn)楫惓=换バ蛄袛?shù)量龐大,不亦枚舉,所以實(shí)現(xiàn)者對(duì)異常的處理也不同[4]。

為測(cè)試SOAP協(xié)議的互操作性,選取了以下SOAP 服務(wù)器:

·Apache Axis SOAP Server

·Apache SOAP 2.2 Server

·WhiteMesa 2.7 SOAP Server

·IONA XMLBus

·SOAP::Lite

·EasySOAP++

·4S4C

·Microsoft ASP.NET Web Services

測(cè)試的范圍:傳輸、XML 語(yǔ)法、數(shù)據(jù)類型等方面的內(nèi)容。協(xié)議互操性測(cè)試的內(nèi)容并不局限于此,本文只是針對(duì)典型狀況進(jìn)行描述。

2.1 傳輸

SOAP 1.1 規(guī)范允許在 HTTP 請(qǐng)求中發(fā)送 SOAP 消息。SOAP 規(guī)范將必選的SOAPAction 頭添加到 HTTP 請(qǐng)求頭中。SOAPAction 頭的合法取值包括:

·空;

·一個(gè)用引號(hào)括起來(lái)的空字符串;

·任意的 URI;

為了研究這些互操作性問(wèn)題,向SOAP 服務(wù)器發(fā)送一個(gè)請(qǐng)求并且在接收到時(shí)顯示服務(wù)器響應(yīng)。在更改 SOAPAction頭的值之后將簡(jiǎn)單的 SOAP 請(qǐng)求發(fā)送給不同的服務(wù)器,從而查看服務(wù)器如何支持SOAP 1.1 規(guī)范所允許的三種頭。

靈活性使 SOAP 實(shí)現(xiàn)能夠選擇它們自己的 SOAPAction 樣式及其功能。同時(shí)引發(fā)了互操作性問(wèn)題。

2.2 XML Schema

各種 SOAP 服務(wù)器對(duì)編制 SOAP 請(qǐng)求的過(guò)程中所使用的不同的 XML Schema版本表現(xiàn)出的行為往往不同。

對(duì)大量服務(wù)器進(jìn)行了名稱空間 URI 支持測(cè)試,發(fā)現(xiàn) IONA XMLBus 不能成功處理 1999 URI,但是卻向使用 2001 URI的請(qǐng)求返回了一個(gè)成功的響應(yīng)。因此,IONA XMLBus 中的支持被限制為 2001 XML Schema 名稱空間 URI。

2.3 數(shù)據(jù)類型

數(shù)據(jù)類型兼容性可能是 SOAP 互操作性中最重要的問(wèn)題。如果兩個(gè)應(yīng)用程序不能理解彼此的數(shù)據(jù)類型,那么它們就不能執(zhí)行有意義的數(shù)據(jù)交換,從而也就不能互操作。

使用 SOAP 進(jìn)行傳遞的數(shù)據(jù)首先被序列化;即,數(shù)據(jù)值被轉(zhuǎn)換成字符串以在XML 文檔中傳送。在目的地,這個(gè)字符串必須被反序列化,即,被轉(zhuǎn)換成表示原來(lái)的值的數(shù)據(jù)類型。

將 XML Schema 數(shù)據(jù)類型映射到適當(dāng)?shù)谋緳C(jī)數(shù)據(jù)類型是由 SOAP 實(shí)現(xiàn)負(fù)責(zé)的。如果兩個(gè)本機(jī)數(shù)據(jù)類型不一致,即,此時(shí) XML 中的同一種數(shù)據(jù)類型在不同的實(shí)現(xiàn)中有不同的值,就可能產(chǎn)生問(wèn)題。

Float(浮點(diǎn)) 與 float 有關(guān)的常見(jiàn)問(wèn)題出現(xiàn)在無(wú)窮大的表示上。XML Schema用字符串 INF 表示無(wú)窮大。在請(qǐng)求中將 INF 作為 float 無(wú)窮大發(fā)送,Apache SOAP 2.2 服務(wù)器以 Infinity 返回它,而Apache Axis 則返回 INF。

通過(guò)發(fā)送 SOAP 請(qǐng)求對(duì) MS SOAP Toolkit 3.0 服務(wù)器進(jìn)了測(cè)試。它返回一個(gè)服務(wù)器端的故障代碼,且不能將float 無(wú)窮大值 INF 反序列化,如同故障字符串 “SoapMapper:Converting data for SoapMapper failed inside the typemapper” 所指出的那樣。

另一個(gè)問(wèn)題與 float 精度支持有關(guān)。把 1.23456789E38 作為 float 發(fā)送給幾臺(tái) SOAP 服務(wù)器。IONA XMLBus 返回1.23456789E38,White Mesa 2.7 服務(wù)器返回 1.234568E38,而 MS SOAP ToolKit 3.0 服務(wù)器返回 1.23456786051167E+38。盡管這指出了各個(gè)實(shí)現(xiàn)正在進(jìn)行互操作的事實(shí),但是這些實(shí)現(xiàn)仍然不能將數(shù)據(jù)重新生成為它的原始值。

Decimal(十進(jìn)制) 對(duì)于 decimal ,XML Schema 規(guī)范要求實(shí)現(xiàn)要支持的最少位數(shù)是 18 位。因?yàn)樵谝?guī)范中沒(méi)有定義上限,所以各個(gè)實(shí)現(xiàn)可以隨意設(shè)置它們的上限。Microsoft ASP.NET Web Services和 WhiteMesa 2.7 給出的精度最多達(dá) 28位,而 Apache Axis 可以精確支持?jǐn)?shù)百位。這種支持上的差異意味著,當(dāng)一個(gè)Apache Axis 實(shí)現(xiàn)向 WhiteMesa 2.7 實(shí)現(xiàn)發(fā)送一些大小超過(guò) 28 位的 decimal 數(shù)字時(shí),額外的精度將被截?cái)?,從而造成?shù)據(jù)不一致。

DateTime(日期時(shí)間) XML Schema中用于時(shí)間和日期信息的數(shù)據(jù)類型是dateTime 。White Mesa 2.7 給出的精度為秒。Apache SOAP 2.2 和 Apache Axis 用 java.util.Date 類表示一個(gè)特定的時(shí)間實(shí)例,精度為毫秒。Microsoft ASP.NET Web Services 使用 Date 類型,該類型可以表示精度為納秒的時(shí)間。

一個(gè)基于.NET 的 SOAP 客戶機(jī)端實(shí)現(xiàn)向 SOAP 2.2 實(shí)現(xiàn)或 White Mesa 2.7 實(shí)現(xiàn)發(fā)送 dateTime 信息, dateTime中額外的精度將被丟失,從而導(dǎo)致數(shù)據(jù)不一致性。在 XML Schema 中,精度達(dá)到秒是強(qiáng)制性的,而秒的小數(shù)部分則是可選的且合法的。

字節(jié)數(shù)組(Byte Array) SOAP 允許以字節(jié)數(shù)組的形式交換數(shù)據(jù)。字節(jié)數(shù)組在被放入一個(gè) XML 文檔中之前,它必須是base64 編碼的。由于本機(jī)數(shù)據(jù)類型格式的差異,一些實(shí)現(xiàn)返回的是不一致的值。一些實(shí)現(xiàn)通過(guò)對(duì)已經(jīng)進(jìn)行 base64 編碼的值進(jìn)一步進(jìn)行 base64 編碼來(lái)返回值。

測(cè)試得出,當(dāng) Apache SOAP 2.2 和IONAXMLBus 交換 base64 編碼的字節(jié)數(shù)組時(shí),存在互操作性問(wèn)題。

數(shù)組(Array) 數(shù)組形式的數(shù)據(jù)對(duì)實(shí)現(xiàn)來(lái)說(shuō)是一個(gè)困難的測(cè)試,尤其是當(dāng)情形復(fù)雜,使用嵌套的數(shù)組、多維數(shù)組以及嵌套結(jié)構(gòu)(struct)時(shí)。

struct 是一種復(fù)雜的、用戶定義的數(shù)據(jù)類型,它可以包含簡(jiǎn)單的或更復(fù)雜的數(shù)據(jù)類型。具有 C 語(yǔ)言編程經(jīng)驗(yàn)的讀者可能會(huì)想在 C struct 和 XML Schema struct 之間做一個(gè)類比。 測(cè)試表明所有 SOAP 實(shí)現(xiàn)對(duì)于簡(jiǎn)單類型和復(fù)雜類型的數(shù)組都沒(méi)有問(wèn)題。

在 SOAP 中,還有其它可能引發(fā)互操作性問(wèn)題的地方。這些問(wèn)題可能會(huì)因引擎無(wú)法處理 mustUnderstand SOAP 頭而顯露出來(lái)。

3 結(jié)語(yǔ)

目前,互操作性測(cè)試尚不完善,主要表現(xiàn)在:互操作性測(cè)試需求和內(nèi)容不夠清晰;缺乏合適的互操作性測(cè)試標(biāo)準(zhǔn);缺乏有效的互操作性測(cè)試方法;缺乏權(quán)威的評(píng)測(cè)、認(rèn)證機(jī)構(gòu)等。

[1]GJB/Z144-2004指揮自動(dòng)化系統(tǒng)互操作等級(jí)及評(píng)估

[2]Tolk,Andreas.Compos able Mission Spaces and M&S Repositories-Applicability of Open Standards [A].2004 Spring Simulation Interoperability Workshop, Orlando Florida,2004.

[3]張仙偉,張璟.Web服務(wù)的核心技術(shù)之一——SOAP協(xié)議.電子科技,2010年,03期

[4]李華,葉新銘,曾敏,等.基于XM L 的協(xié)議一致性測(cè)試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)科學(xué), 2006, 10: 275~278.

10.3969/j.issn.1001-8972.2012.19.023

猜你喜歡
互操作性數(shù)據(jù)類型數(shù)組
JAVA稀疏矩陣算法
詳談Java中的基本數(shù)據(jù)類型與引用數(shù)據(jù)類型
殺傷鏈動(dòng)態(tài)重構(gòu)中的互操作性淺析
JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
如何理解數(shù)據(jù)結(jié)構(gòu)中的抽象數(shù)據(jù)類型
韓軍武器系統(tǒng)互操作性現(xiàn)狀及未來(lái)發(fā)展
輕兵器(2017年17期)2017-09-19 12:35:43
ST NFC標(biāo)簽以優(yōu)異性能和互操作性獲得NFC Forum認(rèn)證
西門子與歐特克達(dá)成協(xié)議以提高雙方軟件互操作性
智能制造(2016年2期)2016-05-25 14:54:11
尋找勾股數(shù)組的歷程
VB數(shù)組在for循環(huán)中的應(yīng)用
考試周刊(2012年88期)2012-04-29 04:36:47
邢台县| 望奎县| 虹口区| 秀山| 恩平市| 襄汾县| 文安县| 安义县| 手机| 绿春县| 大洼县| 漯河市| 绥江县| 海阳市| 内黄县| 谷城县| 英山县| 博爱县| 珠海市| 益阳市| 长沙市| 凤冈县| 双流县| 郑州市| 大丰市| 沙雅县| 黄冈市| 化隆| 高密市| 同德县| 博白县| 克什克腾旗| 孝义市| 尼玛县| 东辽县| 揭东县| 邢台县| 呼玛县| 宝山区| 介休市| 泊头市|