軟件測試面試必備的一些基礎理論概念

測試的基本概念
測試是軟件生存週期中十分重要的一個過程,是產品發佈、提交給最終用戶前的穩定化階段。
算法

一、 測試的分類:

數據庫

從測試方法的角度能夠分爲手工測試和自動化測試。
編程

  • 手工測試:不使用任何測試工具,根據事先設計好的測試用例來運行系統,測試各功能模塊。服務器

  • 自動化測試:利用測試工具,經過編寫測試腳本和輸入測試數據,自動運行測試程序。目前最經常使用的自動化測試工具是基於GUI的自動化測試工具,基本原理都是錄製、回放技術。數據結構


從總體的角度能夠分爲單元測試、集成測試、系統測試、確認測試。ide


  • 單元測試:是針對軟件設計的最小單位—程序模塊,進行正確性檢驗的測試工做。通常包括邏輯檢查、結構檢查、接口檢查、出錯處理、代碼註釋、輸入校驗、邊界值檢查。函數


單元測試的依據是系統的詳細設計;通常由項目組開發人員本身完成。工具


  • 集成測試:在單元測試的基礎上,將全部模塊按照設計要求組裝進行測試。通常包括邏輯關係檢查、數據關係檢查、業務關係檢查、模塊間接口檢查、外部接口檢查。性能

  • 系統測試:系統測試是在全部單元、集成測試後,對系統的功能及性能的整體測試。單元測試

  • 確認測試:模擬用戶運行的業務環境,運用黑盒測試方法,驗證軟件系統是否知足用戶需求或軟件需求說明書中指明的軟件特性(功能、非功能)上的。


測試原理上分爲:白盒測試、黑盒測試和灰盒測試。


  • 白盒測試:是經過程序的源代碼進行測試而不使用用戶界面。這種類型的測試須要從代碼句法發現內部代碼在算法,溢出,路徑,條件等等中的缺點或者錯誤,進而加以修正。

  • 黑盒測試:是經過使用整個軟件或某種軟件功能來嚴格地測試, 而並無經過檢查程序的源代碼或者很清楚地瞭解該軟件的源代碼程序具體是怎樣設計的。測試人員經過輸入他們的數據而後看輸出的結果從而瞭解軟件怎樣工做。在測試時,把程序看做一個不能打開的黑盆子,


在徹底不考慮程序內部結構和內部特性的狀況下,測試者在程序接口進行測試,它只檢查程序功能是否按照需求規格說明書的規定正常使用,程序是否能適當地接收和正確的輸出。


黑盒測試方法主要有等價類劃分、邊界值分析、因—果圖、錯誤推測法。

等價類劃分:

是把全部可能的輸入數據,即程序的輸入域劃分紅若干部分(子集),而後從每個子集中選取少數具備表明性的數據做爲測試用例.該方法是一種重要的,經常使用的黑盒測試用例設計方法.

劃分等價類: 等價類是指某個輸入域的子集合.在該子集合中,各個輸入數據對於揭露程序中的錯誤都是等效的.併合理地假定:測試某等價類的表明值就等於對這一類其它值的測試.所以,能夠把所有輸入數據合理劃分爲若干等價類,在每個等價類中取一個數據做爲測試的輸入條件,就能夠用少許表明性的測試數據.取得較好的測試結果.等價類劃分可有兩種不一樣的狀況:有效等價類和無效等價類.

  • 有效等價類:是指對於程序的規格說明來講是合理的,有意義的輸入數據構成的集合.利用有效等價類可檢驗程序是否實現了規格說明中所規定的功能和性能.

  • 無效等價類:與有效等價類的定義恰巧相反.

  設計測試用例時,要同時考慮這兩種等價類.由於,軟件不只要能接收合理的數據,也要能經受意外的考驗.這樣的測試才能確保軟件具備更高的可靠性.



邊界值分析:


長期的測試工做經驗告訴咱們,大量的錯誤是發生在輸入或輸出範圍的邊界上,而不是發生在輸入輸出範圍的內部.所以針對各類邊界狀況設計測試用例,能夠查出更多的錯誤。


錯誤推測法:


