TDD測試驅動開發

2021-08-27 17:44:07 字數 2731 閱讀 4806

tdd是test driven development的簡稱,意為測試驅動開發。測試驅動開發是一種軟體的開發方法。它指在編寫某個功能的**之前先編寫測試**,然後編寫能使測試通過的功能**,逐個測試來實現軟體的開發。測試驅動開發有助於提高**質量和開發進度。

測試驅動開發一般步驟:

1.新增乙個測試

2.執行所有測試,發現新增測試不能通過

3.做一些小改動,讓程式可以執行

4.執行所有測試,並且全部通過

5.重構**

我做的練習是乙個測試乙個四位隨機數的例子(開發工具rubymine)

要求:產生乙個四位數;每位必須是數字;第乙個(或千位)數字不能是0;四位數的每位數字不能相同

首先根據要求寫測試程式,下面是測試程式的基本模版:

describe("number", function () );

aftereach(function())

it("should be four length ", function () );

describe後面的number是對本頁測試的乙個總的描述。

beforeeach(function ( ) {})是對本頁測試的乙個初始化,只要載入過這個頁面,他就會執行。

localstorage.clear();
意為清空本頁涉及儲存的所有資料,包括beforeeach(function ( ) {})執行過的初始化資料

上述測試程式我儲存的檔名是number_spec.js。若要載入此頁需要在specrunner.html中引入。下面是引入的格式:

根據我做的練習,下面是一部分例子:

it("should be four length ", function () );
這個是測試是關於所要求的數字是否是四位的。create_a_number( )是功能函式中的乙個產生隨機數的方法,在此處代表產生的隨機數,而

create_a_number( ).tostring()
將這個隨機數轉化為字串形式,這樣就可以根據字串的長度來測試這個數是不是四位的。

expect(number.length).toequal(4);
expect括號中的內容代表要測試的內容,toequal括號中的內容表示要測試內容的結果,如果不一致則specrunner.html中就會報錯

下面是判斷生成的內容是否是數字:

it("should be a number", function () );
這個測試用到了isnan方法,用來判斷是否全是數字,用的「==」,所以如果是數字則返回值是「true」

下面是判斷這個隨機數是否是隨機產生的,其方法就是測試產生的隨機數中的某個數的概率,設計離散數學相關思想。

it("should be randomly producing", function () 

var same_number = _.filter(numbers,function(number))

var probability = same_number.length/numbers.length;

expect(probability>=0.001 && probability<0.005).toequal(true);

});

通過for迴圈產生一千個隨機數,然後儲存一下,此前我並沒有儲存,而是呼叫產生隨機數的方法返回值,但那樣容易導致電腦卡死,所以我就儲存了一下,這樣在 aftereach(function(){})就加上localstorage.clear(),結束本頁測試後來清除這些資料。

var probability =  same_number.length/numbers.length;
先找到所產生的一千個隨機數中的某乙個,再找與這個隨機數相等的存數在same_number陣列中。通過上面兩個陣列的長度比來對比隨機數的產生概率,下面的expect用到這個概率,給出這個概率的範圍probability>=0.001 && probability<0.005(不要寫成0.001<=probability<0.005),只要這個概率在此範圍就通過測試。概率範圍自己設定。

此前我將產生一千個隨機數及上面將數字轉化為字串和判斷數字的方法均寫到的功能函式中,這樣就不符合測試驅動開發的思想了,也可以將這些方法寫到乙個專門的測試函式中

下面是有關隨機數的功能方法內容,這是我寫的乙個產生所需要求的方法:

function creat_a_number()

var number = one*1000+two*100+three*10+four*1;

localstorage.current_number = number;

return number;

}

math.floor(math.random()*9+1)是產生乙個1到9的隨機數的方法,若是產生0到9就是

math.floor(math.random()*9+0)。

我後面要做的是猜數字,也就是猜這個隨機數,而且若有幾個位置相同且數字相同就返回幾a,若位置不同但數字相同就返回幾b,所以就需要對這個四位數進行拆分,取出每位的數字。這個用到parseint方法,詳細介紹見「

function get_every_number(number)
前三個數字用的是減去上一位值,第四個數字要用減明顯不太合適,它更適合用取餘的方法。這樣就可以將每位的數字取出與所猜測的數字逐位比較,返回相應的值。

TDD 測試驅動開發

test driven development 測試驅動開發是敏捷開發中的一項核心實踐和技術,也是一種設計方 tdd的原理是在開發功能 之前,先編寫單元測試用例 測試 確定需要編 寫什麼產品 tdd雖是敏捷方法的核心實踐,但不只適用於xp extreme programming 同樣可以適用於其他開...

測試驅動開發TDD

測試驅動開發 testdriven development,tdd 的基本思路是通過測試推進整個的開發工作,並不只是單純的測試工作。利用這種測試方法時,若要完成某個功能,某個類,首先不是編譯正式的 而是先編寫測試 考慮其如何使用 如何測試。然後在對其進行設計 正式編碼。t dd具有很強的目的性,是在...

tdd 測試驅動開發

這是一張影響圖 當壓力越大時,所做的測試就會越少。測試越少,犯的錯就會越多,就會感到更大的壓力。這是乙個會造成情境越來越糟的迴圈。我們用事先編寫的測試來驅動開發,因為測試先於開發,所以我們在感到壓力時,就執行這些測試,它們會馬上給我們一種系統良好的感覺,而且會減少開發出錯的次數,進而減少我們的壓力,...