天天看點

軟體測試工程師面試題(吐血推薦)

01. 為什麼要在一個團隊中開展

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

02. 您在以往的測試工作中都曾經具體從事過哪些工作?其中最擅長哪部分工作?

我曾經做過web測試,背景測試,用戶端軟體,其中包括

功能測試,

性能測試,使用者體驗測試。最擅長的是功能測試

03. 您所熟悉的軟體測試類型都有哪些?請試着分别比較這些不同,測試類型的差別與聯系(如功能測試、性能測試……)

測試類型有:功能測試,性能測試,界面測試。

功能測試在測試工作中占的比例最大,功能測試也叫黑盒測試。是把測試對象看作一個黑盒子。利用黑盒測試法進行動态測試時,需要測試軟體産品的功能,不需測試軟體産品的内部結構和處理過程。采用黑盒技術設計測試用例的方法有:等價類劃分、邊界值分析、錯誤推測、因果圖和綜合政策。

性能測試是通過自動化的測試工具模拟多種正常、峰值以及異常負載條件來對系統的各項性能名額進行測試。負載測試和壓力測試都屬于性能測試,兩者可以結合進行。通過負載測試,确定在各種工作負載下系統的性能,目标是測試當負載逐漸增加時,系統各項性能名額的變化情況。壓力測試是通過确定一個系統的瓶頸或者不能接收的性能點,來獲得系統能提供的最大服務級别的測試。

界面測試,界面是軟體與使用者互動的最直接的層,界面的好壞決定使用者對軟體的第一印象。而且設計良好的界面能夠引導使用者自己完成相應的操作,起到向導的作用。同時界面如同人的面孔,具有吸引使用者的直接優勢。設計合理的界面能給使用者帶來輕松愉悅的感受和成功的感覺,相反由于界面設計的失敗,讓使用者有挫敗感,再實用強大的功能都可能在使用者的畏懼與放棄中付諸東流。

差別在于,功能測試關注産品的所有功能上,要考慮到每個細節功能,每個可能存在的功能問題。性能測試主要關注于産品整體的多使用者并發下的穩定性和健壯性。界面測試更關注于使用者體驗上,使用者使用該産品的時候是否易用,是否易懂,是否規範(快捷鍵之類的),是否美觀(能否吸引使用者的注意力),是否安全(盡量在前台避免使用者無意輸入無效的資料,當然考慮到體驗性,不能太粗魯的彈出警告)?做某個性能測試的時候,首先它可能是個功能點,首先要保證它的功能是沒問題的,然後再考慮該功能點的性能測試

如果對軟體測試有興趣,想了解更多的測試知識,解決測試問題,以及入門指導,幫你解決測試中遇到的困惑,我們這裡有技術高手。如果你正在找工作或者剛剛學校出來,又或者已經工作但是經常覺得難點很多,覺得自己測試方面學的不夠精想要繼續學習的,想轉行怕學不會的, 都可以加入我們1079636098,群内可領取最新軟體測試大廠面試資料和Python自動化、接口、架構搭建學習資料!微信公号【程式員一凡】

04.您認為做好測試用例設計工作的關鍵是什麼?

白盒測試用例設計的關鍵是以較少的用例覆寫盡可能多的内部程式邏輯結果 黑盒法用例設計的關鍵同樣也是以較少的用例覆寫子產品輸出和輸入接口。不可能做到完全測試,以最少的用例在合理的時間内發現最多的問題

05. 請試着比較一下黑盒測試、白盒測試、

單元測試、內建測試、系統測試、驗收測試的差別與聯系。 黑盒測試:已知産品的功能設計規格,可以進行測試證明每個實作了的功能是否符合要。通過在不同點檢查程式狀态,确定實際狀态是否與預期的狀态一緻。是以白盒測試又稱為結構測試或邏輯驅動測試。白盒測試主要是想對程式子產品進行如下檢查:

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. 請以您以往的實際工作為例,詳細的描述一次測試用例設計的完整的過程。

就說最近的這次網站功能的測試吧

首先:得到相關文檔(需求文檔和設計文檔),了解需求和設計設計思想後,想好測試政策(測試計劃簡單點就OK了),考慮到測試環境,測試用例,測試時間等問題。

