《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 智能卡的自動(dòng)化測(cè)試平臺(tái)設(shè)計(jì)
智能卡的自動(dòng)化測(cè)試平臺(tái)設(shè)計(jì)
王景存  蘇鵬
來源:RFID世界網(wǎng)
摘要: 根據(jù)智能卡的應(yīng)用現(xiàn)狀和市場(chǎng)需求,,本設(shè)計(jì)用TCL語言和C語言聯(lián)合編程的方法,以PC/SC為編程接口,,實(shí)現(xiàn)了智能卡的測(cè)試平臺(tái),,能夠?qū)χ悄芸ㄟM(jìn)行質(zhì)量和性能的測(cè)試,。
Abstract:
Key words :

     引 言
  隨著智能卡在金融、電信,、移動(dòng)通信,、醫(yī)療保險(xiǎn)、付費(fèi)電視等領(lǐng)域應(yīng)用的迅速增長,,其可靠性要求越來越高,,而針對(duì)智能卡模塊的測(cè)試已經(jīng)成為必不可少的質(zhì)量保證手段。自動(dòng)化測(cè)試不需要人工干預(yù),,能提高測(cè)試效率,,受到更多重視和應(yīng)用。在發(fā)展自動(dòng)化測(cè)試的過程中,,一個(gè)高效的自動(dòng)化測(cè)試平臺(tái)是其基本保障,。根據(jù)智能卡的應(yīng)用現(xiàn)狀和市場(chǎng)需求,本設(shè)計(jì)用TCL語言和C語言聯(lián)合編程的方法,,以PC/SC為編程接口,,實(shí)現(xiàn)了智能卡的測(cè)試平臺(tái),能夠?qū)?a href="http://forexkbc.com/article/index.aspx?id=22834">智能卡進(jìn)行質(zhì)量和性能的測(cè)試。
  1 測(cè)試系統(tǒng)結(jié)構(gòu)
  具有測(cè)試功能的系統(tǒng)結(jié)構(gòu)如圖1所示,。測(cè)試系統(tǒng)一般由測(cè)試平臺(tái),、讀/寫器和智能卡三個(gè)部分組成。測(cè)試平臺(tái)運(yùn)行測(cè)試腳本,,并對(duì)從智能卡返回的結(jié)果進(jìn)行處理,。智能卡內(nèi)部有被測(cè)程序,響應(yīng)測(cè)試平臺(tái)發(fā)來的命令,,返回測(cè)試數(shù)據(jù),。讀/寫器提供測(cè)試平臺(tái)和智能卡的接口。這里的研究重點(diǎn)是測(cè)試平臺(tái),。

  2 測(cè)試平臺(tái)的設(shè)計(jì)思路
  測(cè)試平臺(tái)軟件由兩個(gè)部分組成,,即界面程序和通信軟件程序,如圖2所示,。界面程序提供一個(gè)友好的圖形畫面,,接受用戶指令,如腳本輸入,,按鈕響應(yīng)等,。界面將用戶的任務(wù)轉(zhuǎn)換為內(nèi)部指令,然后由通信軟件程序具體實(shí)施,,而通信軟件程序負(fù)責(zé)與USB讀卡器通信,。下面分別介紹界面程序和通信軟件程序的實(shí)現(xiàn)原理。

                         

                                圖2是測(cè)試平臺(tái)的軟件結(jié)構(gòu)
 

                        
                             圖3界面程序
     2.1 界面程序
  界面程序分為三層,,頂層為腳本層,,用于支持ATP語言。ATP并不是一種全新的語言,,是從TCL語言口
