什麼是軟體測試架構

寒凝雪發表於2017-07-03
當我們用iPhone玩一個很有名的遊戲——堅守陣地(FieldRunners)時,防禦的佈局非常重要。如果佈局不好,如圖2-1所示,就玩得很累,看著“生命”一個一個死去,即使採用了一些小的技巧,最後也過不了關。

圖2-1  不好的佈局決定著失敗

  而如果換一個思路,進行不同的佈局,如圖2-2所示,不採用自然的豎直排序,而採用斜線排序,充分利用空間,而且進攻部隊前進的速度會大大降低,結果就很不一樣,遊戲者便能輕鬆過關。

圖2-2  良好的佈局是成功的一半

  這裡的佈局,是指處理問題的全域性規劃、整體設計。全域性規劃如何、整體設計效果如何,自然關係到後面的整個過程,所以總會受到我們重視。

  說到架構,我們會想到軟體架構,如C/S架構、SOA架構,甚至會想到以架構設計為中心的RUP。軟體架構的概念由來已久,軟體架構師的頭銜容易被大家認可,但“測試架構”的概念還不夠清晰,人家會有很多的問題要問:

  什麼是測試架構?

  測試架構對軟體測試有什麼幫助?

  軟體公司需要設定“軟體測試架構師”職位嗎?

  軟體測試架構師做哪些事情?

  當人們知道微軟公司、阿里巴巴集團等設有“測試架構師(Test Architect)”職位時,可能會驚奇地問:什麼? 測試團隊也設立“架構師”頭銜嗎?人們對開發團隊設立架構師已經比較習慣了,因為大家知道,在設計一個軟體系統時,需要考慮整個產品架構如何設計

、系統各個元件如何整合在一起、如何相互協調工作,而這些都需要“軟體架構師”來完成,但對測試團隊為何要設立“架構師”頭銜還是不夠清楚,主要是因為不瞭解測試架構從何而來。

  在日常測試工作中,如何選擇測試工具和如何建立統一的自動化測試框架?這是經常困擾我們的問題。除此之外,我們還會碰到如下的一系列問題:

  如何幫助開發人員提高產品設計和程式碼的可測試性?

如何找到更有效的辦法來設計測試用例

 如何通過一些技術手段來提高測試的覆蓋率?

  如何完成複雜系統的非功能性(效能、安全性、相容性、可靠性等)測試任務?

  如何通過分析系統測試結果,找出系統存在的問題?

  能否對測試技術的發展趨勢做出正確判斷,從而更有針對性地提高測試團隊的技術能力?

  舉例、暗喻

  測試架構從何而來?其實它就是為了解決上述問題而產生的。從基本的觀點看,測試架構是由軟體系統技術架構和軟體測試框架(特別是自動化測試框架)構建的需求而定。這些需求,決定了以下從不同方面所形成的測試架構。

  大家都能理解,越早進行測試,就能越早地發現缺陷,對提高產品質量、降低企業成本就越有利,更重要的是越能預防系統 設計時出現嚴重的缺陷。如果所設計的系統架構存在嚴重的缺陷,直到系統整合測試時才發現,所造成的返工將是可怕的。這就需要測試人員對設計進行復審、評 審。測試人員應參與系統架構及其元件介面等設計的審查,包括是否全面考慮非功能特性、各個特性的可測試性評估、設計的合理性等。

  從軟體系統來看,如何驗證系統的效能、安全性、可靠性和可伸縮性等,例如網站能否支援擴充套件到100M的點選率,投票系統是否安全等都需要對系統架構進行分析,建立測試概念模型,從而科學、有效地完成認證。

  現在的系統越來越複雜,其設計往往不是一蹴而就的,需要不斷地重構和優化,而這些工作是基於以前版本的測試結果(包 括發現的問題)來實施的。測試人員在完成系統測試後,可以通過對測試結果的分析發現問題,如系統效能瓶頸、安全漏洞等,進而可以對系統的效能、可靠性、安 全性等改善提出有價值的建設性意見。

  在系統功能測試時,需要對功能進行合理的劃分、歸類,建立用例模型,設計合理的測試結構。

  從測試工作自身來看,需要建立合適的測試管理系統,包括測試用例庫的設計、缺陷跟蹤機制等。

  設計自動化測試框架,包括整合測試環境、測試指令碼分層處理、執行結果自動生成報告等。

  掌握測試技術發展趨勢,研發新的測試方法,並藉助測試工具來實現,例如,在安全性測試上如何採用合適的模糊測試方法。

本文出自seven的測試人生公眾號最新內容請見作者的GitHub頁:http://qaseven.github.io/


相關文章