七、全生命周期管理
? ? ? ? 軟件的生命周期包括:需求、設計、開發、測試、運維。而為了測試整體質量,測試團隊需要在參與每個生命周期的環節,而不局限于僅僅是測試階段,為了避免形式主義,每個環節都應該有一定的產出。這種方式也經常被稱為“測試前后延”。
7.1、需求階段
? ? ? ? 該階段測試就需要介入,主要的目的是為了了解客戶最原始最基本的需求,也同時促使測試團隊了解業務。同時在此階段,功能要摸清測試中的一些關鍵因素,如渠道列表、基本數據需求、業務前后依賴關系,業務重要程度,關聯系統列表,最最重要的,要協助業務人員梳理確認業務規則,并系統詳細的進行規則編號,這是設計測試案例的重要依據,否則案例充分性無從談起。而非功能團隊在此階段要主導業務部門梳理非功能需求,將一些模糊性性能要求盡可能的進行量化,如業務人員說這個交易需要反映很快,那么多快算是快,0.1秒還是2秒,要引導其進行量化。?
7.2、設計階段
? ? ? ? 功能在此階段要分析系統上下文關系圖,基本環境需求,用戶詳細崗位角色,系統規則等,并要在此階段編制測試方案,著手開始準備測試環境和數據等相關工作。非功能測試在此階段要明確掌握系統架構,并對重要的技術手段如流控機制、負載均衡策略、數據庫備份策略等進行分析確認,并著手編制方案。
7.3、開發階段
? ? ? ? 在開發階段,功能測試要開始編制測試范圍和測試案例,并要組織行之有效的評審等質量保證環節工作,非功能測試則要開始著手準備腳本,非功能測試環境數據等。而此時從保證系統質量的角度來看,開發階段是測試中最重要的一個階段。
? ? ? ? 在開發階段除了要進行fortify、gtest這些常規的代碼掃描外,還要進行詳細的單元測試,如使用java語言,則可以用集成了junit功能的產品進行,而可是話的執行結果分析,可以有效查看是否有代碼未進行測試覆蓋,同時,junit等工具只能保證代碼能夠走到,但是處理邏輯是否正確,是否返回了預期結果,則必須在單元測試階段進行嚴格的把關,否則單元測試就會流于形式。建議由開發組長在進行代碼review的時候,同步審核單元測試案例,以保證測試效果。
7.4、測試階段
? ? 測試階段是測試中心的核心職責工作階段,該階段可以分為單元測試(時間上與開發階段并行)、應用組裝、用戶驗收、版本準生產驗收共4個大的階段,每個階段都有各自階段的詳細測試目標與測試技術手段,這里不再詳細論述。
7.5、運維階段
? ? ? ? 很多公司測試在過了測試階段之后,就不再關心,最多是生產出了問題后通報相應的開發和測試團隊。但運維階段至關重要,測試需要在此階段多進行跟蹤,并在有條件情況下,參與一部分系統運維工作,特別是非功能測試,在參與之后,能更加準確掌握系統各支交易在生產上的表現和壓力情況,更好的獲取性能測試指標。功能測試則可以在此階段發現生產上出現的生產問題,是因為何種原因導致了缺陷逃逸,并依此進行改進測試方法,豐富測試案例庫,不斷改進測試質量。
? ? ? ? 通過從需求到運維階段的測試參與,形成閉環結構,可以不斷深入項目,提高系統測試質量。