End to End Test中文可以翻成端點對端點測試,使用者端對設備端的測試,屬於Intrumentation Test的一種。那它跟之前介紹的Integration Test整合測試有什麼不同?end to end test是模擬使用者操作Application行為。所使用的環境要跟真人使用者一樣,也就是連線到backend server不能用Mock data來取代,如果你在測試過程中使用mock data那就會被歸類為整合測試而非端點測試。
那聽起來好像end to end test比較好,因為end to end test用真實的資料,測試的結果應該會跟我們自己用人工點擊的測試方式類似,這個結論是肯定的,用真實資料去測試當然結果是可以吻合真實使用情況。但有好處必然也有壞處,壞處其實也不少,我把end to end的測試分析如下
講完缺點後,大家會不會又覺得好像end to end test又沒那麼好,說實話不論現實世界或是程式世界都沒有完美的solution,都必須依當下的目的選擇較好的solution。我們把Integration Test跟End to End Test做一個示意流程,假設我們要測試一個UI操作的test case在Page C,前面還有Login Page,Page A跟Page C,每個Page各自都有Api要呼叫,兩者差別如下。
利用Integration Test的方式我們可以直接把跟Page C有關的前置資料mock起來直接測試Page C,而利用End to End Test的方式就要從頭到尾測試,包含remote serverc連線時間以及reset data流程(例如:刪除新增的user data)。
我們可以把各自適合使用的情況歸納如下:
那End to End Test該用什麼套件來開發?我們可以直接使用Espresso或是更方便的Appium,下一個章節將會繼續說明。