1. 程式人生 > >對軟體測試的認識(理論基礎知識)

對軟體測試的認識(理論基礎知識)

軟體測試基礎 1:什麼是軟體缺陷? a.軟體未達到產品設計規範表明的功能; b.軟體出現了產品設計規範指明不會出現的錯誤; c.軟體功能超出產品設計規範指明的範圍; d.軟體未達到產品設計規範雖未指出但應達到的目標; e.軟體測試人員認為軟體難以理解、不易使用、執行速度慢,或者終端使用者認為不好。 2:為什麼會出現軟體缺陷? a.需求變化     b.設計錯誤     c.軟體複雜     d.開發工具 e.時間壓力     f.缺乏交流 g.文件缺乏 3:優秀的軟體測試人員應該具備的素質? (一)a.溝通能力     b.技術能力     c.細心、信心、耐心 (二)軟體測試員自身素質
a.應對軟體測試感興趣和對自己有自信。 b.善於懷疑,世界上沒有絕對正確的,總有錯誤的地方,具有叛逆心理,別人認為不可能發生的事,我卻認為可能發生。別人認為是對的,我卻認為不是對的。 c.打破砂鍋問到底的精神,對於只出現過一次的bug,一定找出原因,不解決誓不罷休。 d.保持一個良好的心情,否則可能無法把測試做好。不要把生活中的不愉快的情緒帶到工作中來。 e.做測試時要細心,不是所有的bug都能很容易的找出,一定要細心才能找出這些bug。 f.靈活一些,聰明一點,多製造一些容易產生bug的例子。 g.在有條件的情況下,多和客戶溝通,他們身上有你所需要的。 (三)a.設身處地為客戶著想,從他們的角度去測試系統。
b.不要讓程式設計師,以“這種情況不可能發生”這句話說服你,相反,你應該去說服他,告訴他在客戶心裡,並不是這樣的。 c.考慮問題要全面,結合客戶的需求、業務的流程、和系統的構架,等多方面考慮問題。 d.提出問題不要複雜化,這一點和前面的有點矛盾,如果你是一新手,暫時不要管這一點,因為最終將有你的小組成員討論解決。 e.追求完美,對於新測試員來說,努力地追求完美,這對你很好,儘管有些事無法做到,但你應該去嘗試。 f.能和開發小組很好地溝通是關鍵。 6:什麼是軟體測試?(軟體測試的概念) a.1983年IEEE提出的軟體工程術語中給軟體測試下的定義是:“使用人工或自動的手段來執行或測定某個軟體系統或系統部件的過程,其目的在於檢驗它是否滿足規定的需求或弄清預期結果與實際結果之間的差別”。
b.軟體測試是根據軟體需求分析、設計說明和程式的內部結構而精心設計一批測試用例,並按照這些測試用例去執行程式,以發現程式錯誤的過程。簡單地說就是找Bug,驗證需求。 c.軟體測試是為了發現錯誤而執行程式的過程。 d.軟體測試是保證軟體質量的重要手段。 7:軟體測試的目標? 目標:是在軟體分發到終端使用者手中之前,儘早地、以最少的時間和人力找出軟體中潛在的各種缺陷。 8:軟體測試的原則? a.應儘早地和不斷地進行軟體測試 b.測試用例應包含測試輸入資料和與之對應的預期輸出結果 c.程式設計師應避免檢查自己的程式 d.設計測試用例時,應包括合理的輸入條件和不合理的輸入條件 e.充分注意測試中的群集現象。經驗表明,測試後程序中殘存的錯誤數目與該程式中已發現的錯誤數目成正比。 f.嚴格按照測試計劃、測試用例執行,排除測試的隨意性 g.應當對每一個測試結果做全面檢查 h.妥善儲存測試過程中的相關文件,為維護提供方便 9:軟體測試的分類?以及它們的概念? (一)軟體測試方法分類 A.白盒測試:又稱結構測試、邏輯驅動測試或基於軟體本身的測試,白盒測試是對軟體的內部細節做細緻的檢查,對軟體的所有邏輯路徑進行測試,而並不關心軟體的功能要求,主要用於單元測試、整合測試。 B.黑盒測試:又稱功能測試、資料驅動測試或基於軟體需求的測試,通過黑盒測試可以知道軟體是否符合使用者的預期要求。黑盒測試不考慮軟體內部的邏輯結構,主要適用於整合測試、系統測試、驗收測試。 C.灰盒測試:是介於白盒測試和黑盒測試之間的一種測試方法,它不僅關注輸入、輸出的正確性,同時也關注軟體的內部情況。多用於整合測試。 (二)軟體測試階段分類 A.單元測試:是指對軟體中的最小可測試單元進行檢查和驗證。 B.整合測試:是在軟體系統整合過程中所進行的測試,目的是檢查軟體單元之間的介面是否正確。 C.系統測試:是將整個軟體系統看做一個整體進行測試,包括對功能、效能,以及軟體所執行的軟硬體環境進行測試。 迴歸測試:是指修改了程式碼後,重新執行測試。 D.驗收測試:是以使用者測試為主,或有測試人員等質量保障人員共同參與的測試,它也是軟體正式交給使用者使用前的最後一道工序。 E.驗收測試又分為Alpha測試和Beta測試,其中Alpha測試指的是由使用者、 測試人員、開發人員等共同參與,在非實際環境(開發環境或測試環境)下進行的內部測試;而Beta測試指的是內測後的公測,即完全交給終端使用者,在實際環境中進行的測試。 (三)軟體測試內容分類(一) (1)功能測試:是對軟體的各功能進行驗證,以檢查是否滿足需求的要求。 (2)效能測試:是通過自動化測試工具模擬多種正常、峰值以及異常負載條件,來對系統的各項效能指標進行測試。 (2.1)軟體的效能主要有時間效能和空間效能 A.時間效能:主要指軟體的一個具體事務的響應時間。 B.空間效能:主要指軟體執行時所消耗的系統資源。 (2.2)軟體效能測試又分為: A.一般效能測試:指的是讓被測系統在正常的軟硬體環境下執行,不向其施加任何壓力的效能測試。 B.穩定性測試:也叫可靠性測試:是指連續執行被測系統檢查系統執行時的穩定程度。 C.負載測試:是指讓被測系統在其能忍受的壓力的極限範圍之內連續執行,來測試系統的穩定性。 D.壓力測試:是指持續不斷的給被測系統增加壓力,直到將被測系統壓垮為止,用來測試系統所能承受的最大壓力。 (四)軟體測試內容分類(二) A.介面測試:廣義上是指被測系統與外部系統之間的介面測試,狹義上是指對客戶端與伺服器端的介面測試,實際中大多數情況下指的是後者。 B.安全測試:檢查系統對非法入侵的防範能力。 C.相容性測試:是測試系統在不同軟、硬體環境下是否能夠正常執行。 D.易用性測試:是指從軟體使用的合理性和方便性等角度對軟體進行檢查,來發現軟體中不方便使用者使用的地方。 E.介面測試:指的檢查軟體介面是否美觀。 (五)、軟體測試其他分類 A.動態測試:是指實際執行被測軟體,輸入相應的測試資料,檢查輸出結果和預期結果是否相符的過程。 B.靜態測試:是指不實際執行被測軟體,而只是靜態地檢查程式程式碼、介面或文件可能存在的錯誤的過程。 (B.1).靜態測試包括: a.對於程式碼測試:主要是測試程式碼是否符合相應的標準和規範。 b.對於介面測試:對於介面測試,主要測試軟體的實際介面與需求中的說明是否相符。 c.對於文件測試:主要測試使用者手冊和需求說明是否真正符合使用者的實際需求。 C.手工測試:是指手工操作軟體,來進行的測試。 D.自動化測試:是指使用測試工具或編寫好的測試指令碼,自動執行操作軟體,來進行的測試。 E.冒煙測試:在對一個新版本進行系統大規模測試之前,先驗證一下軟體的基本功能是否實現,是否具備可測性。 F.隨機測試:是指測試中所有的輸入資料都是隨機的,其目的是模擬使用者的真實操作,並發現一些邊緣性的錯誤。 10:軟體測試各階段的主要測試內容?
測試階段 主要依據 測試人員、測試方式 主要測試內容
單元測試 系統設計文件 由開發小組執行白盒測試 介面測試、路徑測試
整合測試 系統設計文件
需求文件
由開發小組執行白盒測試和黑盒測試 介面測試、路徑測試
功能測試、效能測試
系統測試 需求文件 由獨立測試小組執行黑盒測試 功能測試、效能測試、使用者介面測試、安全性測試、壓力測試、可靠性測試、安裝/反安裝測試
驗收測試 需求文件 由使用者執行黑盒測試
11:軟體測試的流程? a.測試需求分析:根據軟體需求,分析出測試點。 b.測試計劃:確定測試範圍、測試策略、測試人員時間安排。 c.測試用例設計及評審:根據測試需求分析,編寫測試用例,並進行測試用例評審。評審分為內部評審及外部評審。 d.測試執行;執行測試用例,提交BUG,跟蹤BUG,進行多輪測試。 e.測試總結,完成測試報告。 12:軟體測試的模型? (一)“V”型 這是一種古老的瀑布模型,反映了實際和測試之間的關係。 侷限:僅僅把測試過程作為編碼之後的一個階段,忽視了測試對需求分析,系統設計的驗證,如果前面設計錯誤,得一直到後期的驗收測試才被發現,耗時耗力。 (二)“W”型 特點:【活動序列】測試與開發同時進行,在V模型的基礎上,增加了在開發階段的同步測試 侷限:仍然不支援迭代,減少了一定錯誤發生率,但是需按照流水線進行設計、編碼和測試 (三)“H”型 特點:【活動並行】過程活動完全獨立,貫穿於整個產品的週期,與其他流程併發地進行,某個測試點準備就緒時,就可以從測試準備階段進行到測試執行階段;軟體測試可以進行儘早的進行;軟體測試可以根據被測物的不同而分層次進行。 13:開發人員與測試人員矛盾?(面試題) 開發人員和測試人員的目標是一致的:要讓終端使用者對軟體的質量滿意,所以不是敵對關係。可以通過制定相關的規範流程來方便大家的工作。如:《提測標準》、《bug等級定義》、《提測單》等。 測試人員的注意事項: 發現缺陷時不要嘲笑開發人員,別說他的程式真臭、到處是Bug。應及時記錄到bug跟蹤系統,看法不一致時,可以找產品經理或專案經理來裁定。 在開發人員壓力太大時或心情不好時不要火上澆油,發現缺陷時別大聲嚷嚷。 不要相互諷刺對方,例如: A對B說:你唯一的特點就是無能。 B對A說:你唯一的特點就是粗魯。