基於經驗和直覺推測程序中全部可能存在的各類錯誤, 從而有針對性的設計測試用例的方法.錯誤推測方法的基本思想: 列舉出程序中全部可能有的錯誤和容易發生錯誤的特殊狀況,根據他們選擇測試用例. 例如, 在單元測試時曾列出的許多在模塊中常見的錯誤. 之前產品測試中曾經發現的錯誤等, 這些就是經驗的總結. 還有, 輸入數據和輸出數據爲0的狀況. 輸入表格爲空格或輸入表格只有一行. 這些都是容易發生錯誤的狀況. 可選擇這些狀況下的例子做爲測試用例。


灰盒測試:

灰盒測試就像黑盒測試同樣是經過用戶界面測試,可是測試人員已經有所瞭解該軟件或某種軟件功能的源代碼程序具體是怎樣設計的。甚至於還讀過部分源代碼。所以測試人員能夠有真對性地進行某種肯定的條件/功能的測試。

 

從軟件特性上分爲功能測試和性能測試。


  • 功能測試:是指爲了確保軟件系統功能實現的正確性,完整性和其餘特性而進行的測試。



  • 性能測試:是指爲了評估軟件系統的性能情況,和預測軟件系統性能趨勢而進行的測試和分析。


二、 BUG的定義:

BUG:(小錯誤,缺陷,不足,過失 …) 一個計算機bug指在計算機程序中存在的一個錯誤(error)、缺陷(flaw)、疏忽(mistake)或者故障(fault),這些bug使程序沒法正確的運行。Bug產生於程序的源代碼或者程序設計階段的疏忽或者錯誤。

 

Defect:(缺陷) 在軟件工程(Software Engineering)中,軟件與它的需求(requirements)不一致,經常指軟件沒法正確完成需求所要求的功能,也稱之爲bug。

 

 

Fault:(故障)被定義爲存在於組件、設備或者子系統中異常的條件或者缺陷,經常會致使系統的失敗。

 

Error:(錯誤) 一個error是指編寫錯誤的代碼,一般是無心中形成的。通常有兩類主要的錯誤,一是語法錯誤(syntax error),該類錯誤易於檢測,由於代碼在編譯階段沒法解析而不能正常編譯經過。另外一個是邏輯錯誤(logical error),由於它與代碼的實際執行密切相關因此不易發現。

 

 

三、 項目測試的規劃


項目測試內容:

將項目測試分爲項目開發階段測試和項目完工驗收測試兩個部分。


開發階段測試內容主要包括:模塊功能測試、集成測試和文檔檢查。


  • 模塊功能測試:確保系統各功能模塊可以正常運行,數據的IPO符合系統設計的要求。單元和模塊功能知足需求定義。

  • 集成測試:系統各模塊組裝後,根據業務流程的要求,可以正確地完成各業務功能,而且數據的處理和輸出正確。

  • 文檔檢查:在項目開發階段,按照項目進度表,根據《項目文檔測試規範與標準》,對提交的項目文檔和記錄(技術文檔和管理文檔)進行檢查和驗證,以符合公司質量體系和項目制度的要求,對於技術類文檔的關鍵要素,驗證是否可以達到經過標準。


完工驗收測試內容主要包括:安裝測試、功能驗證、性能測試、需求驗證、文檔測試。完工驗收測試其實是項目在結項前的一個全面的檢查和驗證。能夠做爲項目結項的依據和放行條件。


  • 需求測試:檢查軟件產品是否知足該項目的需求說明書中規定的功能需求,檢查需求的完整性、一致性、最新性,該項測試重點是需求知足的完整性。

  • 安裝測試:根據項目提供的安裝文檔中的安裝步驟,搭建系統運行環境,檢查系統安裝過程是否正確。可能包括數據庫服務器的安裝與配置、應用服務器、控件註冊、客戶端的安裝與配置、應用軟件的安裝。

  • 功能驗證:按照需求說明書和系統概要設計,逐項檢查各項功能(功能單元、功能模塊)的可運行性和正確性。

  • 文檔測試:文檔測試從項目立項時就開始了,實際上就是文檔檢查,包括規範性檢查和有效性檢查。目的是使項目相關的文檔和記錄既規範又有意義,不是爲了應付的無用文件。對於技術文檔如:需求說明書、概要設計、詳細設計等,在技術評審時也進行了評測。用戶文檔,如安裝手冊、用戶操做手冊,根據文檔檢查規範進行。

  • 性能測試:這部分測試的來源,嚴格來說,取決於用戶對軟件特性的一些特定要求,另外,就是公司的開發部門對產品的一些基本的性能要求。若用戶從業務的角度考慮,對軟件產品自己有特定的非功能要求,則必須在軟件需求說明書中加以說明,使之具備可度量和可測試性。對於一些多用戶環境或數據處理能力和負載方面的測試,很難經過手工搭建測試環境來測試,因此能夠參考使用一些專門的性能測試工具和手工測試相結合的方式。


