- 定義
軟件 不等于 編程,具有自己的生命周期,測(cè)試是其中重要的部分,充分的測(cè)試才能保證軟件的質(zhì)量。
測(cè)試是為了找出軟件缺陷(Bug)并進(jìn)行修復(fù)(Fix),以保障軟件的質(zhì)量滿足用戶的需求。
一個(gè)好的測(cè)試可以①在第一時(shí)間發(fā)現(xiàn)程序中存在的錯(cuò)誤,②發(fā)現(xiàn)至今尚未發(fā)現(xiàn)的錯(cuò)誤
產(chǎn)品質(zhì)量
功能性 Functionality
可用性 Usability
可靠性 Reliability
性能 Performance
容量 Capacity
可測(cè)量性 Scalability
可維護(hù)性 Service manageability
兼容性 Compatibility
可擴(kuò)展性 Extensibility軟件缺陷:軟件和產(chǎn)品設(shè)計(jì)書(shū)(原型)的不一致,不能滿足用戶的需求,在IEEE(1983)729的標(biāo)準(zhǔn)定義:①?gòu)漠a(chǎn)品內(nèi)部:軟件產(chǎn)品開(kāi)發(fā) 或維護(hù)過(guò)程匯中所存在的錯(cuò)誤、毛病等各種問(wèn)題,②從外部:系統(tǒng)所需要實(shí)現(xiàn)的某種功能的失效或違背。
| 軟件缺陷(Bug) | ||||
|---|---|---|---|---|
| 缺點(diǎn)(defect) | 偏差(variance) | 謬誤(fault) | 失?。╢ailture) | 問(wèn)題(problem) |
| 矛盾(inconsistency) | 錯(cuò)誤(error) | 毛?。╥ncident) | 異常(anomy) |
| 主要類型/現(xiàn)象 |
|---|
| 功能、特性沒(méi)有實(shí)現(xiàn)或部分實(shí)現(xiàn) |
| 設(shè)計(jì)不合理,存在缺陷 |
| 實(shí)際結(jié)果和預(yù)期結(jié)果不一致 |
| 運(yùn)行出錯(cuò),包括運(yùn)行中斷、系統(tǒng)崩潰、界面混亂 |
| 數(shù)據(jù)結(jié)果不正確、精度不夠 |
| 用戶不能接受的其他問(wèn)題,如存取時(shí)間過(guò)長(zhǎng)、界面不美觀 |
| 原因的分類 | |
|---|---|
| 技術(shù)問(wèn)題 | 算法錯(cuò)誤,語(yǔ)法錯(cuò)誤,計(jì)算和精度問(wèn)題,接口參數(shù)傳遞不匹配 |
| 團(tuán)隊(duì)工作 | 誤解、溝通不充分 |
| 軟件本身 | 文檔錯(cuò)誤、用戶使用場(chǎng)合(user scenario) |
| 時(shí)間上不協(xié)調(diào)、或不一致性所帶來(lái)的問(wèn)題 | |
| 系統(tǒng)的自我恢復(fù)或數(shù)據(jù)的異地備份、災(zāi)難性恢復(fù)等問(wèn)題 |
| 產(chǎn)生的階段 | 成本(100分) |
|---|---|
| 需求 | 1 |
| 設(shè)計(jì) | 5 |
| 編碼 | 10 |
| 單元測(cè)試 | 40 |
| 測(cè)試 | 50 |
| 發(fā)布 | 100 |
- 軟件測(cè)試的方法
1)按關(guān)聯(lián)內(nèi)部結(jié)構(gòu)分類
- 白盒測(cè)試(結(jié)構(gòu)測(cè)試或邏輯驅(qū)動(dòng)測(cè)試)
按照程序內(nèi)部邏輯結(jié)構(gòu)和編碼結(jié)構(gòu),設(shè)計(jì)測(cè)試數(shù)據(jù)并完成測(cè)試 - 黑盒測(cè)試(數(shù)據(jù)驅(qū)動(dòng)測(cè)試)
把測(cè)試對(duì)象當(dāng)做看不見(jiàn)的黑盒,完全不考慮程序內(nèi)部結(jié)構(gòu)和處理過(guò)程,依據(jù)功能的需求規(guī)范,確定測(cè)試用例和推斷測(cè)試結(jié)果的正確性,在使用軟件的角度,從輸入數(shù)據(jù)和輸出數(shù)據(jù)的對(duì)應(yīng)關(guān)系進(jìn)行測(cè)試 - 灰盒測(cè)試
結(jié)合“白盒測(cè)試”和“黑盒測(cè)試”,基于程序運(yùn)行時(shí)的外部表現(xiàn)又結(jié)合內(nèi)部邏輯結(jié)構(gòu)設(shè)計(jì)用例,執(zhí)行程序并采集路徑執(zhí)行信息和外部用戶接口結(jié)果。
2)按是否執(zhí)行代碼分類
- 靜態(tài)測(cè)試
不運(yùn)行被測(cè)程序,僅通過(guò)分析或檢查源程序的語(yǔ)法、結(jié)構(gòu)、過(guò)程、接口等來(lái)檢查程序的正確性。 - 動(dòng)態(tài)測(cè)試
運(yùn)行被測(cè)程序,檢查運(yùn)行結(jié)果和預(yù)期結(jié)果的差異,并分析運(yùn)行效率、正確性和健壯性等性能指標(biāo)。
3)從開(kāi)發(fā)過(guò)程分類