第二步:設計測試用例,測試政策是:把網站部分的功能點測試完,然後在進行系統測試(另外個子產品呢有另一個測試人員負責,可以進行聯調測試),網站子產品的測試基本是功能測試和界面測試(使用者并發的可能性很小,是以不考慮):這次的網站的輸入資料呢是使用資料庫中的某張表記錄,如果表中某一資料記錄中新加進來的(還沒有被處理的,有個标志位),網站啟動後會立刻去刷那張表,得到多條資料,然後在進行處理。處理過程中,會經曆3個步驟,網站才算完成了它的任務。有3個步驟呢,就可以分别對 這3個步驟進行測試用例的設計,盡量覆寫到各種輸入情況(包括資料庫中的資料,使用者的輸入等),得出了差不多50個用例。界面測試,也就是使用者看的到的地方,包括發送的郵件和使用者填寫資料的頁面展示。

第三步:搭建測試環境(為什麼這個時候考慮測試環境呢?因為我對網站環境已經很熟了,隻有有機器能空于下來做該功能測試就可以做了),因為網站本身的環境搭建和其他的系統有點不同,它需要的測試環境比較麻煩,需要web伺服器(Apache,tomcat),不過這次需求呢,網站部分隻用到了tomcat,是以隻要有tomcat即可

第四步:執行測試

11. 您以往是否曾經從事過性能測試工作?

如果有,請盡可能的較長的描述您以往的性能測試工作的完整過程。

是的,曾經做過網站方面的性能測試,雖然做的時間并不久(2個月吧),當時呢,是有位網站性能

測試經驗非常豐富的前輩帶着我一起做。 性能測試類型包括負載測試,強度測試,容量測試等 負載測試:負載測試是一種性能測試指資料在超負荷環境中運作,程式是否能夠承擔。 強度測試: 強度測試是一種性能測試,他在系統資源特别低的情況下軟體系統運作情況 容量測試:确定系統可處理同時線上的最大使用者數 在網站流量逐漸加大的情況下,開始考慮做性能測試了,首先要寫好性能測試計劃,根據營運資料得出流量最大的頁面(如果是第一次的話,一般是首頁,下載下傳頁,個人帳戶頁流量最大,而且以某種百分比),

Web伺服器名額名額:

  • Avg Rps: 平均每秒鐘響應次數=總請求時間 / 秒數;
  • Successful Rounds:成功的請求;
  • Failed Rounds :失敗的請求;
  • Successful Hits :成功的點選次數;
  • Failed Hits :失敗的點選次數;
  • Hits Per Second :每秒點選次數;
  • Successful Hits Per Second :每秒成功的點選次數;
  • Failed Hits Per Second :每秒失敗的點選次數;
  • Attempted Connections :嘗試連結數;

12.你對測試最大的興趣在哪裡?為什麼?

最大的興趣就是測試有難度,有挑戰性!做測試越久越能感覺到做好測試有多難。

曾經在測試網上看到一篇文章,是關于如何做好一名測試工程師。一共羅列了11,12點,有部分是和人的性格有關,有部分需要後天的努力。但除了性格有關的1,2點我沒有把握,其他點我都很有信心做好它。 剛開始進入測試行業時,對測試的認識是從無憂測試網上了解到的一些資料,當時是沖着做測試需要很多技能才能做的好,雖然入門容易,但做好很難,比開發更難,雖然當時我很想做開發(學校專業課我基本上不缺席,因為我喜歡我的專業),但看到測試比開發更難更有挑戰性,想做好測試的意志就更堅定了。 不到一年半的測試工作中,當時的感動和熱情沒有減退一點(即使環境問題以及自身經驗,技術的不足,做測試的你一定也能了解)。

我覺得做測試整個過程中有2點讓我覺得很有難度(對我來說,有難度的東西我就非常感興趣)

第一是測試用例的設計,因為測試的精華就在測試用例的設計上了,要在版本出來之前,把用例寫好,用什麼測試方法寫?(也就是測試計劃或測試政策),如果你剛測試一個新任務時,你得花一定的時間去消化業務需求和技術基礎,業務需求很好了解(多和産品經理和開發人員溝通就能達到目的),而技術基礎可就沒那麼簡單了,這需要你自覺的學習能力,比如說網站吧,最基本的技術知識你要知道網站内部是怎麼運作的的,背景是怎麼響應使用者請求的?測試環境如何搭建?這些都需要最早的學好。至少在開始測試之前能做好基本的準備,可能會遇到什麼難題?需求細節是不是沒有确定好?這些問題都能在設計用例的時候發現。

