[轉]軟件測試面試題[找工作必讀]一

收藏於 2010-04-11 來自於百度空間(RQ)

01. 爲什麼要在一個團隊中開展軟件測試?
  因爲沒有經過測試的軟件很難在發佈之前知道該軟件的質量,就好比ISO質量認證一樣,測試同樣也需要質量的保證,這個時候就需要在團隊中開展軟件測試的工作。在測試的過程發現軟件中存在的問題,及時讓開發人員得知並修改問題,在即將發佈時,從測試報告中得出軟件的質量情況。

02. 您在以往的測試工作中都曾經具體從事過哪些工作?其中最擅長哪部分工作?
  我曾經做過web測試,後臺測試,客戶端軟件,其中包括,,用戶體驗測試。最擅長的是功能測試

03. 您所熟悉的軟件測試類型都有哪些?請試着分別比較這些不同04. 的測試類型的區別與聯繫(如功能測試、性能測試……)
  測試類型有:功能測試,性能測試,界面測試。
  功能測試在測試工作中佔的比例最大,功能測試也叫。是把測試對象看作一個黑盒子。利用黑盒測試法進行動態測試時,需要測試軟件產品的功能,不需測試軟件產品的內部結構和處理過程。採用黑盒設計測試用例的方法有:等價類劃分、邊界值分析、錯誤推測、因果圖和綜合策略。
  性能測試是通過自動化的模擬多種正常、峯值以及異常負載條件來對系統的各項性能指標進行測試。負載測試和壓力測試都屬於性能測試,兩者可以結合進行。通過負載測試,確定在各種工作負載下系統的性能,目標是測試當負載逐漸增加時,系統各項性能指標的變化情況。壓力測試是通過確定一個系統的瓶頸或者不能接收的性能點,來獲得系統能提供的最大服務級別的測試。
  界面測試,界面是軟件與用戶交互的最直接的層,界面的好壞決定用戶對軟件的第一印象。而且設計良好的界面能夠引導用戶自己完成相應的操作,起到嚮導的作用。同時界面如同人的面孔,具有吸引用戶的直接優勢。設計合理的界面能給用戶帶來輕鬆愉悅的感受和成功的感覺,相反由於界面設計的失敗,讓用戶有挫敗感,再實用強大的功能都可能在用戶的畏懼與放棄中付諸東流。
  區別在於,功能測試關注產品的所有功能上,要考慮到每個細節功能,每個可能存在的功能問題。性能測試主要關注於產品整體的多用戶併發下的穩定性和健壯性。界面測試更關注於用戶體驗上,用戶使用該產品的時候是否易用,是否易懂,是否規範(快捷鍵之類的),是否美觀(能否吸引用戶的注意力),是否安全(儘量在前臺避免用戶無意輸入無效的數據,當然考慮到體驗性,不能太粗魯的彈出警告)?做某個性能測試的時候,首先它可能是個功能點,首先要保證它的功能是沒問題的,然後再考慮該功能點的性能測試

04.您認爲做好測試用例設計工作的關鍵是什麼?
用例設計的關鍵是以較少的用例覆蓋儘可能多的內部程序邏輯結果
黑盒法用例設計的關鍵同樣也是以較少的用例覆蓋模塊輸出和輸入接口。不可能做到完全測試,以最少的用例在合理的時間內發現最多的問題


