測試那些事兒之測試基礎掃盲

QA測試(Quality Assurance,質量保證),ISO8402:1994中的定義是“爲了提供足夠的信任表明實體能夠滿足質量要求,而在質量管理體系中實施並根據需要進行證實的全部有計劃和有系統的活動”。

在非互聯網時代,主要分爲黑,灰,白測試。

黑盒測試(Black box  testing):指測試人員不關心具體如何實現的一種測試方法。根據軟件的規格對軟件進行各種輸入和觀察軟件的各種輸出結果來發現軟件缺陷的測試,這類測試不考慮軟件內部的運作原理。【也稱功能測試,它是通過測試來檢測每個功能是否都能正常使用。在測試中,一個不能打開的黑盒子,在完全不考慮程序內部結構和內部特性的情況下,在程序接口它只檢查程序功能是否能夠按照需求規格說明書的規定正常使用,程序是否能適當的接收輸入數據而產生正確的輸出信息。黑盒測試着眼於程序外部結構,不考慮內部邏輯結構,主要針對軟件界面和軟件功能進行測試】

白盒測試(White box testing):根據軟件內部的工作原理分析來進行測試,基於代碼的測試,測試人員通過閱讀程序代碼或者通過使用開發工具中的單步調試來判斷軟件的質量,一般由項目經理在程序員開發中來實現。【又稱結構測試,透明盒測試、邏輯驅動測試或者基於代碼的測試。其是一種測試用例設計方法。盒子指的是被測試的軟件,白盒指的是盒子是可視的,你清楚盒子內部的東西以及裏面是如何運作的。"白盒"法全面倆姐程序內部邏輯結構、對所有邏輯路徑進行測試 。"白盒"法師窮舉路徑測試。在使用這一方案時,測試者必須檢查程序的內部結構,從檢查程序的邏輯着手,得出測試數據。】

灰盒測試(Gray box testing):是介於白盒測試與黑盒測試之間的一種測試。灰盒測試多用於集成測試階段,不僅關注輸入、輸出的正確性,同時也關注程序內部的情況。灰盒測試不像白盒那樣詳細完整,但又比黑盒更關注程序的內部邏輯,常常是通過一些表徵性的現象、事件、標誌來判斷內部的運行狀態。【是基於程序運行時刻的外部表現同時又結合程序內部邏輯結構來設計用例,執行程序並採集程序路徑執行信息和外部用戶接口結果的測試技術。測試工作中除了進行黑盒層面的測試之外,對於複雜的功能模塊進行實現層面瞭解,補充實現層面的可以測試的測試點,儘可能在測試廣度上和測試深度上進行覆蓋,我們稱之爲灰盒測試】

集成測試(Integration testing)【被測試系統的所有組件都集成在一起,找出被測試系統組件之間關係和接口中的錯誤。該測試一般在單元測試之後進行。】

驗收測試(Acceptance testing)【系統開發生命週期方法論的一個階段,這時相關的用戶/獨立測試人員根據測試計劃和結果對系統進行測試和接收。它讓系統用戶決定是否接收系統。它是一項確定產品是否能夠滿足合同或用戶所規定需求的測試。這是管理性和防禦性控制。】

黑與灰的區別:若果軟件包含多個模塊,使用黑盒測試時,只要關心整個軟件系統的邊界,無需關係軟件系統內部各個模塊之間如何協作。使用灰盒測試就需要關心如何模塊與模塊之間的交互。

白與灰的區別:在灰盒測試中,還是無需關心模塊內部的實現細節。對於軟件系統的內部模塊,灰盒測試依然把它當作黑盒來看待,而白盒測試則需要再更深入地瞭解內部模塊的實現細節和各個分支。

單元測試與灰盒測試的區別:首先,在進行單元測試時,需要寫一些測試代碼(“樁代碼(stub)”)。一般來說,測試代碼與被測試代碼採用同種語言,且測試代碼和被測試代碼之間的耦合很緊密。因此,單元測試通常由開發人員來完成。其粒度會更細(細到模塊內部的類一級,函數一級),而灰盒測試僅僅到模塊一級。

灰的優點:可以及早介入;有助於測試人員理解系統結構,及早發現需求或設計不詳細或不完整的問題,避免對測試進度造成影響;能夠保證設計的黑盒測試用例完整性,防止遺漏軟件的一些不常用的功能或功能組合;測試結果可以對應到程序內部路徑,便於BUG的定位、分析和解決,有利於提升測試人員能力;

===========================================

目前移動互聯網時代,主要側重測試方法:功能測試,接口測試,單元測試,性能測試,自動化測試等

單元測試(Unit  testing)【指對軟件中的最小可測試單元進行檢查和驗證。對於單元測試中單元的含義,一般來說,要根據實際情況去判定其具體含義,如C語言中單元中單元指一個哈U唸書,Java裏單元指一個類,圖形化軟件中可以指一個窗口或一個菜單等。總的來說,單元就是人爲規定的最小的被測功能模塊。單元測試時在軟件開發過程中要進行的最低級別的測試活動,軟件的獨立單元將在與程序的其他部分相隔離的情況下進行測試。】

功能測試(Functional  testing)也稱行爲測試(Behavioural testing)【根據產品特徵、操作描述和用戶方案,測試一個產品的特性和可操作行爲以確定它們滿足設計需求。本地化軟件的測試功能,用於驗證應用程序或網站對目標用戶能正確工作。使用適當的平臺、瀏覽器和測試腳本,以保證目標用戶的體驗將足夠好,就像應用程序是專門爲市場開發的一樣。其目的是爲了確保程序以期望的方式運行而按功能要求對軟件進行的測試,通過對一個系統的所有的特性和功能都進行測試確保符合需求和規範。】