單元測(cè)試(模塊測(cè)試)
測(cè)試對(duì)象:模塊或組件(程序系統(tǒng)中的最小單元)
階段:編碼階段,由編程人員和測(cè)試人員共同完成
目的:①檢查程序模塊或組件的以實(shí)現(xiàn)功能與定義的功能是否一致,②編碼中是否存在錯(cuò)誤。
方法:主要是白盒測(cè)試方法,從程序內(nèi)部結(jié)構(gòu)設(shè)計(jì)測(cè)試用例,多個(gè)模塊可以平行、對(duì)立測(cè)試,編寫(xiě)驅(qū)動(dòng)模塊和樁模塊。集成測(cè)試(也稱組裝測(cè)試、聯(lián)合測(cè)試、子系統(tǒng)測(cè)試)
測(cè)試對(duì)象:?jiǎn)卧獪y(cè)試的多級(jí)擴(kuò)展,按照設(shè)計(jì)要求組裝集成模塊
目的:檢查單元之間的接口關(guān)系,發(fā)現(xiàn)單元接口之間存在的問(wèn)題,最終把經(jīng)過(guò)測(cè)試的單元組成符合設(shè)計(jì)要求的軟件。
方法:一次性集成方式,增殖式集成方式功能測(cè)試
測(cè)試對(duì)象:完成集成測(cè)試后的應(yīng)用系統(tǒng)
目的:從用戶角度來(lái)進(jìn)行功能驗(yàn)證,以確認(rèn)每個(gè)功能是否能正常使用系統(tǒng)測(cè)試(包括:恢復(fù)測(cè)試、安全測(cè)試、強(qiáng)度測(cè)試、性能測(cè)試)
測(cè)試對(duì)象:將集成好的軟件系統(tǒng),作為整個(gè)計(jì)算機(jī)系統(tǒng)的一個(gè)元素,與計(jì)算機(jī)硬件、外設(shè)、某些支持軟件、人員、數(shù)據(jù)等其他系統(tǒng)結(jié)合在一起,在實(shí)際運(yùn)行環(huán)境下,對(duì)計(jì)算機(jī)系統(tǒng)進(jìn)行一系列的組裝測(cè)試和確認(rèn)測(cè)試
目的:判斷系統(tǒng)是否符合要求
類型:
(1)功能測(cè)試:對(duì)軟件需求規(guī)格說(shuō)明書(shū)中的功能需求逐項(xiàng)測(cè)試
(2)性能測(cè)試:對(duì)軟件需求規(guī)格說(shuō)明書(shū)中的功能需求逐項(xiàng)測(cè)試
(3)接口測(cè)試:對(duì)軟件需求規(guī)格說(shuō)明書(shū)中的接口需求逐項(xiàng)測(cè)試
(4)人機(jī)交互界面測(cè)試:對(duì)所有人機(jī)交互界面提供的操作和顯示界面進(jìn)行測(cè)試
(5)強(qiáng)度測(cè)試:強(qiáng)制軟件運(yùn)行在異常乃至發(fā)生故障的情況下(超出軟件極限),檢查軟件可以運(yùn)行的程度。
(6)余量測(cè)試:對(duì)軟件是否達(dá)到規(guī)格說(shuō)明中要求的余量測(cè)試
(7)安全性測(cè)試:檢驗(yàn)軟件中已存在的安全性、安全保密性措施是否有效
(8)可靠性測(cè)試:在真實(shí)的或仿真的環(huán)境中,為做出軟件可靠性估計(jì)而對(duì)軟件進(jìn)行的功能測(cè)試(其輸入覆蓋和環(huán)境覆蓋一般大于普通的功能測(cè)試
(9)恢復(fù)性測(cè)試:對(duì)有恢復(fù)或重置功能的軟件的每一類導(dǎo)致恢復(fù)或重置的情況,逐一進(jìn)行的測(cè)試
(10)邊界測(cè)試:對(duì)軟件處在邊界或端點(diǎn)情況下運(yùn)行狀態(tài)的測(cè)試
(11)數(shù)據(jù)處理測(cè)試:對(duì)完成專門(mén)數(shù)據(jù)處理功能所進(jìn)行的測(cè)試
(12)安裝性測(cè)試:對(duì)安裝過(guò)程是否符合安裝規(guī)程的測(cè)試,以發(fā)現(xiàn)安裝過(guò)程中的錯(cuò)誤
(13)容量測(cè)試:檢驗(yàn)軟件的能力最高能達(dá)到什么程度的測(cè)試
(14)互操作性測(cè)試:為驗(yàn)證不同軟件之間的互操作能力而進(jìn)行的測(cè)試
(15)敏感性測(cè)試:為發(fā)現(xiàn)有效輸入中可能引起某種不穩(wěn)定性或不正常處理的數(shù)據(jù)組合
(16)標(biāo)準(zhǔn)符合性測(cè)試:驗(yàn)證軟件與相關(guān)國(guó)家標(biāo)準(zhǔn)或規(guī)范(如軍用標(biāo)準(zhǔn)、國(guó)家標(biāo)準(zhǔn)、行業(yè)標(biāo)準(zhǔn)及國(guó)際標(biāo)準(zhǔn))一致性的測(cè)試
(17)兼容性測(cè)試:驗(yàn)證軟件在規(guī)定條件下與若干個(gè)實(shí)體共同使用或?qū)崿F(xiàn)數(shù)據(jù)格式轉(zhuǎn)換時(shí)能滿足有關(guān)要求能力的測(cè)試
(18)中文本地化測(cè)試:驗(yàn)證軟件在不降低原有能力的條件下,處理中文能力的測(cè)試驗(yàn)收測(cè)試
以用戶為主的測(cè)試,軟件開(kāi)發(fā)人員和質(zhì)量保證人員參加,由用戶設(shè)計(jì)測(cè)試用例。不是對(duì)系統(tǒng)進(jìn)行全覆蓋測(cè)試,而是對(duì)核心業(yè)務(wù)流程進(jìn)行測(cè)試。安裝測(cè)試
測(cè)試對(duì)象:已打包軟件
目的:驗(yàn)證軟件的安裝
方法:按照軟件產(chǎn)品安裝手冊(cè)或相應(yīng)的文檔,在一個(gè)和用戶使用該產(chǎn)品完全一樣的環(huán)境中或相當(dāng)于用戶使用環(huán)境中,進(jìn)行一步一步的安裝操作性的測(cè)試回歸測(cè)試
測(cè)試對(duì)象:已上線的軟件。
目的:檢測(cè)在維護(hù)階段中,代碼修改而引入的錯(cuò)誤
方法:根據(jù)代碼的修改情況對(duì)已有測(cè)試用例集進(jìn)行有效的復(fù)用,涉及自動(dòng)化工具,面向?qū)ο蠡貧w測(cè)試,測(cè)試用例優(yōu)先級(jí),回歸測(cè)試用例補(bǔ)充生成等
4)按是否人工干預(yù)分類
- 手工測(cè)試
測(cè)試人員按照事先為覆蓋被測(cè)軟件需求而編寫(xiě)的測(cè)試用例,根據(jù)測(cè)試大綱中所描述的測(cè)試步驟和方法,手工地一個(gè)一個(gè)地輸 入執(zhí)行,包括與被測(cè)軟件進(jìn)行交互(如輸入測(cè)試數(shù)據(jù)、記錄測(cè)試結(jié)果等),然后觀察測(cè)試結(jié)果,看被測(cè)程序是否存在問(wèn)題,或在執(zhí)行過(guò)程中是否會(huì)有異常發(fā)生,屬于比較原始但是必須執(zhí)行的一個(gè)步驟 - 自動(dòng)化測(cè)試
將大量的重復(fù)性的測(cè)試工作交給計(jì)算機(jī)去完成,通常是使用自動(dòng)化測(cè)試工具來(lái)模擬手動(dòng)測(cè)試步驟,執(zhí)行用某種程序設(shè)計(jì)語(yǔ)言編寫(xiě)的過(guò)程(全自動(dòng)測(cè)試就是指在自動(dòng)測(cè)試過(guò)程中,不需要人工干預(yù),由程序自動(dòng)完成測(cè)試的全過(guò)程;半自動(dòng)測(cè)試就是指在自動(dòng)測(cè)試過(guò)程中,需要手動(dòng)輸入測(cè)試用例或選擇測(cè)試路徑,再由自動(dòng)測(cè)試程序按照人工指定的要求完成自動(dòng)測(cè)試)
5)從實(shí)施組織分類
- 開(kāi)發(fā)測(cè)試:開(kāi)發(fā)中進(jìn)行的測(cè)試(編程人員或測(cè)試人員完成)
- 用戶測(cè)試:用戶方進(jìn)行的測(cè)試
- 第三方測(cè)試:專業(yè)的第三方承擔(dān)的測(cè)試,以保證測(cè)試工作的客觀性
6)從測(cè)試環(huán)境分類
- 阿爾法(Alpha)測(cè)試:一個(gè)用戶在開(kāi)發(fā)環(huán)境下,或公司內(nèi)部用戶在模擬實(shí)際操作環(huán)境下 進(jìn)行的測(cè)試
- 貝塔(Beta)測(cè)試:用戶組織各方面的典型終端用戶在日常工作日實(shí)際使用貝塔版本,并要求用戶報(bào)告。
7)其他分類
冒煙測(cè)試
冒煙測(cè)試的對(duì)象是新編譯的每一個(gè)需要正式測(cè)試的軟件版本,測(cè)試系統(tǒng)的主流程是否可用
,目的是確認(rèn)軟件基本功能正常,可以進(jìn)行后續(xù)的正式測(cè)試工作。冒煙測(cè)試的執(zhí)行者是版本編譯人員。隨機(jī)測(cè)試
隨機(jī)測(cè)試沒(méi)有書(shū)面測(cè)試用例、記錄期望結(jié)果、檢查列表、腳本或指令,主要依靠測(cè)試員的經(jīng)驗(yàn),
對(duì)軟件的一些重要功能進(jìn)行復(fù)測(cè),也包括測(cè)試那些當(dāng)前的測(cè)試樣例(TestCase)沒(méi)有覆蓋到的部分。
- 軟件測(cè)試的步驟
| 階段 | 內(nèi)容 |
|---|---|
| 需求分析階段 | 閱讀需求,理解需求,主要就是對(duì)業(yè)務(wù)的學(xué)習(xí),分析需求點(diǎn),參與需求評(píng)審會(huì)議 |
| 計(jì)劃階段 | 執(zhí)行測(cè)試計(jì)劃:測(cè)試范圍,測(cè)試策略,風(fēng)險(xiǎn)評(píng)估、規(guī)避措施、進(jìn)入安排 |
| 設(shè)計(jì)階段 | 編寫(xiě)測(cè)試用例:可參考原型圖、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)等文檔,并評(píng)審用例 |
| 執(zhí)行階段 | 搭建環(huán)境,執(zhí)行冒煙測(cè)試(預(yù)測(cè)試),然后正式測(cè)試,bug管理,反饋開(kāi)發(fā)修復(fù)直到測(cè)試結(jié)束 |
| 評(píng)估階段 | 輸出測(cè)試報(bào)告,確認(rèn)是否上線 |

參考資料:
https://blog.csdn.net/qq_33642117/article/details/73603365
https://baike.baidu.com/item/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95/327953
https://www.cnblogs.com/shashe/p/8685799.html