2014-09-28 62 views
0

可以測試驅動開發正式驗證嗎?有沒有保證程序正確並正常工作?選擇測試有沒有正式的基礎?有什麼算法可以遵循它嗎?我可以驗證測試驅動開發嗎?

+1

測試驅動開發是不是專門測試,但關於通過測試驅動程序的設計。作爲測試 - 他們只確認沒有*已知*錯誤。如果你想確保你的測試遵循給定的業務邏輯 - 爲測試編寫測試,爲測試測試測試。 – zerkms 2014-09-28 09:08:45

回答

4

TDD沒有銀彈。您仍然需要編寫代碼,並且仍然可以在邏輯和代碼中犯錯誤。我將TDD看作是一種思考工具,可以幫助您以非常系統的方式解決問題。

這裏有一些文章,可以幫助你在什麼算法遵循條款:

The 3 rules of TDD

The Transformation Priority Premise

1

這是一個很好的點,如果沒有系統做什麼正式的規範,編寫一套已知足夠的測試是很困難的。這裏有一些論文,它們可能會有所幫助,從他們的摘要報價沿:

http://www.pst.ifi.lmu.de/~baumeist/publications/baumeister04a.pdf

「這篇文章的目的是要表明,它是可能的,適當的工具支持,正式規格與測試相結合而不會失去測試驅動開發的敏捷性。「

http://wiki.overturetool.org/images/d/df/WS9Mochio.pdf

「本文介紹使用VDM ++的正式規範語言可擴展的靈活形式(SAF)的軟件開發方法的基礎上,這是關鍵任務或大型軟件開發的敏捷方法」

https://online.tugraz.at/tug_online/voe_main2.getVollText?pDocumentNr=275810&pCurrPk=67400

「在本文中,我們提出了幾種技術結合成一個正式的敏捷開發流程:基於模型的測試,正式的模型,模型細化,模型檢驗和測試驅動的開發。」

0

TDD是一個基於實例的經驗過程,而不是基於證明的方法。就正確性而言,只有實踐者的嚴謹才允許。 TDD提供關於如何如何由測試驅動的程序,而不是什麼編程或測試 - 你可以幾乎TDD完美的執行,什麼都不做,或通過無知的測試。

然而,您可以應用傳統的測試技術,如Equivalence Partitioning來增加TDD測試的完整性。 Code coverage分析還提供了有關您的測試有效性的(不完整)視圖。

對於更多的定理證明爲導向的方法,你可以檢查出Property-based Testing。它可以用TDD思維攻擊,儘管在這樣的背景下,TDD循環肯定不會看起來像規範的循環。

0

能測試驅動開發正式驗證嗎?

由於測試驅動開發的主要目標不是產生測試,而是提供方法來設計和編碼,因此沒有對測試驅動開發的正式驗證。

是否有任何保證該程序是正確的並且正常工作?

我不認爲有充分的保證,無論我們採取哪種方法,程序都是正確的。

有沒有正式的選擇測試的基礎?

我們在TDD中選擇測試的方式是通過編寫那些應該引導我們完成下一個我們即將編寫的代碼單元的實現的方法。

是否有任何算法可以遵循它?

這其實很簡單(但很難熟練掌握)。

  1. 想想應該寫的下一個代碼單元。
  2. 編寫一個失敗的測試,因爲沒有實現代碼。
  3. 編寫代碼並確認測試成功。
  4. 重構