1 什麼是軟體測試
軟體測試就是實際輸出結果和預期結果的比較過程。
百度定義:

2 軟體測試的發展曆程
第一階段:軟體測試就是驗證軟體是正确的;
第二階段:軟體測試是去證明軟體是錯誤的;
第三階段:軟體是保證軟體的品質是符合使用者需求的一系列手段。
由于計算機的迅速發展,軟體開發急劇增長,軟體系統的規模和複雜性都越來越大,導緻軟體的可靠性問題也越來越突出。
在這樣的背景下,軟體測試的基礎理論和實用技術開始形成。
一開始軟體測試是訓示為了驗證一個軟體系統的功能是否實作,例如一個登陸界面,輸入正确的使用者名和密碼就能成功登陸。後來軟體測試被定義為:“測試是為發現錯誤而執行程式的過程”。這樣考慮到錯誤的情況可以發現更多的軟體問題。現在更常認為軟體測試是一系列保證軟體品質的手段,考慮到軟體的方方面面,包括軟體開發、軟體工程、組織和流程。
3 軟體測試的職業發展
軟體測試的最基礎的工作就是功能測試。
然後根據個人的興趣和能力可以有以下發現路線:
4 軟體測試的分類
4-1 方法
黑盒測試、白盒測試、灰盒測試
-
黑盒測試
黑盒測試又稱為 資料驅動的測試 或 輸入/輸出驅動測試 。
特點:将程式視為一個黑盒子,測試目标和程式的内部機制和結構完全無關,隻關心程式的實際輸出是否和預計輸出是否一緻。
-
白盒測試
白盒測試又稱為邏輯驅動測試。
特點:檢查程式的内部結構是否正确,仿佛程式是透明的。
-
灰盒測試
灰盒測試就是介于白盒測試和黑盒測試之間的測試方法,或者說是兩者的結合。
4-2 方向
功能測試、性能測試、安全測試
-
功能測試
功能測試簡單來說就是測試程式的功能。
百度定義:Functional testing(功能測試),也稱為behavioral testing(行為測試),根據産品特性、操作描述和使用者方案,測試一個産品的特性和可操作行為以确定它們滿足設計需求。【https://baike.baidu.com/item/%E5%8A%9F%E8%83%BD%E6%B5%8B%E8%AF%95 】
注意:功能測試≠黑盒測試
功能測試通常是采用黑盒測試,黑盒測試是執行功能測試的一種方法。就好比功能測試就是吃飯,用筷子吃飯是黑盒測試,用勺子吃飯是白盒測試,用叉子吃飯是灰盒測試,而通常用的最多的就是筷子吃飯。
-
性能測試
性能測試簡單來說就是測試程式(伺服器)的能力大小。
百度定義:性能測試是通過自動化的測試工具模拟多種正常、峰值以及異常負載條件來對系統的各項性能名額進行測試【https://baike.baidu.com/item/%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95 】
性能測試又分為:
a. 壓力測試
壓力測試用來發現軟體的性能瓶頸。
類比:一個人最多能舉起的重量,如60kg。
b. 負載測試
負載測試是對軟體能承受一定負載或強度的檢驗,涉及到時間因素。負載測試通常不采用壓力測試的峰值,而是取峰值的80%~90%。
類比:一個人最多能舉起60kg,負載測試就是看這個人舉50kg能堅持的時間。
c. 并發測試
百度定義:主要指當測試多使用者并發通路同一個應用、子產品、資料時是否産生隐藏的并發問題,如記憶體洩漏、線程鎖、資源争用問題,幾乎所有的性能測試都會涉及并發測試。【https://baike.baidu.com/item/%E5%B9%B6%E5%8F%91%E6%B5%8B%E8%AF%95 】
例如:淘寶雙十一活動、大學教務網選課、12306搶票
在百度百科中,壓力測試、負載測試、強度測試混為一談。這裡壓力測試強調是一個峰值(性能瓶頸),而負載測試則是強調“一段時間”。
-
安全測試
安全測試就是設計測試用例來突破成功程式安全檢查的過程。其目的就是提升軟體的安全品質,在釋出前找到安全漏洞并予以修複,防止被不法入侵或其他因素幹擾。
通俗來講是防止黑客攻擊,盜取資訊。
4-3 階段
單元測試、內建測試、系統測試、驗收測試
-
單元測試
單元測試(unit testing)是指對軟體中的最小可測試單元進行檢查和驗證。
例如:C語言中函數、Java中的類和方法等。
單元測試通常由開發人員自己完成,通常是白盒測試。
軟體在開發過程是從開發單元開始的,單元就是一個代碼塊。不同的單元有不同的作用,多個單元組成一個功能子產品。
-
內建測試
百度定義:內建測試,也叫組裝測試或聯合測試。在單元測試的基礎上,将所有子產品按照設計要求(如根據結構圖)組裝成為子系統或系統,進行內建測試。【https://baike.baidu.com/item/%E9%9B%86%E6%88%90%E6%B5%8B%E8%AF%95 】
內建測試的重點是接口測試,即測試子產品和子產品之間連接配接得是否正确。而接口就是子產品之間資料傳送的通道。
-
系統測試
所有的子產品內建之後就形成了一個軟體系統,系統測試就是将系統(或程式)與初始目标進行比較。
系統測試又可以進一步分為:
a. 功能測試 點選跳轉
b. 性能測試 click click
c. 安全測試 點我
d. 相容性測試
相容性測試分為WEB測試和APP測試。
-
WEB測試
由于不同浏覽器的選軟引擎有去邊,即使使用同樣的渲染引擎,經過個性化修改後也會有所差别。相容性測試就是測試軟體在不同的浏覽器上的表現,例如:Chrome、IE、Edge、FireFox、360…
-
APP測試
根據手機系統又分為Android系統和IOS系統。
APP相容性測試主要是測試軟體在各個版本的軟體系統上的表現。
e. 易用性測試
易用性測試又稱為使用者體驗測試。(主觀判斷)
百度定義:易用性測試是指使用者使用軟體時是否感覺友善,比如是否最多點選滑鼠三次就可以達到使用者的目的。【https://baike.baidu.com/item/%E6%98%93%E7%94%A8%E6%80%A7%E6%B5%8B%E8%AF%95 】
f. 穩定性測試
狹義的穩定性測試,是指被測試系統在特定硬體、軟體、網絡環境條件下,給系統加載一定業務壓力,使系統運作一段較長時間,以此檢測系統是否穩定,一般穩定性測試時間為 7 × 24 7\times 24 7×24小時。【參考:https://blog.csdn.net/test_xhz/article/details/79354628】
g. UI測試
UI測試又稱界面測試。
【百度定義】測試使用者界面的功能子產品的布局是否合理、整體風格是否一緻、各個控件的放置位置是否符合客戶使用習慣,此外還要測試界面操作便捷性、導航簡單易懂性,頁面元素的可用性,界面中文字是否正确,命名是否統一,頁面是否美觀,文字、圖檔組合是否完美等。(主觀判斷)
……
-
-
驗收測試
驗收測試也稱傳遞測試。
【百度定義】驗收測試是部署軟體之前的最後一個測試操作。在軟體産品完成了單元測試、內建測試和系統測試之後,産品釋出之前所進行的軟體測試活動。【https://baike.baidu.com/item/%E9%AA%8C%E6%94%B6%E6%B5%8B%E8%AF%95/10914477 】
驗收測試是一項确定産品是否能夠滿足合同或使用者所規定需求的測試。
4-4 對象
- APP測試
- WEB測試
- 物聯網測試
- 車聯網測試
- 小程式測試
- 嵌入式測試
- 大資料測試
-
AI測試
……
4-5 狀态
靜态測試、動态測試
-
靜态測試
百度定義:靜态方法是指不運作被測程式本身,僅通過分析或檢查源程式的文法、結構、過程、接口等來檢查程式的正确性。【https://baike.baidu.com/item/%E9%9D%99%E6%80%81%E6%B5%8B%E8%AF%95 】
特點:主要是白盒測試方法。
-
動态測試
百度定義:動态測試方法是指通過運作被測程式,檢查運作結果與預期結果的差異,并分析運作效率、正确性和健壯性等性能。
這種方法由三部分組成:構造測試用例、執行程式、分析程式的輸出結果。【https://baike.baidu.com/item/%E5%8A%A8%E6%80%81%E6%B5%8B%E8%AF%95 】
特點:主要是黑盒測試方法或灰盒測試方法。
4-6 其他
冒煙測試、回歸測試、α測試、β測試
-
冒煙測試
百度:在軟體中,“冒煙測試”這一術語描述的是在将代碼更改嵌入到産品的源樹中之前對這些更改進行驗證的過程。在檢查了代碼後,冒煙測試是确定和修複軟體缺陷的最經濟有效的方法。冒煙測試設計用于确認代碼中的更改會按預期運作,且不會破壞整個版本的穩定性。【https://baike.baidu.com/item/%E5%86%92%E7%83%9F%E6%B5%8B%E8%AF%95 】
冒煙測試非正式的測試流程,用來檢測軟體是否具備可測試性。若不可測試,則直接退回給開發部門。
所謂不可測試性,例如:
(1)登陸界面無法登陸;
(2)APP無法安裝
-
回歸測試
百度定義:回歸測試是指修改了舊代碼後,重新進行測試以确認修改沒有引入新的錯誤或導緻其他代碼産生錯誤。【https://baike.baidu.com/item/回歸測試 】
-
α測試
α測試是内測,又稱為非正式驗收測試。
百度定義:α測試是由一個使用者在開發環境下進行的測試,也可以是公司内部的使用者在模拟實際操作環境下進行的測試。α測試的目的是評價軟體産品的FLURPS(即功能、局域化、可用性、可靠性、性能和支援)。
-
β測試
β測試又稱為公測,有實際使用者參與進來使用。
β測試:β測試指軟體開發公司組織各方面的典型使用者在日常工作中實際使用β版本,即發放一部分給使用者進行測試,并要求使用者報告異常情況、提出批評意見,然後軟體開發公司再對β版本進行改錯和完善。
5 網際網路公司的研發團隊結構
- 項目經理
【軟體測試】測試基礎1 什麼是軟體測試2 軟體測試的發展曆程3 軟體測試的職業發展4 軟體測試的分類5 網際網路公司的研發團隊結構6 研發管理模型7 軟體是什麼8 測試的流程9 測試方法10 測試應用 - 産品經理
【軟體測試】測試基礎1 什麼是軟體測試2 軟體測試的發展曆程3 軟體測試的職業發展4 軟體測試的分類5 網際網路公司的研發團隊結構6 研發管理模型7 軟體是什麼8 測試的流程9 測試方法10 測試應用 - 開發
- 前端
【軟體測試】測試基礎1 什麼是軟體測試2 軟體測試的發展曆程3 軟體測試的職業發展4 軟體測試的分類5 網際網路公司的研發團隊結構6 研發管理模型7 軟體是什麼8 測試的流程9 測試方法10 測試應用 -
後端
參考:https://cloud.tencent.com/developer/article/1030257
- 前端
- 測試
- 運維
【軟體測試】測試基礎1 什麼是軟體測試2 軟體測試的發展曆程3 軟體測試的職業發展4 軟體測試的分類5 網際網路公司的研發團隊結構6 研發管理模型7 軟體是什麼8 測試的流程9 測試方法10 測試應用 - 營運
【軟體測試】測試基礎1 什麼是軟體測試2 軟體測試的發展曆程3 軟體測試的職業發展4 軟體測試的分類5 網際網路公司的研發團隊結構6 研發管理模型7 軟體是什麼8 測試的流程9 測試方法10 測試應用 -
設計
主要是指UI設計。
【軟體測試】測試基礎1 什麼是軟體測試2 軟體測試的發展曆程3 軟體測試的職業發展4 軟體測試的分類5 網際網路公司的研發團隊結構6 研發管理模型7 軟體是什麼8 測試的流程9 測試方法10 測試應用 - ……
6 研發管理模型
瀑布流、V字型、W字型、靈活模型、螺旋形、H字型
- 瀑布流
【軟體測試】測試基礎1 什麼是軟體測試2 軟體測試的發展曆程3 軟體測試的職業發展4 軟體測試的分類5 網際網路公司的研發團隊結構6 研發管理模型7 軟體是什麼8 測試的流程9 測試方法10 測試應用
-
特點
A. 從上一項活動接受本項活動的工作對象,作為輸入;
B. 利用這一輸入實施本項活動應完成的内容;
C.給出本項活動的工作成果,作為輸出傳給下一項活動。
- 使用場合:在需求不明确的情況下,就無法采用瀑布模型。
-
優點
□ 強調開發的階段性;
□ 強調早期計劃及需求調查;
□ 強調産品測試。
-
缺點
□ 依賴于早期進行的唯一一次需求調查,不能适應需求的變化;
□ 由于時單一流程,開發中的經驗教訓不能回報應用于本産品的過程;
□ 風險往往遲至後期的開發階段才顯露,因而失去即使糾正的機會。
- V字型
【軟體測試】測試基礎1 什麼是軟體測試2 軟體測試的發展曆程3 軟體測試的職業發展4 軟體測試的分類5 網際網路公司的研發團隊結構6 研發管理模型7 軟體是什麼8 測試的流程9 測試方法10 測試應用
- 明确地标注了測試過程中存在的不同類型的測試,并且清楚地描述了這些測試階段和開發過程期間各階段的對應關系;
-
V模型指出,單元和內建測試應檢測程式的執行是否滿足軟體設計的要求;
系統測試應檢測系統功能、性能的品質特性是否達到系統要求的名額;
驗收測試确定軟體的實作是否滿足使用者需要或合同的要求。
- 局限性:僅僅把測試作為在編碼之後的一個階段,未在需求階段就進入測試。
- W字型
【軟體測試】測試基礎1 什麼是軟體測試2 軟體測試的發展曆程3 軟體測試的職業發展4 軟體測試的分類5 網際網路公司的研發團隊結構6 研發管理模型7 軟體是什麼8 測試的流程9 測試方法10 測試應用
- W模型增加了軟體各開發階段中應同步進行的驗證和确認活動。W模型由兩個V字模型組成,分别代表測試和開發過程,圖中明确表示出測試與開發的并行關系。
- 特點:測試對象不僅是程式,需求、設計等同樣要測試,測試與開發是同步進行。
-
優點:
A. 有利于盡早地全面地發現問題。
例如:需求分析完成後,測試人員就應該參與帶對需求的驗證和确認活動中,以盡早地找出缺陷所在。
B. 同時,對需求的測試也有利于及時了解項目難度和測試風險,及早指定應對措施,顯著減少總體測試時間,加快項目進度。
- 局限性:需求、設計、編碼等活動被視為串行的;測試和開發活動也保持着一種線性的前後關系,上一階段完全結束才可正式開始下一個階段工作。無法支援疊代的開發模型。對于目前軟體開發複雜多變的情況,W模型并不能解除測試管理面臨的困惑。
-
靈活模型
處于探索階段,每個公司情況不同。
-
特點:
高效的工作
及時的溝通
-
工作形式
工作日報、白闆、早會/站立會、集中辦公
7 軟體是什麼
百度定義:計算機軟體( Software,也稱軟體)是指計算機系統中的程式及其文檔,程式是計算任務的處理對象和處理規則的描述;文檔是為了便于了解程式所需的闡明性資料。程式必須裝入機器内部才能工作,文檔一般是給人看的,不一定裝入機器。
是以軟體由三部分組成:
- 程式
- 文檔
- 資料
一個優秀的測試養成攻略:測試→文檔→程式設計
8 測試的流程
8-1 需求分析階段
Step1:需求分析
需求分析有三種表現形式:
- 需求文檔:【https://baike.baidu.com/item/%E4%BA%A7%E5%93%81%E9%9C%80%E6%B1%82%E6%96%87%E6%A1%A3/22740526?fromtitle=PRD&fromid=11013752#1 】
- 産品原型:由産品經理來畫,産品原型可以讓人對産品有直覺的感受,例如“墨刀”上的原型分型“慕課網APP”【https://free.modao.cc/posts/9643 】
- 口述:不靠譜!
Step2:學習業務流程
即拿到産品原型,看每個功能是怎麼設計的,弄清楚每個功能的作用。
Step3:提取功能點
既可以用思維導圖,也可以用Excel表寫。
執行個體:上述的慕課網APP
Step4:編寫需求分析說明書
就是将提取功能點過程裝換成文檔。
如果沒有需求怎麼辦?
答:參考市面上已經成熟的同類型的産品使如何實作的。
8-2 測試設計階段
-
測試計劃
包括時間和人員以及資源的安排與配置設定。
通常套用模闆,又稱為測試計劃說明書。
有時候 測試計劃+測試方案+測試政策 都寫入測試計劃。
-
測試方案
包括:
A. 針對每一個測試内容,以及如何展開測試;
B. 采用什麼測試計劃;
C. 是用什麼測試工具。
-
測試政策
包括:
A. 哪些内容先測試;
B. 哪些内容後測試;
C. 開始測試和結束測試的标準是什麼?
上述的測試計劃、測試方案和測試政策都可以采用“5W1H”
5W:why / what / when / where / who /
1H:how
例如:搜尋“測試計劃”【https://baike.baidu.com/item/%E6%B5%8B%E8%AF%95%E8%AE%A1%E5%88%92 】
- why——為什麼要進行這些測試;
- what—測試哪些方面,不同階段的工作内容;
- when—測試不同階段的起止時間;
- where—相應文檔,缺陷的存放位置,測試環境等;
- who—項目有關人員組成,安排哪些測試人員進行測試
- how—如何去做,使用哪些測試工具以及測試方法進行測試。
-
測試用例
測試用例必須包含9個内容:
- 用例編号:必須是唯一的;
- 用例名稱:言簡意赅,用最少的字描述清楚這個用例是做什麼的;
- 前置條件:即執行這個用例之前,軟體必須要滿足的條件;
-
優先級:執行這條用例的時間要求緊急的等級,
在有限的時間裡會對相同的優先級的測試用例裡交出重要級高的來優先測試。
- 重要級:這個被測的功能在系統裡面的重要級别;
- 測試資料
- 測試步驟
- 預期結果
- 實際結果
8-3 測試執行階段
測試執行階段就是獲得實際結果的過程。
- 将預期結果和實際結果做對比,如果一樣則通過,如果不一樣則有問題。
- 送出BUG;
-
回歸測試
百度定義:回歸測試是指修改了舊代碼後,重新進行測試以确認修改沒有引入新的錯誤或導緻其他代碼産生錯誤。自動回歸測試将大幅降低系統測試、維護更新等階段的成本。【https://baike.baidu.com/item/%E5%9B%9E%E5%BD%92%E6%B5%8B%E8%AF%95 】
通俗的了解:開發送出版本1的軟體,測試之後送出BUG。開發修改,再次送出版本2的軟體。在版本2上檢查發現的BUG有沒有被解決叫做回歸測試。
版本1到版本2的過程叫疊代。
版本疊代:随着時間/測試次數的推進,會釋出很多版本,其中版本号是不斷增加的。
随着版本的疊代,軟體的功能會越來越多。當軟體功能比較單一時,版本疊代時回歸測試采用的全量測試。
當功能變得複雜後,測試全部的功能不太現實(可以采用自動化測試),是以采用增量測試,即指測試軟體修改和添加的部分。
BUG的管理
【禅道】http://demo.zentao.net/bug-browse-45.html
BUG的管理平台系統/工具
禅道⭐、BUGFree、ALM/QC、testlink、JIRA、……
隻需要會一個,因為都是同樣的功能,頁面不同。
BUG的六要素
- 編号
- BUG的名稱:要求言簡意赅,看到題目就知道是什麼問題
- BUG的優先級:根據實際的情況,判斷這個BUG是否需要優先解決,分為"高/中/低"三個等級。
-
BUG的等級
[a] 緻命的:①影響産品的核心流程的正常使用 \ ②導緻軟體挂了、閃退、奔潰 \ ③和錢有關的;
[b] 嚴重的:導緻功能無法正常使用的BUG;
[c] 一般的:功能的某些異常場景有問題;
[d] 輕微的:建議性的東西、使用者體驗、UI上的問題
-
BUG的複現步驟
寫得越詳細越好。
可以把用例的步驟複制過來;寫出預期結果和實際結果。
-
附件
目的是用于BUG的佐證。可以用截圖、日志、小視訊等形式。
BUG的生命周期
BUG從發生到被解決的過程就是生命周期的過程。也是開發和測試的溝通過程
BUG的狀态
- 建立/new
- 打開/激活/open
- 已确認
- 已解決
- 拒絕
- 重新打開/reopen
- 關閉/closed
- 延期處理
- 重複BUG
8-4測試總結階段
主要任務是編寫測試報告。包括:
- 對工作的總結
-
對BUG的統計分析
包括開發、測試、軟體子產品、等級、解決時間、每個版本、狀态等。
-
對被測軟體的評估
即軟體是否達到可傳遞的标準,也是測試結束的标志。
常用的标準為:
(1)一、二級BUG都關閉了;
(2)三級BUG關閉了80%以上;
(3)四級BUG,Let it go~
9 測試方法
等價類、邊界值、場景法、因果圖、判定表、路徑覆寫、……
-
等價類
依據需求将輸入劃分為若幹個等價類(特殊情況下會考慮輸出),從等價類中選出一個測試用例如果這個測試用例測試通過,則認為所代表的等價類測試通過。這樣就可以用較少的測試用例達到盡量多的功能覆寫,解決了不能窮舉測試的問題。
A. 有效等價類
對于需求分析說明書是合理的、有意義的輸入資料構成的集合。
利用有效等價類驗證程式是否實作了規格說明中所規定的功能和性能。
B. 無效等價類
根據需求說明書,不滿足需求的集合。
等價的劃分原則:
① 如果規定了輸入值的範圍(閉區間),可以劃分為1個有效等價類,2個無效的等價類;
② 如果輸入是一個布爾表達式,可以劃分為1個有效等價類和1個無效等價類;
③ 如果規定了輸入資料的一組值,而且程式對不同輸入值做不同的處理,則每個允許的輸入值是一個有效的等價類,此外還有一個無效的等價類(任意一個不允許的輸入值);
④ 如果規定了輸入資料必須遵守的規則,可以劃分出一個有效的等價類(符合規則)和若幹個無效的等價類(從不同的角度違反規則)。
-
邊界值
邊界條件:可以在産品說明書中有定義或者在使用軟體過程中确定;
次邊界條件(内部邊界條件):
A. 2的乘方
一個位元組8位組成,一個字2個位元組組成,16=2^4
例如:允許輸入1-1000的數字,則14、15、16,254、255、256
B. ASCII表
其他邊界條件:如輸入資訊為空、非法、錯誤、不正确和垃圾資料
常常把邊界值和等價類劃分結合使用
例如:
微信紅包,輸入值必須是大于0.01,小于200,且小數點後最多兩位的數字。則劃分出結果可以為:
有效等價類:0.01、0.02、199.99、200、111.11(0.01-200之間的任意值)
無效等價類:0、200.01
-
場景法
規則越複雜,場景越複雜。
【軟體測試】測試基礎1 什麼是軟體測試2 軟體測試的發展曆程3 軟體測試的職業發展4 軟體測試的分類5 網際網路公司的研發團隊結構6 研發管理模型7 軟體是什麼8 測試的流程9 測試方法10 測試應用
10 測試應用
相關知識:軟體的結構
- B/S(浏覽器 / 伺服器)
C/S(客戶 / 伺服器)
用戶端需要單獨安裝,例如手機APP。
- APP測試
- APP測試後很多專項測試:
- 安裝/解除安裝、
- 消息推送
- 更新
- 弱網(2G/3G/4G/5G/WiFi)
-
場景互動測試
突然來電話;
正在聽歌;
調用相機;
前背景切換
……
- 權限測試
- 離線測試
- WEB測試