軟件測試架構師不是一種頭銜,而是一種角色,更重要的是一種能力—對團隊的影響力。軟件測試工程師不是在某一天突然成為一個軟件架構師的,雖然他可能會在某一天被某某經理宣布為測試架構師。任何一個人成為軟件架構師,都是一個漸進的過程,不斷積累經驗,不斷提高自己的技術水平和業務能力,才能逐漸勝任測試架構師的角色。
1、對軟件測試架構師的要求
測試架構師是測試團隊的技術帶頭人,在系統非功能特性的測試、自動化測試框架等方面發揮著主導作用,對開發團隊具有很好的溝通能力和影響力。測試架構師雖然不管理團隊,不通過管理權利來驅動下屬執行某項工作,但通過溝通與組織協作,讓成員愿意采納其建議,配合其完成某項工作,從而實現個人價值,為公司做出應有的貢獻。
測試架構師應具有較強的抽象能力和創新能力,通過一個全局的觀點、宏觀的視角來理解軟件系統作為一個整體是如何工作的,可以將具體問題抽象為一個模型,從而解決一類問題,并通過不斷創新,找到解決問題的新方法,推廣新的測試技術。同時,測試架構師作為測試技術帶頭人,就是為測試團隊樹立技術標桿,提供技術指導、做出技術決策,具體工作有:
了解國內外技術趨勢,具有很好的前瞻性,做好測試團隊的技術規劃,確保團隊朝著正確的技術方向持續前進。
結合公司具體情況,引入和推廣適合公司需要的新技術。
了解業界的普遍實踐,對測試自動化或測試工具所涉及的技術提供很好的支持,或引導團隊向正確的方向努力,不斷地改進自動化測試工作。
具有豐富的技術經驗,對技術可行性一般能做出正確的評估。
具有一線的測試經驗,可以融會貫通,使技術真正能為測試服務。
業務基礎扎實,能很好理解客戶需求,確定測試需求,能為各種技術困難的測試項目提供有效的解決方案。
2、軟件測試架構師的主要職責
測試架構師的主要職責如下。
審查系統架構、系統構件/組件及其接口關系等設計是否合理。
確保系統的可測試性。
需要以全局的視角來把握軟件測試項目,不僅要關注功能性需求,而且要關注非功能性測試。
制訂軟件系統的測試策略和方法,特別是在系統的性能、安全性、穩定性、可靠性等方面的測試方法、技術線路和質量標準。
構建復雜的系統測試環境,并分析、解決測試中出現的較深的技術問題(Troubleshooting),幫助做好缺陷的隔離。
對系統(性能、安全性、穩定性、可靠性)測試做出分析、評估,并提出為改善系統性能、可靠性而進行的設計修改、代碼重構的具體建議。
設計測試自動化的技術框架,主持重要的測試工具的研究、評估、設計。
參與系統部署的設計。
參與新技術的評估和引進。
幫助改進測試流程、提高測試效率。
測試架構師通過上述技術活動,幫助測試項目、測試團隊提高測試效率和質量。為了更好地理解測試架構師的職責,在這里,將測試架構師和軟件開發架構師、測試經理進行比較,如表2-1、表2-2所示。
表2-1 測試架構師和軟件開發架構師的比較
| 測試架構師 | 軟件開發架構師 |
目標 | ①提高測試的效率和質量 ②提高系統的可測試性,特別是非功能特性的可測試性 | 滿足系統非功能特性的要求,如完成高性能、高可靠性和高安全性的系統設計 |
主要工作 | 設計測試平臺 | 設計軟件產品的系統架構 |
關注 | 產品的測試過程 | 產品的研發過程 |
影響范圍 | 測試社區、開發團隊 | 開發社區、測試團隊 |
技術范圍 | ①系統架構設計模式、自動化技術、建模技術、測試用例設計技術等 ②測試模型、方法、技術、工具等各方面創新 | ①系統架構設計模式 ②面向對象的需求分析、設計和編程等全面技術能力 ③熟練使用軟件開發平臺(如Eclipse) ④資深的編程技術及其他開發技術 |
能力 | ①足夠的技術前瞻能力 ②足夠的影響力 ③掌握軟件系統架構設計知識 ④深刻理解測試流程 ⑤精通測試技術、方法 | ①掌握軟件系統架構設計知識 ②掌握一類以上軟件開發技術 ③精通一種以上開發語言 |
表2-2 測試架構師和測試經理的比較
| 測試架構師 | 測試經理 |
目標 | ①提高測試的效率和質量 ②系統的可測試性,特別是非功能特性的可測試性 | ①提高測試的效率和質量 ②不斷改進測試流程 ③加強團隊建設,滿足組織發展的需求 |
主要工作 | ①設計測試平臺,包括自動化測試框架 ②確定測試方法和測試策略 | ①測試團隊的管理 ②測試項目的管理,主要包括計劃、人員安排和進度監控等 |
責任、決策范圍 | ①測試方法的有效性 ②技術解決方案,如自動化測試框架的設計與實施 ③測試技術規范,包括測試覆蓋率衡量 ④從技術角度來幫助團隊理解架構 ⑤團隊的技術發展之路 | ①使客戶的價值最大化 ②團隊的能力和績效 ③項目的結果,特別是軟件產品質量評估結果 ④事先定義的質量標準 ⑤和其他團隊的溝通、協調 ⑥非技術問題,包括測試資源調度、項目里程碑確定等 |
關注 | 技術儲備、技術問題和發展趨勢 | 測試過程和測試人員的管理 |
工作方式 | 教練式技術指導 | 疏通、引導等各種技術管理方式 |
能力 | ①足夠的技術前瞻能力 ②足夠的影響力 ③掌握軟件系統架構設計知識 ④深刻理解測試流程 ⑤精通測試技術、方法 | ①團隊管理能力,包括溝通能力 ②項目管理能力,包括問題分析和解決能力 ③測試專業知識,以及其他軟件工程知識 |
3、軟件測試架構師的成果
軟件測試架構師的成果如下。
對軟件產品需求定義、系統設計和代碼編程等可測試性做出詳細要求的規范性文檔。
對系統設計、單元測試等的驗收標準。
軟件新系統的測試方案,包括采用的測試策略、測試技術、測試工具等。
自動化測試框架,包括自動化系統架構設計、測試腳本語言等。
得到改善的測試流程,特別是關系到技術層面的單元測試流程、自動化測試實施流程等。
測試過程性能、測試階段性成果質量、產品質量等的度量體系。
軟件組織的測試技術規劃,包括測試技術發展趨勢、新技術引入研究和評估報告、未來待解決的關鍵測試技術列表等。
特定的或專項的測試方法或技術的研究成果。
不同級別測試工程師所要掌握的各種技術能力集合及其技術等級評估辦法。
提升測試效率的各種有效測試方法、實踐指導等文章。