2010年10月21日 星期四

無責任軟體品保 : 軟體測試十要


  1. 先有測試計劃 (Test Plan)
    在 開始測試之前,請先靜下心做一個測試計劃。軟體的功能越來越複雜,沒有一個測試計劃按表執行,到頭來就是一團迷糊仗。在測試團隊日漸成長的公司裡,這可以 幫助 PM/QA Lead 最大的發揮 QA 的效能,確實掌握產品開發時程。若你是一人要身兼數職校長加撞鐘的情況,拿張紙想一下把測試的要項寫下來,也可以產生易想不到的功效。
  2. 安排專責測試人員 (QA Enginner, Test Engineer)
    不 管是 QA Enginner 或是 Test Engineer,大部份的研發單位目前應該都有專職的軟體測試人員編制;所以一般而言這件事還算單純。即使你是在一個全由 RD 組成的小公司或研發團隊,也可以把 RD 編組來進行交叉測試。請記得,再聰明的程式設計師也總是會有盲點;請把負責開發的人員與負責測試的人員分開來,才能達到品質把關的目的。測試人員就等於是 PM 的眼睛,把未經過測試的產品出貨,就像在西門町由樓上丟顆石頭下來祈禱不會砸到人一樣。
  3. 功能驗證測試 (F.A.S.T: Feature Acceptance Simple Test)
    當 大伙兒辛辛苦苦終於把產品的新功能 coding 出來,這時最優先的任務就是先跑一輪基本功能。英文的 Feature Acceptance Simple Test 縮寫就是 “FAST”,望文生義這個測試就是要跑的又準又快。請將主功能一項一項列出來,找一個最穩定的 OS 版本照著需求文件跑一次。這個測試最好是控制在一天的時程內,可以有效的反應到底那些功能 OK 了,那些功能其實根本不能用。
  4. 相容性測試 (Compatibility Test)
    測 試產品將來需要使用的環境或平台的相容性是基本工夫,同時也是最秏時秏力的項目。在能力所及的情況下,相容性測試要盡早開始。軟體在 Coding 或 Alpha stage 時通常比較 buggy 而讓 QA 很難分心看其他的問題。但往往等比較穩定後,才發現所用的解決方案相容性有問題而又得大改。在這個階段,測試的環境可以先安排好跑過一輪,就能早期發現這 類問題。
  5. 壓力測試 (Stress Test)
    架設一台 Svr 要能同時維持多少線上使用者?跑一個功能要能吃多少筆資料?這些標準在產品開發一開始 PM/QA Lead 就先盡早訂下來。標準訂立了後實地的模擬測試,一樣是不嫌早,能測的越早越好。
  6. 撰寫測試案例 (Test Case)
    在測試的過程中逐步把產品的規格所需要的測試步驟寫下來,這就是測試案例(Test Case)。你的測試案例裡應該包含幾個部份:
    第一,請用 Excel 或類似的工具來撰寫,在你測到專案火燒屁股時這會省下你很多修改文件的工夫。
    第二,你要描述測試時的條件及執行步驟,這些步驟最好是能彼此連貫的組合。
    第三,請也清楚的寫下執行後程式應該有的行為或結果是什麼;請注意測試的結果並不一定都是成功,偶爾幾個結果為否的 test case 會有畫龍點睛之妙。這個有幾會再來深入聊聊。
  7. Boundary Test
    雖然是老調牙的準則了,但通常跑下去少說也有 60% 的程式在一開始會有問題。所以各位 QA 們請不要客氣的把每個功能的極限值都輸入跑個一輪。實在是居家旅行衝 bugs 數的最佳良方。
  8. Bug Review Meeting
    測試的目的是為了改善品質,這才是 QA Process 的最高準則。通常進入 Alpha 期後,Coding 和 bug 數量都會進入高峰期。這時甚至可以天天加開 bug 檢討會議,確保重要的 bugs 能及早解掉。
  9. Beta 測試
    實 驗室或是 R&D 測試的環境比較單純,有時就會忽略了一些很常見的軟體衝突或是使用情境。在軟體進入穩定階段後,適時的安排 Beta 測試,讓真正的使用者在自己的環境使用一陣子,可以幫助研發團隊做好軟體發行前的最後調整。一方面確保不會在目標客戶的使用上有 crtical issues,另一方面也確認產品的功能符合客戶的需求。
    在實際執行時,可以簡單分為兩個階段:
    一是 Internal Beta:在公司內部可以請客服或是業務部門協助安裝新的版本來使用,這通常一跑就能過濾掉很多易於發生的 bugs,免得 External Beta 一開始就被一卡車的 bug report 淹沒。
    再來才是正式的 External Beta:通過了內部測試的版本,就可以公開讓使用者嘗新了。在這個階段能測試實驗室無法自行準備的設備或環境,同時也可以驗證產品是否達到了原本規劃的目標。
  10. 軟體發行前的完整測試 (Full Cycle Test)
    行百里路半九十,在終於要將產品送出門見公婆前,請不厭其煩的安排一次完整測試。好好的把每個功能做一次檢試,有些公司也把這個階段叫做 Super Lab Test。如果最後階段有做好 Code Freeze 的動作,徹底跑過這一輪,就功德圓滿大家慶功出貨了。