一、軟件測試概念
軟件測試:為了發(fā)現軟件錯誤和缺陷(統(tǒng)稱bug)而執(zhí)行程序的一個過程。
軟件測試是軟件開發(fā)過程的重要組成部分,是用來確認一個程序的功能或性能是否符合開發(fā)之前所提出的一些要求。軟件測試就是在軟件投入運行前,對軟件需求分析、設計規(guī)格說明和編碼的最終復審,是軟件質量保證的關鍵步驟。
二、軟件測試目的
最直觀的目的肯定是通過對軟件系統(tǒng)或程序的測試,發(fā)現其中的錯誤。
軟件測試的目的具體如下:
驗證軟件需求和功能是否得到了完整的實現
盡可能早的發(fā)現軟件中的bug
盡可能多的發(fā)現軟件中的bug
驗證軟件是否可以發(fā)布
對軟件的質量、性能、效率做出合理的評估
預防用戶使用可能出現的問題
預防下個版本可能出現的問題
三、軟件測試基本原則
所有測試的標準都是建立在用戶需求之上的,測試的目的在于發(fā)現系統(tǒng)是否滿足規(guī)定的需求; “盡早地和不斷地測試”,越早進行測試,缺陷的修復成本就會越低; 程序員應避免檢查自己的程序,由第三方進行測試更客觀有效; 窮舉測試是不可能的; 充分注意測試中的群集現象,一段程序中一發(fā)現的錯誤數越多,其中存在的錯誤概率越大,因此對發(fā)現錯誤較多的程序段,應進行更深入的測試;
?設計測試用例時應包括合理輸入和不合理輸入,以及各種邊界條件、特殊情況下要制造極端狀態(tài)和意外狀態(tài); 注意回歸測試的關聯性,往往修改一個錯誤會引起更多錯誤; 測試應從“小規(guī)?!遍_始,逐步轉向“大規(guī)?!?; 測試用例式設計出來,不是寫出來的,應根據測試的目的,采用相應的方法設計測試用例,從而提高測試的效率,更多的發(fā)現錯誤,提高程序的可靠性; 重視并妥善保存一切測試過程文檔(測試計劃,測試用例,測試報告等); 對測試錯誤結果一定要有一個確認的過程
四、軟件測試主要工作內容
軟件測試主要工作內容是驗證和確認,下面分別給出其概念:
1、驗證是保證軟件正確地實現了一些特定功能的一系列活動,即保證軟件做了你所期望的事情。
(1)確定軟件生存周期中的一個給定階段的產品是否達到前階段確立的需求的過程;
(2)程序正確性的形式證明,即采用形式理論證明程序符號設一計規(guī)約規(guī)定的過程;
(3)評市、審查、測試、檢查、審計等各類活動,或對某些項處理、服務或文件等是否和規(guī)定的需求相一致進行判斷和提出報告。
2、確認是一系列的活動和過程,目的是想證實在一個給定的外部環(huán)境中軟件的邏輯正確性。即保證軟件以正確的方式來做了這個事件。
(1)靜態(tài)確認,不在計算機上實際執(zhí)行程序,通過人工或程序分析來證明軟件的正確性;
(2)動態(tài)確認,通過執(zhí)行程序做分析,測試程序的動態(tài)行為,以證實軟件是否存在問題。
3、軟件測試的對象不僅僅是程序測試,軟件測試應該包括整個軟件開發(fā)期問各個階段所產生的文檔,如需求規(guī)格說明、概要設計文檔、詳細設計文檔,當然軟件測試的主要對象還是源程序。
從不同的角度出發(fā),軟件測試可以劃分為不同的分類:
(1)從是否關心軟件內部結構和具體實現的角度劃分
A.白盒測試
B.黑盒測試
C.灰盒測試
(2)從是否執(zhí)行程序的角度
A.靜態(tài)測試
B.動態(tài)測試。
(3)從軟件開發(fā)的過程按階段劃分有
A.單元測試
B.集成測試
C.確認測試
D.驗收測試
E.系統(tǒng)測試
五、軟件測試方法
軟件測試一般分為白箱測試和黑箱測試。
1、黑箱測試
黑箱測試(black-box testing),也稱黑盒測試,是軟件測試方法,測試應用程序的功能,而不是其內部結構或運作。測試者不需具備應用程序的代碼、內部結構和編程語言的專門知識。測試者只需知道什么是系統(tǒng)應該做的事,即當鍵入一個特定的輸入,可得到一定的輸出。測試案例是依應用系統(tǒng)應該做的功能,照規(guī)范、規(guī)格或要求等設計。測試者選擇有效輸入和無效輸入來驗證是否正確的輸出。
此測試方法可適合大部分的軟件測試,例如單元測試(unit testing)、集成測試(integration testing)以及系統(tǒng)測試(system testing)。
2、白箱測試
白箱測試(white-box testing,又稱透明盒測試glass box testing、結構測試structural testing等)是一個測試軟件的方法,測試應用程序的內部結構或運作,而不是測試應用程序的功能(即黑箱測試)。在白箱測試時,以編程語言的角度來設計測試案例。測試者輸入數據驗證數據流在程序中的流動路徑,并確定適當的輸出,類似測試電路中的節(jié)點。
白箱測試可以應用于單元測試(unit testing)、集成測試(integration testing)和系統(tǒng)的軟件測試流程,可測試在集成過程中每一單元之間的路徑,或者主系統(tǒng)跟子系統(tǒng)中的測試。盡管這種測試的方法可以發(fā)現許多的錯誤或問題,它可能無法檢測未使用部分的規(guī)范。
六、測試工程師的職責
1、參與軟件項目的需求分析,關注項目需求的可測性,并能預先評估項目的風險;
2、負責軟件項目的測試方案制定,設計測試數據和測試用例,并進行相互評審;
3、實施軟件測試,完成對產品的集成測試與系統(tǒng)測試,對產品的功能、性能及其他方面的測試負責;
4、對項目總的問題進行跟蹤分析和報告,推動測試中發(fā)現問題及時合理地解決;
5、匯總測試執(zhí)行情況,編制相關報告。
七、
1、現在軟件系統(tǒng)越來越復雜,一個軟件系統(tǒng)可能由幾個幾十個人一起開發(fā)的,單個開發(fā)可能只熟悉他所有編寫的模塊,對于其他有影響的模塊不熟悉,容易產生錯誤
2、開發(fā)自己寫的代碼自己不容易檢查出錯誤,開發(fā)也有可能遺漏需求功能或者缺失異常處理,需要測試來幫助他們檢查軟件是否有bug ,是否符合產品設計,是否符合用戶習慣,異常是否都已經處理,
3 、現在市場競爭激烈,對軟件開發(fā)的周期和質量要求越來越高, 如果沒有測試,開發(fā)很難再短時間內開發(fā)出客戶滿意的系統(tǒng),導致軟件的經濟效益不好
總之一句話, 如果沒有測試,軟件的質量很難得到保證!
看了這篇內容后,堅信以下兩件事,也會對你的自我提升有一定的幫助:
1、點贊,讓更多人能看到,同時你的認可也會鼓勵我創(chuàng)作更多優(yōu)質內容。
2、要讓自己變得更強:想想,假如你是要在測試這個行業(yè)長期做下去,你的工作經驗和測試技術是絕對不夠的,你需要提升,你需要豐富你的技術棧!還等什么!
最后領取:【可能給你帶來幫助的教程】wenruo.ysepan.com
