軟體測試面試題(2)

TestingGDR發表於2018-10-25

12.您是否瞭解以往所工作的企業的軟體開發過程?如果瞭解,請試述一個完整的開發過程需要完成哪些工作?分別由哪些不同的角色來完成這些工作?您在以往的測試工作中都曾經具體從事過哪些工作?其中最擅長哪部分工作?

開發過程---需求調研(需求人員)、需求分析(需求人員)、概要設計(設計人員)、詳細設計(設計人員)、編碼(開發人員)

測試過程---需求評審、系統測試設計、概要設計評審、整合測試設計、詳細設計評審、單元測試設計、測試執行

測試工作的整個過程都做過,擅長做測試設計

過程決定質量,軟體的過程改進正是為了提高軟體的質量,將過往的種種經驗教訓積累起來。

13.測試用例設計的原則是什麼?目前主要的測試用例設計方法有哪些?

代表性:能夠代表並覆蓋各種合理的和不合理、合法的和非法的、邊界的和越界的、以及極限的輸入資料、操作和環境設定等.

可判定性:即測試執行結果的正確性是可判定的,每一個測試用例都應有相應的期望結果.

可再現性:即對同樣的測試用例,系統的執行結果應當是相同的。

方法有等價類、邊界值、因果圖、狀態圖、正交法、大綱法

14.物件導向的測試用例設計有幾種方法?如何實現?

給類中的每個建構函式設計一組測試用例

組合類中的類變數、例項變數

組合類中的各種方法

根據前置條件和後置條件設計測試用例

根據程式碼設計測試用例

15.LoadRunner.分為哪三個模組?請簡述各模組的主要功能。

Virtual User Generator:用於錄製腳步

Mercury LoadRunner Controller:用於建立、執行和監控場景

Mercury LoadRunner Analysis:用於分析測試結果

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

最大的興趣就是測試有難度,有挑戰性!做測試越久越能感覺到做好測試有多難。曾經在無憂測試網上看到一篇文章,是關於如何做好一名測試工程師。一共羅列了11,12點,有部分是和人的性格有關,有部分需要後天的努力。但除了性格有關的1,2點我沒有把握,其他點我都很有信心做好它。

剛開始進入測試行業時,對測試的認識是從無憂測試網上了解到的一些資料,當時是衝著做測試需要很多技能才能做的好,雖然入門容易,但做好很難,比開發更難,雖然當時我很想做開發(學校專業課我基本上不缺席,因為我喜歡我的專業),但看到測試比開發更難更有挑戰性,想做好測試的意志就更堅定了。

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

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

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

18.請試著比較一下黑盒測試、白盒測試、單元測試、整合測試、系統測試、驗收測試的區別與聯絡。黑盒測試:已知產品的功能設計規格,可以進行測試證明每個實現了的功能是否符合要求。白盒測試:已知產品的內部工作過程,可以通過測試證明每種內部操作是否符合設計規格要求,所有內部成分是否以經過檢查。軟體的黑盒測試意味著測試要在軟體的介面處進行。這種方法是把測試物件看做一個黑盒子,測試人員完全不考慮程式內部的邏輯結構和內部特性,只依據程式的需求規格說明書,檢查程式的功能是否符合它的功能說明。因此黑盒測試又叫功能測試或資料驅動測試。黑盒測試主要是為了發現以下幾類錯誤:1、是否有不正確或遺漏的功能?2、在介面上,輸入是否能正確的接受?能否輸出正確的結果?3、是否有資料結構錯誤或外部資訊(例如資料檔案)訪問錯誤?4、效能上是否能夠滿足要求?5、是否有初始化或終止性錯誤?軟體的白盒測試是對軟體的過程性細節做細緻的檢查。這種方法是把測試物件看做一個開啟的盒子,它允許測試人員利用程式內部的邏輯結構及有關資訊,設計或選擇測試用例,對程式所有邏輯路徑進行測試。通過在不同點檢查程式狀態,確定實際狀態是否與預期的狀態一致。因此白盒測試又稱為結構測試或邏輯驅動測試。白盒測試主要是想對程式模組進行如下檢查:1、對程式模組的所有獨立的執行路徑至少測試一遍。2、對所有的邏輯判定,取“真”與取“假”的兩種情況都能至少測一遍。3、在迴圈的邊界和執行的界限內執行迴圈體。4、測試內部資料結構的有效性,等等。單元測試(模組測試)是開發者編寫的一小段程式碼,用於檢驗被測程式碼的一個很小的、很明確的功能是否正確。通常而言,一個單元測試是用於判斷某個特定條件(或者場景)下某個特定函式的行為。單元測試是由程式設計師自己來完成,最終受益的也是程式設計師自己。可以這麼說,程式設計師有責任編寫功能程式碼,同時也就有責任為自己的程式碼編寫單元測試。執行單元測試,就是為了證明這段程式碼的行為和我們期望的一致。整合測試(也叫組裝測試,聯合測試)是單元測試的邏輯擴充套件。它的最簡單的形式是:兩個已經測試過的單元組合成一個元件,並且測試它們之間的介面。從這一層意義上講,元件是指多個單元的整合聚合。在現實方案中,許多單元組合成元件,而這些元件又聚合成程式的更大部分。方法是測試片段的組合,並最終擴充套件程式,將您的模組與其他組的模組一起測試。最後,將構成程式的所有模組一起測試。系統測試是將經過測試的子系統裝配成一個完整系統來測試。它是檢驗系統是否確實能提供系統方案說明書中指定功能的有效方法。(常見的聯調測試)系統測試的目的是對最終軟體系統進行全面的測試,確保最終軟體系統滿足產品需求並且遵循系統設計。驗收測試是部署軟體之前的最後一個測試操作。驗收測試的目的是確保軟體準備就緒,並且可以讓終端使用者將其用於執行軟體的既定功能和任務。驗收測試是向未來的使用者表明系統能夠像預定要求那樣工作。經整合測試後,已經按照設計把所有的模組組裝成一個完整的軟體系統,介面錯誤也已經基本排除了,接著就應該進一步驗證軟體的有效性,這就是驗收測試的任務,即軟體的功能效能如同使用者所合理期待的那樣。

