Testing the design
requirement / documentation / spec 其實也可以test,主要針對以下五個方向去檢驗:1. specific: 越明確越好
2. measurable: 能夠量化
3. testable: 其實就是1. 2. 的結果
4. consistent: 要跟先前的spec一致
5. exclusive: 把"不該做的"也明列出來。
non-functional (non-feature) test cases
非功能性的tests,包括:1. usability
2. scalability
3. performance
4. security
5. logging
6. reliability
.
.
.
通常是functional test通過之後,才會進行non-functional tests。
Performance testing
舉performance testing來說,一個明顯困難點在於通常不能用production environment來測試,因為會影響營運,所以必須有一個test environment來模擬production environment。此外performance testing重點在測試系統弱點,這屬於白箱測試,只有系統開發者知道哪些是可能的弱點,不要因為"政治因素"害怕去測試這些點的極限。
此外要有baseline當比較對象,因為有些時候performance improvement沒什麼太大意義,如果baseline profile已經達到,可能不需要投入資源去提升performance。
performance testing包括以下種類:
1. load testing: 測試在不同的load狀態下,系統有什麼behavior
2. stress testing: 找出系統能承受的最大capacity
3. soak(endurance) testing: 主要瞄準長時間狀態下,系統的在某個load的承受能力
4. spike testing: 這是測試突然增加極大load會讓系統產生什麼行為
Test plan的重要性
test是要規劃的! 不是自己隨興加減測試,事實上這是一個挑戰!先要有個認知是: 100% coverage是不可能的。
事實上要把test plan當成一個project,所以也會有project management中需要考量的三元素: resource / budget / schedule。
所以選擇測試標的,也是一個學問,可能的方向:
1. 趕時間做出來的item
2. remote data / api 接介
.
.
test coverage廣度: 盡可能發現系統中潛在bug
test coverage深度: 在某些容易發生bug的系統,大量重複深入測試
Test Suite
就是一堆test cases的集合,歸類成某一類。Test report
可能包含以下項目:1. scope: 測試涵蓋了那些範圍,也該列出未涵蓋的範圍
2. 測試通過標準: 那些問題一定要fix,test cases通過率
3. 測試方法
4. 最後結果
5. defects/status: 列出目前測試出來,尚未解決的defects
上面講的有點籠統,主要是還是要看相關人員想要看到資訊才能做後續決策。
沒有留言:
張貼留言