四、項目測試的基本流程:


  • 項目測試啓動:項目立項後,在測試配置庫中建立項目。

  • 測試計劃:系統詳細設計後,制定測試計劃,準備測試資源。

  • 設計測試用例,主要是與業務相關的測試用例。

  • 實施功能模塊測試,搭建運行或開發環境,採用功能模塊測試表的方式,開發人員在功能模塊測試表中更新進度狀態,測試人員在該表中描述測試進度。造成測試錯誤列表,該表對每一個錯誤都有相應的測試記錄與之連接,在測試記錄中,詳細描述錯誤的狀況。在測試記錄中還要包括修正信息和驗證信息。

  • 錯誤關閉後,測試人員維護測試記錄表和更新測試用例庫和問題庫,做爲經驗積累。

  • 項目在結項時,測試人員進行項目完工驗收測試,填寫項目測試報告。該測試報告可做爲用戶驗收的輸入工件。

五、功能測試方法與內容

數據輸入測試:向系統輸入數據或輸入數據庫操做命令時,通常是測試系統對數據庫中數據操做的過程。

數據類型測試:因爲不一樣的數據庫系統對數據類型要求的不一樣,在定義數據庫表時,也規定了數據字段的數據類型。


一、測試步驟和方法:在系統的數據維護功能界面上,錄入或修改數據時,特地輸入非系統設計的數據類型,檢查系統是否能夠接受,若不能接受則檢查是否知足了系統在這方面的設計要求,如即刻清除非法內容、輸入焦點不能到下一輸入位置、出現系統自定義的提示信息、不容許出現開發工具的報錯信息等。若系統能夠接受並保存,則要看數據庫表的字段類型設計是否與用戶或習慣上不一致,而且要注意其餘模塊在調取該數據時,是否有特定要求。

邊界值測試:根據數據取值範圍的要求,輸入符合取值範圍的數據、取值範圍的上、下限和超過取值範圍的數據。注意,除要測試數據庫系統自己數據類型取值範圍外,還要根據軟件系統設計中的一些特定要求,設計測試用例來測試。

數據合法性測試:測試人員除了要測試輸入數據是否知足所使用數據庫系統自己的數據類型和取值範圍的要求外,還應該根據經驗和軟件系統和需求的特定要求檢查輸入數據的合法性。好比:日期合法性(出生年月、參保日期、發生時間、根據習慣和業務邏輯順序對日期合理性的要求等)。工資、比例、率等,都要注意輸入的合理、合法性。

單引號和雙引號:不要忽略輸入單引號和雙引號可能引發的錯誤和數據問題。在功能錄入界面上,在某字段的輸入框輸入了包括單引號和雙引號的數據,之後在經過Select 語句查詢時可能會出問題。特別在基於WEB方式的系統,輸入了單引號,在查詢數據記錄時,確定會出現頁面連接錯誤(頁面沒法連接或找不到或連接對象錯誤)。

空值測試:在測試數據錄入或修改的功能界面時,若不輸入任何東西,系統又沒有設計成NOT NULL,則這時,要很是注意其影響。由於數據能夠正常保存,但數據表該字段是空值,那麼全部與該字段有關的操做,如:查詢(AND)、計算(累加、連乘)等,則可能出現數據問題(計算結果爲0,無記錄返回)。對於測試人員首先要檢查系統究竟是做爲空值,仍是做爲空串或空字符處理。另外對於容許不輸入任何值的字段,在測試過程當中,要檢查是否在界面顯示或打印報表時,這些字段做爲了關鍵要素或標題等狀況。

空格:在數據維護的功能界面上,輸入數據時,要注意是否在輸入位置有空格,首先看系統設計時,是怎麼考慮的,若系統容許輸入空格,則檢查條件查詢或做爲調用參數時的數據返回狀況;另外檢查程序是否使用了去掉空格的函數。

