軟體測試面試五
1.軟體的生命週期(prdctrm)
計劃階段(planning)-〉需求分析(requirement)-〉設計階段(design)-〉編碼
(coding)->測試(testing)->執行與維護(running maintrnacne)
2、問:你在測試中發現了一個bug,但是開發經理認為這不是一個bug,你應該怎樣解決?
首先,將問題提交到缺陷管理庫裡面進行備案。
然後,要獲取判斷的依據和標準:根據需求說明書、產品說明、原型圖、設計文件等,確認實際結果
是否與計劃有不一致的地方,提供缺陷是否確認的直接依據;
如果沒有文件依據,
1)可以根據同行或類似軟體的一般特性來說明是否存在不一致的地方,來確認是否是缺陷;
2)根據使用者的一般使用習慣,來確認是否是缺陷;
3)與設計人員、開發人員和客戶代表等相關人員探討,確認是否是缺陷;
合理的論述,向測試經理說明自己的判斷的理由,等待測試經理做出最終決定,如果仍然存在爭議,可以通過公司政策所提供的渠道,向上級反映,並有上級做出決定。
3、給你一個網站,你如何測試?
首先,查詢需求說明、網站設計等相關文件,分析測試需求。
制定測試計劃,確定測試範圍和測試策略,一般包括以下幾個部分:功能性測試;介面測試;性
能測試;資料庫測試;安全性測試;相容性測試
設計測試用例:
功能性測試可以包括,但不限於以下幾個方面:
連結測試。連結是否正確跳轉,是否存在空頁面和無效頁面,是否有不正確的出錯資訊返回。
提交功能的測試。
多媒體元素是否可以正確載入和顯示。
多語言支援是否能夠正確顯示選擇的語言等。
介面測試可以包括但不限於一下幾個方面:
頁面是否風格統一,美觀
頁面佈局是否合理,重點內容和熱點內容是否突出
控制元件是否正常使用
對於必須但未安裝的控制元件,是否提供自動下載並安裝的功能
文字檢查
效能測試一般從以下兩個方面考慮:
壓力測試;負載測試;強度測試
資料庫測試要具體決定是否需要開展。資料庫一般需要考慮連結性,對資料的存取操作,資料內
容的驗證等方面。
安全性測試:
基本的登入功能的檢查
是否存在溢位錯誤,導致系統崩潰或者許可權洩露
相關開發語言的常見安全性問題檢查,例如SQL注入等
如果需要高階的安全性測試,確定獲得專業安全公司的幫助,外包測試,或者獲取支援
相容性測試,根據需求說明的內容,確定支援的平臺組合:
瀏覽器的相容性;
作業系統的相容性;
軟體平臺的相容性;
資料庫的相容性
開展測試,並記錄缺陷。合理的安排調整測試進度,提前獲取測試所需的資源,建立管理體系(
例如,需求變更、風險、配置、測試文件、缺陷報告、人力資源等內容)。
定期評審,對測試進行評估和總結,調整測試的內容。
4、問:一臺客戶端有三百個客戶與三百個客戶端有三百個客戶對伺服器施壓,有什麼區別?
300個使用者在一個客戶端上,會佔用客戶機更多的資源,而影響測試的結果。
執行緒之間可能發生干擾,而產生一些異常。
300個使用者在一個客戶端上,需要更大的頻寬。
IP地址的問題,可能需要使用IP Spoof來繞過伺服器對於單一IP地址最大連線數的限制。
所有使用者在一個客戶端上,不必考慮分散式管理的問題;
而使用者分佈在不同的客戶端上,需要考慮使用控制器來整體調配不同客戶機上的使用者。同時,還需要給予相應的許可權配置和防火牆設定。
5、軟體生存週期及其模型是什麼?
軟體生存週期(Software life cycle)又稱為軟體生命期,生存期。是指從形成開發軟體概念起
,所開發的軟體使用以後,直到失去使用價值消亡為止的整個過程。一般來說,整個生存週期包
括 :問題的定義及規劃、需求分析/評審、軟體設計、軟體編碼、測試階段、執行維護 六個時期,每個時期又劃分為若干個階段。每個階段有明確的任務。
週期模型(典型的幾種):
瀑布模型
快速原型模型:快速原型模型允許在需求分析階段對軟體的需求進行初步而非完全的分析和定義
,快速設計開發出軟體系統的原型,該原型向用戶展示待開發軟體的全部或部分功能和效能;用
戶對該原型進行測試評定,給出具體改進意見以豐富細化軟體需求;開發人員據此對軟體進行修
改完善,直至使用者滿意認可之後,進行軟體的完整實現及測試、維護。
迭代模型:迭代包括產生產品釋出(穩定、可執行的產品版本)的全部開發活動和要使用該釋出
必需的所有其他外圍元素。在某種程度上,開發迭代是一次 完整地經過所有工作流程的過程:需
求分析、設計、實施和測試工作流程。實質上,它類似小型的瀑布式專案。RUP認為,所有的階段
都可以細分為迭代。每一次 的迭代都會產生一個可以釋出的產品,這個產品是最終產品的一個子集。
生命週期階段:
軟體計劃與可行性分析
需求分析
軟體設計
編碼
軟體測試
執行與維護
6、什麼是軟體測試?軟體測試的目的與原則
定義:
在規定的條件下對程式進行操作,以發現程式錯誤,衡量軟體質量,並對其是否能滿足設計要求進行評估的過程。
目的:
測試是程式的執行過程,目的在於發現錯誤
軟體測試為了發現程式中存在的程式碼或業務邏輯錯誤
軟體測試為了檢驗產品是否符合使用者的需求
軟體測試為了提高使用者體驗
軟體測試的原則:
測試應儘早啟動、介入(需求分析階段)
所有的測試應追溯到使用者需求
測試證明軟體存在缺陷
不可能執行窮盡測試,完全測試是不可能的,測試需要終止。
二八原則,測試發現的錯誤中80%很可能的起源於20%的模組中。(缺陷存在群集現象)
對錯誤結果要進行一個確認的過程(測試的詳細資料,截圖,前置條件等)
制定嚴格的測試計劃
妥善保管測試過程中的所有文件
程式設計師儘量避免自己的檢查程式
設計測試用例是應該考慮到合法的輸入和不合法的輸入
7、什麼是軟體質量?
概括地說,軟體質量就是“軟體與明確的和隱含的定義的需求相一致的程度”。具體地說,軟體
質量是軟體符合明確敘述的功能和效能需求、文件中明確描述 的開發標準、以及所有專業開發的
軟體都應具有的隱含特徵的程度。 影響軟體質量的主要因素,這些因素是從管理角度對軟體質量
的度量。可劃分為三組,分別反應使用者在使用軟體產品時的三種觀點。正確性、健壯性、效率、
完整性、可用性、風險(產品執行);可理解性、可維修性、靈活性、可測試性(產品修改);
可移植性、可再用性、互執行性(產品轉移)。
8、目前主要的測試用例設計方法是什麼?
白盒測試:邏輯覆蓋、迴圈覆蓋、基本路徑覆蓋
黑盒測試:邊界值分析法、等價類劃分、錯誤猜測法、因果圖法、狀態圖法、測試大綱法、隨機
測試、場景法
9、軟體的安全性應從哪幾個方面去測試?
軟體安全性測試包括程式、資料庫安全性測試。根據系統安全指標不同測試策略也不同。
使用者認證安全的測試要考慮問題:
1)明確區分系統中不同使用者許可權 、系統中會不會出現使用者衝突 、系統會不會因使用者的許可權的改變造成混亂 、
2)使用者登陸密碼是否是可見、可複製 、是否可以通過絕對途徑登陸系統(拷貝使用者登陸後的連結直接進入系統)、
3)使用者退出系統後是否刪除了所有鑑權標記,是否可以使用後退鍵而不通過輸入口令進入 系統 、
系統網路安全的測試要考慮問題 :
1)測試採取的防護措施是否正確裝配好,
2)有關係統的補丁是否打上 、
3)模擬非授權***,
4)看防護系統是否堅固 、
5)採用成熟的網路漏洞檢查工具檢查系統相關漏洞(即用最專業的******工具***試一下,現在最常用的是 NBSI 系列和 IPhacker IP )
6)採用各種***檢查工具檢查系統***情況
7)採用各種防外掛工具檢查系統各組程式的外掛漏洞
資料庫安全考慮問題:
1)系統資料是否機密(比如對銀行系統,這一點就特別重要,一般的網站就沒有太高要求)
2)系統資料的完整性(我剛剛結束的企業實名核查服務系統中就曾存在資料 的不
3)完整,對於這個系統的功能實現有了障礙) 、系
4)統資料可管理性 、
5)系統資料的獨立性 、
6)系統資料可備份和恢復能力(資料備份是否完整,可否恢復,恢復是否可以完整)
10、什麼是測試用例 什麼是測試指令碼 兩者的關係是什麼?
用例:
未實施測試而編制的一組測試輸入、執行條件、各種環境設定以及預期結果以及期望結果的一個特定的集合。
指令碼:
測試指令碼是為了進行自動化測試而編寫的指令碼。
測試指令碼的編寫必須對應相應的測試用例
11、簡述什麼是靜態測試、動態測試、黑盒測試、白盒測試、α測試 β測試
靜態測試:
是不執行程式本身而尋找程式程式碼中可能存在的錯誤或評估程式程式碼的過程。
動態測試:
是實際執行被測程式,輸入相應的測試例項,檢查執行結果與預期結果的差異,判定執行結果是
否符合要求,從而檢驗程式的正確性、可靠性和有效性,並分析系統執行效率和健壯性等效能。
黑盒測試:
一般用來確認軟體功能的正確性和可操作性,目的是檢測軟體的各個功能是否能得以實現,把被測試
的程式當作一個黑盒,不考慮其內部結構,在知道該程式的輸入和輸出之間的關係或程式功能的情況
下,依靠軟體規格說明書來確定測試用例和推斷測試結果的正確性。
白盒測試:
根據軟體內部的邏輯結構分析來進行測試,是基於程式碼的測試,測試人員通過閱讀程式程式碼或者通
過使用開發工具中的單步除錯來判斷軟體的質量,一般黑盒測試由專案經理在程式設計師開發中來實現。
α測試:
是由使用者在開發環境下進行的測試,也可以是公司內部的使用者在模擬實際操作環境下進行的受控測
試,Alpha測試不能由程式設計師或測試員完成。
β測試
由軟體的一個或多個使用者在實際使用環境下進行的測試, 開發者通常不在測試現場,Beta測試
不能由程式設計師或測試員完成。
12、軟體產品質量特性是什麼?
功能性:適應性、準確性、互操作性、依從性、安全性。
可靠性:成熟性、容錯性、易恢復性。
可使用性:易理解性、易學習性、易操作性。
效率:時間特性、資源特性。
可維護性:易分析性、易變更性、穩定性、易測試性。
可移植性: 適應性、易安裝性、遵循性、易替換性
13、軟體測試的策略是什麼?
軟體測試策略:在一定的軟體測試標準、測試規範的指導下,依據測試專案的特定環境約束而規
定的軟體測試的原則、方式、方法的集合。
14、軟體測試分為幾個階段 各階段的測試策略和要求是什麼?
測試過程會依次經歷單元測試、整合測試、系統測試、驗收測試四個主要階段
單元測試:
單元測試是針對軟體設計的最小單位––程式模組甚至程式碼段進行正確性檢驗的測試工作,通常由開發人員進行。
整合測試:
整合測試是將模組按照設計要求組裝起來進行測試,主要目的是發現與介面有關的問題。由於在
產品提交到測試部門前,產品開發小組都要進行聯合除錯,因此在大部分企業中整合測試是由開
發人員來完成的。
系統測試:
系統測試是在整合測試通過後進行的,目的是充分執行系統,驗證各子系統是否都能正常工作並
完成設計的要求。它主要由測試部門進行,是測試部門最大最重要的一個測試,對產品的質量有
重大的影響。
驗收測試:
驗收測試以需求階段的《需求規格說明書》為驗收標準,測試時要求模擬實際使用者的執行環境。
對於實際專案可以和客戶共同進行,對於產品來說就是最後一次的系統測試。測試內容為對功
能模組的全面測試,尤其要進行文件測試。
單元測試測試策略:
自頂向下的單元測試策略:比孤立單元測試的成本高很多,不是單元測試的一個好的選擇。
自底向上的單元測試策略:比較合理的單元測試策略,但測試周期較長。
孤立單元測試策略:最好的單元測試策略。
整合測試的測試策略:
大爆炸整合:適應於一個維護型專案或被測試系統較小
自頂向下整合:適應於產品控制結構比較清晰和穩定;高層介面變化較小;底層介面未定義或經
常可能被修改;產口控制組件具有較大的技術風險,需要儘早被驗證;希望儘早能看到產品的系
統功能行為。
自底向上整合:適應於底層介面比較穩定;高層介面變化比較頻繁;底層元件較早被完成。
基於進度的整合
優點:具有較高的並行度;能夠有效縮短專案的開發進度。
缺點:樁和驅動工作量較大;有些介面測試不充分;有些測試重複和浪費。
系統測試的測試策略:
資料和資料庫完整性測試;功能測試;使用者介面測試;效能評測;負載測試;強度測試;容量測
試;安全性和訪問控制測試;故障轉移和恢復測試;配置測試;安裝測試;加密測試;可用性測
試;版本驗證測試;文件測試
15、軟體測試各個階段通常完成什麼工作?各個階段的結果檔案是什麼?包括什麼內容?
單元測試階段:
各獨立單元模組在與系統地其他部分相隔離的情況下進行測試,單元測試針對每一個程式模組進
行正確性校驗,檢查各個程式模組是否正確地實現了規定的功能。生成單元測試報告,提交缺陷
報告。
整合測試階段:
整合測試是在單元測試的基礎上,測試在將所有的軟體單元按照概要設計規格說明的要求組裝成
模組、子系統或系統的過程中各部分工作是否達到或實現相應技術指標及要求的活動。該階段生
成整合測試報告,提交缺陷報告。
系統測試階段:
將通過確認測試的軟體,作為整個給予計算機系統的一個元素,與計算機硬體、外設、某些支援
軟體、資料和人員等其他系統元素結合在一起,在實際執行環境下,對計算機系統進行全面的功
能覆蓋。該階段需要提交測試總結和缺陷報告。
16、測試人員在軟體開發過程中的任務是什麼?
1、儘可能早的找出系統中的Bug;
2、避免軟體開發過程中缺陷的出現;
3、衡量軟體的品質,保證系統的質量;
4、關注使用者的需求,並保證系統符合使用者需求。
總的目標是:確保軟體的質量。
17、在您以往的工作中,一條軟體缺陷(或者叫Bug)記錄都包含了哪些內容?
如何提交高質量的軟體缺陷(Bug)記錄?
一條Bug記錄最基本應包含:
bug編號;
bug嚴重級別,優先順序;
bug產生的模組;
首先要有bug摘要,闡述bug大體的內容;
bug對應的版本;
bug詳細現象描述,包括一些截圖、錄影....等等;
bug出現時的測試環境,產生的條件即對應操作步驟;
高質量的Bug記錄:
1) 通用UI要統一、準確
缺陷報告的UI要與測試的軟體UI保持一致,便於查詢定位。
2) 儘量使用業界慣用的表達術語和表達方法
使用業界慣用的表達術語和表達方法,保證表達準確,體現專業化。
3) 每條缺陷報告只包括一個缺陷
每條缺陷報告只包括一個缺陷,可以使缺陷修正者迅速定位一個缺陷,集中精力每次只修正一個
缺陷。校驗者每次只校驗一個缺陷是否已經正確修正。
4) 不可重現的缺陷也要報告
首先缺陷報告必須展示重現缺陷的能力。不可重現的缺陷要盡力重現,若盡力之後仍不能重現,
仍然要報告此缺陷,但在報告中要註明無法再現,缺陷出現的頻率。
5) 明確指明缺陷型別
根據缺陷的現象,總結判斷缺陷的型別。例如,即功能缺陷、介面缺陷、資料缺陷,合理化建議
這是最常見的缺陷或缺陷型別,其他形式的缺陷或缺陷也從屬於其中某種形式。
6) 明確指明缺陷嚴重等級和優先等級時刻明確嚴重等級和優先等級之間的差別。高嚴重問題可能
7) 描述 (Description) ,簡潔、準確,完整,揭示缺陷實質,記錄缺陷或缺陷出現的位置
描述要準確反映缺陷的本質內容,簡短明瞭。為了便於在軟體缺陷管理資料庫中尋找制定的測試
缺陷,包含缺陷發生時的使用者介面(UI)是個良好的習慣。例如記錄對話方塊的標題、選單、按鈕
等控制元件的名稱。
8) 短行之間使用自動數字序號,使用相同的字型、字號、行間距
短行之間使用自動數字序號,使用相同的字型、字號、行間距,可以保證各條記錄格式一致,做
到規範專業。
9) 每一個步驟儘量只記錄一個操作保證簡潔、條理井然,容易重複操作步驟。
10) 確認步驟完整,準確,簡短
保證快速準確的重複缺陷,“完整”即沒有缺漏,“準確”即步驟正確,“簡短”即沒有多餘的步驟。
11) 根據缺陷,可選擇是否進行圖象捕捉
為了直觀的觀察缺陷或缺陷現象,通常需要附加缺陷或缺陷出現的介面,以圖片的形式作為附件
附著在記錄的“附件”部分。為了節省空間,又能真實反映缺陷或缺陷本質,可以捕捉缺陷或缺
陷產生時的全螢幕,活動視窗和區域性區域。為了迅速定位、修正缺陷或缺陷位置,通常要求附加
中文對照圖。
附加必要的特殊文件和個人建議和註解
如果開啟某個特殊的文件而產生的缺陷或缺陷,則必須附加該文件,從而可以迅速再現缺陷或缺
陷。有時,為了使缺陷或缺陷修正者進一步明確缺陷或缺陷的表現,可以附加個人的修改建議或
註解。
12) 檢查拼寫和語法缺陷
在提交每條缺陷或缺陷之前,檢查拼寫和語法,確保內容正確,正確的描述缺陷。
13) 儘量使用短語和短句,避免複雜句型句式
軟體缺陷管理資料庫的目的是便於定位缺陷,因此,要求客觀的描述操作步驟,不需要修飾性的
詞彙和複雜的句型,增強可讀性。
以上概括了報告測試缺陷的規範要求,隨著軟體的測試要求不同,測試者經過長期測試,積累了
相應的測試經驗,將會逐漸養成良好的專業習慣,不斷補充新的規範書寫要求。此外,經常閱讀
、學習其他測試工程師的測試缺陷報告,結合自己以前的測試缺陷報告進行對比和思考,可以不
斷提高技巧。
14) 缺陷描述內容
缺陷描述的內容可以包含缺陷操作步驟,實際結果和期望結果。操作步驟可以方便開發人員再現
缺陷進行修正,有些開發的再現缺陷能力很差,雖然他明白你所指的缺陷,但就是無法再現特別
是對系統不熟悉的新加入開發人員,介紹步驟可以方便他們再現。實際結果可以讓開發明白錯誤
是什麼,期望結果可以讓開發瞭解正確的結果應該是如何。
18、黑盒測試和白盒測試是軟體測試的兩種基本方法,請分別說明各自的優點和缺點!
黑盒測試的優點有:
比較簡單,不需要了解程式內部的程式碼及實現;
與軟體的內部實現無關;
從使用者角度出發,能很容易的知道使用者會用到哪些功能,會遇到哪些問題;
基於軟體開發文件,所以也能知道軟體實現了文件中的哪些功能;在做軟體自動化測試時較為方便。
黑盒測試的缺點有:
不可能覆蓋所有的程式碼,覆蓋率較低,大概只能達到總程式碼量的30%;
自動化測試的複用性較低。
白盒測試的優點有:
幫助軟體測試人員增大程式碼的覆蓋率,提高程式碼的質量,發現程式碼中隱 藏的問題。
白盒測試的缺點有:
程式執行會有很多不同的路徑,不可能測試所有的執行路徑;
測試基於程式碼,只能測試開發人員做的對不對,而不能知道設計的正確與否,可能會漏掉一些功能需求;
系統龐大時,測試開銷會非常大。
19、如何測試一個紙杯?
功能度:用水杯裝水看漏不漏;水能不能被喝到
安全性:杯子有沒有毒或細菌
可靠性:杯子從不同高度落下的損壞程度
可移植性:杯子在不同的地方、溫度等環境下是否都可以正常使用
相容性:杯子是否能夠容納果汁、白水、酒精、汽油等
易用性:杯子是否燙手、是否有防滑措施、是否方便飲用
使用者文件:使用手冊是否對杯子的用法、限制、使用條件等有詳細描述
疲勞測試:將杯子盛上水(案例一)放24小時檢查洩漏時間和情況;盛上汽油(案例二)放24小
時檢查洩漏時間和情況等
壓力測試:用根針並在針上面不斷加重量,看壓強多大時會穿透
20、黑盒測試的測試用例常見設計方法都有哪些?
請分別以具體的例子來說明這些方法在測試用例設計工作中的應用。
1)等價類劃分:
等價類是指某個輸入域的子集合.在該子集合中,各個輸入資料對於揭露程式中
的錯誤都是等效的.併合理地假定:測試某等價類的代表值就等於對這一類其它值的測試.因此,可
以把全部輸入資料合理劃分為若干等價類,在每一個等價類中取一個數據作為測試的輸入條件,就
可以用少量代表性的測試資料.取得較好的測試結果.等價類劃分可有兩種不同的情況:有效等價類
和無效等價類.
2)邊界值分析法:
是對等價類劃分方法的補充。測試工作經驗告訴我,大量的錯誤是發生在輸入
或輸出範圍的邊界上,而不是發生在輸入輸出範圍的內部.因此針對各種邊界情況設計測試用例,可
以查出更多的錯誤.
使用邊界值分析方法設計測試用例,首先應確定邊界情況.通常輸入和輸出等價類的邊界,就是應著
重測試的邊界情況.應當選取正好等於,剛剛大於或剛剛小於邊界的值作為測試資料,而不是選取等
價類中的典型值或任意值作為測試資料.
3)錯誤猜測法:
基於經驗和直覺推測程式中所有可能存在的各種錯誤, 從而有針對性的設計測試用例的方法.
錯誤推測方法的基本思想: 列舉出程式中所有可能有的錯誤和容易發生錯誤的特殊情況,根據他們
選擇測試用例. 例如, 在單元測試時曾列出的許多在模組中常見的錯誤. 以前產品測試中曾經發
現的錯誤等, 這些就是經驗的總結. 還有, 輸入資料和輸出資料為0的情況. 輸入表格為空格或輸
入表格只有一行. 這些都是容易發生錯誤的情況. 可選擇這些情況下的例子作為測試用例.
4)因果圖方法:
前面介紹的等價類劃分方法和邊界值分析方法,都是著重考慮輸入條件,但未考慮
輸入條件之間的聯絡, 相互組合等. 考慮輸入條件之間的相互組合,可能會產生一些新的情況. 但
要檢查輸入條件的組合不是一件容易的事情, 即使把所有輸入條件劃分成等價類,他們之間的組合
情況也相當多. 因此必須考慮採用一種適合於描述對於多種條件的組合,相應產生多個動作的形式
來考慮設計測試用例. 這就需要利用因果圖(邏輯模型). 因果圖方法最終生成的就是判定表.
它適合於檢查程式輸入條件的各種組合情況.
5)正交表分析法:可能因為大量的引數的組合而引起測試用例數量上的激增,同時,這些測試用
例並沒有明顯的優先順序上的差距,而測試人員又無法完成這麼多數量的測試,就可以通過正交表
來進行縮減一些用例,從而達到儘量少的用例覆蓋儘量大的範圍的可能性。
6)場景分析方法:指根據使用者場景來模擬使用者的操作步驟,這個比較類似因果圖,但是可能執行
的深度和可行性更好。
7)狀態圖法:
通過輸入條件和系統需求說明得到被測系統的所有狀態,通過輸入條件和狀態得出
輸出條件;通過輸入條件、輸出條件和狀態得出被測系統的測試用例。
8)大綱法:
大綱法是一種著眼於需求的方法,為了列出各種測試條件,就將需求轉換為大綱的形
式。大綱表示為樹狀結構,在根和每個葉子結點之間存在唯一的路徑。大綱中的每條路徑定義了
一個特定的輸入條件集合,用於定義測試用例。樹中葉子的數目或大綱中的路徑給出了測試所有
功能所需測試用例的大致數量。