測試驅動開發(TDD)


測試應用有很多方法,例如,黑盒測試、白盒測試、迭代測試等,然而,這些方法都是從宏觀上描述測試的。為了在技術上保障測試的效果,Kent Beck(也是極限編程創始人)提出了在結果上進行限制的測試方法,也就是在編寫程序之前,先確定程序中的變量、控件等元素允許的值。如果在編寫程序時,變量、控件中的值與事先確定的值不相符,就說明程序的某處有bug,這種測試方法就是TDD(Test Driver Development,測試驅動開發)。TDD和Opengl ES一樣,並不是具體的軟件或程序庫,只是一套測試框架(Junit),可用於對Android應用程序進行TDD測試。

 

測試驅動開發即TDD是敏捷軟件開發方法的重要組成部分。TDD是從極限編程中發展而來,它既可以用在設計時也可以用在開發實踐中。TDD把業務需求轉化為可以運行的測試代碼並具有如下的優點
1.TDD從一開始就保證了code的質量
2.大多數TDD開發人員編寫出來的code都遵循SOLID原則
3.TDD確保了代碼與業務需求之間的高度一致性
4.TDD鼓勵創建更簡單,針對性更強的庫與API
5.TDD鼓勵與企業溝通
6.TDD有助於從系統中清除那些沒有用到的code
7.TDD提供內置的回歸測試
8.TDD終止了遞歸錯誤的出現
9.如果開發程序時能夠時刻記着可測試性,所得到的結果就是一種開放的,可擴展的,靈活的體系結構。

在軟件項目管理中,軟件開發實踐一直在追求一種在業務需求,當前技術能力與能最大程度提高開發人員效率的方法之間的一種平衡,敏捷軟件開發方法也不例外。在了解敏捷開發方法之前需要清楚敏捷宣言。

敏捷宣言

  它描述了一組軟件開發方法的關鍵價值,也是敏捷軟件開發方法所遵守的原則。其具體內容如下:

個人與互動 大於 流程與工具
可用的軟件 大於 文檔
與客戶的合作 大於 合約和商定
響應變化 大於 遵循計划

敏捷宣言所描述的軟件開發方法具有更快速,更輕型的特點;它解決了傳統瀑布軟件開發方法和迭代,遞增方法的一些缺陷。從敏捷宣言中可以看出敏捷方法應該具備如下特點:

1.敏捷方法是適應型的(Adaptive),而不是預測型(Predictive)的。敏捷方法擁抱變化,利用變化來發展,甚至改變自己,最后完善自己。也就是要用重構(Refactoring)。

2.敏捷方法一人為本而不是以過程為本,傳統方法把開發者看作一個生產要素(分析員,測試員,程序員),擁有大量的中間產品(需求規約,設計模型等),而忽視了作為決定因素的人的特殊性。敏捷開發它只寫有必要的文檔,或盡量少寫文檔,敏捷開發注重的是人與人之間,面對面的交流,所以它強調以人為核心。

3.迭代增量式的開發過程,敏捷方法以原型開發思想為基礎。迭代是指把一個復雜且開發周期很長的開發任務,分解為很多小周期可完成的任務,這樣的一個周期就是一次迭代的過程;同時每一次迭代都可以生產或開發出一個可以交付的軟件產品。

敏捷是一種指導軟件開發的思想,它並沒有指定具體的軟件開發方式或流程,目前常用的具體敏捷軟件開發方法或流程如下:

  • scrum
  • XP(極限編程)
  • 功能驅動開發
  • Clear case
  • 自適應軟件開發

雖然這些軟件開發方法的實現方式完全不同,但是他們具有如下的共同特征:

  • 都將團隊內部的交流放在優先地位,即鼓勵開發人員,業務用戶和測試人員經常交流。
  • 注重項目的透明性;開發團隊不是生存在一個黑盒中,不能向團隊的其他成員隱藏自己的行為,都是用非常公開的工具來保證團隊成員能夠獲得足夠的信息
  • 團隊成員都是相互負責的;團隊不會因為某一個人而成功或失敗;他們的成功與失敗是按整個團隊來衡量的
  • 開發人員沒有自己的codebase,整個團隊擁有完整的codebase,每個人都對其質量負責
  • 工作是在短暫的開發周期中完成的,理想情況下,每個周期結束時會發布。
  • 應對變化的能力是這種方法的基礎
  • 一個系統的大致框架是提前定義的,但詳細設計要等到實際安排功能開發計划時才會進行

軟件測試干貨

 

 

在軟件項目管理中,軟件開發實踐一直在追求一種在業務需求,當前技術能力與能最大程度提高開發人員效率的方法之間的一種平衡,敏捷軟件開發方法也不例外。在了解敏捷開發方法之前需要清楚敏捷宣言。

敏捷宣言

  它描述了一組軟件開發方法的關鍵價值,也是敏捷軟件開發方法所遵守的原則。其具體內容如下:

個人與互動 大於 流程與工具
可用的軟件 大於 文檔
與客戶的合作 大於 合約和商定
響應變化 大於 遵循計划

敏捷宣言所描述的軟件開發方法具有更快速,更輕型的特點;它解決了傳統瀑布軟件開發方法和迭代,遞增方法的一些缺陷。從敏捷宣言中可以看出敏捷方法應該具備如下特點:

1.敏捷方法是適應型的(Adaptive),而不是預測型(Predictive)的。敏捷方法擁抱變化,利用變化來發展,甚至改變自己,最后完善自己。也就是要用重構(Refactoring)。

2.敏捷方法一人為本而不是以過程為本,傳統方法把開發者看作一個生產要素(分析員,測試員,程序員),擁有大量的中間產品(需求規約,設計模型等),而忽視了作為決定因素的人的特殊性。敏捷開發它只寫有必要的文檔,或盡量少寫文檔,敏捷開發注重的是人與人之間,面對面的交流,所以它強調以人為核心。

3.迭代增量式的開發過程,敏捷方法以原型開發思想為基礎。迭代是指把一個復雜且開發周期很長的開發任務,分解為很多小周期可完成的任務,這樣的一個周期就是一次迭代的過程;同時每一次迭代都可以生產或開發出一個可以交付的軟件產品。

敏捷是一種指導軟件開發的思想,它並沒有指定具體的軟件開發方式或流程,目前常用的具體敏捷軟件開發方法或流程如下:

  • scrum
  • XP(極限編程)
  • 功能驅動開發
  • Clear case
  • 自適應軟件開發

雖然這些軟件開發方法的實現方式完全不同,但是他們具有如下的共同特征:

  • 都將團隊內部的交流放在優先地位,即鼓勵開發人員,業務用戶和測試人員經常交流。
  • 注重項目的透明性;開發團隊不是生存在一個黑盒中,不能向團隊的其他成員隱藏自己的行為,都是用非常公開的工具來保證團隊成員能夠獲得足夠的信息
  • 團隊成員都是相互負責的;團隊不會因為某一個人而成功或失敗;他們的成功與失敗是按整個團隊來衡量的
  • 開發人員沒有自己的codebase,整個團隊擁有完整的codebase,每個人都對其質量負責
  • 工作是在短暫的開發周期中完成的,理想情況下,每個周期結束時會發布。
  • 應對變化的能力是這種方法的基礎
  • 一個系統的大致框架是提前定義的,但詳細設計要等到實際安排功能開發計划時才會進行


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM