目錄
八、軟件測試
8.1 測試分類
8.2 靜態方法
8.2.1 靜態測試
8.2.2?動態測試
8.2.3?自動化測試
8.3 測試階段
8.3.1?單元測試
8.3.2?集成測試
8.3.3 確認測試
8.3.4?系統測試
8.3.5 性能測試
8.3.6?驗收測試
8.3.7 其他測試
8.4 測試用例設計? ? ? ?
8.4.1 黑盒測試用例?
8.4.2 白盒測試用例
8.5?測試模型
8.5.1?W模型
8.5.2??H模型
?8.5.3?敏捷測試模型
8.6?調試(debug)
相關推薦
歷年真題練習
八、軟件測試
????????軟件測試是確保軟件的質量,確認軟件以正確的方式做了用戶所期望的事情。軟件測試通常在規定的時間和成本內完成,以盡量多地發現漏洞,但不能保證發現所有的漏洞。
????????測試原則:
? ? ? ? ? ? ? ? ●應盡早并不斷的進行測試;
????????????????●測試工作應該避免由原開發軟件的人或小組承擔;
????????????????●在設計測試方案時,不僅要確定輸入數據,而且要根據系統功能確定預期的輸出結果;
????????????????●既包含有效、合理的測試用例,也包含不合理、失效的用例;
????????????????●檢驗程序是否做了該做的事,且是否做了不該做的事;
????????????????●嚴格按照測試計劃進行;
????????????????●妥善保存測試計劃和測試用例;
????????????????●測試用例可以重復使用或追加測試。
8.1 測試分類
????????(1)根據程序執行狀態可分為靜態測試(Static Testing,ST)和動態測試(Dynamic Testing,DT)。
????????(2)根據是否關注具體實現和內部結構可分為黑盒測試、白盒測試和灰盒測試。
????????(3)根據程序執行的方式來分類可分為人工測試(Manual Testing,MT)和自動化測試
(Automatic Testing,AT)。
????????(4)從階段上劃分,軟件測試可以分為單元測試、集成測試、系統測試、性能測試(通過自動化測試工具模擬,包括負載和壓力測試)、驗收測試、其他測試(補充內容)。
8.2 靜態方法
8.2.1 靜態測試
????????靜態測試指被測試程序不在機器上運行,而采用人工檢測和計算機輔助靜態分析的手段對程序進行檢測,包括對文檔的靜態測試和對代碼的靜態測試。對文檔的靜態測試主要以檢查單的形式進行,而對代碼的靜態測試,包括桌前檢查、代碼審查、代碼走查的方式。使用這種方法能夠有效地發現30%-70%的邏輯設計和編碼錯誤。
8.2.2?動態測試
????????動態測試指在計算機上實際運行程序進行軟件測試,一般采用白盒測試、黑盒測試和灰盒測試方法。
????????黑盒測試:功能性測試,不了解軟件代碼結構,根據功能設計用例,測試軟件功能。
????????白盒測試:結構性測試,明確代碼流程,根據代碼邏輯設計用例,進行用例覆蓋。
????????灰盒測試:灰盒測試介于黑盒與白盒測試之間。灰盒測試除了重視輸出相對于輸入的
正確性,也看重其內部的程序邏輯。
8.2.3?自動化測試
? ? ? ? 自動化測試就是軟件測試的自動化,即在預先設定的條件下自動運行被
測程序,并分析運行結果。總的來說,這種測試方法就是將以人驅動的測試行為轉化為機器執
行的一種過程。
8.3 測試階段
????????從階段上劃分,軟件測試可以分為單元測試、集成測試、確認測試、性能測試(通過自動化測試工具模擬,包括負載和壓力測試)、系統測試、驗收測試、其他測試(補充內容)。
8.3.1?單元測試
????????單元測試也稱為模塊測試,測試的對象是可獨立編譯或匯編的程序模塊、軟件構件或OO(面向對象)軟件中的類(統稱為模塊),測試依據是軟件詳細設計說明書。
8.3.2?集成測試
????????集成測試目的是檢查模塊之間,以及模塊和已集成的軟件之間的接口關系,并驗證已集成的軟件是否符合設計要求。測試依據是軟件概要設計文檔。
8.3.3 確認測試
????????確認測試主要用于驗證軟件的功能、性能和其他特性是否與用戶需求一致。根據用戶的參與程度,通常包括以下類型:
????????????????內部確認測試:主要由軟件開發組織內部按照SRS(Software Requirements Specification,軟件需求規格說明書)進行測試
????????????????Alpha測試:用戶在開發環境下進行測試。
????????????????Beta測試:用戶在實際使用環境下進行測試,通過改測試后,產品才能交付用戶。
8.3.4?系統測試
????????系統測試測試對象是完整的、集成的計算機系統;測試的目的是在真實系統工作環境下,驗證完成的軟件配置項能否和系統正確連接,并滿足系統/設計文檔和軟件開發合同規定的要求。測試依據是用戶需求或開發合同。
????????主要內容包括功能測試、健壯性測試、性能測試、用戶界面測試、安全性測試安裝與反安裝測試等,其中,最重要的工作是進行功能測試與性能測試。
????????????????功能測試主要采用黑盒測試方法;
????????????????性能測試主要指標有響應時間、吞吐量、并發用戶數和資源利用率等。
8.3.5 性能測試
????????性能測試是通過自動化的測試工具模擬多種正常、峰值以及異常負載條件來對系統的各項
性能指標進行測試。負載測試和壓力測試都屬于性能測試,兩者可以結合進行。通過負載測試,
確定在各種工作負載下系統的性能,目標是測試當負載逐漸增加時,系統各項性能指標的變化
情況。壓力測試是通過確定一個系統的瓶頸或者不能接受的性能點,來獲得系統能提供的最大
服務級別的測試。
8.3.6?驗收測試
????????驗收測試主要是針對SRS,在交付前以用戶為主進行的測試。其測試對象為完整的、集成的計算機系統。驗收測試的目的是,在真實的用戶工作環境下,檢驗軟件系統是否滿足開發技術合同或SRS。驗收測試的結論是用戶確定是否接收該軟件的主要依據。除應滿足一般測試的準入條件外,在進行驗收測試之前,應確認被測軟件系統已通過系統測試。
8.3.7 其他測試
????????配置項測試測試對象是軟件配置項,測試目的是檢驗軟件配置項與SRS的一致性。測試的依據是SRS。在此之間,應確認被測軟件配置項已通過單元測試和集成測試。
????????回歸測試測試目的是測試軟件變更之后,變更部分的正確性和對變更需求的符合性,以及軟件原有的、正確的功能、性能和其他規定的要求的不損害性。
????????AB測試是為Web 或 App 界面或流程制作兩個 (A/B)或多個 (A/B/n) 版本,在同一時間維度,分別讓組成成分相同(相似)的訪客群組(目標人群)隨機的訪問這些版本,收集各群組的用戶體驗數據和業務數據,最后分析、評估出最好版本,正式采用。
????????Web測試是軟件測試的一部分,是針對Web 應用的一類測試。由于 Web 應用與用戶直接相關,又通常需要承受長時間的大量操作,因此Web 項目的功能和性能都必須經過可靠的驗證。通過測試可以盡可能地多發現瀏覽器端和服務器端程序中的錯誤并及時加以修正,以保證應用的質量。由于Web 具有分布、異構、并發和平臺無關的特性,因而它的測試要比普通程序復雜得多,包含的測試種類也非常多。
????????鏈接測試。鏈接是Web 應用系統的一個主要特征,它是在頁面之間切換和指導用戶去一些未知地址頁面的主要手段。鏈接測試可分為3個方面。
????????????????首先,測試所有鏈接是否按指示的那樣確實鏈接到了該鏈接的頁面;
????????????????其次,測試所鏈接的頁面是否存在;
????????????????最后,保證 Web 應用系統上沒有孤立的頁面。
????????表單測試。當用戶通過表單提交信息的時候,都希望表單能正常工作。如果使用表單來進行在線注冊,要確保提交按鈕能正常工作,當注冊完成后應返回注冊成功的消息。如果使用表單收集配送信息,應確保程序能夠正確處理這些數據,最后能讓用戶收到信息。要測試這些程序,需要驗證服務器是否能正確保存這些數據,而且后臺運行的程序能否正確解釋和使用這些信息。當用戶使用表單進行用戶注冊、登錄、信息提交等操作時,必須測試提交操作的完整性,從而校驗提交給服務器的信息的正確性。如果使用默認值,還要檢驗默認值的正確性。如果表單只能接受指定的某些值,則也要進行測試。
8.4 測試用例設計? ? ? ?
8.4.1 黑盒測試用例?
????????將程序看做一個黑盒子,只知道輸入輸出,不知道內部代碼由此設計出測試用例,分為下面幾類:
????????等價類劃分:把所有的數據按照某種特性進行歸類,而后在每類的數據里選取一個即可。等價類測試用例的設計原則:
????????????????設計一個新的測試用例,使其盡可能多地覆蓋尚未被覆蓋的有效等價類,重復這一步,直到所有的有效等價類都被覆蓋為止;
????????????????設計一個新的測試用例,使其僅覆蓋一個尚未被覆蓋的無效等價類,重復這一步,直到所有的無效等價類都被覆蓋為止。
????????邊界值劃分:將每類的邊界值作為測試用例,邊界值一般為范圍的兩端值以及在此范圍之外的與此范圍間隔最小的兩個值,如年齡范圍為18-100,邊界值為18、100、17、101四個。
????????錯誤推測:沒有固定的方法,憑經驗而言,來推測有可能產生問題的地方作為測試用例進行測試。
????????因果圖:由一個結果來反推原因的方法,具體結果具體分析,沒有固定方法。
????????判定表驅動法:通過表格形式展示輸入條件、輸出動作以及它們之間的對應關系,從而設計測試用例的方法。
????????正交試驗設計法:研究多因素多水平的一種設計方法,由試驗因素的全部水平組合中挑選出部分有代表性的點進行試驗,找出最優的水平組合。
8.4.2 白盒測試用例
????????知道程序的代碼邏輯,按照程序的代碼語句,來設計覆蓋代碼分支的測試用例,覆蓋級別從低至高分為下面幾種:
????????????????(1)語句覆蓋SC:邏輯代碼中的所有語句都要被執行一遍,覆蓋層級最低,因為執行了所有的語句,不代表執行了所有的條件判斷。
????????????????(2)判定覆蓋DC:邏輯代碼中的所有判斷語句的條件的真假分支都要覆蓋一次。
????????????????(3)條件覆蓋CC:針對每一個判斷條件內的每一個獨立條件都要執行一遍真和假。
????????????????(4)條件判定組合覆蓋CDC:同時滿足判定覆蓋和條件覆蓋。
????????????????(5)路徑覆蓋:邏輯代碼中的所有可行路徑都覆蓋了,覆蓋層級最高。
8.5?測試模型
8.5.1?W模型
????????W模型是對V模型的一個重要改進,充分體現了盡早開展測試的原則,并將V模型中以發現缺陷為目標上升為保證軟件質量為目標。
? ? ? ? 如圖所示,W模型實際上是兩個V的疊加,一個V 描述開發過程,另外一個V描述測試過程。但測試的起,始時機不再是編碼結束之后,而是從需求分析時開始,且與開發的每一個階段活動同步進行。
8.5.2??H模型
????????H模型改進了W和V模型高度依賴于開發的瀑布模型的缺陷。
????????H 模型把測試活動從軟件開發過程中獨立出來, 在軟件過程的任何一個時間點上,只要測試條件滿足即開展測試。測試的流程與其他流程是并行的。H模型比W模型更好的地方是能夠兼顧測試的效率和靈活性,適合于各種規模及類型的軟件項目。
?8.5.3?敏捷測試模型
? ? ? ? 敏捷測試源于敏捷開發。敏捷測試是敏捷開發的組成部分,需要與開發流程良好融合。
????????敏捷測試在整個敏捷開發過程中,需要與項目的其他人員甚至用戶保持緊密協作,時刻關注需求變化并實施測試,以體現測試的時效性和適應性,這對測試人員有比較高的能力要求。
8.6?調試(debug)
????????測試是發現錯誤,調試是找出錯誤的代碼和原因。
????????調試需要確定錯誤的準確位置;確定問題的原因并設法改正;改正后要進行回歸測試。
????????調試的方法有:蠻力法、回溯法(從出錯的地方開始,向回找)、原因排除法(找出所有可能的原因,逐一進行排除,具體包括演繹法、歸納法、二分法)。
相關推薦
【系統架構設計師】九、軟件工程(軟件工程定義|軟件過程模型|能力成熟度模型)-CSDN博客文章瀏覽閱讀831次,點贊19次,收藏19次。歷年真題考情:本章節每年單項選擇考13分左右,下午案例、論文也會有涉及,在系統架構設計師中本章節絕對是重點中的重點。主要學習軟件工程、需求工程、系統分析與設計、凈室軟件工程、基于構件的軟件工程、軟件項目管理等內容。很少涉及超綱題。https://shuaici.blog.csdn.net/article/details/140095679【系統架構設計師】九、軟件工程(需求工程|系統分析與設計|DFD|DD|高內聚低耦合)-CSDN博客文章瀏覽閱讀516次,點贊14次,收藏12次。系統設計方法:結構化設計方法,面向對象設計方法。系統設計的主要內容:概要設計、詳細設計。概要設計基本任務:又稱為系統總體結構設計,是將系統的功能需求分配給軟件模塊,確定每個模塊的功能和調用關系,形成軟件的模塊結構圖,即系統結構圖。詳細設計的基本任務:模塊內詳細算法設計、模塊內數據結構設計、數據庫的物理設計、其他設計(代碼、輸入/輸出格式、用戶界面)、編寫詳細設計說明書、評審。
https://shuaici.blog.csdn.net/article/details/140259207【系統架構設計師】九、軟件工程(面向對象方法|逆向工程)-CSDN博客文章瀏覽閱讀603次,點贊8次,收藏6次。面向對象的分析模型主要由頂層架構圖、用例與用例圖、領域概念模型構成設計模型則包含以包圖表示的軟件體系結構圖、以交互圖表示的用例實現圖、完整精確的類圖、針對復雜對象的狀態圖和用以描述流程化處理過程的活動圖等。軟件的逆向工程是分析程序,力圖在比源代碼更高抽象層次上建立程序的表示過程,逆向工程是設計的恢復過程。與逆向工程相關的概念有重構、設計恢復、再工程和正向工程。
https://shuaici.blog.csdn.net/article/details/140287834
歷年真題練習
????????1.在白盒測試中,測試強度最高的是()
????????????????A.語句覆蓋
????????????????B.分支覆蓋
????????????????C.判定覆蓋
????????????????D.路徑覆蓋
????????2.在黑盒測試方法中,()方法最適合描述在多個邏輯條件取值組合所構成的負載情況下,分別
要執行哪些不同的動作。
????????????????A.等價類
????????????????B.邊界值
????????????????C.判定表
????????????????D.因果圖
????????3.( )通常為一個迭代過程,其中的活動包括需求發現、需求分類和組織、需求協商、需求文檔化。
????????????????A.需求確認
????????????????B.需求管理
????????????????C.需求抽取
????????????????D.需求規格說明
?
人工分割線-答案
? ? ? ? 1. D
? ? ? ? ? ? ? ? 解析:測試強度從低到高:語判條路,最強的為路徑覆蓋。
? ? ? ? 2. C
? ? ? ? 3. C