1. 程式人生 > >測試,從哪裡來,到哪裡去?

測試,從哪裡來,到哪裡去?

這裡不談哲學,也不是無的放矢,而是有感而生。這要回到兩個月前,看到兩篇文章:

  • 軟體測試人,你們在逐漸失去一些東西
  • 測試十二年-六道輪迴後的初心能否找回

作者都是一線的資深軟體研發人員,瞭解測試的過去,但更受目前測試現狀的煎熬:

  • 面對這些被測物件,你們的質量理念是什麼?

  • 不知道後來人會怎麼評價這一段歷史,從質量技術人的角度看,理論與應用不但停滯不前、還在不斷後退“追求形,忽略神,小心技術革命的坑”

  • 測試用例,一個熟悉而又陌生的名詞

  • 大部分人對於測試生涯、測試價值、測試發展、測試方向都有一種悲觀的預感。

  • 我們都是不敢正視這些問題的,因為我們會被徹底打敗

  • 有沒有去思考測試本身的核心定位,測試本身的經驗教訓到底是什麼?

  • 測試的目的和初心到底是什麼?

  • 我們還能找回初心嗎?

  • 還能靜下心來思考我們真的是正確的做測試嗎?

  • 真的只有這樣的一條路嗎?我們還能有其他的路嗎?

  • ......

才有瞭如文章標題那樣的演講。

軟體開發模式、技術和環境進步很快,但軟體測試則感覺進步較慢、****比較被動,這其中的原因可能很多,軟體測試的從業人員少,研究軟體測試的人更少、在軟體測試上的投入也比較低。

1. 今天的軟體測試如何呢?

積極的一面:

  • 重視持續整合(CI)建設、關注DevOps

  • 非常關注自動化測試(TA)

  • 多數公司建成(TA)測試平臺

  • 開始大量使用開源測試工具

  • 程式碼靜態分析有較大提升

  • 大資料、雲平臺的測試初有成效

  • 軟體測試社群活躍

  • …..

負面(主要問題):

  • 公司的質量基建年久失修

  • 內建質量文化沒有形成,缺陷預防做得較差

  • 熱衷於招測試開發、重複造輪子,但TA成效低

  • 熱衷技術,而缺乏對測試自身的思考

  • 面對軟體開發新模式缺乏應對策略,如敏捷測試是形似而神不似

  • 介入研發深度不夠,測試效率偏低

  • 許多困惑依舊困擾不少測試人員

  • ……

大多數測試人員還有下列困惑:

  • 測試與開發有沒有界限?

  • 誰來做測試更好?

  • 如何更好地開展測試活動?

  • 如何快速反饋質量?

  • 測試效果的度量?

  • 測試有沒有發展前途?

  • ……

再舉一個例子,自動化測試是大家最為關心的、最願意投入的部分,但成效很低。例如:國際上調查報告顯示:

 

根據國內今年的調查結果,顯示國內TA狀況更糟糕:

 

 

如果在深入TA的投入產出(RoI),可能就更糟糕。在TA上投入很大,而收益很低,特別是在需求不穩定、變更頻繁的情況下,收益更不明顯。

2. 重新找回測試的初心

   ——按時交付使用者滿意的產品

 

(許多測試人員不瞭解 軟體質量模型 ,這是很可怕的)

如何找回初心?就是要多思考思考測試自身的問題——測試的質量(充分性)和測試的效率,從下列這些方法不斷思考如何做好軟體測試:

  • 如何做好軟體測試的策劃、分析、設計、執行、評估、管理?

  • 如何從被測物件——產品自身來提高其可測試性?

  • 如何在組織中營造良好的質量文化?

  • 如何制定有效的測試策略?

  • 如何運用好測試方法、技術、工具?

  • 如何建立穩定的、和開發環境整合的基礎設施?

  • .....

 

測試是不能窮盡的,不管採用什麼技術和工具,測試總是有風險的,我們就要去思考如何降低測試風險,包括測試輸入、操作和上下文(應用場景)、業務規則組合、環境的多樣性、Test Oracle的啟發性等:

 

說起測試金字塔,十有八九會提到這個:

 

這裡實際是展示了自動化測試(投入)策略,但測試不只有一座金字塔,還有兩座更為重要的金字塔:

 

因為經常感受到不少測試人員忽視測試需求分析、缺乏測試分析和設計的思路,甚至本末倒置,一上來就討論功能及其測試用例,忽視業務、忽視使用者行為、應用場景的分析,而產品最終是需要滿足業務需求、滿足使用者的需求,能適應不同的應用場景。測試設計的確重要,需要依賴所設計的測試用例(測試指令碼)來執行測試,測試的覆蓋率體現在測試用例的覆蓋上,但沒有測試分析作為基礎,測試設計會忽視某些測試區域、測試風險等。如果按照右邊金字塔這樣的分析設計之路去探索、逐步細化、逐步擴充套件,測試的充分性就有良好的保證。

  1. 測試的明天

當我們迴歸初心,在今天快速發展、激烈競爭的環境下,還會遇到一些新的挑戰:

  • 極速測試

  • 高度的自動化

  • 開發者自測(賦能、責任心)

  • 大規模系統的複雜性

  • 新技術

  • ……

如何應對這些挑戰呢?

(這裡省去一萬字,如文化與流程重構、技術提升、開發與測試的融合 ... )

1) 契約驅動測試(CDT)

  • 降低服務整合的難度,將其分解為單元測試和介面測試

  • 團隊能以一種離線的方式完成驗證, 並將聯調的成本幾乎降到零

  • 基於契約讓介面的變更有跡可循

  • 常用的CDT框架 Janus、Pact、Pacto和Spring Cloud Contract

  1. MBT的高度自動化, **幫助我們克服下列問題:
  • 自動化程度低

  • 模糊的需求

  • 有限的測試覆蓋率

  • 測試資料瓶頸

  • 某些元件無法正常工作

  1. 端到端的、全覆蓋的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,裡面大牛已經為我們整理好了許多的學習資料,有自動化,介面,效能等等的學習資料!人生是一個逆水行舟的過程,不進則退,咱們一起加油吧!
本文轉載自微信公眾號,如有侵權,請聯絡刪除!