Nightwatch101 #30:總結
09 Jan 2018整理一下走到目前為止的想法。
QnA
寫測試是否會增加額外工時?
工時是一定會增加的,個人經驗是增加一倍。
除了程式碼的品質保證外,還有什麼好處?
記錄規格、方便估時程。
- 測試案例如同告知開發者規格的細節和範例,
再也不怕同事離職,無人可問。 - 魔鬼藏在細節裡,測試程式會告訴我們功能有多細;而且網站久了很容易有地雷,這讓我們記得把踩雷時間估進去 (〒︿〒)
End-to-End Testing 與 Unit Testing 的差異
- Unit Testing 是測試程式碼的自身行為,也就是驗證輸入與輸出是否符合預期。
- End-to-End Testing 是一種模擬用戶行為的 UI 測試或進行流程上的整合測試,代替我們在瀏覽器上做的人工操作,省時省力。
如何優化測試程式碼?
- 好的測試項目儘量不要使用 pause 做等待,因為等待時間可能會因網路速度延遲而導致等待時間需要更久才能完成某個步驟。
- 要有驗證機制,有驗證才能知道測試成功或失敗,例如:檢視某個 element 是否可見才做下一步動作。
- 將常用的功能抽出來成為模組,成為客製化指令。注意指令命名的語意化,要清楚明瞭。
- 使用 Page Object 將網頁片段封裝起來,增加重用和可讀性,減少維護的複雜度。
海門大大和 Andy 大大整理了很多 tips,可參考[線上讀書會] 海門 主講 nightwatch 進階和[線上讀書會] andy 主講 nightwatch & react 實例演練。
推薦閱讀
列出本次主要的學習教材。
感謝
感謝這一路上支持我的人...
- 感謝前輩 食夢黑貘 總是不斷提醒要突破往前、打開眼界看更廣做更多。
- 感謝男友 Jimmy 在我研究技術、加班做專案的時候,不但照顧我,還打理一切家務 ♥
- 感謝主管 Steve 給我這個機會,讓我在露天能玩到 Unit Testing 和 E2E Testing。職涯中遇過最棒的主管,歡迎大家來當他的夥伴。
- 感謝 Eddie 從開發購物車開始,半推半就的情況下讓我開始用 Selenium IDE,然後就不知不覺地進入了 Nightwatch 的世界了 ★
- 感謝 Hunter,很開心在工作環境中可以找到能討論技術的夥伴 ♪
- 感謝這次和我一同在鐵人賽組隊「露天廢物」的同伴:Eddie、Hunter、J0、Jeff(按字母順序排列)。
- 感謝露天拍賣的工程師們,尤其謝謝前端 team … 沒有大家的支持我是走不到這裡的,再次感謝。
這 30 天 Nightwatch101 的目錄
Nightwatch101:使用 Nightwatch 實現 End-to-End Testing 系列。
- 前言
- Nightwatch 與 Selenium Webdriver
- 環境建置
- 設定檔
- 使用 CSS Selector 定位網頁元素
- 使用 Xpath 定位網頁元素
- 指令 Part 1
- 指令 Part 2
- 指令 Part 3
- BDD Expect
- BDD Assert
- BDD Verify
- Test Hooks
- Asynchronous Test Hooks
- External Globals
- 簡單測試範例
- Nightwatch Test Runner
- 依照分組做測試(Test Groups)
- 依照標籤做測試(Test Tags)
- 禁跑特定測試(Disable Tests)
- 平行執行測試程式
- Page Objects
- 使用 Sections 優化 Page Objects
- 客製化指令(Custom Commands)
- 客製化斷言(Custom Assertions)
- 客製化測試報告
- 進階測試範例
- 獨立使用 ChromeDriver 跑測試
- Selenium IDE
- 總結
♡(´∀`)人(´∀`)♡
本系列文章皆使用這個專案,可以拉下來玩玩;有什麼問題都可以提出 issue。
後記
寫鐵人賽真的很累,但很值得 XD
每每都會看到盲點,原來這裡那裏都還不夠懂~或收到回應覺得好高興。是有被虐狂嘛?明明專案好忙、手上的技術研究、帶新人(還一次好幾個)、去健身房運動,最後還決定加個鐵人賽!人生就是要塞好塞滿。
好險還有人願意陪我一起寫,每天一上班問大家發文了沒其實滿爽的哈哈哈。
不管是閱讀、做 Side Project、寫部落格、參加鐵人賽還是舉辦讀書會,我會繼續加油、持續讓自己成長的 (*´∀`)~♥