紀昌鋒
(福州職業(yè)技術學院,福建 福州 350001)
開發(fā)基于CAP協(xié)議的統(tǒng)一認證平臺,是電信運營商給客戶提供增值服務的重要平臺之一。根據(jù)項目需求使用UML工具進行需求分析,畫出各模塊的用例圖;使用活動圖對每一個用例圖進行用例實現(xiàn)[1],經歷了“用例層→控制層→服務層→實體層”的建模過程。項目的流程是集中認證、聯(lián)邦認證、漫游認證和數(shù)據(jù)同步。
后臺管理主要包括用戶管理、權限管理、業(yè)務系統(tǒng)管理、日志管理和報表管理,省級代理包含SSO認證地址查詢、注冊、簽入和信息維護(增、刪、改、查),借助UML工具建模為下階段基于MDA模式協(xié)作編程做好基礎。
沿著“設計即是開發(fā)”的思想,平臺使用ArgoUML工具對用例模型進一步細化[2],對用例實現(xiàn)的活動圖進一步配置可視元素和流程,使用AndroMDA工具成功將細化的設計模型轉化為代碼和界面雛形,最后,從設計模型中,導出數(shù)據(jù)模型,形成數(shù)據(jù)庫腳本。
使用TestNG作為單元測試工具,以周期性地進行自動化回歸測試,使得業(yè)務邏輯在變更頻繁的情況下,可以及時得到測試,單元測試主要針對核心的認證、數(shù)據(jù)同步、后臺管理部分進行測試代碼的編寫,從源頭保障代碼的質量。
(1)CAS2協(xié)議
角色有client,server,Back-End Service,Proxy;Ticket有 TGC:Ticket Granting Cookie, ST:Service Ticket(接入系統(tǒng):一次性消費;服務綁定),PGT:Proxy Grinting Ticket(接入系統(tǒng):服務綁定), PGTIOU:PGT編號, PT:Proxy Ticket(目標系統(tǒng):服務綁定;代理層的ST)。
(2)CAS的TicketCAS的Ticket如表1所示。
軟件測試是衡量軟件質量,評估系統(tǒng)是否滿足條件的過程。為檢驗統(tǒng)一認證系統(tǒng)的質量,測試流程分成模擬器聯(lián)調、功能測試和性能測試三個環(huán)節(jié)。
(1)模擬器聯(lián)調
聯(lián)調的是網(wǎng)廳和網(wǎng)廳代理模擬器,以及全國平臺、業(yè)務系統(tǒng)和數(shù)據(jù)同步模擬器,聯(lián)調階段要特別注意服務端的配置嚴格按照規(guī)范所定的命令空間和操作名稱的大小寫。
(2)功能測試
分成認證模塊的共呢測試和數(shù)據(jù)同步測試,包括業(yè)務系統(tǒng)接入、報表展示平臺、日志采集功能、人員的權限分配等,本環(huán)節(jié)要注意不同操作系統(tǒng)如Windows和Solaris的編碼問題,否則會造成驗證失敗的問題。
(3)性能測試
性能測試是整個測試最重要的環(huán)節(jié),分為服務器的性能、代碼性能和壓力測試。測試環(huán)境:HP用于安裝數(shù)據(jù)庫,導入初始化的6千萬數(shù)據(jù),并對數(shù)據(jù)庫進行調優(yōu)設置。SUN用于安裝WebLogic應用服務器,安裝統(tǒng)一認證平臺,配置數(shù)據(jù)庫連接池、SSL端口、初始連接數(shù)、生產模式等。DELL用于安裝模擬器和LoadRunner性能測試工具,提供全流程測試的支持。如表2所示。
表1 CAS的Ticket
表2 全流程測試結果
使用“集中認證”腳本,進行性能測試,針對調優(yōu)代碼對指標的影響很大,通過簡化登錄流程頁面,剔除斷言簽名的驗證,剔除流水號驗證,屏蔽了日志記錄模塊,屏蔽了密碼屬性的獲取部分,簡化了Ticket的生成方式,將原有SpringMVC方案修改為簡單的Servlet方式;同時在SUN上安裝兩個WebLogic服務,在HP上再安裝一個Apache,作為兩個WebLogic服務的負載均衡器。
經過幾輪的測試,發(fā)現(xiàn)Apache在高并發(fā)情況下成為了瓶頸,基本上這臺機器的CPU都被Apache占用。在資源有限的情況下,Apache影響了Oracle的性能,如果將Apache移植到SUN機器,則同樣會對WebLogic應用造成很大的影響?;诖耍ㄗh拋棄Apache的負載均衡方案,腳本中指定特定的端口來測試,增加一個WebLogic服務。
為保證系統(tǒng)的性能和穩(wěn)定性,建議開啟頁面緩存、啟用認證數(shù)據(jù)緩存、將數(shù)據(jù)同步的多條SQL語句替換為存儲過程,同時開啟WebLogic的數(shù)據(jù)庫連接的有效性測試選項。針對內存過載保護問題,建議當jvm內存使用低于30%時,處于free狀態(tài);當jvm內存高于90%時處于overload狀態(tài),需要回收內存。