Mobile軟體測試(4)如何開始測試?


Google的文章建議,測試最好是金字塔形狀,三者的比例最好是E2E 10%、Integration 20%、Unit 70%(參考Just Say No to More End-to-End Tests),我想這沒有絕對的對或錯,還是要挑適合自己公司的方式。


如果以一般寫Android架構來說,是非常難達成單元測試(Unit test)的,因為大部分會把邏輯寫在Activity之中,而大部分的操作又會依賴Android相關的環境(Context),這時候就找到MVP架構的價值了,將架構分成三層,隔離View與環境相關,讓大部分的Class都是純Java可以再JVM上跑Unit Test。

分層之後善用依賴注入的概念,會讓測試時的mock變容易,而MVP也都符合物件導向原則,會讓人有種原來這原則的價值是用在這種地方啊!

因為View或Model是透過依賴注入的,所以在測試的時候也相當容易注入假的物件來模擬不同的狀況。

可以充分測試所有的業務邏輯。

JMockit甚至有提供測試覆蓋率,讓我們可以很清楚的看出來是否有遺漏的邏輯沒測到。

是不是有單元測試(Unit test),就沒問題了?很遺憾並不是,單元測試只能表示自己沒問題,別人也許也沒問題,但我們整合在一起卻出問題了,很難體會?看看上面的圖就懂了,個別使用一定都沒問題,但兜起來時卻出錯了,所以我們才需要不同的測試方式來互相彌補。

留言