中國工商銀行數(shù)據(jù)中心(北京) 陳林軼 蘭秋穎
早在2009年的時(shí)候,美國財(cái)政部部長蓋特納就曾表明“美國大型銀行十分有必要進(jìn)行壓力測試,而壓力測試的重要性在于其透明性”。隨后,美聯(lián)儲(FED)主席伯南克也明確表示“金融測試和財(cái)政部的注資計(jì)劃將有利于美國金融體系的穩(wěn)定性”,由此金融測試一詞再度活躍在人們眼前。在國內(nèi),“十二五”期間就指出金融監(jiān)管必須日益重視風(fēng)險(xiǎn)的防控,對金融系統(tǒng)的穩(wěn)定性也提出越來越高的要求。如何保證系統(tǒng)的穩(wěn)定和做好風(fēng)險(xiǎn)的防范,這對產(chǎn)品質(zhì)量提出了更為嚴(yán)格的要求,加之國內(nèi)商業(yè)銀行系統(tǒng)的多次升級,同時(shí)城市商業(yè)銀行和農(nóng)村信用合作社由于自身研發(fā)人員與專業(yè)測試力量的不足,對專業(yè)化的測試人員衍生出更多的需求。
所謂測試是指“為發(fā)現(xiàn)軟件錯(cuò)誤而執(zhí)行程序的過程”,是一種對程序的驗(yàn)證過程。在日新月異的科技信息時(shí)代,這種過程被運(yùn)用到各行各業(yè),其中不乏銀行、保險(xiǎn)等金融機(jī)構(gòu),而國內(nèi)四大銀行也均成立了相關(guān)測試機(jī)構(gòu),以此提高產(chǎn)品的質(zhì)量、項(xiàng)目的質(zhì)量和客戶滿意度。金融系統(tǒng)是一個(gè)風(fēng)險(xiǎn)與機(jī)遇并存的行業(yè),由于風(fēng)險(xiǎn)的不可控性,開發(fā)出的金融產(chǎn)品往往帶著不可預(yù)知的問題并可能會出現(xiàn)在實(shí)際運(yùn)營中,并給金融系統(tǒng)埋下隱患。一旦觸發(fā)了這些潛在的危機(jī),會給金融行業(yè)帶來不可估量的損失。比如:所供服務(wù)的不穩(wěn)定導(dǎo)致服務(wù)的中斷、柜員操作過程中遇到程序的錯(cuò)誤提示等等,這就要求產(chǎn)品在推向客戶之前經(jīng)過大量的測試以維護(hù)其穩(wěn)定性。由此可見,測試是銀行業(yè)乃至整個(gè)金融行業(yè)面臨的最大挑戰(zhàn)之一。
測試有很多種類,包括性能測試、壓力測試、功能測試、容錯(cuò)測試、界面測試、安全測試等等,每個(gè)測試類型中都有自己的測試方法,比如白盒測試、灰盒測試、黑盒測試等,測試人員運(yùn)用這些測試方法保證金融產(chǎn)品能夠正確滿足客戶的需求、產(chǎn)品設(shè)計(jì)流程的正確。但是誰負(fù)責(zé)承擔(dān)測試角色,是設(shè)計(jì)出產(chǎn)品的開發(fā)人員,還是產(chǎn)品的項(xiàng)目經(jīng)理,還是具備計(jì)算機(jī)基礎(chǔ)知識的測試人員,或者說金融背景出身的業(yè)務(wù)人員等?這些一直是學(xué)者們討論與爭論的焦點(diǎn),本文將從實(shí)際業(yè)務(wù)的角度和定性分析的角度探析獨(dú)立測試的重要性。
所謂的第三方機(jī)構(gòu)獨(dú)立測試,就是指在測試過程中扮演測試角色的人員是由經(jīng)濟(jì)和管理上獨(dú)立于開發(fā)機(jī)構(gòu)的組織進(jìn)行的。他們在經(jīng)濟(jì)資源和測試工作上不受開發(fā)機(jī)構(gòu)的控制,而是單獨(dú)的職能部門,專門負(fù)責(zé)產(chǎn)品與產(chǎn)品關(guān)聯(lián)性的測試工作,因此他們測試的結(jié)果往往更具有客觀性和可靠性,具有其他機(jī)構(gòu)擔(dān)任測試角色時(shí)所無法比擬的優(yōu)勢。
第一,獨(dú)立的第三方測試機(jī)構(gòu)是由專門的測試隊(duì)伍構(gòu)成,其目標(biāo)就是為了在投產(chǎn)前發(fā)現(xiàn)產(chǎn)品缺陷來進(jìn)一步提高產(chǎn)品的質(zhì)量。早期開發(fā)人員在設(shè)計(jì)產(chǎn)品的同時(shí)會兼顧測試的角色,他們不單是程序編碼人員,還是程序檢測人員、程序維護(hù)人員等,這種多重身份不僅會給程序員增加工作負(fù)擔(dān),還會使他們的目標(biāo)變得矛盾而不可協(xié)調(diào)。作為開發(fā)人員總是希望自己的產(chǎn)品是優(yōu)良的、無缺陷的、能夠滿足用戶需求的;但是作為程序檢測人員總是希望自己能發(fā)現(xiàn)更多的缺陷,產(chǎn)品的設(shè)計(jì)過程是有漏洞的。如果程序員既承擔(dān)開發(fā)的角色又承擔(dān)測試的角色,則其目標(biāo)難以統(tǒng)一并且不協(xié)調(diào),既希望自己的產(chǎn)品是完美的又希望測試過程能發(fā)現(xiàn)更多的缺陷,最終的結(jié)果難免會出現(xiàn)偏差,工作目標(biāo)變得矛盾而不統(tǒng)一。所以,研發(fā)人員開發(fā)出的金融產(chǎn)品,不應(yīng)該由自己負(fù)責(zé)測試工作,而是應(yīng)該由專門的測試人員測試,這樣測試的目標(biāo)不再是矛盾而不可協(xié)調(diào)的,而是希望在測試的過程中暴露出產(chǎn)品更多的缺陷與漏洞。
第二,金融產(chǎn)品的使用用戶分類繁多,比如按資產(chǎn)規(guī)模、受教育程度、風(fēng)險(xiǎn)偏好程度分類等等,不同類型的客戶對產(chǎn)品的需求是不統(tǒng)一的。比如:風(fēng)險(xiǎn)偏好高的客戶會偏向于風(fēng)險(xiǎn)高的金融產(chǎn)品,而風(fēng)險(xiǎn)偏好低的客戶會偏向于風(fēng)險(xiǎn)低的金融產(chǎn)品;對于資產(chǎn)規(guī)模較高的客戶可能偏向理財(cái)產(chǎn)品(增值產(chǎn)品),而資產(chǎn)規(guī)模較低的客戶可能偏向于基本的儲蓄產(chǎn)品(保值產(chǎn)品)。多樣化的客戶群體、多樣化的產(chǎn)品需求下,如果開發(fā)人員既設(shè)計(jì)金融產(chǎn)品又測試軟件程序,測試任務(wù)不但繁重,而測試的重點(diǎn)可能會在程序的代碼編碼上,設(shè)計(jì)出的產(chǎn)品難免功能單一化、簡單化。相反,如果測試由獨(dú)立的第三方機(jī)構(gòu)測試,測試人員的重點(diǎn)就放在測試工作上,從客戶的角度出發(fā)去驗(yàn)證產(chǎn)品是否符合自己的要求,從柜員的角度出發(fā)驗(yàn)證產(chǎn)品設(shè)計(jì)流程是否合理。而測試員作為產(chǎn)品最直接的體驗(yàn)者,在測試的同時(shí)體驗(yàn)產(chǎn)品的功能,再將體驗(yàn)結(jié)果反饋至開發(fā)人員,比如產(chǎn)品界面展現(xiàn)是否合理、用戶操作是否方便等。
第三,測試參與人員角色的多樣化,意味著測試人員在測試過程中應(yīng)該做到測試與業(yè)務(wù)融合。最初開發(fā)人員擔(dān)任測試人員,其專業(yè)背景比較單一,可能局限在計(jì)算機(jī)專業(yè),導(dǎo)致對產(chǎn)品的業(yè)務(wù)背景與設(shè)計(jì)原理了解不是很透徹。而如今參與測試的人員專業(yè)背景越來越多樣化,包括金融相關(guān)專業(yè)、計(jì)算機(jī)相關(guān)專業(yè)、會計(jì)相關(guān)專業(yè)等。在測試的過程中,由這些具有多樣化專業(yè)背景的測試人員測試,可以拓寬思路,設(shè)計(jì)出更多有實(shí)際意義的測試案例,測試案例也可以更加貼近真實(shí)的業(yè)務(wù)運(yùn)用。相反,如果由程序員擔(dān)任測試角色,其專業(yè)知識可能局限在計(jì)算機(jī)知識,而不了解產(chǎn)品背后真正的含義,在這樣的情況下,測試只能從代碼的正確性驗(yàn)證產(chǎn)品的質(zhì)量,而不能更好地站在使用者的角度去檢驗(yàn)金融產(chǎn)品功能是否正確。
第四,由于第三方測試機(jī)構(gòu)在其經(jīng)濟(jì)和管理上具有獨(dú)立性,所以可以充分發(fā)揮自己的測試角色,對產(chǎn)品以及產(chǎn)品之間的關(guān)聯(lián)性做出驗(yàn)證。在產(chǎn)品設(shè)計(jì)成功后,測試人員應(yīng)該盡早介入測試工作,了解項(xiàng)目的需求說明書。測試方法可以簡單地分為靜態(tài)測試、動態(tài)測試,而靜態(tài)測試貫穿在整個(gè)測試過程中。在項(xiàng)目啟動前期,測試人員應(yīng)該認(rèn)真審查項(xiàng)目的文檔資料,其中包括軟件需求說明書等,在分析文檔的過程中,應(yīng)當(dāng)注意文檔設(shè)計(jì)思路是否正確、是否有遺漏的地方,而測試員還可以在這個(gè)過程中提前學(xué)習(xí)項(xiàng)目的流程,包括項(xiàng)目中新加功能、刪除功能、修改功能,這些都是在測試中需要特別注意第地方;動態(tài)測試,是靜態(tài)測試的補(bǔ)充,在測試過程中發(fā)揮極其重要的角色,指的是通過運(yùn)行軟件程序來驗(yàn)證產(chǎn)品的質(zhì)量。在動態(tài)測試過程中,獨(dú)立的測試人員可以發(fā)揮自己的想象設(shè)計(jì)多樣化的測試案例,測試中可以用等價(jià)類劃分法、邊界值分析法、錯(cuò)誤猜測法等去驗(yàn)證產(chǎn)品設(shè)計(jì)的正確性。比如存款金額輸入項(xiàng),在測試過程中開發(fā)人員可以輸入負(fù)數(shù)(邊界值法)或者特殊字符,驗(yàn)證程序運(yùn)行過程中是否有正確的提示。
軟件測試保證產(chǎn)品的質(zhì)量,而專業(yè)的測試是提升軟件質(zhì)量的重要手段,也是金融業(yè)防范風(fēng)險(xiǎn)的重要途徑。承擔(dān)軟件測試角色的人員,應(yīng)該是第三方專業(yè)化的測試團(tuán)隊(duì),在經(jīng)濟(jì)與管理上獨(dú)立于開發(fā)機(jī)構(gòu),充分發(fā)揮自己的測試角色。不但可以在測試過程中利用多種測試方法如靜態(tài)測試、動態(tài)測試、功能測試、性能測試、壓力測試、容錯(cuò)測試等,保證產(chǎn)品的質(zhì)量;還可以從產(chǎn)品使用者的角度驗(yàn)證產(chǎn)品是否滿足需求;同時(shí)對產(chǎn)品設(shè)計(jì)提出優(yōu)化與建議反饋至開發(fā)部門,在開發(fā)部門的再次設(shè)計(jì)與修改后,再對產(chǎn)品做出功能性驗(yàn)證。在這種循環(huán)模式下,開發(fā)人員與第三方測試機(jī)構(gòu)既是相互補(bǔ)充也是相互制約的,這種彼此制衡的關(guān)系不但有利于產(chǎn)品的穩(wěn)定,還可以提升產(chǎn)品的質(zhì)量甚至提升客戶的滿意度,讓金融行業(yè)的創(chuàng)新與穩(wěn)定都得以保證。所以測試的角色應(yīng)該由第三方獨(dú)立機(jī)構(gòu)扮演,利用他們資源上、專業(yè)上、技能上等方面的優(yōu)勢,設(shè)計(jì)出更多精細(xì)化并且符合業(yè)務(wù)場景的測試案例,并及時(shí)將測試情況反饋至開發(fā)部門進(jìn)行維護(hù)與調(diào)整,以此保證金融產(chǎn)品的質(zhì)量與穩(wěn)定性和靈活性。
[1] 黃錫滋.軟件可靠性、安全性與質(zhì)量保證[M].北京:電子工業(yè)出版社,2002.
[2] 徐中偉,吳芳美.軟件測試質(zhì)量的量度[J].計(jì)算機(jī)工程與運(yùn)用,2002.
[3] 張麗波.基于自動化的軟件測測與運(yùn)用[J].廣州:華南理工大學(xué),2004.