第二是發現BUG的時候了,這應該是測試人員最基本的任務了,一般按測試用例開始測試就能發現大部分的bug,還有一部分bug需要測試的過程中更了解所測版本的情況獲得更多資訊,補充測試用例,測試出bug。還有如何發現bug?這就需要在測試用例有效的情況下,通過細心和耐心去發現bug了,每個用例都有可能發現bug,每個地方都有可能出錯,是以測試過程中思維要清晰(測試過程資料流及結果都得看仔細了,bug都在裡面發現的)。如何描述bug也很有講究,bug在什麼情況下會産生,如果條件變化一點點,就不會有這個bug,以哪些最少的操作步驟就能重制這個bug,這個bug産生的規律是什麼?如果你夠厲害的話,可以幫開發人員初步定位問題。

13.你的測試職業發展是什麼?

測試經驗越多,測試能力越高。是以我的職業發展是需要時間累積的,一步步向着進階測試工程師奔去。而且我也有初步的職業規劃,前3年累積測試經驗,按如何做好測試工程師的11,12點要求自己,不斷的更新自己改正自己,做好測試任務。

14.你自認為測試的優勢在哪裡?

優勢在于我對測試堅定不移的信心和熱情,雖然經驗還不夠,但測試需要的基本技能我有信心在工作中得以發揮。

15.你以前工作時的測試流程是什麼?

公司對測試流程沒有規定如何做,但每個測試人員都有自己的一套測試流程。我說下我1年來不斷改正(自己總結,吸取同行的方法)後的流程吧。需求評審(有開發人員,産品經理,測試人員,項目經理)->需求确定(出一份确定的需求文檔)->開發設計文檔(開發人員在開始寫代碼前就能輸出設計文檔)->想好測試政策,寫出測試用例->發給開發人員和測試經理看看(非正式的評審用例)->接到測試版本->執行測試用例(中間可能會補充用例)->送出bug(有些bug需要開發人員的确定(嚴重級别的,或突然發現的在測試用例範圍之外的,難以重制的),有些可以直接錄制進TD)->開發人員修改(可以在測試過程中快速的修改)->回歸測試(可能又會發現新問題,再按流程開始跑)。

16.當開發人員說不是BUG時, 你如何應付?

開發人員說不是bug,有2種情況,

一是需求沒有确定,是以我可以這麼做,這個時候可以找來産品經理進行确認,需不需要改動,3方商量确定好後再看要不要改。

二是這種情況不可能發生,是以不需要修改,這個時候,我可以先盡可能的說出是BUG的依據是什麼?如果被使用者發現或出了問題,會有什麼不良結果?程式員可能會給你很多理由,你可以對他的解釋進行反駁。如果還是不行,那我可以給這個問題提出來,跟開發經理和測試經理進行确認,如果要修改就改,如果不要修改就不改。其實有些真的不是bug,我也隻是建議的方式寫進TD中,如果開發人員不修改也沒有大問題。如果确定是bug的話,一定要堅持自己的立場,讓問題得到最後的确認。

17.你為什麼想離開目前的職務?

因為公司運作情況并不理想,公司需要調整部門體系,公司考慮到縮減部門人員,是以大批量的裁員(有6,7個),這是我的第一份工作,對公司也有較深的感情,因為在這裡我找到了職業理想(就是測試),是以公司需要精簡人員,我自願退出。雖然很舍不得,但我将會有新的發揮能力的舞台。

如果對軟體測試有興趣,想了解更多的測試知識,解決測試問題,以及入門指導,幫你解決測試中遇到的困惑,我們這裡有技術高手。如果你正在找工作或者剛剛學校出來,又或者已經工作但是經常覺得難點很多,覺得自己測試方面學的不夠精想要繼續學習的,想轉行怕學不會的, 都可以加入我們1079636098,群内可領取最新軟體測試大廠面試資料和Python自動化、接口、架構搭建學習資料!微信公号【程式員一凡】

軟體測試工程師面試題(吐血推薦)

繼續閱讀