05.     請試着比較一下黑盒測試、白盒測試、、集成測試、系統測試、驗收測試的區別與聯繫。

  黑盒測試:已知產品的功能設計規格,可以進行測試證明每個實現了的功能是否符合要求。
  白盒測試:已知產品的內部工作過程,可以通過測試證明每種內部操作是否符合設計規格要求,所有內部成分是否以經過檢查。

  軟件的黑盒測試意味着測試要在軟件的接口處進行。這種方法是把測試對象看做一個黑盒子,測試人員完全不考慮程序內部的邏輯結構和內部特性,只依據程序的需求規格說明書,檢查程序的功能是否符合它的功能說明。因此黑盒測試又叫功能測試或數據驅動測試。黑盒測試主要是爲了發現以下幾類錯誤:
  1、是否有不正確或遺漏的功能?
  2、在接口上,輸入是否能正確的接受?能否輸出正確的結果?
  3、是否有數據結構錯誤或外部信息(例如數據文件)訪問錯誤?
  4、性能上是否能夠滿足要求?
  5、是否有初始化或終止性錯誤?

  軟件的白盒測試是對軟件的過程性細節做細緻的檢查。這種方法是把測試對象看做一個打開的盒子,它允許測試人員利用程序內部的邏輯結構及有關信息,設計或選擇測試用例,對程序所有邏輯路徑進行測試。通過在不同點檢查程序狀態,確定實際狀態是否與預期的狀態一致。因此白盒測試又稱爲結構測試或邏輯驅動測試。白盒測試主要是想對程序模塊進行如下檢查:
  1、對程序模塊的所有獨立的執行路徑至少測試一遍。
  2、對所有的邏輯判定,取“真”與取“假”的兩種情況都能至少測一遍。
  3、在循環的邊界和運行的界限內執行循環體。
  4、測試內部數據結構的有效性,等等。

  單元測試(模塊測試)是開發者編寫的一小段代碼,用於檢驗被測代碼的一個很小的、很明確的功能是否正確。通常而言,一個單元測試是用於判斷某個特定條件(或者場景)下某個特定函數的行爲。

  單元測試是由程序員自己來完成,最終受益的也是程序員自己。可以這麼說,程序員有責任編寫功能代碼,同時也就有責任爲自己的代碼編寫單元測試。執行單元測試,就是爲了證明這段代碼的行爲和我們期望的一致。

  集成測試(也叫組裝測試,聯合測試)是單元測試的邏輯擴展。它的最簡單的形式是:兩個已經測試過的單元組合成一個組件,並且測試它們之間的接口。從這一層意義上講,組件是指多個單元的集成聚合。在現實方案中,許多單元組合成組件,而這些組件又聚合成程序的更大部分。方法是測試片段的組合,並最終擴展進程,將您的模塊與組的模塊一起測試。最後,將構成進程的所有模塊一起測試。

  系統測試是將經過測試的子系統裝配成一個完整系統來測試。它是檢驗系統是否確實能提供系統方案說明書中指定功能的有效方法。(常見的聯調測試)

  系統測試的目的是對最終軟件系統進行全面的測試,確保最終軟件系統滿足產品需求並且遵循系統設計。

  驗收測試是部署軟件之前的最後一個測試操作。驗收測試的目的是確保軟件準備就緒,並且可以讓最終用戶將其用於執行軟件的既定功能和任務。
驗收測試是向未來的用戶表明系統能夠像預定要求那樣工作。經集成測試後,已經按照設計把所有的模塊組裝成一個完整的軟件系統,接口錯誤也已經基本排除了,接着就應該進一步驗證軟件的有效性,這就是驗收測試的任務,即軟件的功能和性能如同用戶所合理期待的那樣。

06. 測試計劃工作的目的是什麼?測試計劃工作的內容都包括什麼?其中哪些是最重要的?
  軟件測試計劃是指導測試過程的綱領性文件,包含了產品概述、測試策略、測試方法、測試區域、測試配置、測試周期、測試資源、測試交流、風險分析等內容。藉助軟件測試計劃,參與測試的項目成員,尤其是測試管理人員,可以明確測試任務和測試方法,保持測試實施過程的順暢溝通,跟蹤和控制測試進度,應對測試過程中的各種變更。
測試計劃和測試詳細規格、測試用例之間是戰略和戰術的關係,測試計劃主要從宏觀上規劃測試活動的範圍、方法和資源配置,而測試詳細規格、測試用例是完成測試任務的具體戰術。所以其中最重要的是測試測試策略和測試方法(最好是能先評審)

07. 您認爲做好測試計劃工作的關鍵是什麼?
  1. 明確測試的目標,增強測試計劃的實用性
  編寫軟件測試計劃得重要目的就是使測試過程能夠發現更多的軟件缺陷,因此軟件測試計劃的價值取決於它對幫助管理測試項目,並且找出軟件潛在的缺陷。因此,軟件測試計劃中的測試範圍必須高度覆蓋功能需求,測試方法必須切實可行,測試工具並且具有較高的實用性,便於使用,生成的測試結果直觀、準確
  2.堅持“5W”規則,明確內容與過程
  “5W”規則指的是“What(做什麼)”、“Why(爲什麼做)”、“When(何時做)”、“Where(在哪裏)”、“How(如何做)”。利用“5W”規則創建軟件測試計劃,可以幫助測試團隊理解測試的目的(Why),明確測試的範圍和內容(What),確定測試的開始和結束日期(When),指出測試的方法和工具(How),給出測試文檔和軟件的存放位置(Where)。
  3.採用評審和更新機制,保證測試計劃滿足實際需求
