敏捷測試,TDD ATDD

2021-06-28 02:28:45 字數 1924 閱讀 5669

現今軟體產品豐富多彩, 任何產品都有其競爭與替代產品,產品發布與更新週期也越來越短,敏捷開發正是在這樣市場環境而誕生並流行,其迭代反饋、擁抱變化的理念和方法,能夠使得團隊更能開發出符合市場和客戶的高質量軟體。在敏捷軟體開發領域,更注重的以人為核心,迭代,循序漸進的開發方法,通過一系列的方法把市場和客戶的需求和期望分散到個整個軟體的生命週期中,從而使軟體產品質量風險降低,能夠最大可能的符合市場和客戶的需求。而傳統的開發模式基於**控制的計畫,沒有足夠的迭代和反饋理念和方法,猶如把所有錢都投資到一件事上,導致風險很大。

敏捷開發的最突出特性就是擁抱變化,需求的變動是必不可少的,每次的決定和需求的調整都是將產品開發推向更正確的方向。而在接受變化的同時,會對軟體架構、編碼、測試、文件都會造成很大影響,這就要求有嚴格的質量控制流程,否則,最終將可能使質量出現大問題。如可擴充套件性、架構、可用性、測試穩定性

bug 等。

質量就是軟體產品對於某個(或某些)人的價值

「正確的軟體」及「軟體執行正確」二者相輔相成,前者關係到軟體的成敗,後者關係到軟體的好壞。

在敏捷開發流程中,測試不再是瀑布試開發流程的乙個環節,而是全程參與整個開發流程。測試人員應該持續的反饋、溝通、分享與學習在這個過程中。

乙個良好的敏捷測試人員除了應該具備測試的基本技能,也應具有批判性思維,分析和調查技能。他們了解風險,對軟體中的錯誤有深刻的理解與分析,擅長探索性測試。他們有良好的溝通技巧,希望了解客戶在做什麼,以此更好地理解客戶的軟體需求。同時敏捷測試人員應該具有優秀的技術能力,如系統管理,資料庫,網路等等。對於程式設計能力,我個人認為還是很必要的,這樣才能與開發人員進行平等的對話,也才能知道如何與他人合作實現自動化測試。

測試驅動開發

(test-driven development tdd),只涉及到開發者,基本流程如下:

在我的實際工作中,

tdd在web api testing中得到很好的應用,但有下面的幾個問題:

後來我們做了一些改進,作為測試人員我們對所有

services業務邏輯是非常熟悉的,我們建立資料生成器根據實際業務場景,然後開發人員在他們測試用例引用動態生成的資料物件,我們也建立了一系列的driven, stub 模組,去模擬真實的呼叫環境 。在這裡我想說的是,做這些事是需要時間的,所以對於乙個大而且複雜,周期長的專案,這些時間成本的付出我認為是非常值得的,否則就得不償失了。更多細節,請看

「高質量」的軟體,可以認為是:能為客戶在最少時間內,帶來最大價值的軟體。測試人員在測試軟體的時候,所有的測試標準也將圍繞這個「高質量」的衡量標準進行,乙個高質量的軟體,不僅要能夠按照既定的設計良好執行,還應該是乙個很好用的軟體。只有客戶能夠方便的使用軟體,軟體才能為客戶創造價值,也才能稱該軟體為乙個高質量的軟體。所以測試團隊在軟體測試的過程中,要時刻站在客戶的角度思考問題,設計測試用例,以及測試產品。

這裡就不得不說

acceptance test-driven development(atdd), 在開發之前,業務人員,測試以及開發人員,甚至包括客戶一起討論需求,確定使用者想要軟體做什麼與不做什麼。然後擬定驗收標準,規劃制定驗收測試用例。這些測試用例不一定要自動化。其實在實際工作中,驗收測試用例都是最為核心功能,通常我們會把p1,p2的用例都自動化。在敏捷開發過程中,測試用例自動化的過程與開發是類似的,也是在不斷增加新功能與重構中進行的。

這種測試方法的思路就是通過積極討論挖掘需求上的細節,使使用者深入思考他們到底什麼是他們想要的,比如邊界條件,配置或者使用者操作順序等等,而不必等到測試過程中提交了一大堆

bug後才達到共識。提取的驗收標準表示為自然語言,而不是程式語言,這能使我們完全從任何技術細節與依賴中脫離而與期望值直接銜接。在自動測試框架中,我們也能慢慢理順核心的業務流程,然後使我們用例基於業務模型進行測試。

具體的實施細節,請參考下面的文件,講得非常詳細

除此以外,我們可能看到一些其它概念

,比如tdr,ftdd, bdd, and stdd, 我覺得與atdd大同小異,只是叫的名稱不同而已。

敏捷開發 敏捷測試

敏捷測試的定義 首先敏捷測試是敏捷的一種,原有測試定義中通過執行被測系統發現問題,通過測試這種活動能夠提供對被測系統提供度量等概念還是適用的。在傳統的測試定義上,還需要新增 敏捷測試是遵循敏捷宣言的一種測試實踐 強調從客戶的角度,即使用系統的使用者的角度,來測試系統 重點關注持續迭代的測試新開發的功...

敏捷測試 傳統測試

敏捷測試 首先敏捷測試 agile testing 是測試的一種,敏捷測試的理念是,和編碼一樣,測試是開發的乙個關鍵部分。在敏捷中,測試被直接整合到軟體開發過程中,以便盡早 頻繁地發現bug。因此,測試人員可以在開發過程的每乙個節點上發現問題,從而使產品快速走向發布。敏捷測試的特點 傳統測試 傳統測...

敏捷開發與敏捷測試

敏捷開發 1.敏捷型方法是 適配性 而非 預設性 重型方法試圖對乙個軟體開發專案在很長的時間跨度內作出詳細的計畫,然後依計畫進行開發。這類方法在計畫制定完成後拒絕變化。而敏捷型方法則歡迎變化。其實,它們的目的就是成為適應變化的過程,甚至能允許改變自身來適應變化。2.敏捷型方法是 面向人 的 peop...