[心得] 自動測試與 TDD 實務開發(使用C#) 第五梯
Feature:
In order to 美好的程式開發人生
As a 攻城獅
I want to 開始學習TDD
#現況
Scenario: 專案開發時期
Given 詢問需求
And 確認需求
And 修改需求
When 開始寫程式
Then 自己都不知道寫出來的程式 對不對
Scenario: 測試時期
Given 有bug就改
And 需求變動也改
When 開始改程式
Then 進入改A壞B 改B壞A的深淵
Scenario: 加班時期
Given 進度落後
When 加班趕進度
Then 每天水深火熱 不想上班
#想要改變
Scenario: 想自學TDD
Given 91部落格
AND 天瓏書局
When 閱讀網文章與書籍
Then 還是一知半解 還有許多名詞 無法理解 無法應用於工作
Scenario: 付費課程
Given SkillTree
AND 91
When 開始搶票
Then 搶票失敗 到 補票成功 (本來以為沒機會上課了)
#Day1
Scenario: isolation unit test
Given 3A - Arrange,Actual,Assertion
AND Stub - NSubstitute
AND Mock - NSubstitute
AND DI 解耦合
When 對 一個方法 寫 isolation unit test
Then 測試很難寫,是code寫太爛
Scenario: 網頁測試
Given Selenium 錄影
AND C#測試
When Selenium TO MSTest
Then 用MSTest模擬瀏覽器測試
Scenario: 重構
Given 爛Code
AND 正確的work
When 用unit test 測試 保護下 改code
Then 都綠燈表示 好code + 正確的work
#Day2
Scenario: TDD
Given 一次紅燈
AND 一次綠燈
When 寫code是為了滿足當前紅燈需求 開始 堆疊的寫code
Then 每次綠燈都是完成需求,目標明確,不會迷惘
#Day3
Scenario: BDD
Given Specflow
AND Live Doc
When 把提供需求者 拉進來 一起玩
Then 需求轉換成Scenario
#反饋
Scenario: 教室設備
Given 投影機效果不佳
AND 講師收音 常有 雜音
When 上課時
Then 被雜音干擾,看不清楚投影片 (第三天右邊那台)
Scenario: 英文太爛
Given 91很熱血
AND 新名詞
When 開始說英文
Then 無法理解英文的意義 [個人因素]
Scenario: 投影片內容 飛快 帶過
Given 趕進度
AND 很多新東西
When 投影片飛快換頁
Then 無法吸收理解 (91可提供講義答案 已經提供講義解答)
Scenario: 希望可以增加最後整合說明
Given unit test
AND TDD
AND BDD
When 用案例貫穿這三項
Then 會更有信心運用在專案上 [這應該算是第三天的功課 靠自己內化了]
#心得
不知道幾年前 web party 錄影檔 看到91的重構運費的分享
開始知道這位熱血講師,到終於有機會上91的課
到最近一年來也在用scrum開發
還是覺得之前的scrum只是小waterfall
上完TDD ,才感覺四散的拼圖 可以拼湊起來
期待在新的世界好好來實作了
#參考資料
ExpectedObjects
[Unit Test Tricks] Compare Object Equality
Introducing the Expected Objects Library
NSubstitute
NSubstitute 練習題 - 拋出 Exception
NSubstitute 練習題 - void 不回傳值方法但有使用到 out 參數
[C#.NET] 單元測試 Mock Framework - NSubstitute
Selenium IDE
Selenium WebDriver
[30天快速上手TDD][Day 8]Integration Testing & Web UI Testing
[Tool][Selenium IDE]Export to C#/WebDriver/MSTest
FluentAutomation
[Web Testing][Tool]FluentAutomation (More Behavior-Driven)
[C#.NET] 使用 Fluent Automation API for Selenium WebDriver 進行網頁手 / 自動 測試
SpecFlow 1.90
[30天快速上手TDD][Day 24]BDD - SpecFlow Introduction
[Tool][Specflow]使用 Scope 標記 Step Binding
[BDD][Tool][SpecFlow]Scenario 上使用 table 來呈現集合
Specflow 2.0 release