擴(kuò)展而來,,針對(duì)ATP開辟的命令集,它包括TCL基本命令和應(yīng)用程序相關(guān)的擴(kuò)展命令,。TCL基本指令的使用方法可以參考文獻(xiàn)[1,,2],擴(kuò)展命令是TCL專門針對(duì)智能卡的測(cè)試而擴(kuò)展的,。
  中間層是根據(jù)應(yīng)用需求而擴(kuò)展的TCI 解釋器,,它包含TCI標(biāo)準(zhǔn)庫和與底層接口程序有關(guān)的TCL擴(kuò)展庫。ATP的基本部分由TCL語言解釋器調(diào)用TCL標(biāo)準(zhǔn)庫來執(zhí)行,;ATP的擴(kuò)展部分由擴(kuò)展的TCL解釋器調(diào)用TCL擴(kuò)展庫執(zhí)行,。
  頂層和中間層說明了TCI 即是一種腳本語言也是一個(gè)解釋器。底層是接口程序,,提供與通信軟件程序的接口,,負(fù)責(zé)發(fā)送命令和返回狀態(tài),。
                   
                        圖4顯示了TCI 與應(yīng)用程序的調(diào)用關(guān)系
     TCL的標(biāo)準(zhǔn)命令是TCL自帶的,而與應(yīng)用程序相關(guān)的特殊命令需要用C代碼去擴(kuò)展,,下面詳細(xì)介紹如何擴(kuò)展TCL命令,。使用TCL之前,應(yīng)用程序必須首先創(chuàng)建TCL解釋器創(chuàng)建標(biāo)準(zhǔn)的命令解釋器,,然后可以調(diào)用Tcl CreateCommand過程使用用戶自定義命令來擴(kuò)展解釋器,,它的原型是:Tcl—CreateCom mand (interp,,cmdName,,proc,cli—entData,,deleteProc)其中:interp為創(chuàng)建的解釋器,;cmdName為創(chuàng)建的命令名字;proc為與命令相對(duì)應(yīng)的函數(shù),;clientData為一個(gè)字長的值,,通常指向一個(gè)專用數(shù)據(jù)結(jié)構(gòu);deleteProc為注銷命令的函數(shù)名,,如果其為空,,則在注銷命令前不調(diào)用任何函數(shù)。調(diào)用Tcl—CreateCommand時(shí),,擴(kuò)展命令name就會(huì)和name—tcl聯(lián)系起來,;執(zhí)行name命令時(shí),會(huì)進(jìn)入name— tcl函數(shù)處理name命令,。
  創(chuàng)建完程序自定義命令后,,應(yīng)用程序進(jìn)入死循環(huán),等到命令后就傳遞給解釋器,。調(diào)用Tcl—Eval(interp,,script),通過script的內(nèi)容知道命令的類型后,,選擇在相應(yīng)的過程函數(shù)中進(jìn)行計(jì)算,。
  通信軟件程序的執(zhí)行就是在過程函數(shù)里面被調(diào)用,這樣就實(shí)現(xiàn)了界面程序與通信軟件程序的接口,。
     2.2 通信軟件程序
  通信軟件程序遵循PC/SC規(guī)范,。PC/SC規(guī)范是由PC/SC工作組提出的。PC/SC工作組是一個(gè)主要由智能卡廠商和計(jì)算機(jī)廠商組成的委員會(huì),,主要成員有微軟,、蘋果、雅斯拓,、金普斯,、英飛凌,、菲利普等。PC/SC規(guī)范是一個(gè)基于Windows平臺(tái)的標(biāo)準(zhǔn)用戶接口(API),。它獨(dú)立于硬件設(shè)備,,使得應(yīng)用程序的開發(fā)人員不必考慮由于硬件改變而引起的應(yīng)用程序變更,從而降低了軟件開發(fā)成本,。
  PC/SC規(guī)范包含大量Scard為前綴的API,,可以在winscard.h中找到其原型。應(yīng)用程序需要包含win—scard.1ib,,所有函數(shù)的正常返回值都是SCARD—S—SUCCESS,,在這些函數(shù)中常用的只有幾個(gè)。與智能卡的訪問流程如下:
  (1)初始化函數(shù)中調(diào)用SCardEstablishContext,,建立資源管理器的上下文,,獲得設(shè)備的連接句柄,若返回SCARD— S— SUCCESS,,則調(diào)用成功,;調(diào)用ScardLis—tReaders獲得系統(tǒng)中安裝的讀卡器列表,調(diào)用成功則獲取聯(lián)機(jī)的讀卡器名字,。
  (2)在響應(yīng)函數(shù)中調(diào)用ScardConnect與卡片建立連接,,此時(shí)能與卡片通信。
  (3)與卡片連接后通過調(diào)用SCardTransmit來發(fā)送命令,,得到由卡片返回的數(shù)據(jù),。
  (4)卡片處于連接狀態(tài)時(shí),可以調(diào)用SCardRecon—nect函數(shù)使卡片復(fù)位,。
  (5)完成了與卡片的命令發(fā)收后,,調(diào)用SCardDis—connect函數(shù)斷開與智能卡的連接。
  項(xiàng)目已經(jīng)實(shí)現(xiàn)以上功能的編程接口,,而且利用類的方法進(jìn)行了封裝,。
  3 測(cè)試平臺(tái)的使用
  3.1 測(cè)試流程
  腳本的制定還是使用人工方式,測(cè)試人員通過測(cè)試平臺(tái)完成測(cè)試,。自動(dòng)化測(cè)試不需要人工干預(yù),,縮短了測(cè)試時(shí)間。因而測(cè)試過程采用人工測(cè)試和自動(dòng)化測(cè)試相結(jié)合的方法進(jìn)行,。
  用戶可以編寫測(cè)試腳本,,快速發(fā)送測(cè)試命令和收集測(cè)試數(shù)據(jù),可以單次執(zhí)行或者循環(huán)執(zhí)行,,當(dāng)滿足終止條件時(shí),,腳本執(zhí)行結(jié)束,生成測(cè)試報(bào)告,。圖5為測(cè)試流程圖,。
    3.2 功能測(cè)試
  測(cè)試平臺(tái)能夠以APDU為基本單元完成針對(duì)智能卡的功能測(cè)試,,下面分別對(duì)其進(jìn)行介紹。
  3.2.1 測(cè)試基本單元
  測(cè)試平臺(tái)與智能卡通信的基本單元是APDUL9 ,。應(yīng)用層以APDU為單位進(jìn)行有序的數(shù)據(jù)交換,,應(yīng)用層交換的每一步都以命令應(yīng)答對(duì)組成。APDU的命令應(yīng)答對(duì)由以下部分組成:命令A(yù)PDU包含一個(gè)必備的四字節(jié)頭(CLA,,INS,,P1,P2)和可選的命令體(Lc,,Data,,Le)。命令頭為命令的編碼,,Lc為體內(nèi)數(shù)據(jù)(data)長度,,Data為發(fā)送的數(shù)據(jù),,Le為應(yīng)答APDU數(shù)據(jù)字段的最大字節(jié)數(shù),。應(yīng)答APDU由可選長度體和兩字節(jié)狀態(tài)字SW1一SW2組成。其中,,體內(nèi)的字節(jié)數(shù)由命令A(yù)PDU 的Le指出,。Data為卡片接受命令A(yù)PDU后返回的數(shù)據(jù)。尾部狀態(tài)字指出卡的處理狀態(tài),。其中,,61xx和9000為正常處理,6lxx的含義SW2指出仍然有效的應(yīng)答字節(jié)數(shù),,9000代表正常處理,。
  3.2.2 單元測(cè)試
                           
                               圖5 測(cè)試流程圖
     同樣,智能卡內(nèi)部程序也是以APDU為單位實(shí)現(xiàn)的,,因此單元測(cè)試的對(duì)象就是APDU,。發(fā)送一個(gè)APDU給智能卡,通過智能卡內(nèi)部程序執(zhí)行完后返回狀態(tài)字,,判斷執(zhí)行結(jié)果的正確與否,。命令之間存在著相互依賴關(guān)系,因此命令之間通常要相互配合才能完成測(cè)試任務(wù),。
  3.2.3 集成測(cè)試
  集成測(cè)試主要是通過命令之問有序地執(zhí)行完成智能卡的功能測(cè)試,,根據(jù)不同的測(cè)試需要可以對(duì)測(cè)試腳本進(jìn)行分類,例如FLASH 的讀/寫,,加密模塊的測(cè)試等,。按照需要整理好相應(yīng)的測(cè)試腳本后就可以在測(cè)試平臺(tái)上運(yùn)行,通過腳本與智能卡程序的互測(cè),,達(dá)到測(cè)試目的,。測(cè)試平臺(tái)支持自動(dòng)化測(cè)試,,所以可以在測(cè)試平臺(tái)上不間斷地執(zhí)行測(cè)試腳本,測(cè)試人員不需要實(shí)時(shí)跟蹤,,只需要關(guān)心最后的測(cè)試結(jié)果,,通過測(cè)試結(jié)果可以發(fā)現(xiàn)問題,解決問題,。
  4 結(jié) 語
  該系統(tǒng)已經(jīng)通過測(cè)試,,并且得到初步驗(yàn)證。由于針對(duì)智能卡的測(cè)試項(xiàng)很多,,通常需要多種測(cè)試工具的軟件和硬件設(shè)備交互使用,,測(cè)試人員要熟悉各種軟件工具,相應(yīng)地降低了工作效率,。如果能將各種工具軟件集成在一起,,形成一個(gè)多功能的測(cè)試平臺(tái),支持多種通信接口的讀卡器,,支持多種腳本格式,,那么這將是下一步的工作重點(diǎn)。
此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。