測試計劃寫作完成後,如果沒有經過評審,直接發送給測試團隊,測試計劃內容的可能不準確或遺漏測試內容,或者軟件需求變更引起測試範圍的增減,而測試計劃的內容沒有及時更新,誤導測試執行人員。
  4. 分別創建測試計劃與測試詳細規格、測試用例
  應把詳細的指標包含到獨立創建的測試詳細規格文檔,把用於指導測試小組執行測試過程的測試用例放到獨立創建的測試用例文檔或測試用例管理中。測試計劃和測試詳細規格、測試用例之間是戰略和戰術的關係,測試計劃主要從宏觀上規劃測試活動的範圍、方法和資源配置,而測試詳細規格、測試用例是完成測試任務的具體戰術。

08. 您所熟悉的測試用例設計方法都有哪些?請分別以具體的例子來說明這些方法在測試用例設計工作中的應用。
  1.等價類劃分
  劃分等價類: 等價類是指某個輸入域的子集合.在該子集合中,各個輸入數據對於揭露程序中的錯誤都是等效的.併合理地假定:測試某等價類的代表值就等於對這一類值的測試.因此,可以把全部輸入數據合理劃分爲若干等價類,在每一個等價類中取一個數據作爲測試的輸入條件,就可以用少量代表性的測試數據.取得較好的測試結果.等價類劃分可有兩種不同的情況:有效等價類和無效等價類.

  2.邊界值分析法
  邊界值分析方法是對等價類劃分方法的補充。測試工作經驗告訴我,大量的錯誤是發生在輸入或輸出範圍的邊界上,而不是發生在輸入輸出範圍的內部.因此針對各種邊界情況設計測試用例,可以查出更多的錯誤.
  使用邊界值分析方法設計測試用例,首先應確定邊界情況.通常輸入和輸出等價類的邊界,就是應着重測試的邊界情況.應當選取正好等於,剛剛大於或剛剛小於邊界的值作爲測試數據,而不是選取等價類中的典型值或任意值作爲測試數據.

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

4.因果圖方法
  前面介紹的等價類劃分方法和邊界值分析方法,都是着重考慮輸入條件,但未考慮輸入條件之間的聯繫, 相互組合等. 考慮輸入條件之間的相互組合,可能會產生一些新的情況. 但要檢查輸入條件的組合不是一件容易的事情, 即使把所有輸入條件劃分成等價類,他們之間的組合情況也相當多. 因此必須考慮採用一種適合於描述對於多種條件的組合,相應產生多個動作的形式來考慮設計測試用例. 這就需要利用因果圖(邏輯模型). 因果圖方法最終生成的就是判定表. 它適合於檢查程序輸入條件的各種組合情況.

09. 請以您以往的實際工作爲例,10. 詳細的描述一次測試用例設計的完整的過程。
  就說最近的這次網站功能的測試吧
  首先:得到相關文檔(需求文檔和設計文檔),理解需求和設計設計思想後,想好測試策略(測試計劃簡單點就OK了),考慮到測試環境,測試用例,測試時間等問題。
  第二步:設計測試用例,測試策略是:把網站部分的功能點測試完,然後在進行系統測試(另外個模塊呢有另一個測試人員負責,可以進行聯調測試),網站模塊的測試基本是功能測試和界面測試(用戶併發的可能性很小,所以不考慮):這次的網站的輸入數據呢是使用數據庫中的某張表記錄,如果表中某一數據記錄中新加進來的(還沒有被處理的,有個標誌位),網站啓動後會立刻去刷那張表,得到多條數據,然後在進行處理。處理過程中,會經歷3個步驟,網站纔算完成了它的任務。有3個步驟呢,就可以分別對  這3個步驟進行測試用例的設計,儘量覆蓋到各種輸入情況(包括數據庫中的數據,用戶的輸入等),得出了差不多50個用例。界面測試,也就是用戶看的到的地方,包括髮送的郵件和用戶填寫資料的頁面展示。
  第三步:搭建測試環境(爲什麼這個時候考慮測試環境呢?因爲我對網站環境已經很熟了,只有有機器能空於下來做該功能測試就可以做了),因爲網站本身的環境搭建和其他的系統有點不同,它需要的測試環境比較麻煩,需要web服務器(Apache,tomcat),不過這次需求呢,網站部分只用到了tomcat,所以只要有tomcat即可
  第四步:執行測試

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