1.什么使軟件測試
使用人工和自動手段來運行或測試某個系統的過程, 其目的在于檢驗它是否滿足規定的需求或是弄清預期結果與實際結果之間的差別
2.為什么做軟件測試
一個糟糕的測試程序可能導致任務的失敗,影響操作的性能和可靠性,導致維護階段的成本提高。
一個好的測試程序是項目的主要成本。
一個好的測試程序可以極大地幫助你定義需求和設計。
一個好的測試可以迫使你在工作時必須面對和處理問題,使得修改缺陷成本降低。
一個好的測試不能彌補一個糟糕的軟件項目,但是的確有助于發現許多問題。
? 并且至少使得你盡早知道你處在問題當中。
3.軟件測試的目的
發現被測對象與用戶需求之間的差異,即缺陷。
通過測試活動發現并解決缺陷,增加人們對軟件質量的信心。
通過測試活動了解被測對象的質量狀況,為決策提供數據依據。
通過測試活動積累經驗,預防缺陷出現,降低產品失敗風險。
4.軟件測試的原理
①測試證明軟件存在缺陷
????????無論何種測試活動,其目的都是為了證明軟件存在缺陷,無法證明軟件不存在缺陷。通過測試活動可以減少軟件中存在未被發現缺陷的可能性,降低漏測風險,但即使通過測試未能發現任何缺陷,亦不能證明被測對象不存在缺陷。在實際工作中,開發人員在測試工程師不能發現缺陷后,經常會說被測對象已經沒有任何問題了,這種觀點是極其錯誤的。
②不可能執行窮盡測試
? ? ? ? 軟件是運行在硬件基礎上的邏輯實體,在復雜多變的環境中,任何運行環境發生變化都可能導致缺陷的產生,除了小型系統,利用窮舉法進行測試是不可能的。通過風險分析、被測對象測試點優先級分析、軟件質量模型及不同測試方法的運用來確定測試關注點,從而替代窮盡測試,提高測試覆蓋率。
③測試應盡早啟動、盡早介入
? ??????防患于未然,缺陷越早發現,修復的成本越低。為了盡早發現缺陷,在軟件系統生產生命周期中,測試(評審)活動應盡早介入。通常情況下從項目立項開始,每個階段都進行評審活動。
④缺陷存在群集現象
????????一個軟件系統的重要功能往往占系統的20%左右,但這20%功能的復雜度可能是系統的80%左右(二八原理),出錯的概率大大增加。測試過程中人力、時間、資源分配比例應根據系統業務功能的優先級匹配,并在測試活動結束后,根據缺陷分布情況進行調整。通常情況下,少數模塊可能包含大部分在測試過程中發現的缺陷。在實際測試過程中,不可能均分測試資源,需考慮測試投入及風險控制,可使用基于風險或操作剖面的測試策略重點測試。
⑤殺蟲劑悖論
? ??????害蟲經過幾輪藥物毒殺后,其后代將產生抗體,殺蟲劑不再有效。同樣的道理,測試用例經過多次迭代測試后,將不能再發現缺陷。為了解決“殺蟲劑悖論”,測試用例需定期評審、及時調整,可根據軟件質量特性結合被測對象的業務場景,設計新的測試用例來測試,從而發現更多潛在的缺陷。
⑥不同的測試活動依賴于不同的測試背景
????????不同的測試背景、測試目標,需開展不同的測試活動。例如,電子商務業務系統與金融證券產品的測試方法可能不一樣,安全性測試與兼容測試性測試方法不一樣。針對不同的測試背景,采用恰當高效的測試活動,是實施有效測試活動的一個重要環節。
⑦不存在缺陷的謬論
????????當被測對象無法滿足用戶需求時,即使該系統無任何缺陷,也不能稱為高質量的軟件。不能滿足用戶期望的系統即是無用系統。系統無用時,發現與修改缺陷是毫無意義的。實施測試活動時,一定要考慮用戶背景。一部時尚酷炫的手機操作對于老年人而言可能顯得費解,即使功能無任何問題,但解決不了老年人的易學易用性問題。