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

圖3界面程序
界面程序分為三層,頂層為腳本層,,用于支持ATP語言,。ATP并不是一種全新的語言,是從TCL語言口
擴展而來,,針對ATP開辟的命令集,,它包括TCL基本命令和應(yīng)用程序相關(guān)的擴展命令。TCL基本指令的使用方法可以參考文獻(xiàn)[1,,2],,擴展命令是TCL專門針對智能卡的測試而擴展的。
中間層是根據(jù)應(yīng)用需求而擴展的TCI 解釋器,,它包含TCI標(biāo)準(zhǔn)庫和與底層接口程序有關(guān)的TCL擴展庫,。ATP的基本部分由TCL語言解釋器調(diào)用TCL標(biāo)準(zhǔn)庫來執(zhí)行;ATP的擴展部分由擴展的TCL解釋器調(diào)用TCL擴展庫執(zhí)行,。
頂層和中間層說明了TCI 即是一種腳本語言也是一個解釋器,。底層是接口程序,,提供與通信軟件程序的接口,負(fù)責(zé)發(fā)送命令和返回狀態(tài),。

創(chuàng)建完程序自定義命令后,,應(yīng)用程序進(jìn)入死循環(huán),,等到命令后就傳遞給解釋器。調(diào)用Tcl—Eval(interp,,script),,通過script的內(nèi)容知道命令的類型后,選擇在相應(yīng)的過程函數(shù)中進(jìn)行計算,。
通信軟件程序的執(zhí)行就是在過程函數(shù)里面被調(diào)用,,這樣就實現(xiàn)了界面程序與通信軟件程序的接口。
通信軟件程序遵循PC/SC規(guī)范,。PC/SC規(guī)范是由PC/SC工作組提出的,。PC/SC工作組是一個主要由智能卡廠商和計算機廠商組成的委員會,主要成員有微軟,、蘋果,、雅斯拓,、金普斯、英飛凌,、菲利普等,。PC/SC規(guī)范是一個基于Windows平臺的標(biāo)準(zhǔn)用戶接口(API)。它獨立于硬件設(shè)備,,使得應(yīng)用程序的開發(fā)人員不必考慮由于硬件改變而引起的應(yīng)用程序變更,,從而降低了軟件開發(fā)成本。
PC/SC規(guī)范包含大量Scard為前綴的API,,可以在winscard.h中找到其原型,。應(yīng)用程序需要包含win—scard.1ib,所有函數(shù)的正常返回值都是SCARD—S—SUCCESS,,在這些函數(shù)中常用的只有幾個,。與智能卡的訪問流程如下:
(1)初始化函數(shù)中調(diào)用SCardEstablishContext,建立資源管理器的上下文,,獲得設(shè)備的連接句柄,,若返回SCARD— S— SUCCESS,則調(diào)用成功,;調(diào)用ScardLis—tReaders獲得系統(tǒng)中安裝的讀卡器列表,,調(diào)用成功則獲取聯(lián)機的讀卡器名字。
(2)在響應(yīng)函數(shù)中調(diào)用ScardConnect與卡片建立連接,,此時能與卡片通信,。
(3)與卡片連接后通過調(diào)用SCardTransmit來發(fā)送命令,得到由卡片返回的數(shù)據(jù),。
(4)卡片處于連接狀態(tài)時,,可以調(diào)用SCardRecon—nect函數(shù)使卡片復(fù)位。
(5)完成了與卡片的命令發(fā)收后,,調(diào)用SCardDis—connect函數(shù)斷開與智能卡的連接,。
項目已經(jīng)實現(xiàn)以上功能的編程接口,而且利用類的方法進(jìn)行了封裝,。
3 測試平臺的使用
3.1 測試流程
腳本的制定還是使用人工方式,,測試人員通過測試平臺完成測試。自動化測試不需要人工干預(yù),,縮短了測試時間,。因而測試過程采用人工測試和自動化測試相結(jié)合的方法進(jìn)行。
用戶可以編寫測試腳本,,快速發(fā)送測試命令和收集測試數(shù)據(jù),,可以單次執(zhí)行或者循環(huán)執(zhí)行,當(dāng)滿足終止條件時,,腳本執(zhí)行結(jié)束,,生成測試報告,。圖5為測試流程圖。
測試平臺能夠以APDU為基本單元完成針對智能卡的功能測試,,下面分別對其進(jìn)行介紹,。
3.2.1 測試基本單元
測試平臺與智能卡通信的基本單元是APDUL9 。應(yīng)用層以APDU為單位進(jìn)行有序的數(shù)據(jù)交換,,應(yīng)用層交換的每一步都以命令應(yīng)答對組成,。APDU的命令應(yīng)答對由以下部分組成:命令A(yù)PDU包含一個必備的四字節(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 單元測試

3.2.3 集成測試
集成測試主要是通過命令之問有序地執(zhí)行完成智能卡的功能測試,,根據(jù)不同的測試需要可以對測試腳本進(jìn)行分類,,例如FLASH 的讀/寫,加密模塊的測試等,。按照需要整理好相應(yīng)的測試腳本后就可以在測試平臺上運行,,通過腳本與智能卡程序的互測,,達(dá)到測試目的。測試平臺支持自動化測試,,所以可以在測試平臺上不間斷地執(zhí)行測試腳本,,測試人員不需要實時跟蹤,只需要關(guān)心最后的測試結(jié)果,,通過測試結(jié)果可以發(fā)現(xiàn)問題,,解決問題。
4 結(jié) 語
該系統(tǒng)已經(jīng)通過測試,,并且得到初步驗證,。由于針對智能卡的測試項很多,通常需要多種測試工具的軟件和硬件設(shè)備交互使用,,測試人員要熟悉各種軟件工具,,相應(yīng)地降低了工作效率。如果能將各種工具軟件集成在一起,,形成一個多功能的測試平臺,,支持多種通信接口的讀卡器,支持多種腳本格式,,那么這將是下一步的工作重點,。