數據校驗的不一致:測試時,對於一些編號、編碼、代碼等主鍵或做爲查詢或調用條件的字段,要注意系統對他們的輸入合法性檢查與查詢或調用條件的要求是不是一致的。特別是對於數據結構設計中沒有特定約束,而由程序進行校驗控制的狀況。

分析:數據輸入測試的主要目的是保證輸入到系統中數據的合法、合理性。我以爲,數據輸入過程的檢查是很是重要的,若在編程過程當中,不注重數據的校驗功能,雖然看起來加快了開發進度,但給之後會帶來一些不可預計的編程或維護工做量。

二、目錄路徑測試:測試系統中規定的路徑要求,更改路徑,檢查系統的是否能夠正確運行及系統的排錯功能。測試時,根據系統設計說明書(詳細設計)或經過對程序源代碼的熟悉,找出系統運行過程當中指定的路徑或在運行過程當中,須要使用者選擇路徑的地方。特地更改路徑(選擇正確的路徑、選擇另外的路徑、輸入不存在的路徑)。檢查系統是否具備路徑上的容錯性和靈活性。好比,原則上在程序中,最好不要寫絕對路徑,另外能夠提供配置路徑的對話框,若輸入了非法路徑,系統有無提示等。

三、 數據操做測試:包括數據操做測試和用戶界面操做的測試。


  • 修改、新增數據:對於新增和修改數據,要注重如下幾個方面的測試。界面上,新增數據成功後,數據列表是否當即刷新,輸入有錯誤時,是否清空錯誤的數據,輸入焦點是否得以控制。在提示信息上,是否有保存成功的提示,輸入有錯誤時,提示的錯誤信息是否準確,可讀。數據方面,要經過SQL檢查數據提交是否正確。

  • 刪除數據:測試刪除記錄時,系統是否有確認提示,可否批量刪除,根據系統詳細設計,檢查刪除主表記錄時,在業務上,其餘相關表是否相應更改。

  • 事物的提交與回滾:熟悉C/S模式開發或數據庫應用系統開發的人都知道,數據庫事物的概念。對於一個比較複雜的業務邏輯或業務上有數據一致和完整性要求時,儘可能使用事物對數據進行提交,這樣一旦因爲意外緣由引發系統或硬件故障時,能夠回滾。根據系統的設計要求在測試時,可人爲模擬意外故障,來測試系統的數據完整性和容錯能力。

四、工具條和快捷鍵測試:在功能界面測試時,對系統菜單中定義的快捷鍵和菜單工具條中的工具按鈕要測試。主要是有效性和一致性測試。有效性:檢查是否有效,界面有無反應。一致性:定義或提示的信息是否與實際完成的功能一致。
五、 操做順序測試

  • 按鈕順序測試:在功能界面上,不按照設計上或習慣上的操做順序點擊功能按鈕,看系統有什麼反應;屢次、反覆點擊某一按鈕,看系統有什麼反應。主要是測試系統的控制、校驗和容錯能力。

  • 業務邏輯順序:不按照系統的正常業務邏輯、流程操做,來測試系統是否控制了業務流程的順序。

六、按鈕有效性控制測試:主要是測試當不具有條件或無實際意義的狀況下,按鈕的「Enabled」屬性。好比:某一業務未處理,下一環節的功能按鈕則應變灰(不可用)。逐條顯示數據記錄,當遊標已經指到了最後一條時,「下一條」和「末記錄」按鈕則應變灰等。
七、同時刻操做測試:對於刪除、修改、增長數據和一些業務功能,進行多客戶端同時刻操做測試,看系統有什麼反應。
八、附件壓力測試:對於有發送、上傳、下載、郵件等功能的系統,選取大的文件,進行測試,來檢查系統的界面效果和穩定性,看是否會死機或長時間無任何反應等。


九、 數據輸出測試

  • 數據處理輸出測試:主要測試對數據的排序、條件查詢是否按照輸入的條件或要求輸出了正確的數據。

  • 打印輸出:測試打印功能是否可以正常打印出報表,打印設置後,是否能按照設置的要求打印。

十、WEB測試基於WEB方式的應用,對於一些提交表單的頁面,經過屢次點擊「back」鍵,來測試系統的處理狀況。對於有保存數據功能的頁面,屢次點擊「保存」,來測試系統的處理狀況。

相關文章
相關標籤/搜索