1. 程式人生 > >基於金融行業的軟件測試分析

基於金融行業的軟件測試分析

密碼 2.4 lin 準備 表數 現在 耐心 密碼錯誤 金融行業

 隨著金融行業的業務不斷增加,金融交易模式的不斷變化,金融機構對信息化的要求也越來越高,高質量的金融軟件對於金融機構來說顯得尤為重要。如何保證金融行業軟件的質量,對金融行業軟件的測試人員來說,也提出了更高的要求。以下針對金融行業軟件的測試做出了具體的分析:   1金融行業軟件特征分析   金融行業軟件系統具有集中度高、規模龐大、數量多、系統之間關聯性強、業務復雜、需求變化快等特點,如何有效可行的實現軟件測試和軟件質量控制,是對金融行業軟件測試人員提出的基本要求。   1.1金融行業軟件的業務特點   以金融行業軟件的典型代表銀行系統軟件為例:一般的銀行系統軟件都有一個核心系統,核心系統主要涉及賬務的處理、清算、計息等。銀行的其它業務系統都會直接或間接的與核心系統進行交互,主要處理一些涉及業務的流程以及系統管理、用戶管理等輔助功能。   此外,銀行的業務系統也種類繁多。比如:ACE/櫃面、網上銀行、電話
銀行、呼叫中心、信貸、資產托管、資金風險分析及風險控制系統、外匯買賣、基金、期貨、黃金、匯票、信用卡業務以及其它衍生業務等等。各個系統之間都可能有著密切的聯系,之間也會涉及到不同系統之間的接口。   因此,在測試過程中,除了對銀行的核心系統、業務系統進行測試之外,還會涉及對接口的測試,而接口測試往往需要測試人員構造一定的測試環境與測試數據來模擬各系統之間的交互。   1.2金融行業軟件的復雜性特點   就銀行系統軟件來說,本身就具有復雜性的特點。首先,銀行軟件具有不同的客戶群,如個人用戶、企業用戶、銀行內部管理人員、業務人員等,因此,銀行軟件會有針對不同客戶所使用的版本或權限控制。此外,對於不同的服務方式,如櫃臺、電話銀行、網上銀行等,都必須開發出不同的軟件。其次,銀行業務種類繁多,業務邏輯也非常復雜,對業務處理要求有很高的安全性和實時性,這些都要借助復雜的技術
才能實現。因此,對於測試而言,軟件的復雜性也增加了測試的復雜性,對測試者來說要求有相當的經驗和測試技術的支持。   另外,由於銀行業務的快速發展,當舊的銀行軟件系統無法滿足業務處理的要求時,就必須開發新的系統,對於重新開發的新系統來說,舊系統的用戶數據必須保證能在新系統中正常使用,這就涉及到了新舊版本的數據移植問題,由於新舊系統之間數據字典存在差異,數據移植後能否正常,就需要對新舊數據進行比對性測試。比對測試過程往往會涉及數據庫的應用及比對工具的開發使用。   2金融行業軟件測試的現狀   根據某項調查,金融企業應用系統的數量,中小銀行應用系統數量普遍在100個左右,有一半銀行超過100個應用系統;雖然保險行業應用系統數量相對較少,但大部分保險公司擁有10―50個應用系統;而且這些數量還有進一步上漲的趨勢。調查數據也表明,金融行業IT部門的測試能力目前遠遠低於金融機構對測試的要求[3]。即使是IT成熟度比較高的企業,也難以覆蓋所有應用系統的測試需求。金融企業的測試需要和信息科技部門的測試能力之間存在一定的差距。   3金融行業軟件測試方法及範圍分析
  以下主要從功能測試、接口測試、數據移植測試、性能測試、安全性測試、風險監控測試、文檔審核幾個方面來闡述金融行業軟件的測試方法及範圍[4]。以下劃分主要為了更清晰了解金融行業軟件測試所包含的範圍,本次分析不涉及白盒測試的內容,主要針對涉及金融行業軟件業務特性的測試方法及範圍進行闡述。   3.1功能測試   功能測試,主要是對軟件的功能進行的驗證,對於金融行業軟件來說,功能測試主要進行以下功能的驗證:   3.1.1業務驗證測試   驗證業務系統的功能是否正確實現,測試其業務處理的準確性。   1)業務流程測試   金融行業軟件測試首先關註的是業務的正確性,業務流程要合理、業務處理正確無誤,這些往往需要測試人員具備一定的金融軟件測試經驗,才能更好的判斷業務流程設計是否合理,是否滿足客戶實際需求,以及業務流程處理過程中可能會涉及到的異常,通常通過正常案例和異常案例來驗證業務流程的完整性和正確性。業務流程除了驗證流程的正確性,通常對於涉及金額、資金、庫存等數據及業務流程中生成的記錄是否正確性也是測試的重點。   2)賬務處理   對於銀行來說,賬務處理為核心系統功能,也是這類軟件測試的重點,賬務處理不僅涉及到資金,還與交易過程相關,在測試系統對賬時,必須對賬務處理流程有清晰的認識,對於賬務處理過程中賬務是否處理正確、是否出現錯賬、是否需要進行調賬等案例都要能進行完整的案例設計來覆蓋測試點,這一塊的測試一般需要有經驗的測試人員來進行測試。   3)清算   銀行系統清算過程涉及的東西較多,如資金清算、庫存清算、計費、計息、對賬、登帳、報表生成等復雜的過程,同時涉及的數據量也是非常的大,對於大型系統來說更是如此數據檢查的工作量也很大,同樣測試人員需要對清算的全過程有清晰的了解。   4)報表   對於銀行系統來說,報表是直接呈現給用戶最直接的結果,而對一個銀行系統來說,報表的數量一般都較龐大,很可能涉及到幾十張報表,因此對報表的檢查也是測試的重點,這需要測試人員對銀行系統涉及的業務非常熟悉,能判斷報表的設計是否合理,報表數據是否正確等。   3.1.2客戶端測試   客戶端主要針對的是軟件界面功能的測試,根據功能劃分一般涉及以下幾類:   1)系統管理類   系統管理主要包括系統參數管理、用戶管理、角色管理、權限分配等,測試也包含相應的業務邏輯及頁面測試,如查詢功能的測試、顯示風格、驗證客戶端頁面顯示數據是否正確等。   2)數據查詢類   主要驗證數據查詢結果客戶端顯示是否正確。   3)其它涉及業務操作的功能界面   主要針對客戶端界面的錄入、查詢等功能進行測試。   客戶端測試還會對界面的友好性、提示信息的合理性等進行測試。   3.2接口測試   對於銀行來說,通常行內系統和與銀行外對接的系統是獨立開發的,行內與行外系統采用的數據庫、通訊協議等都可能存在差異;並且對於銀行來說,還可能存在多個系統,如:網上銀行、ACE/櫃面、電話銀行、呼叫中心、信貸、資產托管、資金風險監控分析系統等,並且各個系統之間可能關聯特別緊密,存在許多交互;因此,在測試中會涉及到相關系統接口的測試,這時通常需要構造對接系統的測試環境、數據、業務等來模擬對接系統。   接口測試中,由於一方系統在測試過程中不可見,因此通常需要進行環境的模擬,比如開發模擬軟件來模擬被測試系統與所交互的系統之間的通訊,並且在測試過程中通常需要測試人員自己組報文,通過模擬發送器收發發送報文來進行測試,並通過後臺檢查報文轉換是否正確,通過數據庫來驗證數據是否正確。通常來說,接口的測試測試人員主要跟後臺和數據庫打交道,而很少通過客戶端來操作,因此要求測試人員對數據庫知識、對應的操作系統命令以及一些中間件具有一定的熟悉程度才能更好的進行測試。   接口測試一般在功能測試階段完成,功能測試計劃中應包含接口測試。   3.3數據移植測試   對於銀行來說,軟件產品經常存在更新換代或升級的情況,新系統的運行環境和舊系統可能不一致。因此,為了保證系統的順利運行,在新系統研發出來,準備上線之前,需要把原來舊系統的客戶歷史數據移植過來,這就涉及到了數據移植問題。數據移植並不是簡單的數據遷移,因為新舊系統之間數據字典是不同的,為了保證移植結果的正確性,需要對新舊數據庫的數據進行比對,通常可以通過人工方法或開發比對工具進行比對。   舉例來說,舊系統采用的SQLSERVER的數據庫,而新系統采用Oracle的數據庫;並且就系統可能存在50張數據表,新系統可能有200張數據表,而且,新系統的數據表結構與舊系統可能完全不一樣,或者新舊系統的某張表可能對應另一個系統的幾張表,這樣在數據移植測試中就要進行幾方面的測試。比如,兩個數據庫可能存在有差異的地方,如數據類型不同,位數不同,在數據移植過程中對這部分就應該做詳細的檢查。此外,表結構的不同,在做數據移植檢查時,需要獲得新舊版本的數據字典,並且對移植過來對應的所有字段數據是否移植正確做檢查。   數據移植測試往往需要測試人員有足夠的耐心,能仔細進行比對,發現存在的問題。數據移植測試一般在功能測試階段完成,功能測試計劃中應包含數據移植的測試。   3.4性能測試   性能測試的目的主要是驗證業務系統是否滿足業務需求的多用戶並發操作,是否滿足業務性能需求,評估壓力解除後的自恢復能力,測試系統性能極限。   隨著金融行業軟件的規模越來越大、處理能力要求越來越高,進行性能測試成為金融軟件測試中必不可少的一個環節。金融行業軟件一般在投入使用時,需要接受大批量的業務,並且對於業務的響應處理時間也有很高的要求,這對於應用程序本身、操作系統、中心數據庫服務器、中間件服務器以及網絡設備的承受力都是一個嚴峻的考驗。任一個環節的問題都可能給用戶帶來巨大的商業損失。因此,如何保證在壓力情況下系統能正常運行是金融行業軟件質量保證的關鍵,同時也是測試人員最需關註的重點。   在性能測試過程中,通過性能測試工具來模擬與真實環境接近的情況,如通過測試程序在同一時間內或某一段時間內,向系統發送預期數量的交易請求、測試系統在不同壓力情況下的效率,獲得一定的參數(如:(如內存、CPU、緩存、系統響應時間、最大吞吐率、事務平均處理時間),以及系統可以承受的壓力情況,進行針對性的測試與結果分析,找到影響系統性能的瓶頸,以便對系統進行優化。   3.5安全性測試   安全性測試的目的主要是評估業務系統在網絡安全、主機安全、應用安全、數據安全、運行維護安全、電子認證安全、業務連續性等方面的能力及管理措施,評價其業務系統的安全防控和安全管理水平。   對於金融行業軟件來說,安全性有著重大的意思,尤其對於網絡日益發達的今天,大量的金融類交易都是通過網絡來實現,確保信息的安全,對安全性測試提出了更高的要求。如客戶數據的安全、資金的安全;銀行主機的安全,應用程序的安全以及網絡安全,某一個環節出現問題都會給系統帶來巨大的風險。安全性測試主要檢查出軟件存在的安全隱患,確定安全等級,以期得到整改。   通常用的安全性檢查手段及檢查點如:跨站攻擊、弱點攻擊、管理界面泄露、敏感信息泄露、跨站點請求偽造、惡意上傳等。   對於安全性測試來說,一般需要專業的工具作為支持,因為,大多數的安全性測試都會交給具有一定資質的第三方評測機構來進行。   3.6風險監控測試   主要目的是評估業務系統的風險監控、預警和管理措施,測試其業務系統異常交易、大額交易、非法卡號交易、密碼錯誤交易等風險的監測和防範能力以及系統資源占用的監控。   對於銀行的較大型系統來說,一般都會專門開發對應的風險監控系統,一類風險監控主要是對系統的交易、資金、等情況進行監控;另一類則是對主機資源情況進行監控,對於交易、資金類的風險監控測試時主要是根據風險監控需求來驗證監控結果是否符合需求描述;對於系統資源類的測試主要關註被監控主機的資源占用情況是否合理。   風險監控測試一般在功能測試階段或性能測試階段完成,功能測試或性能測試計劃中應包含風險監控的測試。   3.7文檔審核   目的主要是驗證業務系統的用戶文檔、開發文檔、管理文檔等是否完整、有效、一致,是否符合相關標準並遵從更新控制和配置管理的要求。   文檔審核最基本的原則是軟件實現必須按照用戶需求文檔來進行設計和實現。對於需求文檔審核來說,文檔必須覆蓋用戶所有需求點的描述;對於開發文檔,如概要設計文檔、數據庫設計文檔,設計和實現原則應根據需求而定;此外各類管理文檔審核包括對項目工期的定義、項目人員的安排與任務分配、項目具體執行的定義等等。在實際應用中,由於用戶需求存在經常性的變動已經增加,文檔也會存在相應的變更,審核部分也包括對變更部分內容的審核。但是目前金融行業軟件沒有一個嚴格的規範來進行約束,因此,在文檔審核和實際的開發、測試操作環節都不能得到真正的落實,對測試質量環節也造成了相應的影響。   3.8自動化測試   現階段實施的自動化測試與手工測試相比較,就是采用程序模擬手工測試的過程。在自動化測試過程中,原來由手工控制的操作,現在由程序來控制,不再進行手工幹預[5]。自動化測試主要用於功能測試,測試過程包括腳本的錄制、編寫及回放。   4金融行業軟件測試工具分析   金融行業軟件測試與其它應用軟件測試流程基本一致,測試過程也涉及到一定的測試工具的使用,以下是金融行業軟件常用的軟件測試工具:   4.1黑盒測試工具   黑盒測試工具較多應用的是自動化測試工具QARun、QTP  4.2性能測試工具   常用於金融系統軟件,適用於各種體系架構的自動負載測試工具LoadRunner,它能預測系統行為並優化系統性能。   對於性能測試來說,很多情況下,商業化的軟件不一定能滿足性能測試的需求,因此很多時候,需要開發一定的性能測試軟件來進行針對性的測試。   4.3測試管理(測試流程管理、缺陷跟蹤管理、測試用例管理)工具   常用測試管理工具有:QC、TD、ClearQuest等,主要對測試計劃、測試用例、測試實施進行管理,並進行缺陷跟蹤管理。   5金融軟件測試模式分析   在金融機構內部組織業務測試之前,軟件必須經過完整的系統測試、性能測試及安全性測試等才能交付金融機構的業務部門進行業務測試,測試模式可以有以下幾種模式:   5.1軟件開發方進行的內部系統測試、性能測試和安全性測試   開發方內部進行的測試與本文第三部分描述的軟件測試方法與範圍分析基本一致,下面主要就第三方測試的模式進行分析。   5.2第三方測試機構進行的系統測試、性能測試和安全性測試   5.2.1第三方測試的優點   第三方測試是指由獨立的軟件評測機構,根據項目管理方或用戶的委托,對被測軟件所進行的科學、公正、客觀的綜合測試及評測活動。在軟件工程的整個流程中,用戶對於軟件的質量非常關註,但用戶本身沒有足夠的能力對軟件進行測量的評估,這時,就需要引入一個專業的評測機構,來對軟件的質量進行客觀的評測。第三方測試不同於軟件開發方的內部測試或用戶的業務測試,強調由獨立於用戶和開發方的軟件評測機構來承擔測試任務,其目的在於保證測試的公正性與客觀性。第三方測試主要適用於對行業應用軟件的測試及評估。基於以上第三方測試的優點及目前金融機構測試人員與金融系統測試需求的不平衡性,目前,在金融行業,專業評測機構的第三方測試已經顯示出諸多的優勢,並得到越來越多的應用,如在人行支付系統、商業銀行的一些應用系統,都曾引入第三方測試,並獲得了很好的效果。   相對於內部測試來說,第三方測試具體有以下幾個優點:   1)隨著系統規模的日益龐大,軟件開發方很難投入足夠的人力、物力來參與測試工作。同時,開發方也缺乏專業的測試工具以及經驗豐富的測試人員;只有第三方機構才具有這樣的實力來完成測試任務。   2)第三方測試以合同的形式制約了測試方,保證了測試工作在一開始就具有客觀性。   3)第三方能夠通過系統需求來理解整個系統,並從軟件工程的角度把握系統,能專業、公正的評價系統中出現的問題。4)第三方機構的權威性能更好的協調第三方、用戶以及開發方三者之間的關系。   5.2.2第三方測試的應用   第三方測試機構在測試技術方面一般具有行業內較為專業的測試技術以及較為領先的測試技術、對於被測試項目來說具有技術測試層面的優越性。但是另一方面,第三方測試的管理具有一定的復雜性,整個測試活動的實施,不但需要較強能力的軟件測試人員,更需要得到用戶及軟件開發方的支持,才能確保測試人員對被測軟件有較深的認識,確保軟件測試的最終質量。   此外第三方測試在整個測試活動中,需要判斷開發方的軟件是否滿足用戶的需求,提交最終的測試報告,對所測試軟件給出公正、客觀的評測結果。   5.2.3第三方測試常用的測試工具   無論作為內部測試或第三方測試,都必須采用一些自動化的測試工具來進行測試的管理和執行。常用的第三方測試的測試工具主要包含以下幾類:   1)測試管理工具   如:TestDirector、QualityCenter、ClearQuest。   2)性能測試工具   如:LoadRunner及第三方自己開發的性能測試工具。   3)自動化測試工具   如:QARun、QTP   5.2.4第三方測試目前存在問題及發展前景   首先,第三方測試作為用戶和開發方都放心的測試或評測機構,在客戶需求日益增加的情況下,具有良好的發展前景。但是,第三方測試機構所提供的是測試服務,只涉及人工費用,在競爭壓力比較大的環境下,價格戰不可避免。   6結束語   本文針對金融行業軟件的測試現狀、測試方法及範圍、測試工具、以及測試模式進行了分析,提出了適用於金融行業軟件測試的具體方案及實用技術。但隨著新的設計模式及開發方法的不斷湧現,現有的測試理論及技術必須做出與之相對應的改進才能滿足不斷變化的用戶需求。

基於金融行業的軟件測試分析