劉艷萍 山東省城市商業(yè)銀行合作聯(lián)盟有限公司
軟件的建設(shè)和標準化進程耗費大量的資金和人力資源,然而軟件的風險又會影響使用者在現(xiàn)實世界中的信用和名譽,近年來銀行業(yè)系統(tǒng)采用了大量的測試措施來應(yīng)對不同客戶的需求,采用共同的檢測方法,檢測不同客戶需求是不現(xiàn)實的,但是基于銀行系統(tǒng)的可靠性和穩(wěn)定性,開發(fā)人員和測試人員可以就不同領(lǐng)域內(nèi)銀行系統(tǒng)軟件測試的方法總結(jié)大的類別,從而能夠為不同場景應(yīng)用下的測試方法進行歸類。
針對銀行系統(tǒng)軟件的測試主要是為了發(fā)現(xiàn)銀行系統(tǒng)運營時的bug,也就是常見的程序執(zhí)行錯誤,在軟件開發(fā)的初始階段,研究者發(fā)現(xiàn)了不同開發(fā)階段的組成部分,而對于軟件工程來說軟件測試是保證軟件質(zhì)量的關(guān)鍵環(huán)節(jié),也影響著軟件與社會需求之間的適應(yīng)關(guān)系。針對軟件的質(zhì)量評估,既要講究策略和方法,又要講究實效性。通常來說,對于銀行系統(tǒng)的軟件測試是驗收的最后一個步驟,將直接影響到軟件的可交互性,是有組織、有步驟的工作活動。
1.業(yè)務(wù)具有復(fù)雜性
對于銀行系統(tǒng)來說,由于其整個業(yè)務(wù)端均基于一個核心系統(tǒng)而存在,主要處理客戶的賬務(wù)、管理的各類系統(tǒng)都會直接或間接的與核心系統(tǒng)之間產(chǎn)生嚴密的交互性,核心系統(tǒng)將記錄客戶的賬務(wù)變化信息、各類大的資金往來,而銀行的業(yè)務(wù)比較復(fù)雜,既包括人民幣業(yè)務(wù),也有外幣業(yè)務(wù),業(yè)務(wù)涉及的支付款項和數(shù)目變動比較頻繁,涉及的途徑有網(wǎng)上銀行、手機銀行、直銷銀行、微信銀行、柜面、ATM、呼叫中心、信貸中心、資產(chǎn)信托、資金風險評估系統(tǒng)等,另外還有一些新穎的中小企業(yè)金融業(yè)務(wù)和中間業(yè)務(wù),如外匯買賣業(yè)務(wù)、基金業(yè)務(wù)等,也與其核心系統(tǒng)緊密相關(guān)。
2.業(yè)務(wù)軟件具有復(fù)雜性
其業(yè)務(wù)相對比較復(fù)雜,因此軟件系統(tǒng)也具有復(fù)雜性,軟件系統(tǒng)與服務(wù)系統(tǒng)之間密切相關(guān),既要保證客戶的利益,同時又要進行銀行自身的風險管控,而在賬務(wù)處理時有既定的規(guī)范賬務(wù)處理流程,也必須規(guī)范、精準,銀行的軟件系統(tǒng)開發(fā)使用的語言和技術(shù)也比較復(fù)雜,不同的系統(tǒng)甚至有不同的解決方案,擁有不同的語言和處理技術(shù),在銀行系統(tǒng)內(nèi)會有一些非常用的技術(shù)測試方式,多種多樣。
3.銀行系統(tǒng)所涉及的網(wǎng)絡(luò)和硬件環(huán)境相對復(fù)雜
銀行系統(tǒng)所面臨的性能考驗比較嚴峻,因此大部分銀行系統(tǒng)都會采用集群技術(shù),這是測試的一個方面,同時也給測試帶來了難度。銀行的軟件系統(tǒng)部署到總行和分行要考慮二者之間的網(wǎng)絡(luò)互通關(guān)系,并涉及第三方的業(yè)務(wù)測試內(nèi)容,一般比較常見的問題是,銀聯(lián)和人民銀行在支付系統(tǒng)測試方面的關(guān)系,農(nóng)信系統(tǒng)以及清算系統(tǒng)普遍存在的代理業(yè)務(wù)關(guān)系等,銀行使用的中間服務(wù)器一般為CICS、MQ、Tuxdeo 等等,對于中間服務(wù)器的測試也是必不可少的實驗環(huán)節(jié)。
銀行系統(tǒng)的特點決定了需要實現(xiàn)軟件的層次化測試,為了保證軟件的質(zhì)量和可靠性,應(yīng)該在軟件投入運行之前,就針對其需求分析,設(shè)計規(guī)格說明和編碼進行審查。軟件的層次化測試策略,是有規(guī)律的實現(xiàn)層次化測試模型,并圍繞軟件測試的基本步驟進行其流程,主要包括單元測試、通用功能測試、業(yè)務(wù)流程測試、驗收測試等。由于銀行系統(tǒng)內(nèi)針對于金融業(yè)務(wù)的分析,往往是數(shù)據(jù)處理的增加、變更、消除等,因此其多種多樣的操作,需要精準的處理數(shù)據(jù),并且不能影響前臺的業(yè)務(wù)邏輯。實現(xiàn)軟件的層次化測試,可以根據(jù)以下原則,規(guī)范測試方法:
1.根據(jù)具體的銀行系統(tǒng)模塊進行功能的抽象分層,實現(xiàn)各種功能的明確約定。
2.完善不同層次,功能靈活的標準化選擇。
3.不同的系統(tǒng)分類完成相應(yīng)層次的測試。
4.當銀行系統(tǒng)高層為銀行系統(tǒng)下一層級提供服務(wù)時,下層的服務(wù)實現(xiàn)應(yīng)該依據(jù)上層的測試結(jié)果。
5.針對于其層次的數(shù)目選擇要恰當,不必要設(shè)置太多的測試層次。
由于銀行系統(tǒng)幾乎全年在持續(xù)運行,因此可以根據(jù)實際的系統(tǒng)運行場景,展開不同時段的測試分類。比如在登錄場景之下模擬實際系統(tǒng)運行,按照各個網(wǎng)點在集中時間段內(nèi)的簽到操作,計算其簽到數(shù)額、金額比數(shù),銀行系統(tǒng)CPU 的資源占用情況等。針對銀行系統(tǒng)的日高峰場景,分析業(yè)務(wù)比例組合情況,業(yè)務(wù)系統(tǒng)獲取情況。具體的測試方法大概有以下內(nèi)容:
1.發(fā)起服務(wù)器上使用gentest 命令,生成run 文件,使用檢測的參數(shù)并發(fā)度分析,針對不同情況進行調(diào)整,該測試方法經(jīng)檢測優(yōu)于啟動服務(wù)測試。
2.運行run 文件,登陸使用nmon 或者topas 監(jiān)控應(yīng)用服務(wù)器對于其數(shù)據(jù)庫的交易發(fā)起數(shù)量進行監(jiān)控,run 命令運行100 秒,一般可以完成一次測試。
3.使用run 命令完成之后的系統(tǒng)程序報告分析數(shù)據(jù)。
4.篩選和剔除交易失敗場景比較多的次數(shù),反復(fù)測試服務(wù)器和SMT 指數(shù)及并發(fā)數(shù)最終得到最理想的TPS 和系統(tǒng)響應(yīng)時間優(yōu)化,系統(tǒng)內(nèi)的程序配置。
在銀行的實際工作中,由于多個完整的軟件測試項目有可能同時進行,在工作之前一定要了解設(shè)計的需求,選擇不同的銀行系統(tǒng)軟件測試方法。這就要求系統(tǒng)的測試和研究人員必須透徹的分析及理解銀行系統(tǒng)不同場景的測試需求,首先設(shè)置測試目標,并在測試中不斷完善分析報告。針對于不同的銀行工作內(nèi)容和外包項目等有可能在出現(xiàn)測試bug 時難以馬上優(yōu)化,測試人員不能迫于壓力進行強行修正,而是應(yīng)該發(fā)現(xiàn)軟件測試的實際反饋問題,找到不易暴露的錯誤,并進行多次測試實例后予以根本糾正,只有這樣的銀行系統(tǒng)測試才是真正有意義的測試。