19.當開發人員說不是BUG.時,你如何應付?開發人員說不是bug,有2種情況,一是需求沒有確定,所以我可以這麼做,這個時候可以找來產品經理進行確認,需不需要改動,3方商量確定好後再看要不要改。二是這種情況不可能發生,所以不需要修改,這個時候,我可以先儘可能的說出是BUG的依據是什麼?如果被使用者發現或出了問題,會有什麼不良結果?程式設計師可能會給你很多理由,你可以對他的解釋進行反駁。如果還是不行,那我可以給這個問題提出來,跟開發經理和測試經理進行確認,如果要修改就改,如果不要修改就不改。其實有些真的不是bug,我也只是建議的方式寫進TD中,如果開發人員不修改也沒有大問題。如果確定是bug的話,一定要堅持自己的立場,讓問題得到最後的確認。

20.為什麼要在一個團隊中開展軟體測試工作?

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

21.一份測試計劃應該包括哪些內容?

背景、專案簡介、目的、測試範圍、測試策略、人員分工、資源要求、進度計劃、參考文件、常用術語、提交文件、風險分析。

22.針對於軟體的行業背景,你如何理解軟體的業務?

閱讀使用者手冊瞭解軟體的功能和操作流程;看一些業務的專業書籍補充業務知識;如果有使用者實際的資料,可以拿實際的資料進行參考;參考以前的用例和BUG報告;在使用軟體的過程中多思考;多與產品經理交流。

23.如何定位測試用例的作用?

組織性:編寫、組織性、功能覆蓋、重複性、跟蹤、測試確認

24.什麼是相容性測試?請舉例說明如何利用相容性測試列表進行測試。

主要驗證軟體產品在不同版本之間的相容性。包括向下相容和交錯相容,向下相容是測試軟體新版本保留它早期版本功能的情況,交錯相容是驗證共同存在的兩個相關但不相同的產品之間的相容性。

25.對某軟體進行測試,發現在WIN98.上執行得很慢,怎麼判別是該軟體存在問題還是其軟硬體執行環境存在問題?

看軟體的執行環境要求。如果符合要求則是程式存在問題,若不符合要求則是硬體系統存在問題

26.需求測試的注意事項有哪些?

   是否使用了公司的模板、文件內容是否符合規範、所有的需求是分級是否清析適當、所有的需求是否具有一致性、需求是否可行(即,該需求組合有解決方案)、需求可否用己知的約束來實現、需求是否足夠(即,可以把它送到一個規範的開發組織,並有一個生產出所需要產品的合理的可能性)、所有的其它需求是交叉引用是否正確、使用者描述是否清楚、是否用客戶的語言來描述需求、每個需求描述是否清楚沒有岐義,可以移交給一個獨立的組去實現時也能理解、是否所有的需求都是可驗證的、是否每條需求都具有獨立性,即使發生了變化也不會影響其它需求、效能指標是否明確、非功能性需求是否得到充分表現、是否完整列出適用的標準或協議、標準和協議之間是否存在衝突

最後

最後跟大家推薦一個學習資料分享群:672899761,裡面大牛已經為我們整理好了許多的學習資料,有自動化,介面,效能等等的學習資料!

人生是一個逆水行舟的過程,不進則退,我們們一起加油吧!

相關文章