顯示具有 TDD 標籤的文章。 顯示所有文章
顯示具有 TDD 標籤的文章。 顯示所有文章

TDD 安裝軟體準備事項

2016年5月23日 星期一


1.Visual Studio 2013
社群版下載位址
http://go.microsoft.com/fwlink/? LinkId=517284

2.VS套件
a.Specflow Visual Studio Extension – VS2013
https://visualstudiogallery.msdn.microsoft.com/90ac3587-7466-4155-b591-2cd4cc4401bc

b.Unit Test Generator
https://visualstudiogallery.msdn.microsoft.com/45208924-e7b0-45df-8cff-165b505a38d7
c.CodeMaid
https://visualstudiogallery.msdn.microsoft.com/76293c4d-8c16-4f4a-aee6-21f83a571496
3.NuGet 套件

  • Specflow
  • NSubstitute
  • Selenium WebDriver
  • Selenium WebDriver Support Classes
  • FluentAutomation
  • ExpectedObjects
  • Pickles.CommandLine


4.SQL
Visual Studio 2013以上版本內建localDB功能
說明 :https://msdn.microsoft.com/zh-tw/library/Hh510202(v=SQL.120).aspx

5.Fire Fox外掛
  • 因測試需要,建議您一定要安裝 Firefox 瀏覽器,並且安裝 Selenium IDE
6.Chocolatey
安裝套件

Read more...

TDD實務開發筆記

什麼是Unit Test

  1. 最小的測試單位
    粒度最小,以class來說指的是一個方法,
  2. 外部相依為零
    不應該與network、file、class相依
  3. 不具備商業邏輯
    不會有if else 之類的判斷
  4. 測試案例之間相依性為零
    這樣才可以精準的測試出哪個地方有問題
  5. 一個測試案例只測一件事
    不能跟其它案例有相依性,會影響測試結果

Unit Test 特性:First

  1. Fast:
    建議需低於500亳秒,高於1秒需要檢查是否有哪裡有問題,第一次起Test可能需要較久時間可排除
    若時間拉太長會影響開發節奏,讓開發速度變慢
  2. Independent:
    獨立性,不應該跟其它測試有相依性
  3. Repeatable:
    確保每次執行結果都一樣(在不改Code情況下)
  4. Self-validating:
    自我驗證,測試完後即可馬上看到結果,不需要經過query db或是查看檔案
  5. Timely:
    時效,通常都會開發好與測試的code一起commit,若不馬上做則會有偷懶的行為發生

3A原則

1. arrage
  • 初始化目標物件
  • 初始化方法參數
  • 建立模擬物件行為
  • 設定環境變數期望結果
2.act
  • 實際呼叫測試目標物件的方法
3.assert
  • 驗證目標物件是否如同預期運作


範例:

如果驗證以下的方法
public class MyCalculator
{
    public int Add(int first, int second)
    {
        return first + second;
    }
}






解法:





//先想好自已的Scenario
//例:傳入first:1,second:2,最後回傳值一定是3
[TestMethod()]
public void AddTest_First_1_Second_2_Should_be_3()
{
    //3A原則
    //arrange
    var target = new MyCalculator();
    var first = 1;
    var second = 2;
    var excepted = 3;

    //act
    var actual = target.Add(first, second);

    //assert
    Assert.AreEqual(excepted, actual);
    
}




Ms Test 相關簡介



Test 標記



  • Test Class :測試類別


  • Test Method:測試方法


驗證:



  • Assert(基本驗證):預期expected是否等是實際actual


  • CollectionAssert(集合驗證 ):一般陣列的驗證,好處不用用迴圈來一個一個驗證


  • ExceptedException(例外驗證):不能用try catch,所以要用專屬的驗證方式


Hook



  • ClassInitialize:每個測試類別開始前跑一次


  • ClassCleanup:每個測試類別結束前跑一次


  • TestInitialize:每個測試開始前跑一次


  • TestCleanup:每個測試結束後跑一次


  • AssemblyInitialize:整個測試專案開始前跑一次


  • AssemblyCleanup:整個測試專案結束後跑一次


  • TestContext:用WriteLine()即可印出


測試相關Attribute



  • TestCategory(assert excetipn) ==>分類tag


  • Ignore==>略過此測試方法


熱鍵


Ctrl+R+T:執行單一測試


Ctrl+R,Ctrl+T:偵錯單一測試


Ctrl+R+A:執行所有測試


Ctrl+R,Ctrl+A:偵錯所有測試

Read more...