接口測試(Interface testing)【是測試系統組件接口的一種測試,接口測試主要用於檢測外部系統與系統之間以及內部各個子系統之間的交互點。測試的重點是要檢查數據的交換,傳遞和控制管理過程,以及系統間的相互邏輯依賴關係等。】

性能測試(Performance testing)通過自動化的測試工具模擬多種正常、峯值以及異常負載條件來對系統的各項性能指標進行測試。【評價一個產品或組件與性能需求是否符合的測試。包括負載測試,強度測試,數據庫容量測試,基準測試等類型。】

負載測試(Load testing)【通過測試系統在資源超負荷的情況下的表現,以發現設計上的錯誤或驗證系統的負載能力。在這種測試中,將使測試對象承擔不同的工作量,以評測和評估測試對象在不同工作量條件下的性能行爲,以及持續正常運行的能力。其目標是確定並確保系統在超出最大預期工作量的情況下仍能正常運行。負載測試還需評估性能特徵,例如,響應時間,事務處理速率,和其他與時間相關的方面。】

自動化測試(Automated testing)【一般是指軟件測試的自動化,使用自動化工具來進行測試,這類測試一般不需要人干預,通常在GUI、性能等測試中用的多。】

兼容性測試(Compatibility testing)也稱配置測試(Configuration testing)【測試軟件是否和系統的其它與之交互的元素之間兼容,如:瀏覽器、操作系統硬件等。驗證測試對象在不同的軟件和硬件配置中的運行情況。】

用戶界面測試(User interface testing)【指測試用戶界面的風格是否滿足客戶要求,文字是否正確,頁面是否美觀,文字,圖片是否完美,操作是否友好等。其目的是確保用戶界面會通過測試對象的功能來爲用戶提供相應的訪問或瀏覽功能。確保用戶界面符合公司或行業的標準。包括用戶友好性、人性化,易操作性測試。】

迴歸測試(Regression testing)【在發生修改之後重新測試先前的測試以保證修改的正確性。理論上,對軟件的任何新版本,都需要進行迴歸測試,驗證以前發現和修復的錯誤是否在新軟件版本上再現。】


===========================================

其餘一些常用名詞:

Test  case(測試用例)   Testing  environment(測試環境),進行測試的環境,包括測試平臺、測試基礎設施、測試實驗室和其他設施。

Testing plan(測試計劃),描述了要進行的測試活動的範圍、方法、資源和禁毒的文檔。它確定測試項、被測試性、測試任務、誰執行任務、各種可能的風險。

Testing procedure(測試過程),指設置、執行給定測試用例並對測試結果進行評估的一系列詳細步驟。

Testing suite(測試包),一組測試用例的執行框架;一種組織測試用例的方法。在測試包裏,測試用例可以組合起來創造出獨特的測試條件。

===============================

Bug(錯誤)=》defect(缺陷)or  error(錯誤),軟件程序中存在的編程錯誤,可能會帶來不必要的副作用,軟件的功能和特性與設計規格說明書或用戶需求不一致的方便。軟件缺陷表現特徵爲:軟件未達到產品說明書標明的功能;軟件出現產品說明書指明不會出現的錯誤;軟件功能超出產品說明書指明的範圍;雖然產品說明書未指出但是軟件應達到的目標,軟件測試人員或用戶認爲軟件難以理解,不易使用,運行速度緩慢等問題。

Debug(調試),開發人員確定引起錯誤的根本原因和確定可能的修復措施的過程。一般發生在子系統或單元模塊編碼完成時,或者根據測試錯誤報告指出錯誤以後,開發人員需要執行調試過程來解決已存在的錯誤。

Bug report(錯誤報告)=》Bug record(錯誤記錄)記錄發現的軟件錯誤信息的文檔,通常包括錯誤描述、復現步驟、抓取的錯誤圖像和註釋等。

Bug tracking system(錯誤跟蹤系統,BTS)=>Defect tracking system ,DTS,管理軟件測試缺陷的專用數據庫系統,可以高效地完成軟件缺陷的報告、驗證、修改、查詢、統計、存儲等任務。尤其適用於大型多語言軟件的測試管理。

Exception(異常/例外),一個引起正常程序執行掛起的事件。

Crash(崩潰),計算機系統或組件突然完全的喪失功能,例如軟件或系統突然退出或沒有任何反應(死機)。

Build(工作版本),軟件開發過程中用於內部測試的功能和性能等不完善的軟件版本。工作版本既可以是系統的可操作版本,也可以是展示要在最終產品中提供的部分功能的部分系統。

Deployment(部署)=》shipment(發佈),對內部IT系統而言,指它的第一個版本通過徹底的測試、形成產品、交付給付款客戶的階段。

Review(評審),在產品開發過程中,把產品提交給項目成員、用戶、管理者或其他相關人員評價或批准的過程。

================================================

你可能會和這些人打交道

PM(Project Manager,項目經理)    RD(Research  and Development,研發),軟件RD工程師就是軟件研發工程師,諸如PHP程序員,Java程序員,偏向於後端的技術實現。

FE(Front-End,前端)    UE(User Experience,用戶體驗=》UX)

UI(User Interface,用戶界面)    OP(Operations,運維),工作主要任務就是,維護公司的服務器能夠正常提供服務,細分的話包括系統部分,網絡部分,應用程序部分,數據庫部分。

DBA(Database Administratrator),負責管理和維護數據庫服務器的人。

MRD(Market Requirements Document,市場需求文檔)

PRD(Product Requirements Document,產品需求文檔)

FSD(Functional Specifications Document,功能詳細說明)

MRD()

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章