常聽到的測試手段,可以簡單分為手動測試(Manual testing)與自動測試(Automation testing)
舉個簡單的例子,今天RD做出了一個可以用Email註冊與登入會員的網頁。
QA針對功能的手動測試就是打開網頁,先手動輸入一組帳號密碼註冊帳號,再用剛註冊的這個帳號登入會員網頁。
這件事非常的單純,所以手動測試可能一下子就可以把註冊跟登入兩個功能驗證完成。
但是當待測目標變成一個複雜的電商網站的時候,功能測試就會產生各種不同場景交錯的組合。
這個網站可能有多種註冊與登入的方法(FB, Google, Email),
購物車加入五件商品,移出一件商品,可不可以使用滿千送百的折價卷,運費減免,要不要打公司統編等等。
一個我們很常在網路上看到的電商網站,其實使用者每個不同的操作,都需要做功能與各種驗證。
那你就會想,這些不同的使用者行為,要怎麼都用手動測試到?
答案是:沒辦法XD
所以我們才會需要自動化測試。
自動化的價值是把重複性高的驗證工作交給程式或工具完成,讓團隊可以專注在更重要的事情上。
在開發過程中,我們會有原本產品既有的舊功能,也會有要新增的新功能。
QA的工作目標,常常會是同時要確保新功能可以正常運作,同時也要驗證所有舊功能也都正常。
那聰明的你一定會發現,隨著產品開發持續,新功能肯定是越來越多,
同樣只有兩個禮拜測試時間,怎麼把越來越多的功能全部測試完成?
這時候你能做的就是把舊的功能用自動化測試完成。
例如利用Selenium + Robotframework可以用程式模擬使用者在網頁UI上面的操作等等
同時你也會問,為什麼不在新功能開發階段就把自動化一起做好?
但這是一個理想的狀態,一個新的功能可能在開發階段會因為各種原因頻繁的修改,
導致你在開發中期做的自動化測試,到了開發收尾的時候都變得無效,就像是做白工一樣。
所以自動化測試很需要看目的跟時機去做,這都是QA這個角色要去評估與提出自己意見的地方
還有一個常聽到的金句:
全部都做自動化就好啦,不需要手動測試的QA啦!
主要考量是除了有些產品性質不容易套用工具做測試(包含硬體或設備測試)
你可能需要會花很多時間去客製化測試程式來符合需求,有時候手動測試反而更能完整的完成測試。
自動化測試確實有他的價值在,但不可否認的是手動測試也是有很深的學問在裡面。
包含之後會提到的測試策略(test strategy)與測試計畫(test plan)的訂定
很多資深QA,他們的測試經驗跟直覺,可以很快地抓到這個新功能在哪裡可能會出問題
甚至是在Design review時就可以指出某些設計架構,長期來看會把測試複雜度提高等等
而這些QA的技術,我覺得也都需要經過手動測試的訓練來磨練經驗與直覺
很多東西你一定要下去做,才會知道一些眉眉角角。
自動化測試是把你知道的答案,告訴程式來驗證產品預期的Input跟Output
而手動測試很多時候是在黑暗中前進並探索未知
下一篇來聊聊近幾年很紅的探索性測試(Exploratory testing)