專利名稱:軟件接口測試方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機軟件測試技術(shù),特別是指一種軟件接口測試方法。
背景技術(shù):
隨著可擴展標記語言(XML)技術(shù)不斷成熟,它的應(yīng)用也越來越廣泛。XML的數(shù)據(jù)格式表達能力很強,幾乎所有的數(shù)據(jù)結(jié)構(gòu)都可以用XML的形式表達出來,可以在任何平臺上采用XML語言進行程序開發(fā)。另外,XML還有一個很重要的特性就是數(shù)據(jù)和顯示分離,即顯示給用戶的是文檔形式,而內(nèi)部則可以是數(shù)據(jù)形式。
軟件測試是軟件工程中非常重要的一個環(huán)節(jié),而軟件接口的測試是軟件測試中十分重要的部分,它在單元測試和集成測試中都有應(yīng)用,只有保證接口的穩(wěn)定性,才能保證整個軟件程序的穩(wěn)定性。但是現(xiàn)在進行軟件接口測試時,往往都是測試人員自行寫測試程序來進行測試。由于測試用例文件和測試代碼等編寫的復(fù)雜性,所以測試人員在進行軟件接口測試時,往往感到非常的困難,不但時間花的很長,而且還不一定達到很好的效果。
因而,現(xiàn)有技術(shù)中根據(jù)軟件接口測試中的一些共同點,嘗試提出了一些通用的軟件接口測試方案。針對某一類軟件接口測試的共同特點,將測試過程中所必須的操作步驟進行整合,這樣進行軟件接口測試時,軟件測試人員只需針對需要測試的軟件接口編寫測試用例文件和少量接口測試函數(shù)就可以完成測試。但是由于軟件接口測試的種類較多,特別是軟件開發(fā)所基于的平臺不同,因此現(xiàn)有的軟件接口測試方案的通用性和靈活性不夠好,無法跨平臺使用;另外,由于現(xiàn)有技術(shù)中進行測試用例文件編寫時,測試用例文件的設(shè)計文檔通常采用文檔形式,測試用例文件的測試代碼則必須采用數(shù)據(jù)格式編寫,二者之間格式不統(tǒng)一,當測試用例文件內(nèi)部設(shè)計文檔和測試代碼之間出現(xiàn)不匹配等錯誤時,很難被發(fā)現(xiàn),特別是測試代碼本身也會出現(xiàn)錯誤,而由于測試代碼采用數(shù)據(jù)格式,測試人員很難進行檢查從中發(fā)現(xiàn)錯誤,從而影響軟件接口測試的可靠性。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種軟件接口測試方法,提高軟件接口測試的通用性、可靠性,方便用戶的使用。
一種軟件接口測試方法,包括以下步驟a)調(diào)用XML形式編寫的軟件接口測試所用的測試用例文件,對該測試用例文件進行XML解析;b)按照解析后的測試用例文件格式順序獲取一個測試接口的函數(shù)名,該測試接口作為當前測試接口;c)根據(jù)步驟b)所獲取的測試接口的函數(shù)名和函數(shù)指針的對應(yīng)關(guān)系,獲取該測試接口的函數(shù)指針;d)根據(jù)步驟c)獲取的測試接口函數(shù)指針調(diào)用測試接口函數(shù),通過該測試接口函數(shù)對測試用例文件中當前測試接口對應(yīng)的參數(shù)進一步進行XML解析;e)將步驟d)解析后測試用例文件中當前測試接口對應(yīng)的參數(shù)輸入步驟d)獲得的測試接口函數(shù)進行測試;f)將當前測試接口的測試結(jié)果輸出,判斷當前測試用例文件是否還有未測試的測試接口函數(shù),如果是,則返回步驟b),否則,結(jié)束流程。
該方法預(yù)先建立測試接口函數(shù)名和測試接口函數(shù)指針的對應(yīng)表,則步驟c)具體包括根據(jù)步驟b)獲得的當前測試接口的函數(shù)名,通過查詢測試接口函數(shù)名和測試接口函數(shù)對應(yīng)表,獲取當前測試接口的函數(shù)指針。
該方法步驟a)所述XML解析為利用XML解析器進行XML解析。
該方法步驟f)所述輸出包括實際輸出參數(shù)值,以及期望輸出參數(shù)值和實際輸出參數(shù)值的比較結(jié)果。
該方法步驟f)所述輸出進一步包括對每個軟件接口檢測的起始時間、輸入?yún)?shù)值和檢測結(jié)束時間。
該方法所述步驟f)中如果當前測試用例文件沒有未測試的測試接口函數(shù),則進一步包括判斷是否還有需要調(diào)用的測試用例文件,如果是,則返回步驟a),否則,結(jié)束流程。
從上面所述可以看出,本發(fā)明提供的軟件接口測試方法中軟件接口的測試用例文件采用XML格式進行編寫,并自動完成測試用例文件和接口測試函數(shù)的調(diào)用,可以進行各種平臺下的軟件接口測試,提高了軟件接口測試的通用性;并且通過巧妙利用XML的數(shù)據(jù)和顯示分離特性,統(tǒng)一了測試用例文件中設(shè)計文檔和測試代碼,解決了二者之間匹配問題,并更便于測試人員對測試用例文件進行檢查,提高了軟件接口測試的可靠性;同時通過自動完成測試用例文件和接口測試函數(shù)調(diào)用,大大簡化了測試人員的工作量,使軟件接口測試更加方便。
圖1為本發(fā)明軟件接口測試總體結(jié)構(gòu)框圖;圖2為本發(fā)明軟件接口測試流程圖。
具體實施例方式
下面結(jié)合附圖及具體實施例對本發(fā)明再作進一步詳細的說明。
本發(fā)明提供了測試程序的整體框架,測試人員只需針對需要測試的軟件接口設(shè)計接口測試函數(shù),并采用XML語言格式編寫測試用例文件。然后可利用本發(fā)明方案自動調(diào)用XML形式編寫的軟件接口測試所用測試用例文件,對該測試用例文件進行XML解析;按照解析后的測試用例文件格式順序獲取一個測試接口的函數(shù)名;根據(jù)測試接口的函數(shù)名和函數(shù)指針的對應(yīng)關(guān)系,獲取該測試接口的函數(shù)指針;根據(jù)測試接口函數(shù)指針調(diào)用測試接口函數(shù),通過該測試接口函數(shù)對測試用例文件中當前測試接口對應(yīng)的參數(shù)進一步進行XML解析;最后,將解析后測試用例文件中當前測試接口對應(yīng)的參數(shù)輸入測試接口函數(shù)進行測試;將當前測試接口測試結(jié)果輸出,并返回按照測試用例文件的要求進行下一個軟件接口的測試。
根據(jù)本發(fā)明方案進行軟件接口測試的過程,可參見圖1所示首先,準備軟件接口測試所用的測試用例文件和軟件接口測試函數(shù)集。
步驟101,利用提供的用于讀入?yún)?shù)、比較參數(shù)和寫日志的應(yīng)用編程接口(API,Application Programming Interface),針對每個待測試的軟件接口,編寫用于每個軟件接口測試的接口測試函數(shù),并將所有接口測試函數(shù)組成函數(shù)集。
編寫過程中測試人員可以不需要考慮測試用例,只要明確測試的對象即可,對每一個需要測試的接口創(chuàng)建一個函數(shù)。該函數(shù)主要負責(zé)完成從測試用例文件讀入輸入?yún)?shù)值和期望的輸出參數(shù)值,并對XML形式編寫的測試用例文件進行進一步XML解析,另外還可可進一步將實際輸出參數(shù)值與期望的輸出參數(shù)值進行比較,把比較結(jié)果寫入日志文件。
步驟102,軟件接口函數(shù)集建立完成后,建立軟件接口的測試函數(shù)名稱和相應(yīng)接口測試函數(shù)的對應(yīng)表。對應(yīng)表中規(guī)定接口測試函數(shù)名和接口測試函數(shù)指針的對應(yīng)關(guān)系。
步驟103,利用XML語言編寫測試用例文件。
測試用例文件用于為軟件接口的整個測試程序提供具體的測試參數(shù),其中應(yīng)包含有測試的接口名和具體的測試內(nèi)容等。測試用例文件可以是對一個接口進行測試,也可以對多個接口進行測試。利用XML語言數(shù)據(jù)和顯示分離的特性,用戶只要用XML完成一個測試用例文件,就可以得到相應(yīng)的數(shù)據(jù)形式的測試用例代碼,并同時利用可擴展樣式語言轉(zhuǎn)換(XLST)技術(shù),直接在瀏覽器上查看到文檔形式的測試用例文檔。
其中,本步驟103也可以與步驟101并行處理,或先進行步驟103編寫測試用例文件,再進行步驟101編寫軟件接口測試函數(shù)集也可。
本發(fā)明編寫測試用例文件使用的XML格式如下<TestCases loop=″1″>是這個XML文件的根節(jié)點。其中它具有一個屬性loop來指定整個用例執(zhí)行的次數(shù),默認值是″1″。其下節(jié)點包括<Comment>是整個測試用例文件的注釋,來描述這個測試用例文件的用途。
<Initialize>是在執(zhí)行每一個具體用例之前可能需要做一些初始化工作,這些工作是這個節(jié)點下完成的。
<Exit>是在執(zhí)行完所有用例之后可能需要做一些收尾工作,這些工作是這個節(jié)點下完成的。
<TestCase name=″DM001″sleep=″0″loop=″2″tempreset=″true″>是具體每一個用例的實現(xiàn)節(jié)點。屬性name是這個用例的名稱或者是編號;屬性sleep是用于指定執(zhí)行完該用例之后需要等待的時間,其單位為毫秒,如果值是″-1″表示必須等待用戶確認才能繼續(xù)執(zhí)行后面的用例;屬性loop是用于指定執(zhí)行這個用例循環(huán)次數(shù),默認值是″1″;屬性tempreset是用于指定在執(zhí)行該用例之前是否清除所有的臨時變量。
<Function name=″Test_B_RentService″ sleep=″0″loop=″1″fault=″continue″>就是完成測試接口調(diào)用的節(jié)點。它可以是<Initialize>,<Exit>,<TestCase>子節(jié)點。屬性name是測試函數(shù)的名稱;屬性sleep是用于執(zhí)行完該測試函數(shù)之后需要等待的時間,其單位為毫秒,如果值是″-1″表示必須等待用戶確認才能繼續(xù)執(zhí)行后面的測試函數(shù);屬性loop是用于指定執(zhí)行該測試函數(shù)的循環(huán)次數(shù),默認值是″1″;屬性fault是用于指定如果測試函數(shù)的測試相應(yīng)的接口的結(jié)果不正確是否還繼續(xù)往下執(zhí)行,″exit″表示直接退出,″continue″表示忽略錯誤,繼續(xù)執(zhí)行。
<IN>節(jié)點包含的是被測試的接口需要的輸入?yún)?shù)值。
<OUT>節(jié)點包含的是被測試的接口需要的期望輸出參數(shù)值。
<Parameter name=″RC″type=″string″encoding=″text″valuetype=″fixed″compare=″e″load=″2″save=″3″>是用來給參數(shù)的賦值的節(jié)點。屬性name是測試接口需要的參數(shù)的名稱;屬性type是測試接口需要的參數(shù)的類型,其中,″string″為字符串類型;″int″為整形數(shù)字類型;″struct″表示結(jié)構(gòu)類型;″null″表示空指針類型;屬性encoding是該節(jié)點內(nèi)容作為參數(shù)的值的一種編碼方式,其中,″text″表示是內(nèi)容是可打印的文本串;″hex″表示用16進制的ASCII碼來表示一個二進制數(shù)據(jù);″file″表示數(shù)據(jù)是從節(jié)點內(nèi)容指定的文件里取出;屬性valuetype是參數(shù)的值的類型,其中,″fixed″表示此值唯一;″floating″表示此值是變化的;″optional″表示此值不唯一,但卻是有限的幾個值;屬性compare是指定實際的結(jié)果和期望的結(jié)果的比較方式,其中,″e″表示做相等比較;″le″表示做小于等于比較;屬性load和save在本發(fā)明中用來傳遞兩個測試接口之間的參數(shù)值,load和save的值的意義表示臨時變量單元號。在傳遞參數(shù)時,首先把值save到某個單元號里,當使用這個值時,只要load同樣的單元號就可以把值取出來。
<Value>是當<Parameter>節(jié)點的屬性valuetype為″optional″時用于賦予參數(shù)多個可能值的節(jié)點。
步驟104,用于軟件接口測試的測試用例文件和接口函數(shù)集編寫完成以后,即可進行軟件接口測試。
該測試流程參見圖2所示步驟201,從測試用例工程文件中調(diào)用測試用例文件,并用XML解析器對測試用例文件進行XML解析。
步驟202,從解析后的測試用例文件中根據(jù)測試用例文件的格式獲取一個測試接口的函數(shù)名。
這里,由于測試用例文件通常是對多個接口進行測試,因此一般是按照測試用例文件的格式順序獲取測試接口的函數(shù)名,其中,一個測試接口對應(yīng)一個函數(shù)名。
步驟203,在測試接口函數(shù)名和函數(shù)的對應(yīng)表中查詢并獲取當前測試接口的函數(shù)指針。
步驟204,根據(jù)獲取的當前測試接口函數(shù)指針從測試接口函數(shù)集中調(diào)用測試接口函數(shù),通過該測試接口函數(shù)對當前測試接口對應(yīng)的測試用例文件中相應(yīng)部分進一步進行XML解析。
步驟205,將解析后的當前測試接口對應(yīng)的測試用例文件輸入至測試接口函數(shù),進行測試。
步驟206,將當前測試接口的測試結(jié)果輸出,判斷當前測試用例文件是否還有需要測試的接口函數(shù),如果是,則返回步驟202,否則,進入步驟207。
本步驟中對于某些復(fù)雜的測試用例,如果需要在多個接口之間傳遞參數(shù)的值,可以按測試用例的要求將某個接口的接口函數(shù)輸出參數(shù)進行暫時保存,當調(diào)用下一個接口函數(shù)進行測試時,將保存的參數(shù)作為接口函數(shù)的一個輸入值,輸入至該下一個接口函數(shù)中進行測試,如此可以實現(xiàn)在多個接口之間傳遞參數(shù)的值,以便滿足復(fù)雜的測試用例的要求。
步驟207,判斷測試用例工程文件中是否還有剩余測試用例文件,如果是,則返回步驟201,否則,結(jié)束當前流程。
步驟105,測試程序執(zhí)行完后,可生成相應(yīng)的日志文件。測試日志內(nèi)容包括每個軟件接口測試的起始時間、輸入?yún)?shù)值、期望輸出結(jié)果、每個軟件接口測試的結(jié)束時間、實際輸出結(jié)果、以及實際輸出結(jié)果和期望輸出結(jié)果的比較結(jié)果。這些信息都為事后的作統(tǒng)計分析提供了基礎(chǔ)數(shù)據(jù),也同測試用例文件相類似,日志文件也可以直接用瀏覽器進行查看。此后,測試人員既可以對測試結(jié)果進行人工分析,也可以利用SDK進一步編寫測試結(jié)果的統(tǒng)計分析程序,以便對大量的測試結(jié)果進行評估。
在本發(fā)明方案中測試人員針對軟件測試接口編寫的測試用例文件和測試接口函數(shù)只作為整個程序的一個模塊,模塊之間的調(diào)用關(guān)系都可自動實現(xiàn),自動完成從測試用例文件中讀入需要的輸入?yún)?shù)和期望的輸出參數(shù)。這樣簡化了測試人員開發(fā)的測試程序的工作量,并減少了測試程序本身問題出現(xiàn)的機會。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種軟件接口測試方法,其特征在于,包括以下步驟a)調(diào)用XML形式編寫的軟件接口測試所用的測試用例文件,對該測試用例文件進行XML解析;b)按照解析后的測試用例文件格式順序獲取一個測試接口的函數(shù)名,該測試接口作為當前測試接口;c)根據(jù)步驟b)所獲取的測試接口的函數(shù)名和函數(shù)指針的對應(yīng)關(guān)系,獲取該測試接口的函數(shù)指針;d)根據(jù)步驟c)獲取的測試接口函數(shù)指針調(diào)用測試接口函數(shù),通過該測試接口函數(shù)對測試用例文件中當前測試接口對應(yīng)的參數(shù)進一步進行XML解析;e)將步驟d)解析后測試用例文件中當前測試接口對應(yīng)的參數(shù)輸入步驟d)獲得的測試接口函數(shù)進行測試;f)將當前測試接口的測試結(jié)果輸出,判斷當前測試用例文件是否還有未測試的測試接口函數(shù),如果是,則返回步驟b),否則,結(jié)束流程。
2.根據(jù)權(quán)利要求1所述方法,其特征在于,預(yù)先建立測試接口函數(shù)名和測試接口函數(shù)指針的對應(yīng)表,則步驟c)具體包括根據(jù)步驟b)獲得的當前測試接口的函數(shù)名,通過查詢測試接口函數(shù)名和測試接口函數(shù)對應(yīng)表,獲取當前測試接口的函數(shù)指針。
3.根據(jù)權(quán)利要求1所述方法,其特征在于,步驟a)所述XML解析為利用XML解析器進行XML解析。
4.根據(jù)權(quán)利要求1所述方法,其特征在于,步驟f)所述輸出包括實際輸出參數(shù)值,以及期望輸出參數(shù)值和實際輸出參數(shù)值的比較結(jié)果。
5.根據(jù)權(quán)利要求4所述方法,其特征在于,步驟f)所述輸出進一步包括對每個軟件接口檢測的起始時間、輸入?yún)?shù)值和檢測結(jié)束時間。
6.根據(jù)權(quán)利要求1所述方法,其特征在于,所述步驟f)中如果當前測試用例文件沒有未測試的測試接口函數(shù),則進一步包括判斷是否還有需要調(diào)用的測試用例文件,如果是,則返回步驟a),否則,結(jié)束流程。
全文摘要
本發(fā)明公開了一種軟件接口測試方法,包括調(diào)用XML形式編寫的軟件接口測試所用測試用例文件,對該測試用例文件進行XML解析;按照解析后的測試用例文件格式順序獲取一個測試接口的函數(shù)名;根據(jù)測試接口的函數(shù)名和函數(shù)指針的對應(yīng)關(guān)系,獲取該測試接口的函數(shù)指針;根據(jù)測試接口函數(shù)指針調(diào)用測試接口函數(shù),通過該測試接口函數(shù)對測試用例文件中當前測試接口對應(yīng)的參數(shù)進一步進行XML解析;最后,將解析后測試用例文件中當前測試接口對應(yīng)的參數(shù)輸入測試接口函數(shù)進行測試;將當前測試接口測試結(jié)果輸出,返回進行下一個軟件接口的測試。本發(fā)明方案提高了軟件接口測試的通用性、可靠性,方便用戶的使用。
文檔編號G06F9/44GK1632747SQ200310121900
公開日2005年6月29日 申請日期2003年12月22日 優(yōu)先權(quán)日2003年12月22日
發(fā)明者劉業(yè)欣, 陳琳, 王興楠 申請人:聯(lián)想(北京)有限公司