軟件系統架構對測試的影響分析
我們知道軟件系統的架構會對系統測試產生影響,而到底會產生哪些影響呢?
首先看一下軟件系統架構到底是如何定義的?
軟件系統架構就是組成系統的主要重要模塊、過程、數據的管理和分配、用戶界面的種類和風格,以及系統運行平臺等。其中包括它們的結構和彼此間的準確關系,他們可被擴展和修改的方式,他們依賴于某種技術,是怎樣得到系統性能和靈活性的,又是如何確定系統實施或修改計劃的。
軟件架構之所以重要是因為優秀的架構是確保軟件長期成功的關鍵因素。而對于我們測試來說,其軟件架構會對測試實施產生哪些影響呢?
首先是穩定性。穩定性可以降低在版本更新時擴展系統功能的重復老師,并減少實施過程的總成本。它鞏固了開發團隊的基礎,使其專注于開發更大價值的特性,而并非浪費精力關注在經常變更的問題上。對于良好的系統架構,會使測試設計更穩定,減少因變更帶來的測試工作量。
對變更的度和性質。架構決定系統中發生變更的性質。有些變更很容易被察覺,而察覺另一些則很難。在我們為吸引更多客戶而需要提高客戶滿意度或增加功能時,如果能夠簡單實現預期的變更,那么各種架構通常被認為是好的。系統的功能需求變更,使系統受影響的部分最小,避免大量的回歸測試。
社會架構。優秀的架構為創建它的團隊而工作。它可以平衡團隊內部的個體在實力和能力上存在的差異,而且可以彌補各自的弱點。例如團隊對C++的內存管理經常使用不當,而如果使用Java、Perl或C#等系統自動進行內容管理的開發語言可以減少這方面的問題。而我們測試中,則對于內存方面的測試則可以考慮的較少一些。對我們招募測試團隊的人員的技能也產生影響。
邊界的決定。在架構的設計過程中,團隊會就哪些應該被加入到系統中,而哪些不應該被加入到系統中做出很多決定。例如,是團隊自己寫數據庫訪問層,還是購買許可?團隊是使用開源的Web服務器還是購買許可?那個子團隊應該負責用戶界面的設計?成功的解決方案確實能夠創建技術邊界來支持業務的特殊需求。這些邊界選擇可直接影響我們的測試,例如,服務器監控、服務器性能參數調優等。
可持續的、不可替代的優勢。這一點可以概括前面的幾點,但是一個好的架構能夠使系統在市場競爭由于難于復制而占據優勢地位。例如在性能和易用性方面獲得優勢。這對于我們測試來說,可以減少缺陷,性能更能達到目標而減少系統調優后反復測試的過程。
創建系統架構的實際方法就是探索多種已被文檔化的模式,所以關于開發模式的書籍比較暢銷,也正是很多研發管理人員必讀的書籍。
測試團隊要對軟件系統架構進行理解,應該著重分析研發團隊提供的一些視圖,以增加對系統架構的理解。
邏輯視圖:它提供了系統開發中對象間或實體間相互關系的靜態快照。這種視圖實際上可能有兩個或更多的表現層。一個概念模型,另一個是數據庫模式中模型的實現。往往現在數據庫架構師使用PowerDesigner描述實體的邏輯關系,所以需要我們測試工程師學會查看數據庫實體描述,從而了解系統中的數據庫設計,例如關鍵字,索引、表實體之間的關系等。
過程視圖:過程視圖描述設計的并發性和同步性因素。我們了解過程視圖,從而會了解系統中各個模塊之間的時間、空間關系。原來的結構化編程中經常用流程圖來表示,而現在面向對象的編程經常用一些建模工具描述對象實體。例如,架構師經常使用Rose等建模工具,建立實體的序列圖、狀態圖等來描述過程。而我們測試工程師應該學會看懂序列圖或狀態圖等。
物理視圖:物理視圖描述軟件到硬件的映射,其中包括實現高可用性、可靠性、容錯性和性能等目標的處理部件的分布情況。常用Rose部署圖來描述物理視圖,也可以使用Visio等繪圖工具繪制系統架構圖來描述。
開發視圖:開發視圖描述軟件在開發環境中的靜態組織結構。研發團隊通常用Rose等建模工具繪制實體關系圖,描述各個實體之間的靜態關系。
了解了系統的架構之后,對于測試來說,就應該做相應的準備工作。包括招募具有相應技能的人員。針對特定的結構采取相應的測試設計。例如,對于J2EE架構,則要考慮如何集成測試,采用何種集成策略。對于性能測試,考慮哪些測試。例如研發采用Weblogic作為應用服務器,則我們要考慮該服務器哪些配置參考會影響系統的性能。物理架構中具有中間件服務器,則我們對中間件服務器如何測試。
總之,了解一些軟件系統架構,對于測試人員尤其是測試管理人員是非常需要的。