Mobile軟體測試(2)為什麼要軟體測試?

前篇
Mobile軟體測試三十天(1)測試的美麗新世界


介紹測試最重要的開場白!為什麼要寫測試,如果沒有痛點,或是痛點沒有被重視,就不要去推動寫測試,這是甚麼意思呢?意思就是價值導向,假設是金融業,今天系統一出包就有上級要被懲處,這時候用測試來解決問題的價值就高了,推動的可能性就會提升。





但如果今天,上級的態度是bug出現了,再解就好嘛,一直解不完就延時程加班加到死就好,升級框架又不知道會壞多少東西,也不敢升級,不敢升級就延伸更多的問題,記得之前在一間採用Hybrid方式開發App的公司,既然是Hybrid主力語言當然就是JavaScript,因JavaScript是直譯語言,而直譯語言的可怕劣勢就是你今天改壞了,沒有任何信號會提醒你,因為直譯語言就是要執行時才會處理,今天一個開發了兩年的專案,有上百個功能,不可能每改動一個地方就回頭去把上百個功能都測一次看有沒有壞,所以同事就將一行他覺得沒用的程式刪了,然後經過自己測試跟客戶測試都沒問題後,就發版了....過了一個禮拜後客戶來問,為什麼有一個以前的功能忽然壞了,一查才發現該功能跟之前刪掉程式有相依關係,才又趕緊把那一行加回去,當然這只是一個案例,更沉重的負擔是,怕把之前的東西改壞,你幾乎無法大幅度的修改架構,甚至更極端的例子是不敢使用共用的模組,而測試會是這一切問題的解答嗎?

測試為什麼可以讓我們變成聖鬥士?因為被測試保護的邏輯,就算改壞了,測試也會提醒我們,不會讓我們被bug打倒第二次,就如同樣的招式第二次對聖鬥士就沒用了一樣。

當然如果沒測試,就可能像燃燒殆盡加班加到死的聖鬥士,你不是一無所有,你還有肝。

不知道大家有沒有看過人月神話呢?人月神話的核心概念就是加人的成效,不會是線性成長,一個專案5個人要六個月完成,變成10人時間也不會變成三個月,有一個笑話是這麼說的,一個孕婦生小孩需要十個月,你找來十個孕婦也不會變成一個月。

所以人月神話,只要不是人就可以打破了嗎?耶....只對了一半,是要靠機器輔助。

將測試分成單元測試、整合測試、E2E(過去的UI測試),而E2E就是最外圈的保護網,可以網住最接近使用者的bug。

測試有甚麼迷人的特點呢?

時間
軟體測試的速度大部分比人工測試快,人一天只上班八小時,機器遠永不會下班,軟體測試可以一直測一直測。

規格
測試的case可以反映出需求與規格,跟文件功能類似但更有持續維護的價值,很多規格文件根本不維護錯誤百出!

驗證(保護)
測試可以協助我們因各種因素修改程式時,確保原先的需求依舊有被達成

自動化
結合Jenkins之類的CI Server,可讓機器因條件自動去啟動測試

留言