通過手工或者工具對「被測物件」進行測試操作,從而驗證實際結果與預期結果是否存在差異
通過測試軟體可以發現並修復軟體中存在的缺陷,從而提高使用者對產品的使用信心。測試可以記錄軟體執行過程中產生的一些資料,從而為決策提供資料支援。測試可以降低同類產品開發遇到問題的風險
軟體測試的七個原則:
我們在執行測試工作時必須要遵守的一些規則
**1.測試顯示軟體存在缺陷(testing shows presence of defects)**測試只能證明軟體中存在缺陷,但不能證明軟體中不存在缺陷
2.窮盡測試是不可能的(exhaustive testing is impossible)隨著軟體規模越來越大,複雜度越來越高,想做到完全性的測試是不可能的。在測試階段,測試人員可以根據風險和優先順序來進行集中和高強度的測試
3.測試盡早介入(testing early)保證軟體質量、降低風險和成本。缺陷發現的越早修復的成本就越小
4.缺陷集群性(2/8原則)defect clustering缺陷集群性表明小部分模組包括大部分的缺陷。帕累託原則:80%缺陷發生在20%的模組中
**5.殺蟲劑悖論(pesticide paradox)**如果一直使用相同的測試方法或手段,可能無法發現新的bug。為了解決這個問題,測試用例應當定期修訂和評審,增加心底的或不同的測試用例幫助發現更多缺陷
**6.測試活動依賴於測試內容(testing is context dependent)**不同行業測試活動的開展都有所不同,如測試技術、測試工具的選擇,測試流程都不盡相同,所以測試軟體的活動開展依賴於所測試的內容
7.沒有錯誤是好事謬論(absence of error - fallacy)有可能99%沒有bug的軟體也是不能使用的。軟體測試不僅是找出缺陷,同時也需要確認軟體是否滿足需求
軟體測試不僅是找出缺陷 同時也需要確認軟體是否滿足需求
將軟體分為三個部分組成:功能集合+使用說明+配置資料
**1.需求分析階段:**各種要求規格說明。
**2.軟體架構設計:**api介面文件(介面測試)
**3.編碼實現階段:**源**(白盒測試、單元測試)
**4.系統功能使用:**軟體功能主體(當前行業做的最多的一種測試)
軟體的開發都會依據相應的開發模式,而測試級別指的就是在這個模型中的人為開發步驟
1.單元測試(ut unit test)
在軟體測試中單元指的就是組成軟體最小的底層**結構,一般就是類、函式、元件
2.整合測試(it system ingertaion test)
將多個單元模組組合在一起,然後驗證他們之間 溝通的「橋梁」是否能正常工作(介面測試)
3.系統測試(st system test)
當前行業做的最多的一種測試。由測試人員充當使用者然後對軟體的功能進行測試。
4.驗收測試
(1)α(alpha)測試—>內測
(2)β(beta)測試—>公測
(3)uat(user acceptance test)—>由客戶派出對於業務非常精通的人員來使用該軟體,從而對功能進行測試
(4)驗收測試的核心就是讓使用者為當前軟體「買單」
**1.功能測試:**驗證當前的軟體主體功能是否可用
**2.相容性測試:**驗證當前軟體主體功能是否可用
**3.安全測試:**驗證軟體是否只是能授權使用者提供功能使用
**4.效能測試:**相對於當前軟體消耗的資源,它的產出能力
1.按測試物件進行分類
(1)白盒測試:這種測試的主體就是軟體底層**,不在意外在的介面是否ok,只要求底層功能實現,同時邏輯正確
(2)黑盒測試:這種測試就是指測試軟體外在主體功能是否可用
(3)灰盒測試:介於兩者之間(介面測試)
(4)注意:上述三種方法當中的「盒」指的就是被測物件 (也就是我們所說的軟體)
2.按測試物件是否執行分類
(1)靜態測試:測試物件不執行。(一般測文件、純介面靜態展示性質)。
(2)動態測試:將軟體執行在真是的使用環境中進行測試。
3.按測試手段進行分類
(1)手工測試:由測試人員手動的對被測物件進行驗證,優點是可靈活的改變測試操作及環境
(2)自動化測試:所謂自動化主要有兩種形式,一種是自己寫指令碼測試,另一種是通過第三方工具對被測消費物件進行測試。優點就是可以高效率的去執行一些人工無法實現的操作。
描述當前軟體是否好用,在當前的軟體行業裡我們採用的一套標準是基於iso這個組織制定的
**1.功能性:**軟體需要滿足使用者顯式或者隱式功能
**2.易用性:**軟體易於學習和上手使用
**3.可靠性:**指的就是軟體必須實現需求當中指明的具體功能
**4.效率性:**類似於軟體的效能
**5.可維護性:**要求軟體具有將某個功能修復之後繼續使用的能力
**6.可移植性:**當前軟體可以從乙個平台上移植到另乙個平台上去使用的功能
軟體測試流程
1.需求分析
(1)當前階段的核心目的就是梳理清楚我們需要涉及的點是什麼
2.設計用例
(1)用例就是使用者為了測試軟體的某個功能而執行的操作過程
(2)設計用例是有方法的(等價類、邊界值、判定表)
3.評審用例
對當前的用例進行新增或刪除
4.配置環境
(1)環境:指的就是當前被測試物件執行所需要的執行環境,作為測試人員需要具備環境的能力(一般情況下使用一鍵安裝的整合環境)
(2)環境分類:作業系統+伺服器軟體+資料庫+軟體底層**的執行環境
5.執行用例
(1)一般在執行用例之前我們會做乙個冒煙測試。這種測試的核心就是快速的對當前軟體的核心功能或者主體執行流程進行驗證。如果冒煙測試階段有問題,則可以將此版本回退給開發
(2)如果冒煙測試通過,那麼才會開展全面的測試
6.回歸測試及缺陷跟蹤
(1)回歸測試:是指的就是當我們將某個缺陷提交給開發之後,由他們進行修復,修復完成之後需要v測試人員再次進行測試
(2)缺陷跟蹤:指的就是當測試人員發現某個缺陷之後 需要一直對其進行狀態跟蹤
7.輸出測試報告
將當前的測試過程中產生的資料進行視覺化的輸出,方便其他人檢視
8.測試結束
將整個測試過程中產生的一些文件進行整理歸檔,方便後續呼叫
軟體測試理論基礎
1 軟體的三個要素 程式 實行特定功能的 文件 支援 執行 資料 支援程式執行一切有關 2 軟體測試的目的 1 驗證軟體是否滿足 軟體開發合同 或者專案開發計畫,系統 子系統設計文件,軟體需求規格說明,軟體產品說明等規定的軟體質量要求 2 通過測試,發現軟體缺陷 3 為軟體產品的質量測量和評價提供依...
軟體測試理論基礎(一)
一 軟體測試分類體系系統學習 1 軟體測試是什麼?1 為什麼做軟體測試 軟體測試存在的意義?發現程式存在的 或業務邏輯錯誤 檢驗產品是否符合使用者需求 提高使用者的體驗 2 軟體測試最重要的是什麼?提高使用者體驗 2 軟體測試的原則 1 測試應該盡早介入 2 所有的測試都應追溯到使用者需求 3 程式...
軟體測試理論基礎(二)
四 如何寫測試計畫 測試計畫應該包含什麼?編寫目的 背景 參考資料 測試要點 測試環境 產品及技術形態 起始時間 測試設計和測試執行 的任務分解和人員安排 風險控制 測試內容 人力以及時間資源分配 責任劃分 風險控制 測試結束的標準是什麼?用例通過率和bug比例達到要求,不出現比較嚴重的bug,測試...