測試,從哪裡來,到哪裡去?
這裡不談哲學,也不是無的放矢,而是有感而生。這要回到兩個月前,看到兩篇文章:
- 軟體測試人,你們在逐漸失去一些東西
- 測試十二年-六道輪迴後的初心能否找回
作者都是一線的資深軟體研發人員,瞭解測試的過去,但更受目前測試現狀的煎熬:
-
面對這些被測物件,你們的質量理念是什麼?
-
不知道後來人會怎麼評價這一段歷史,從質量技術人的角度看,理論與應用不但停滯不前、還在不斷後退“追求形,忽略神,小心技術革命的坑”
-
測試用例,一個熟悉而又陌生的名詞
-
大部分人對於測試生涯、測試價值、測試發展、測試方向都有一種悲觀的預感。
-
我們都是不敢正視這些問題的,因為我們會被徹底打敗
-
有沒有去思考測試本身的核心定位,測試本身的經驗教訓到底是什麼?
-
測試的目的和初心到底是什麼?
-
我們還能找回初心嗎?
-
還能靜下心來思考我們真的是正確的做測試嗎?
-
真的只有這樣的一條路嗎?我們還能有其他的路嗎?
-
......
才有瞭如文章標題那樣的演講。
軟體開發模式、技術和環境進步很快,但軟體測試則感覺進步較慢、****比較被動,這其中的原因可能很多,軟體測試的從業人員少,研究軟體測試的人更少、在軟體測試上的投入也比較低。
1. 今天的軟體測試如何呢?
積極的一面:
-
重視持續整合(CI)建設、關注DevOps
-
非常關注自動化測試(TA)
-
多數公司建成(TA)測試平臺
-
開始大量使用開源測試工具
-
程式碼靜態分析有較大提升
-
大資料、雲平臺的測試初有成效
-
軟體測試社群活躍
-
…..
負面(主要問題):
-
公司的質量基建年久失修
-
內建質量文化沒有形成,缺陷預防做得較差
-
熱衷於招測試開發、重複造輪子,但TA成效低
-
熱衷技術,而缺乏對測試自身的思考
-
面對軟體開發新模式缺乏應對策略,如敏捷測試是形似而神不似
-
介入研發深度不夠,測試效率偏低
-
許多困惑依舊困擾不少測試人員
-
……
大多數測試人員還有下列困惑:
-
測試與開發有沒有界限?
-
誰來做測試更好?
-
如何更好地開展測試活動?
-
如何快速反饋質量?
-
測試效果的度量?
-
測試有沒有發展前途?
-
……
再舉一個例子,自動化測試是大家最為關心的、最願意投入的部分,但成效很低。例如:國際上調查報告顯示:
根據國內今年的調查結果,顯示國內TA狀況更糟糕:
如果在深入TA的投入產出(RoI),可能就更糟糕。在TA上投入很大,而收益很低,特別是在需求不穩定、變更頻繁的情況下,收益更不明顯。
2. 重新找回測試的初心
——按時交付使用者滿意的產品
(許多測試人員不瞭解 軟體質量模型 ,這是很可怕的)
如何找回初心?就是要多思考思考測試自身的問題——測試的質量(充分性)和測試的效率,從下列這些方法不斷思考如何做好軟體測試:
-
如何做好軟體測試的策劃、分析、設計、執行、評估、管理?
-
如何從被測物件——產品自身來提高其可測試性?
-
如何在組織中營造良好的質量文化?
-
如何制定有效的測試策略?
-
如何運用好測試方法、技術、工具?
-
如何建立穩定的、和開發環境整合的基礎設施?
-
.....
測試是不能窮盡的,不管採用什麼技術和工具,測試總是有風險的,我們就要去思考如何降低測試風險,包括測試輸入、操作和上下文(應用場景)、業務規則組合、環境的多樣性、Test Oracle的啟發性等:
說起測試金字塔,十有八九會提到這個:
這裡實際是展示了自動化測試(投入)策略,但測試不只有一座金字塔,還有兩座更為重要的金字塔:
因為經常感受到不少測試人員忽視測試需求分析、缺乏測試分析和設計的思路,甚至本末倒置,一上來就討論功能及其測試用例,忽視業務、忽視使用者行為、應用場景的分析,而產品最終是需要滿足業務需求、滿足使用者的需求,能適應不同的應用場景。測試設計的確重要,需要依賴所設計的測試用例(測試指令碼)來執行測試,測試的覆蓋率體現在測試用例的覆蓋上,但沒有測試分析作為基礎,測試設計會忽視某些測試區域、測試風險等。如果按照右邊金字塔這樣的分析設計之路去探索、逐步細化、逐步擴充套件,測試的充分性就有良好的保證。
- 測試的明天
當我們迴歸初心,在今天快速發展、激烈競爭的環境下,還會遇到一些新的挑戰:
-
極速測試
-
高度的自動化
-
開發者自測(賦能、責任心)
-
大規模系統的複雜性
-
新技術
-
……
如何應對這些挑戰呢?
(這裡省去一萬字,如文化與流程重構、技術提升、開發與測試的融合 ... )
1) 契約驅動測試(CDT)
-
降低服務整合的難度,將其分解為單元測試和介面測試
-
團隊能以一種離線的方式完成驗證, 並將聯調的成本幾乎降到零
-
基於契約讓介面的變更有跡可循
-
常用的CDT框架 Janus、Pact、Pacto和Spring Cloud Contract
- MBT的高度自動化, **幫助我們克服下列問題:
-
自動化程度低
-
模糊的需求
-
有限的測試覆蓋率
-
測試資料瓶頸
-
某些元件無法正常工作
- 端到端的、全覆蓋的TA
-
ATDD/BDD、需求可執行
-
全SDLC
-
Harness/高度整合
-
跨平臺
-
可測試性保障
-
支援CD、DevOps
image
4)AI助力測試
-
智慧的單元測試
-
智慧的UI/API測試
-
AI驅動的指令碼生成
-
優化或補充測試用例
-
質量風險評估的自我調整
-
缺陷診斷機器人(DDB)
-
測試環境的智慧運維
-
……
5)總結:測試發展趨勢
-
ATDD/BDD/RBE,需求即測試~徹底左移
-
CI/DevOps: 測試與開發、運維更加融合
-
分層測試、API/契約驅動測試
-
ET + TA: 更有效的測試策略
-
藉助MBT+AI,高度、智慧的自動化測試
-
高度的視覺化、整合化的過程監控、線上測試與實時反饋
-
測試人幹更具創造性、綜合性分析建模的工作
結語:
跟大家推薦一個學習資料分享群:747981058,裡面大牛已經為我們整理好了許多的學習資料,有自動化,介面,效能等等的學習資料!人生是一個逆水行舟的過程,不進則退,咱們一起加油吧!
本文轉載自微信公眾號,如有侵權,請聯絡刪除!