软件测试基础理论知识
1、軟件測試概述
軟件測試的IEEE定義:使用人工或自動的手段來運行或測量軟件系統的過程,目的是檢驗軟件系統是否滿足規定的需求,并找出與預期結果之間的差異。軟件測試的發展趨勢:
? ① 測試工作將進一步前移。軟件測試不僅僅是單元測試、集成測試、系統測試和驗收測試,還對需求的精確性和完整性的測試技術、對系統設計的測試技術將成為新的研究熱點。
? ② 軟件架構師,開發工程師,QA人員,測試工程師將進行更好的融合
? ③ 測試職業將得到更充分的尊重。
? ④ 設置獨立的軟件測試部門將成為未來軟件公司的共識。
??⑤ 測試外包服務將快速增長,和軟件開發外包一樣,軟件測試外包將成為全球化的趨勢。
軟件測試工程師的素質:? ??
責任心;溝通能力;團隊合作精神;耐心、細心和信心;保持懷疑的態度,有缺陷預防的意識;不斷學習的能力。
合格的測試工程師應具有的能力:
? ① 一般能力:包括表達、交流、協調、管理、質量意識、軟件開發過程方法、軟件工程等;
? ② 測試技能及方法:包括測試基本概念及方法、對測試工具的掌握、對專業測試標準的熟悉程度等;
? ③ 測試規劃能力:包括風險分析及防范能力、測試目標及計劃的制定能力等;
? ④ 測試執行能力:包括測試數據/腳本/用例的制定能力、測試比較及分析能力、缺陷記錄及處理能力;
? ⑤ 測試分析、報告和改進能力:包括測試度量、統計技術、測試報告、過程監測及持續改進能力。
測試工程師的職責:
? 測試人員要了解項目需求內容,從用戶的角度提出自己的測試看法;
? 測試人員要編寫合理的測試計劃并與項目整體計劃有機地整合在一起;
? 測試人員要編寫覆蓋率高的測試用例;測試人員要認真仔細的實施測試工作,并提交測試報告以供項目參考;
? 測試人員要進行缺陷跟蹤和分析。
2、軟件測試基礎軟件的概念
軟件是計算機系統中與硬件相互依存的一部分,包括程序、數據、與其相關文檔的完整結合。軟件 = 程序 + 數據 + 文檔。
軟件的特點:
? ① 軟件是一種邏輯體,而不是具體的物理體,因而它具有抽象性;
? ② 軟件的生產與硬件不同,它沒有明顯的制造過程,對軟件質量的控制,必須在開發方面下功夫;
? ③ 在軟件運行和使用期間,沒有硬件那樣的機械磨損和老化問題,然而它存在退化問題,必須進行多次的修改和維護;
? ④ 軟件的開發和運行常常受計算機系統的制約,對計算機系統有著不同程度的依賴性,為了解除這種依賴性,在軟件開發過程中提出了軟件移植問題。
? ⑤ 軟件本身是復雜的,軟件的復雜性可能來自它所反映問題的復雜性,也可能來自程序邏輯結構的復雜性。
? ⑥ 軟件成本的昂貴。軟件的研制工作需要投入大量的、復雜的、高強度的腦力,它的成本比較高。
軟件的分類:
按照功能劃分:
? ?系統軟件:如操作系統、數據庫管理系統,各種驅動軟件等
? ?應用軟件:如Office、金山詞霸、QQ等
按照技術結構劃分:
? ?單機版本:如Office,畫圖工具等
? ?C/S結構軟件:如QQ、MSN等
? ?B/S結構軟件:如新浪、搜狐、google等
按照用戶劃分:
? ?產品軟件:Office、財務處理軟件、金山毒霸等
? ?項目軟件:如為企業定制的OA系統等
按照開發規模劃分:
? 類別? 參與人數? ? ?開發時間
? 小型? 10人以下? 1-4個月
? 中型? 10-100人? 1年以下
? 大型? 100人以上? 1年
軟件測試的概念:
軟件測試就是為了發現錯誤而執行程序的過程(狹義觀點)。
使用人工或自動的手段,來運行或測試軟件系統的過程,目的是檢驗軟件系統是否滿足規定的需求,并找出與預期結果之間的差異。(標準定義IEEE )
軟件測試就是為了證明程序有錯,而不是證明程序無錯誤(辨證觀點) 。
測試被定義為“對軟件系統中潛在的各種風險進行評估的活動”。(風險觀點)軟件測試就是“驗證(Verification)”和“有效性確認(Validation)”活動構成的整體,即軟件測試V&V 。(標準觀點)
要完整理解軟件測試,就要從不同方面去審視軟件測試,概括起來,軟件測試就是貫穿整個軟件開發生命周期,對軟件產品(包括階段性產品)進行驗證和確認的活動過程,其目的是盡快盡早地發現在軟件的缺陷。
軟件測試的對象:
? ① 源程序/目標代碼
? ② 各開發階段的文檔(需求規格說明、概要設計說明、詳細設計說明及其它相關文檔)
軟件測試的目的:
從用戶角度看的目的:通過軟件測試發現隱藏的錯誤和缺陷,考慮是否可以接受該產品。從開發者角度看的目的:表明軟件產品不存在錯誤,驗證軟件實現了所有用戶的要求。從測試人員角度看的目的:發現錯誤,預測錯誤,提供軟件可靠性錯誤,對軟件做出評價。
? ① 幫助開發人員、測試工程師發現問題、分析問題。
? ② 減少軟件的缺陷數目或者降低軟件缺陷的密度。
? ③ 提高軟件的可靠性
? ④ 評估軟件的性能指標。
? ⑤ 增加用戶對軟件的信心。
? ⑥ 測試的最終目的是盡快盡早地發現在軟件中的缺陷,通過修正各種錯誤和缺陷提高軟件質量,回避軟件發布后由于潛在的軟件缺陷和錯誤造成的隱患所帶來的商業風險。
軟件測試的原則:
? ① 所有測試的都應追溯到用戶需求。
? ② 應當把“盡早地和不斷地進行軟件測試”作為軟件測試者的座右銘。
??③ 由于軟件的復雜性和抽象性,在軟件生命周期各個階段都可能產生錯誤,所以不應把軟件測試僅僅看作是軟件開發的一個獨立階段的工作,而應當把它貫穿到軟件開發的各個階段中。在軟件開發的需求和設計階段就應開始測試工作,編寫相應的測試文檔。
??④?完全測試是不可能的,測試需要終止。
??⑤ 想要進行完全的測試,在有限的時間和資源條件下,找出所有的軟件缺陷和錯誤 使軟件趨于完美是不可能的主要有三個原因:?① 輸入量太大;?② 輸出結果太多;③ 路徑組合太多。
??⑥ 測試無法顯示軟件潛在的缺陷:進行測試是可以查找并報告發現的軟件缺陷和錯誤,但不能保證軟件缺陷和錯誤全部找到。
? ⑦ 充分注意集試中群集現象(二八定理):經驗表明,在所測試程序段中,若發現的錯誤數目多,則殘存的錯誤數目也較多。缺陷的二八定理指的是,一般情況下,80%軟件缺陷出現在20%的功能區域,在測試過程中,投入主要的人力和精力重點測試這20%的功能區域。
? ⑧ 開發人員應避免檢查自己的程序:基于心理因素,揭露自己程序中的問題總不是一件愉快的事,不愿否認自己的工作;由于思維定勢,人們難于發現自己的錯誤。因此為達到測試的目的,應由客觀、公正、嚴格的獨立的測試部門或獨立的第三方測試機構進行測試。
? ⑨ 盡量避免測試的隨意性:應從工程的角度理解測試,它是有組織、有計劃、有步驟的活動。
軟件測試誤區:
誤區一:如果發布出去的軟件有質量問題,都是軟件測試人員的錯。
誤區二:軟件測試技術要求不高,至少比編程容易多了。
誤區三:有時間就多測試一些,來不及就少測試一些。
誤區四:軟件測試是測試人員的事,與開發人員無關。
誤區五:根據軟件開發瀑布模型,軟件測試是開發后期的一個階段。
3、軟件測試分類
單元測試:
單元測試又稱模塊測試,針對軟件設計中的最小單位——程序模塊,進行正確性檢查的測試工作。單元測試需要從程序的內部結構出發設計測試用例。多個模塊可以平行地獨立進行單元測試。
單元定義:
C中指一個函數,Java中指一個類,在圖形化的軟件中,單元一般指1個窗口,1個菜單。如何進行單元測試:單元測試主要用白盒測試,先靜態地檢查代碼是否符合規范,然后動態運行代碼,檢查其實際運行結果,檢查程序的運行結果是否正確是一個最基本的要求,還要關注容錯處理,程序的邊界值處理等。
集成測試:
集成測試又叫組裝測試,通常在單元測試的基礎上,將所有程序模塊進行有序的、遞增的測試。重點測試不同模塊的接口部分。
系統測試:
指將整個軟件系統看為一個整體進行測試,包括對功能、性能、以及軟件所運行的軟硬件環境進行測試。
驗收測試:
驗收測試指按照項目任務書或合同、供需雙方約定的驗收依據文檔進行的對整個系統的測試與評審,決定是否接收或拒收系統。在系統測試的后期,以用戶測試為主或有測試人員等質量保證人員共同參與的測試。
α測試:指的是指的是由用戶,測試人員、開發人員等共同參與的內部測試。
β測試:指的是內測后的公測,即完全交給最終用戶測試驗收測試的重要性:驗收簽字,收錢。
靜態測試:指不實際運行被測軟件,而只是靜態地檢查程序代碼、界面和文檔中可能存在的錯誤的過程。
動態測試:指實際運行被測程序,輸入相應的測試數據,檢查實際輸出結果與預期結果是否相符。(動態測試方法為結構和正確性測試;動態測試工具Robot、QTP等)
黑盒測試:指的是把被測的軟件看做一個黑盒子,我們不關心盒子里面的結構是什么樣子的,只關心軟件的輸入數據和輸出
白盒測試:指的是把盒子打來,去研究里面的源代碼和程序結構。軟件公司中,往往采用黑盒測試&白盒測試相結合的方式。
-
? 靜態黑盒測試:看文檔,看頁面等
-
? 靜態白盒測試:看源代碼等
-
? 動態黑盒測試:使用軟件等
-
? 動態白盒測試:運行源代碼等
灰盒測試:是介于白盒測試與黑盒測試之間的一種測試,灰盒測試多用于集成測試階段,不僅關注輸出、輸入的正確性,同時也關注程序內部的情況。
功能測試:是黑盒測試的一方面,它檢查實際軟件的功能是否符合用戶的需求。
? 邏輯功能測試(functiontesting)
? 界面測試(UItesting)
? 易用性測試(usability testing)
? 安裝測試(installationtesting)
? 兼容性測試(compatibilitytesting)
性能測試:是軟件測試的高端領域,通常我們所說的高級軟件測試工程師一般就是指性能測試或是白盒測試工程師。時間性能(事務響應時間等)空間性能(系統資源消耗)一般性能測試可靠性測試負載測試壓力測試
回歸測試:指對軟件的新版本測試時,重復執行上一個版本測試時的用例。
冒煙測試:是指在對一個新版本進行系統大規模的測試之前,先驗證一下軟件的基本功能是否實現,是否具備可測試性。
隨機測試:是指測試中所有的輸入數據都是隨機生成的,其目的是模擬用戶的真實操作,并發現一些邊緣性的錯誤。
軟件測試的過程:從軟件開發的過程按階段劃分有:需求驗證、單元測試、集成測試、確認測試、系統測試、驗收測試
如果有對軟件測試感興趣的小伙伴可以加群了解更多:點擊進群https://jq.qq.com/?_wv=1027&k=tCMEoEqm
總結
以上是生活随笔為你收集整理的软件测试基础理论知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数学分析练习题答案一(自己做的)
- 下一篇: java 解决世界最难数独