128道軟體測試面試題大全!(功能>接口>自動化)

測試店小二 發佈 2022-05-24T04:52:21.024059+00:00

以下是軟體測試相關的面試題及答案,歡迎大家參考! 1、你的測試職業發展是什麼? 測試經驗越多,測試能力越高。所以我的職業發展是需要時間積累的,一步步向著高級測試工程師奔去。

以下是軟體測試相關的面試題及答案,歡迎大家參考!

 1、你的測試職業發展是什麼?

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

 2、你認為測試人員需要具備哪些素質

 做測試應該要有一定的協調能力,因為測試人員經常要與開發接觸處理一些問題,如果處理不好的話會引起一些衝突,這樣的話工作上就會不好做。還有測試人員要有一定的耐心,有的時候做測試很枯燥乏味。除了耐心,測試人員不能放過每一個可能的錯誤。

 3、你為什麼能夠做測試這一行

 雖然我的測試技術還不是很成熟,但是我覺得我還是可以勝任軟體測試這個工作的,因為做軟體測試不僅是要求技術好,還有有一定的溝通能力,耐心、細心等外在因素。綜合起來看我認為我是勝任這個工作的。

 4、測試的目的是什麼?

 測試的目的是找出軟體產品中的錯誤,是軟體儘可能的符合用戶的要求。當然軟體測試是不可能找出全部錯誤的。

 5、測試分為哪幾個階段?

 一般來說分為5個階段:單元測試、集成測試、確認測試、系統測試、驗收測試

 6、單元測試的測試對象、目的、測試依據、測試方法?

 測試對象是模塊內部的程序錯誤,目的是消除局部模塊邏輯和功能上的錯誤和缺陷。測試依據是模塊的詳細設計,測試方法是採用白盒測試。

 7、怎樣看待加班問題

 加班的話我沒有太多意見,但是我還是覺得如果能夠合理安排時間的話,不會有太多時候加班的。

 8、結合你以前的學習和工作經驗,你認為如何做好測試。

 根據我以前的工作和學習經驗,我認為做好工作首先要有一個良好的溝通,只有溝通無障礙了,才會有好的協作,才會有更好的效率,再一個就是技術一定要過關,做測試要有足夠的耐心,和一個良好的工作習慣,不懂的就要問,實時與同事溝通這樣的話才能做好測試工作。

 9、你為什麼選擇軟體測試行業

 因為之前了解軟體測試這個行業,覺得他的發展前景很好。

 10、根據你以前的工作或學習經驗描述一下軟體開發、測試過程,由哪些角色負責,你做什麼

 要有架構師、開發經理、測試經理、程式設計師、測試員。我在裡面主要是負責所分到的模塊執行測試用例。

 11、根據你的經驗說說你對軟體測試/質量保證的理解

 軟體質量保證與測試是根據軟體開發階段的規格說明和程序的內部結構而精心設計的一批測試用例(即輸入數據和預期的輸出結果),並根據這些測試用例去運行程序,以發現錯誤的過程。它是對應用程式的各個方面進行測試以檢查其功能、語言有效性及其外觀排布。

 12、軟體測試的流程是什麼?

 需求調查:全面了解系統概況、應用領域、軟體開發周期、軟體開發環境、開發組織、時間安排、功能需求、性能需求、質量需求及測試要求等。根據系統概況進行項目所需的人員、時間和工作量估計以及項目報價。

 制定初步的項目計劃。

 測試準備:組織測試團隊、培訓、建立測試和管理環境等。

 測試設計:按照測試要求進行每個測試項的測試設計,包括測試用例的設計和測試腳本的開發等。

 測試實施:按照測試計劃實施測試。

 測試評估:根據測試的結果,出具測試評估報告。

 13、你對SQA的職責和工作活動(如軟體度量)的理解?

 SQA就是獨立於軟體開發的項目組,通過對軟體開發過程的監控,來保證軟體的開發流程按照指定的CMM規程(如果有相應的CMM規程),對於不符合項及時提出建議和改進方案,必要時可以向高層經理匯報以求問題的解決。通過這樣的途徑來預防缺陷的引入,從而減少後期軟體的維護成本。SQA主要的工作活動包括制定SQA工作計劃,參與階段產物的評審,進行過程質量、功能配置及物理配置的審計等;對項目開發過程中產生的數據進行度量等等。

 14、說說你對軟體配置管理的理解

 項目在開發過程中要用相應的配置管理工具對配置項(包括各個階段的產物)進行變更控制,配置管理的使用取決於項目規模和複雜性及風險的水平。軟體的規模越大,配置管理就越顯得重要。還有在配置管理中,有一個很重要的概念,那就是基線,是在一定階段各個配置項的組合,一個基線就提供了一個正式的標準,隨後的工作便基於此標準,並只有經過授權後才能變更這個標準。配置管理工具主要有CC,VSS,CVS,SVN等,我只用過SVN,對其他的工具不是很熟悉。

 15、怎樣寫測試計劃和測試用例

 簡單點,測試計劃里應有詳細的測試策略和測試方法,合理詳盡的資源安排等,至於測試用例,那是依賴於需求(包括功能與非功能需求)是否細化到功能點,是否可測試等。

 16、說說主流的軟體工程思想(如CMM、CMMI、RUP,XP,PSP,TSP等)的大致情況及對他們的理解

 CMM:SW Capability Maturity Model軟體能力成熟度模型,其作用是軟體過程的改進、評估及軟體能力的評鑑。

 CMMI:Capability Maturity Model Integration能力成熟度模型集成 CMMI融入了大部分最新的軟體管理實踐,同時彌補了SW-CMM模型中的缺陷。

 RUP:rational unified process是軟體工程話過程。

 XP:extreme program,即極限編程的意思,適用於小型團隊的軟體開發,像上面第三個問題就可以結合原型法採用這樣的開發流程。要明白測試對於xp開發的重要性,強調測試(重點是單元測試)先行的理念。編程可以明顯提高代碼的質量,持續集成對於快速定位問題有好處。

 PSP,TSP分別是個體軟體過程和群體軟體過程。大家都知道,CMM只是告訴你做什麼但並沒有告訴你如何做,所以PSP/TSP就是告訴你企業在實施CMM的過程中如何做,PSP強調建立個人技能(如何制定計劃、控制質量及如何與其他人相互協作等等)。而TSP著重於生產並交付高質量的軟體產品(如何有效的規劃和管理所面臨的項目開發任務等等)。總之,實施CMM,永遠不能真正做到能力成熟度的提升,只有將實施CMM與實施PSP和TSP有機結合起來,才能發揮最大的效力。因此,軟體過程框架應該是CMM/PSP/TSP的有機集成。

 17、你是怎樣保證軟體質量的,也就是說你覺得怎樣才能最大限度的保證軟體的質量?

 測試並不能夠最大限度的保證軟體的質量,軟體的高質量是開發和設計出來的,而不是測試出來的,它不僅要通過對軟體開發流程的監控,使得軟體開發的各個階段都要按照指定的規程進行,通過對各個階段產物的評審,QA對流程的監控,對功能及配置的審計來達到開發的最優化。當然測試也是保證軟體質量的一個重要方式,是軟體質量保證工程的一個重要組成部分。

 18、基於目前中國的國情,大多數公司的項目進度緊張、人員較少、需求文檔根本沒有或者很不規範,你認為在這種情況下怎樣保證軟體的質量?(大多數公司最想知道的就是在這種困難面前你該怎麼保證軟體的質量,因為這些公司一般就是這種情況--既不想投入過多又想保證質量)

 出現以上的情況,如果僅僅想通過測試來提高軟體質量,那幾乎是不可能的,原因是沒有足夠的時間讓你去測試,少而不規範的文檔導致測試需求無法細化到足夠且有針對行的測試。所以,作為公司質量保證的因該和項目經理確定符合項目本身是和的軟體生命周期模型(比如RUP的建材,原型法),明確項目的開發流程並督促項目組按照此流程開展工作,所有項目組成員(項目經理更加重要)都要制定出合理的工作計劃,加強代碼的單元測試,在客戶既定的產品交付日期範圍內,進行產品的持續集成等等,如果時間允許可以再配合客戶進行必要的系統功能測試。

 19、一個測試工程師應該具備哪些素質和技能?

 1-掌握基本的測試基礎理論

 2-本著找出軟體存在的問題的態度進行測試,不要以挑刺的形象出現

 3-可熟練閱讀需求規格說明書等文檔

 4-以用戶的觀點看問題

 5-有強烈的質量意識

 6-細心和責任心

 7-良好的有效的溝通方式(與開發人員及客戶)

 8-具有以往的測試經驗能夠及時準確的判斷出高危險區在何處

 20、做好軟體測試的一些關鍵點

 1-測試人員必須經過測試基礎知識和理論的相關培訓

 2-測試人員必須熟悉系統功能和業務

 3-測試要有計劃,而且測試方案要和整個項目計劃協調好

 4-必須實現編寫測試用例,測試執行階段必須根據測試用例進行

 5-易用性,功能,分支,邊界,性能等功能行和非功能性需求都要進行測試

 6-對於複雜的流程一定要進行流程分支,組合條件分析,再進行等價類劃分準備相關測試數據

 7-測試設計的一個重要內容是要準備好具體的測試數據,清楚這個測試數據是測試那個場景或分支的。

 8-個人任務平均每三個測試用例至少應該發現一個BUG,否則只能說明測試用例質量不好

 9-除了每天構建的重複測試可以考慮測試自動化外,其他暫時都不要考慮去自動話

 21、軟體測試員自身素質培養

 1-首先,應對軟體測試感興趣和對自己有自信,如果具備了這兩點,那麼在開發過程中不管遇到什麼樣的困難,相信一定能克服

 2-善於懷疑,實際上沒有絕對正確的,總有錯誤的地方,具有叛逆心理,別人認為不可能發生的事情,我卻認為可能發生,別人認為是對的,我卻認為不是對的。

 3-打破沙鍋問到底的精神,對於只出現過一次的BUG一定要找出原因,不解決誓不罷休。

 4-保持一個良好的心情,否則可能無法把測試做好。不要把生活中的不愉快的情緒帶到工作中來。

 5-做測試時要細心,不是所有的BUG都能很容易找出,一定要細心才能找到這些BUG。

 6-靈活一些,聰明一點,多造一些容易產生BUG的例子。

 7-在有條件的情況下,多和客戶溝通,他們身上有你所需要的。

 8-設身處地為客戶著想,從他們的角度去測試系統。

 9-不要讓程式設計師,以「這種情況不可能發生」這句話說服你,相反,你應該去說服他,告訴他在客戶心理,並不是這樣的

 10-考慮問題要全面,結合客戶的需求,業務流程和系統的架構等多方面考慮問題。

 11-提出問題不要複雜化,這點和前面矛盾,如果你是一個新手,暫時不要管這點,因為最終將有你的小組成員討論解決。

 12-追求完美,對於新測試員來說,努力追求完美,這對你很好,儘管有些事情無法做到,但你應該嘗試。

 13-幽默感,能和開發小組很好的溝通是關鍵,試著給你的開發小組找一個BUG殺手,或對他們說「我簡直不敢相信,你寫的程序居然到現在沒有找到BUG」。

 22、為什要在一個團隊中開展測試工作?

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

 23、你所熟悉的軟體測試類型有哪些?

 測試類型有:功能測試、性能測試、界面測試

 功能測試在測試工作中占有比例最大,功能測試也叫黑盒測試。

 性能測試是通過自動化的測試工具模擬多種正常、峰值以及異常負載條件來對系統的各項性能指標進行測試。負載測試和壓力測試都屬於性能測試,兩者可以結合進行。

 界面測試,界面是軟體與用戶交互的最直接的層,界面的好壞決定用戶對軟體的第一印象。

 區別在於,功能測試關注產品的所有功能,要考慮到每個細節功能,每個可能存在的功能問題。性能測試主要關注產品整體的多用戶並發下的穩定性和健壯性。界面測試則關注與用戶體驗相關內容,用戶使用該產品的時候是否已用,是否易懂,是否規範(用戶無意輸入無效的數據,當然考慮到體驗性,不能太粗魯的彈出警告)。做某個性能測試的時候,首先它可能是個功能點,首先要保證她的功能是沒有問題的,然後再考慮性能的問題。

 24、你認為做好測試用例設計工作的關鍵是什麼

 白盒測試用例設計的關鍵是以較少的用例覆蓋儘可能多的內部程序邏輯結構。黑盒測試用例設計的關鍵同樣也是以較少的用例覆蓋模塊輸出和輸入接口。不可能做到完全測試,以最少的用例在合理的時間內發現最多的問題。軟體的黑盒測試意味著測試要在軟體的接口處進行,這種方法是把測試對象看作是一個黑盒子,測試人員完全不考慮程序內部的邏輯結構和內部特性,只依據程序的需求規格說明書,檢查程序的功能是否符合它的功能說明。因此黑盒測試又叫功能測試或者數據驅動測試。黑盒測試主要是為了發現以下幾類錯誤:、

 1-是否有不正確或遺漏的功能

 2-在接口上,輸入是否能正確的接受?能否輸出正確的結果。

 3-是否有數據結構錯誤或外部信息(例如數據文件)訪問錯誤

 4-性能上是否能夠滿足要求

 5-是否有初始化或終止性錯誤

 軟體的白盒測試是對軟體的過程性細節做細緻的檢查。這種方法是把測試對象看作一個打開的盒子,它允許測試人員利用程序內部的邏輯結構和有關信息,設計或者選擇測試用例,對程序所有邏輯路徑進行測試。通過在不同點檢查程序狀態,確定實際狀態是否與預期的狀態一直。因此白盒測試又稱為結合測試或邏輯驅動測試。白盒測試主要是想對程序模塊進行如下檢查:

 1-對程序模塊的所有獨立的執行路徑至少測試一遍。

 2-對所有的邏輯判定,取「真」與取「假」的兩種情況都能至少測一遍。

 3-在循環的邊界和運行的界限內執行循環體。

 4-測試內部數據結構的有效性,等等。

 25、請詳細介紹一下各種測試類型的含義

 1-單元測試(模塊測試)是開發者編寫的一小段代碼,用於檢驗被測試代碼的一個很小的、很明確的功能是否正確。通常而言,一個單元測試是用於判斷某個特定條件(或者場景)下某個特定函數的行為。單元測試是由程式設計師自己來完成,最終受益的也是程式設計師自己。可以這麼說,程式設計師有責任編寫功能代碼,同時也就有責任為自己的代碼編寫單元測試。執行單元測試,就是為了證明這段代碼的行為和我們期望的一致。

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

 3-系統測試是將經過測試的子系統裝配成一個完整系統來測試。它是檢驗系統是否確實能提供系統方案說明書中制定功能的有效方法。(常見的聯調測試)。系統測試的目的是對最終軟體系統進行全面的測試,確保最終軟體系統滿足產品需求而遵循系統設計。

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

 26、測試計劃工作的目的是什麼?測試計劃工作的內容都包括什麼?其中哪些是最重要的?

 軟體測試計劃是知道測試過程的綱領性文件,包含了產品概述、測試策略、測試方法、測試區域、測試配置、測試周期、測試資源、測試交流、風險分析等內容。藉助軟體測試計劃,參與測試的項目成員,尤其是測試管理人員,可以明確測試任務和測試方法,保持測試實施過程的順暢溝通,跟蹤和控制測試進度,應對測試過程中的各種變更。

 測試計劃和測試詳細規格、測試用例之間是戰略和戰術的關係,測試計劃主要從宏觀上規劃測試活動的範圍、方法和資源配置,而測試詳細規格、測試用例是完成測試任務的具體戰術。所以其中最重要的是測試策略和測試方法(最好能先評審)。

 27、您認為做好測試計劃工作的關鍵是什麼?

 1-明確測試的目標,增強測試計劃的實用性

 編寫軟體測試計劃的重要目的就是使測試過程能夠發現更多的軟體缺陷,因此軟體測試計劃的價值取決於它對幫助管理測試項目,並且找出軟體潛在的缺陷。因此,軟體測試計劃中的測試範圍必須高度覆蓋功能需求,測試方法必須切實可行,測試工具並且具有較高的實用性,便於使用,生成的測試結果準確

 2-堅持「5W」規則,明確內容與過程

 「5W」規則指的是「WHAT(做什麼)」、「WHY(為什麼做)」、"WHEN(何時做)"、"WHERE(在哪裡)"、"HOW(如何做)"。利用「5W"規則創建軟體測試計劃,可以幫助測試團隊理解測試的目的(WHY),明確測試的範圍和內容(WHAT),確定測試的開始和結束日期(WHEN),指出測試的方法和工具(HOW),給出測試文檔和軟體存放的位置(WHERE)。

 3-採用評審和更新機制,保證測試計劃滿足實際需求

 測試計劃完成後,如果沒有經過評審,直接發送給測試團隊,測試計劃內容的可能不準確或遺漏測試內容,或者軟體需求變更引起測試範圍的增減,而測試計劃的內容沒有及時更新,誤導測試執行人員。

 4-分別創建測試計劃與測試詳細規格、測試用例

 應把詳細的測試技術指標包含到獨立創建的測試詳細規格文檔,把用於指導測試小組執行過程的測試用例放到獨立創建的測試用例文檔或測試用例管理資料庫中。測試計劃和測試詳細規格、測試用例之間是戰略和戰術的關係,測試計劃主要從宏觀上規劃測試活動的範圍、方法和資源配置,而測試詳細規格、測試用例是完成測試任務的具體戰術。

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

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

 29、你自認為測試的優勢在哪裡?

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

 30、什麼是系統瓶頸?

 瓶頸主要是指整個軟硬體構成的軟體系統某一方面或者幾個方面能力不能滿足用戶的特定業務要求,「特定」是指瓶頸會在某些條件下會出現,因為畢竟大多數系統在投入前。

 嚴格的從技術角度講,所有的系統都會有瓶頸,因為大多數系統的資源配置不是協調的,例如CPU使用率剛好達到100%時,內存也正好耗盡的系統不是很多見。因此我們討論系統瓶頸要從應用的角度討論:關鍵是看系統能否滿足用戶需求。在用戶極限使用系統的情況下,系統的響應仍然正常,我們可以認為改系統沒有瓶頸或者瓶頸不會影響用戶工作。

 因此我們測試系統瓶頸主要是實現下面兩個目的:

 -發現「表面」的瓶頸。主要是模擬用戶的操作,找出用戶極限使用系統時的瓶頸,然後解決瓶頸,這是性能測試的基本目標。

 -發現潛在的瓶頸並解決,保證系統的長期穩定性。主要是考慮用戶在將來擴展系統或者業務發生變化時,系統能夠適應變化。滿足用戶目前需求的系統不是最好的,我們設計系統的目標是在保證系統整個軟體生命周期能夠不斷適應用戶的變化,或者通過簡單擴展系統就可以適應新的變化。

 31、文檔測試主要包含什麼內容?

 在國內軟體開發管理中,文檔管理幾乎是最弱的一項,因而在測試工作中特別容易忽略文檔測試也就不足為奇了。要想給用戶提供完整的產品,文檔測試是必不可少的。文檔測試一般注重下面幾個方面:

 文檔的完整性:主要是測試文檔內容的全面性與完整性,從總體上把握文檔的質量。例如用戶手冊應該包括軟體的所有功能模塊。

 描述與軟體實際情況的一致性:主要測試軟體文檔與軟體實際的一致程度。例如用戶手冊基本完整後,我們還要注意用戶手冊與實際功能描述是否一致。因為文檔往往跟不上軟體版本的更新速度。

 易理解性:主要是檢查文檔對關鍵、重要的操作有無圖文說明,文字、圖表是否易於理解。對於關鍵、重要的操作僅僅只有文字說明肯定是不夠的,應該附有圖表使說明更為直觀和明了。

 文檔中提供操作的實例:這項檢查內容主要針對用戶手冊。對主要功能和關鍵操作提供的應用實例是否豐富,提供的實例描述是否詳細。只有簡單的圖文說明,而無實例的用戶手冊看起來就像是軟體界面的簡單拷貝,對於用戶來說,實際上沒有什麼幫助。

 印刷與包裝質量:主要是檢查軟體文檔的商品化程度。有些用戶手冊是簡單列印、裝訂而成,過於粗糙,不易於用戶保存。優秀的文檔例如用戶手冊和技術白皮書,應提供商品化包裝,並且印刷精美。

 32、功能測試用例需要詳細到什麼程度才是合格的?

 這個問題也是測試工程師經常問的問題。有人主張測試用例詳細到每個步驟執行什麼都要寫出來,目的是即使一個不了解系統的新手都可以按照測試用例來執行工作。主張這類寫法的人還可以舉出例子:歐美、日本等軟體外包文檔都是這樣做的。

 另外一種觀點就是主張寫的粗些,類似於編寫測試大綱。主張這種觀點的人是因為軟體開發需求管理不規範,變動十分頻繁,因而不能按照歐美的高標準來編寫測試用例。這樣的測試用例容易維護,可以讓測試執行人員有更大的發揮空間。

 實際上,軟體測試用例的詳細程度首先要以覆蓋到測試點為基本要求。舉個例子:「用戶登陸系統」的測試用例可以不寫出具體的執行數據,但是至少要寫出五種以上情況(),如果只用一句話覆蓋了這個功能是不合格的測試用例。覆蓋功能點不是指列出功能點,而是要寫出功能點的各個方面(如果組合情況較多時可以採用等價劃分)。

 另一個影響測試用例的就是組織的開發能力和測試對象特點。如果開發力量比較落後,編寫較詳細的測試用例是不現實的,因為根本沒有那麼大的資源投入,當然這種情況很隨著團隊的發展而逐漸有所改善。測試對象特點重點是指測試對象在進度、成本等方面的要求,如果進度較緊張的情況下,是根本沒有時間寫出高質量的測試用例的,甚至有些時候測試工作只是一種輔助工作,因而不編寫測試用例。

 因此,測試用例的編寫要根據測試對象特點、團隊的執行能力等各個方面綜合起來決定編寫策略。最後要注意的是測試人員一定不能抱怨,力爭在不斷提高測試用例編寫水平的同時,不斷地提高自身能力。

 33、配置和兼容性測試的區別是什麼?

 配置測試的目的是保證軟體在其相關的硬體上能夠正常運行,而兼容性測試主要是測試軟體能否與不同的軟體正確協作。

 配置測試的核心內容就是使用各種硬體來測試軟體的運行情況,一般包括:

 (1)軟體在不同的主機上的運行情況,例如Dell和Apple;

 (2)軟體在不同的組件上的運行情況,例如開發的撥號程序要測試在不同廠商生產的Modem上的運行情況;

 (3)不同的外設;

 (4)不同的接口;

 (5)不同的可選項,例如不同的內存大小;

 兼容性測試的核心內容:

 (1)測試軟體是否能在不同的作業系統平台上兼容;

 (2)測試軟體是否能在同一作業系統平台的不同版本上兼容;

 (3)軟體本身能否向前或者向後兼容;

 (4)測試軟體能否與其它相關的軟體兼容;

 (5)數據兼容性測試,主要是指數據能否共享;

 配置和兼容性測試通稱對開發系統類軟體比較重要,例如驅動程序、作業系統、資料庫管理系統等。具體進行時仍然按照測試用例來執行。

 34、軟體文檔測試主要包含什麼?

 隨著軟體文檔系統日益龐大,文檔測試已經成為軟體測試的重要內容。文檔測試對象主要如下:

 -包裝文字和圖形;

 -市場宣傳材料、廣告以及其它插頁;

 -授權、註冊登記表;

 -最終用戶許可協議;

 -安裝和設置嚮導;

 -用戶手冊;

 -聯機幫助;

 -樣例、示範例子和模板;

 -……

 文檔測試的目的是提高易用性和可靠性,降低支持費用,因為用戶通過文檔就可以自己解決問題。因文檔測試的檢查內容主要如下:

 -讀者對象——主要是文檔的內容是否能讓該級別的讀者理解;

 -術語——主要是檢查術語是否適合讀者;

 -內容和主題——檢查主題是否合適、是否丟失、格式是否規範等;

 -圖標和屏幕抓圖——檢查圖表的準確度和精確度;

 -樣例和示例——是否與軟體功能一致;

 -拼寫和語法;

 -文檔的關聯性——是否與其它相關文檔的內容一致,例如與廣告信息是否一致;

 文檔測試是相當重要的一項測試工作,不但要給予充分的重視,更要要認真的完成,象做功能測試一樣來對待文檔測試。

 35、沒有產品說明書和需求文檔地情況下能夠進行黑盒測試嗎?

 這個問題是國內測試工程師經常遇到的問題,根源就是國內軟體開發文檔管理不規範,對變更的管理方法就更不合理了。實際上沒有任何文檔的時候,測試人員是能夠進行黑盒測試的,這種測試方式我們可以稱之為探索測試,具體做法就是測試工程師根據自己的專業技能、領域知識等不斷的深入了解測試對象、理解軟體功能,進而發現缺陷。

 在這種做法基本上把軟體當成了產品說明書,測試過程中要和開發人員不斷的進行交流。尤其在作項目的時候,進度壓力比較大,可以作為加急測試方案。最大的風險是不知道有些特性是否被遺漏。

 36、測試中的「殺蟲劑怪事」是指什麼?

 「殺蟲劑怪事」一詞由BorisBeizer在其編著的《軟體測試技術》第二版中提出。用於描述測試人員對同一測試對象進行的測試次數越多,發現的缺陷就會越來越少的現象。就像老用一種農藥,害蟲就會有免疫力,農藥發揮不了效力。這種現象的根本原因就是測試人員對測試軟體過於熟悉,形成思維定勢。

 為了克服這種現象,測試人員需要不斷編寫新的測試程序或者測試用例,對程序的不同部分進行測試,以發現更多的缺陷。也可以引用新人來測試軟體,剛剛進來的新手往往能發現一些意想不到的問題。

 37、在配置測試中,如何判斷發現的缺陷是普通問題還是特定的配置問題?

 在進行配置測試時,測試工程師仍然會發現一些普通的缺陷,也就是與配置環境無關的缺陷。因此判斷新發現的問題,需要在不同的配置中重新執行發現軟體缺陷的步驟,如果軟體缺陷不出現了,就可能是配置缺陷;如果在所有的配置中都出現,就可能是普通缺陷。

 需要注意的是,配置問題可以在一大類配置中出現。例如,撥號程序可能在所有的外置Modem中都存在問題,而內置的Modem不會有任何問題。

 38、為什麼儘量不要讓時間有富裕的員工去做一些測試?

 表面上看這體現了管理的效率和靈活性,但實際上也體現了管理者對測試的輕視。測試和測試的人有很大關係。測試工作人員應該是勤奮並富有耐心,善於學習、思考和發現問題,細心有條理,總結問題,如果具備這樣的優點,做其它工作同樣也會很出色,因此這裡還有一個要求,就是要喜歡測試這項工作。如果他是專職的,那麼肯定更有經驗和信心。國內的小伙子好象都喜歡做程式設計師,兩者工作性質不同,待遇不同,地位不同,對自我實現的價值的認識也不同,這是行業的一個需要改善的問題。如果只是為了完成任務而完成任務,或者發現了幾個問題就覺得滿意了,這在任何其它工作中都是不行的。

 39、完全測試程序是可能的嗎?

 軟體測試初學者可能認為拿到軟體後需要進行完全測試,找到全部的軟體缺陷,使軟體「零缺陷」發布。實際上完全測試是不可能的。主要有以下一個原因:

 -完全測試比較耗時,時間上不允許;

 -完全測試通常意味著較多資源投入,這在現實中往往是行不通的;

 -輸入量太大,不能一一進行測試;

 -輸出結果太多,只能分類進行驗證;

 -軟體實現途徑太多;

 -軟體產品說明書沒有客觀標準,從不同的角度看,軟體缺陷的標準不同;

 因此測試的程度要根據實際情況確定。

 40、軟體測試的風險主要體現在哪裡?

 我們沒有對軟體進行完全測試,實際就是選擇了風險,因為缺陷極有可能存在沒有進行測試的部分。舉個例子,程式設計師為了方便,在調試程序時會彈出一些提示信息框,而這些提示只在某種條件下會彈出,碰巧程序發布前這些代碼中的一些沒有被注釋掉。在測試時測試工程師又沒有對其進行測試。如果客戶碰到它,這將是代價昂貴的缺陷,因為交付後才被客戶發現。

 因此,我們要儘可能的選擇最合適的測試量,把風險降低到最小。

 41、發現的缺陷越多,說明軟體缺陷越多嗎?

 這是一個比較常見的現象。測試工程師在沒有找到缺陷前會絞盡腦汁的思考,但是找到一個後,會接二連三的發現很多缺陷,頗有個人成就感。其中的原因主要如下:

 -代碼復用、拷貝代碼導致程式設計師容易犯相同的錯誤。類的繼承導致所有的子類會包含基類的錯誤,反覆拷貝同一代碼意味可能也複製了缺陷。

 -程式設計師比較勞累是可以導致某些連續編寫的功能缺陷較多。程式設計師加班是一種司空見慣的現象,因此體力不只時容易編寫一些缺陷較多的程序。而這些連續潛伏缺陷恰恰時測試工程師大顯身手的地方。

 「缺陷一個連著一個」不是一個客觀規律,只是一個常見的現象。如果軟體編寫的比較好,這種現象就不常見了。測試人員只要嚴肅認真的測試程序就可以了。

 42、所有的軟體缺陷都能修復嗎?所有的軟體缺陷都要修復嗎?

 從技術上講,所有的軟體缺陷都是能夠修復的,但是沒有必要修復所有的軟體缺陷。測試人員要做的是能夠正確判斷什麼時候不能追求軟體的完美。對於整個項目團隊,要做的是對每一個軟體缺陷進行取捨,根據風險決定那些缺陷要修復。發生這種現象的主要原因如下:

 -沒有足夠的時間資源。在任何一個項目中,通常情況下開發人員和測試人員都是不夠用的,而且在項目中沒有預算足夠的回歸測試時間,再加上修改缺陷可能引入新的缺陷,因此在交付期限的強大壓力下,必須放棄某些缺陷的修改。

 -有些缺陷只是特殊情況下出現,這種缺陷處於商業利益考慮,可以在以後升級中進行修復。

 -不是缺陷的缺陷。我們經常會碰到某些功能方面的問題被當成缺陷來處理,這類問題可以以後有時間時考慮再處理。

 最後要說的是,缺陷是否修改要由軟體測試人員、項目經理、程式設計師共同討論來決定是否修復,不同角色的人員從不同的角度來思考,以做出正確的決定。

 43、軟體測試人員就是QA嗎?

 軟體測試人員的職責是儘可能早的找出軟體缺陷,確保得以修復。而質量保證人員(QA)主要職責是創建或者制定標準和方法,提高促進軟體開發能力和減少軟體缺陷。測試人員的主要工作是測試,質量保證人員日常工作重要內容是檢查與評審,測試工作也是測試保證人員的工作對象。

 軟體測試和質量是相輔相成的關係,都是為了提高軟體質量而工作。

 44、如何減少測試人員跳槽帶來的損失?

 在IT行業里跳槽已經是一種司空見慣的現象,而且跳槽無論給公司還是給個人都會帶來一定的損失。測試隊伍也無疑會面臨跳槽的威脅,作為測試經理管理者,只有從日常工作中開始做起,最能最大限度的減少損失。建議我們從以下兩個方面做起:

 -加強部門內員工之間的互相學習,互相學習是建立學習型組織的基本要求,是知識互相轉移的過程。在此基礎上,可以把個人擁有的技術以知識的形式沉積下來,也就完成了隱性知識到顯性知識的轉化。

 -通常情況下,企業能為員工提供足夠大的發展空間時,如果不是待遇特別低,員工都不會主動離開企業。因此我們要想留住員工,管理者就應該把員工的個人成長和企業的發展聯繫起來,為員工設定合理發展規劃並付諸實現。不過這項要求做起來比較,要有比較好的企業文化為依託。

 45、測試產品與測試項目的區別是什麼?

 習慣上把開發完成後進行商業化、幾乎不進行代碼修改就可以售給用戶使用的軟體成為軟體產品,也就是可以買「賣拷貝」的軟體,例如Windows2000。而通常把針對一個或者幾個特定的用戶而開發的軟體成為軟體項目,軟體項目是一種個性化的產品,可以是按照用戶要求全部重新開發,也可以修改已有的軟體產品來滿足特定的用戶需求。項目和產品的不同特點,決定我們測試產品和測試項目仍然會有很多不同的地方:

 -質量要求不同。通常產品的質量要高一些,修復發布後產品的缺陷成本較高,甚至會帶來很多負面的影響。而做項目通常面向某一用戶,雖然質量越高越好,但是一般只要滿足用戶要求就可以了。

 -測試資源投入多少不同。做軟體產品通常是研發中心來開發,進度壓力要小些。同時由於質量要求高,因此會投入較多的人力、物力資源。

 -項目最後要和用戶共同驗收測試,這是產品測試不具有的特點。

 此外,測試產品與測試項目在缺陷管理方面、測試策略制定都會有很大不同,測試管理者應該結合具體的環境,恰如其分的完成工作。

 46、和用戶共同測試(UAT測試)的注意點有哪些?

 軟體產品在投產前,通常都會進行用戶驗收測試。如果用戶驗收測試沒有通過,直接結果就是那不到「Money」,間接影響是損害了公司的形象,而後者的影響往往更嚴重。根據作者的經驗,用戶驗收測試一定要讓用戶滿意。

 實際上用戶現場測試更趨於是一種演示。在不欺騙用戶的前提下,我們向用戶展示我們軟體的優點,最後讓「上帝」滿意並欣然掏出「銀子」才是我們的目標。因此用戶測試要注意下面的事項:

 (1)用戶現場測試不可能測試全部功能,因此要測試核心功能。這需要提前做好準備,這些核心功能一定要預先經過測試,證明沒有問題才可以和用戶共同進行測試。測試核心模塊的目的是建立用戶對軟體的信心。當然如果這些模塊如果問題較多,不應該進行演示。

 (2)如果某些模塊確實有問題,我們可以演示其它重要的業務功能模塊,必要時要向用戶做成合理的解釋。爭得時間後,及時修改缺陷來彌補。

 (3)永遠不能欺騙用戶,矇混過關。道理很簡單,因為軟體是要給用戶用的,問題早晚會暴露出來,除非你可以馬上修改。

 和用戶進行測試還要注意各種交流技巧,爭取不但短期利益得到了滿足,還要為後面得合作打好基礎。

 47、如何編寫提交給用戶的測試報告?

 隨著測試工作越來越受重視,開發團隊向客戶提供測試文檔是不可避免的事情。很多人會問:「我們可以把工作中的測試報告提供給客戶嗎?」答案是否定的。因為提供內部測試報告,可能會讓客戶失去信心,甚至否定項目。

 測試報告一般分為內部測試報告和外部測試報告。內部報告是我們在測試工作中的項目文檔,反映了測試工作的實施情況,這裡不過多討論,讀者可以參考相關教材。這裡主要討論一下外部測試報告的寫法,一般外部測試報告要滿足下面幾個要求:

 -根據內部測試報告進行編寫,一般可以摘錄;

 -不可以向客戶報告嚴重缺陷,即使是已經修改的缺陷,開發中的缺陷也沒有必要讓客戶知道;

 -報告上可以列出一些缺陷,但必須是中級的缺陷,而且這些缺陷必須是修復的;

 -報告上面的內容儘量要真實可靠;

 -整個測試報告要仔細審閱,力爭不給項目帶來負面作用,尤其是性能測試報告。

 總之,外部測試報告要小心謹慎的編寫。

 48、測試工具在測試工作中是什麼地位?

 國內的很多測試工程師對測試工具相當迷戀,尤其是一些新手,甚至期望測試工具可以取代手工測試。測試工具在測試工作中起的是輔助作用,一般用來提高測試效率。自動化測試彌補了手工測試的不足,減輕一定的工作量。實際上測試工具是無法替代大多數手工測試的,而一些諸如性能測試等自動化測試也是手工所不能完成的。

 對於自動測試技術,應當依據軟體的不同情況來分別對待,一般自動技術會應用在引起大量重複性工作的地方、系統的壓力點、以及任何適合使用程序解決大批量輸入數據的地方。然後再尋找合適的自動測試工具,或者自己開發測試程序。一定不要為了使用測試工具而使用。

 49、常見的測試用例設計方法都有哪些?請分別以具體的例子來說明這些方法在測試用例設計工作中的應用。

 1-等價類劃分

 常見的軟體測試面試題劃分等價類: 等價類是指某個輸入域的子集合.在該子集合中,各個輸入數據對於揭露程序中的錯誤都是等效的.併合理地假定:測試某等價類的代表值就等於對這一類其它值的測試.因此,可以把全部輸入數據合理劃分為若干等價類,在每一個等價類中取一個數據作為測試的輸入條件,就可以用少量代表性的測試數據.取得較好的測試結果.等價類劃分可有兩種不同的情況:有效等價類和無效等價類.

 2-邊界值分析法

 邊界值分析方法是對等價類劃分方法的補充。測試工作經驗告訴我,大量的錯誤是發生在輸入或輸出範圍的邊界上,而不是發生在輸入輸出範圍的內部.因此針對各種邊界情況設計測試用例,可以查出更多的錯誤.

 使用邊界值分析方法設計測試用例,首先應確定邊界情況.通常輸入和輸出等價類的邊界,就是應著重測試的邊界情況.應當選取正好等於,剛剛大於或剛剛小於邊界的值作為測試數據,而不是選取等價類中的典型值或任意值作為測試數據.

 3-錯誤推測法

 基於經驗和直覺推測程序中所有可能存在的各種錯誤, 從而有針對性的設計測試用例的方法.

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

 4-因果圖方法

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

 5-正交表分析法

 有時候,可能因為大量的參數的組合而引起測試用例數量上的激增,同時,這些測試用例並沒有明顯的優先級上的差距,而測試人員又無法完成這麼多數量的測試,就可以通過正交表來進行縮減一些用例,從而達到儘量少的用例覆蓋儘量大的範圍的可能性。

 6-場景分析方法

 指根據用戶場景來模擬用戶的操作步驟,這個比較類似因果圖,但是可能執行的深度和可行性更好。

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

 白盒測試用例設計的關鍵是以較少的用例覆蓋儘可能多的內部程序邏輯結果

 黑盒法用例設計的關鍵同樣也是以較少的用例覆蓋模塊輸出和輸入接口。不可能做到完全測試,以最少的用例在合理的時間內發現最多的問題

 51、詳細的描述一個測試活動完整的過程。

 1-項目經理通過和客戶的交流,完成需求文檔,由開發人員和測試人員共同完成需求文檔的評審,評審的內容包括:需求描述不清楚的地方和可能有明顯衝突或者無法實現的功能的地方。項目經理通過綜合開發人員,測試人員以及客戶的意見,完成項目計劃。然後sqa進入項目,開始進行統計和跟蹤

 2-開發人員根據需求文檔完成需求分析文檔,測試人員進行評審,評審的主要內容包括是否有遺漏或者雙方理解不同的地方。測試人員完成測試計劃文檔,測試計劃包括的內容上面有描述。

 3-測試人員根據修改好的需求分析文檔開始寫測試用例,同時開發人員完成概要設計文檔,詳細設計文檔。此兩份文檔成為測試人員撰寫測試用例的補充材料。

 4-測試用例完成後,測試和開發需要進行評審。

 5-測試人員搭建環境

 6-開發人員提交第一個版本,可能存在未完成功能,需要說明。測試人員進行測試,發現bug後提交給bugzilla。

 7-開發提交第二個版本,包括bug fix以及增加了部分功能,測試人員進行測試。

 8-重複上面的工作,一般是3-4個版本後bug數量減少,達到出貨的要求。

 9-如果有客戶反饋的問題,需要測試人員協助重現以及回歸測試。

 52、以往是否曾經從事過性能測試工作?請儘可能的詳細描述您以往的性能測試工作的完整過程。

 曾經做過一套網管系統的性能測試,主要測試該軟體在同時管理大量終端的情況下,在響應時間,cpu/磁碟/內存等參數是否滿足要求。

 也曾經做過軟交換系統的呼叫性能測試,主要是測試軟交換系統在有大量呼叫的情況下,響應時間,呼叫成功率,cpu/磁碟/內存等參數是否滿足設計要求。

 53、在您以往的工作中,一條軟體缺陷(或者叫bug)記錄都包含了哪些內容?如何提交高質量的軟體缺陷(bug)記錄?

 1-在傳統的bugzilla中,bug描述應該包括以下的信息

 2-和bug產生對應的軟體版本

 3-開發的接口人員

 4-bug的優先級

 5-bug的嚴重程度

 6-bug可能屬於的模塊,如果不能確認,可以用開發人員來判斷

 7-bug標題,需要清晰的描述現象

 8-bug描述,需要儘量給出重新bug的步驟

 9-bug附件中能給出相關的日誌和截圖。

 高質量的bug記錄就是指很容易理解的bug記錄,所以,對於描述的要求高,能提供的信息多且準確,很好的幫助開發人員定位。

 54、您在從事性能測試工作時,是否使用過一些測試工具?如果有,請試述該工具的工作原理,並以一個具體的工作中的例子描述該工具是如何在實際工作中應用的。

 測試網管系統中,使用的mimic來模擬終端,能夠大量的節省成本。

 測試軟交換系統的時候,使用的prolab來模擬終端並發送呼叫軟交換,他完成了同時數百人才能完成的摘機撥號工作,主要工作原理是產生一些符合要求的ip包並發送給軟交換系統,同時對軟交換系統的回應進行處理,決定下一步動作。

 55、您認為性能測試工作的目的是什麼?做好性能測試工作的關鍵是什麼?

 主要是保障在大量用戶的情況下,服務能正常使用。

【Linux】

56、怎麼清屏?怎麼退出當前命令?怎麼執行睡眠?怎麼查看當前用戶 id?查看指定幫助用什麼命令?

答案:
清屏:clear
退出當前命令:ctrl+c 徹底退出
執行睡眠 :ctrl+z 掛起當前進程fg 恢復後台
查看當前用戶 id:」id「:查看顯示目前登陸帳戶的 uid 和 gid 及所屬分組及用戶名
查看指定幫助:如 man adduser 這個很全 而且有例子;adduser --help 這個告訴你一些常用參數;info adduesr;

57、建立軟連結(快捷方式),以及硬連結的命令。

答案:
軟連結:ln -s slink source
硬連結:ln link source

58、查看文件內容有哪些命令可以使用?

答案:
vi 文件名 #編輯方式查看,可修改
cat 文件名 #顯示全部文件內容
more 文件名 #分頁顯示文件內容
less 文件名 #與 more 相似,更好的是可以往前翻頁
tail 文件名 #僅查看尾部,還可以指定行數
head 文件名 #僅查看頭部,還可以指定行數

59、Linux 下命令有哪幾種可使用的通配符?分別代表什麼含義?

答案:
「?」可替代單個字符。

「*」可替代任意多個字符。

60、用什麼命令對一個文件的內容進行統計?(行號、單詞數、字節數)

答案:
wc 命令 - c 統計字節數 - l 統計行數 - w 統計字數。

61、怎麼使一個命令在後台運行?

答案:
一般都是使用 & 在命令結尾來讓程序自動運行。(命令後可以不追加空格)

62、把後台任務調到前台執行使用什麼命令?把停下的後台任務在後台執行起來用什麼命令?

答案:
把後台任務調到前台執行 fg

把停下的後台任務在後台執行起來 bg

63、搜索文件用什麼命令? 格式是怎麼樣的?

答案:
find <指定目錄> <指定條件> <指定動作>

whereis 加參數與文件名

locate 只加文件名

find 直接搜索磁碟,較慢。

find / -name "string*"

64、使用什麼命令查看用過的命令列表?

答案:
history

65、查找命令的可執行文件是去哪查找的? 怎麼對其進行設置及添加?

答案:
whereis [-bfmsu][-B <目錄>...][-M <目錄>...][-S <目錄>...][文件...]

66、通過什麼命令查找執行命令?

答案:
which 只能查可執行文件

whereis 只能查二進位文件、說明文檔,源文件等

67、當你需要給命令綁定一個宏或者按鍵的時候,應該怎麼做呢?

答案:
可以使用bind命令,bind可以很方便地在shell中實現宏或按鍵的綁定。

在進行按鍵綁定的時候,我們需要先獲取到綁定按鍵對應的字符序列。

比如獲取F12的字符序列獲取方法如下:先按下Ctrl+V,然後按下F12 .我們就可以得到F12的字符序列 ^[[24~。

接著使用bind進行綁定。

[root@localhost ~]# bind 『」\e[24~":"date"'

注意:相同的按鍵在不同的終端或終端模擬器下可能會產生不同的字符序列。

【附】也可以使用showkey -a命令查看按鍵對應的字符序列。

68、你的系統目前有許多正在運行的任務,在不重啟機器的條件下,有什麼方法可以把所有正在運行的進程移除呢?

答案:
使用linux命令 』disown -r 』可以將所有正在運行的進程移除。

69、怎樣查看一個linux命令的概要與用法?假設你在/bin目錄中偶然看到一個你從沒見過的的命令,怎樣才能知道它的作用和用法呢?

答案:
使用命令whatis 可以先出顯示出這個命令的用法簡要,比如,你可以使用whatis zcat 去查看『zcat』的介紹以及使用簡要。

【接口測試】

70、接口測試如何設計測試用例?(必問,有沒有感覺答得整個人都不好了?)

接口測試一般考慮入參形式的變化和接口的業務邏輯,一般設計接口測試用例採用等價類、邊界值、場景法居多!

接口測試設計測試用例的思路如下:
1.接口業務邏輯測試?(正例)
接口邏輯測試是指根據業務邏輯、輸入參數、輸出值的描述,對正常輸入情況下所得的輸出值
是否正確的測試,也就是測試對外提供的接口服務是否正常工作。
2.模塊接口測試?(反例)
模塊接口測試是為了保證數據的安全及程序在異常情況下的邏輯的正確性而進行的測試。?
模塊接口測試的主要包括以下幾個方面:?
1)鑒權碼token異常(鑒權碼為空<沒有鑒權碼>,錯誤的鑒權碼,過期的鑒權碼)。
2)其他參數異常。
1、必填項檢查
2、參數的長度、類型、格式異常:
常規參數:(數字、字符串、日期)
參數長度:6-18位。或身份證、電話的長度。
參數類型:數字(精度),字母,中文,帶空格的參數,特殊字符。
日期格式:日期:年月日,年月日時分秒,日期格式(包括/,-,:等)。
3)錯誤碼異常覆蓋。
4)接口測試其他的關注點
接口有翻頁時,頁碼與頁數的異常值測試
資料庫的增刪改查,比如一個post接口操作完成後,通過列表頁接口看下新的數據是否和剛才的post一致
接口返回的圖片地址能否打開,圖片尺寸是否符合需求
當輸出參數有聯動性時,需要校驗返回兩參數的實際結果是否都符合需求。
所有列表頁接口必須考慮排序值
所有功能都要考慮兼容舊版本

71、get和post請求有什麼區別?

POST和GET都是向伺服器提交數據,並且都會從伺服器獲取數據。
區別:
1)傳送方式:get通過地址欄傳輸,post通過報文傳輸
2)傳送長度:get參數有長度限制(受限於url長度),而post無限制
3)GET產生一個TCP數據包(對於GET方式的請求,瀏覽器會把http header和data一併發送出去,伺服器響應200返回數據),POST產生兩個TCP數據包(對於POST,瀏覽器先發送header,伺服器響應100 continue,瀏覽器再發送data,伺服器響應200 ok返回數據)
4)get請求參數會被完整保留在瀏覽歷史記錄里,而post中的參數不會被保留
5)在做數據查詢時,建議用GET方式;而在做數據添加、修改或刪除時,建議用post方式

72、常見的POST提交數據方式
答:
主要有四種方式:application/x-www-form-urlencoded、multipart/form-data、application/json、text/xml等。

73、接口測試中有哪些要注意的測試點?

11.1)接口中返回了圖片地址,要手工去進行圖片的測試(大小、內容)

11.2)接口完成查詢功能的時候,數據返回的排序顯示

11.3)接口測試的時候,關注參數的默認值、必填項

74、之前在接口測試過程中,使用的工具是什麼?

postman或jmeter(5.1)

6、postman你在工作中使用流程是什麼樣的?

1) 編寫好用例

2) 在postman先建好url環境變量

3) 根據接口用例所屬的模塊新建集合管理

75、postman支持什麼類型的協議測試?

http和https協議的

76、jmeter之前用的是什麼版本?如何安裝的?

jmeter用的是5.1.1版本,安裝如下:

先在電腦上安裝jdk1.8或以上的版本,然後從官網下載最新的安裝包,解壓後,進行環境變量的配置,配置好後即安裝完成

77、jmeter中如何實現關聯?

先從上一個接口中通過正則表達式提取器或jsonpath解析器截取下一個接口需要的參數值保存到變量,然後在寫一個接口中通過${變量名}去獲取

78、你們公司的接口測試流程是怎樣的?(有沒有感覺熟悉,貌似在哪裡聽過)

接口測試我們是在XX項目做的,主要有XX接口,XX接口,XX接口等。
1、首先是從開發那裡拿到API接口文檔,了解接口業務、包括接口地址、請求方式,入參、出參,token鑒權,返回格式等信息。
2、然後使用Postman或Jmeter工具執行接口測試,一般使用Jmeter的步驟是這樣的:
1、首先新建一個線程組。
2、然後就是新建一個HTTP請求默認值。(輸入接口伺服器IP和埠)
3、再新建很多HTTP請求,一個請求一個用例。(輸入接口路徑,訪問方式,參數等。)
4、然後創建斷言和查看結果樹。
3、最後調試並執行用例,最後編寫接口測試報告
4、其實我們做接口的時候也碰到了蠻多的問題,都是自己獨立解決的,比如返回值亂碼(修改jmeter的配置文件為UTF-8編碼方式),比如需要登錄後才能取得token鑒權碼並且這個鑒權碼在下面的請求中需要用到(使用正則表達式提取器提取token的值等。

79、接口測試執行中比對資料庫嗎?

肯定啊,因為接口返回值的數據來源於資料庫,接口對數據的操作還要進行深層次的資料庫檢查!

80、響應狀態碼有哪些?

1xx:指示信息--表示請求已接受,繼續處理

2xx:成功--表示請求已被成功接收、理解、接受

3xx:重定向--要完成請求必須進行更進一步的操作

4xx:客戶端錯誤--請求有語法錯誤或請求無法實現

81、什麼是DNS?

DNS 是域名系統 (Domain Name System),DNS是用來做域名解析的,它會在你上網輸入網址後,把它轉換成IP,然後去訪問對方伺服器;沒有它,你想上百度就要記住百度的IP,但有了DNS的處理,你只需要記住對應網站的域名,即網址就可以了。

82、在接口測試過程中發現的bug多不多?能舉幾個栗子?

這個問題其實回到起來很簡單,只要做過接口測試的,總能發現幾個BUG吧,把你平常發現的bug說2-3個就可以了。 面試官出這個題,主要是想知道你是不是真的做過接口測試,畢竟現在很多小夥伴簡歷都是寫的假的(你要不寫估計面試機會都沒有,沒辦法,為了生存,能理解) 比如,提現輸入框,在頁面上輸入負數,肯定是無法提交過去(前端頁面會判斷金額),如果我不走前端,直接用接口工具發請求,輸入一個負數過去。 (假設服務端沒做提現金額數據判斷) 餘額=當前餘額(100)-提現金額(-100),那麼提現-100,餘額就變成200了,也就是越提現,餘額越大了。

83、你做接口測試,測什麼?

可用性測試
根據約定的協議、方法、格式內容,傳輸數據到接口經處理後返回期望的結果:

接口功能是否正確實現;
返回值測試 - 返回值除了內容要正確,類型也要正確,保證調用方能夠正確地解析;
參數值邊界值、等價類測試;
錯誤和異常處理測試

輸入異常值(空值、特殊字符、超過約定長度等),接口能正確處理,且按預期響應;
輸入錯誤的參數,接口能正確處理,並按預期響應;
多輸入、少輸入參數,接口能正確處理,且按預期響應;
錯誤傳輸數據格式(如json格式寫成form格式)測試;
安全性測試,主要指傳輸數據的安全性:

敏感數據(如密碼、秘鑰)等是否加密傳輸;
返回數據是否含有敏感數據,如用戶密碼、完整的用戶銀行帳號信息等;
接口是否對傳入的數據做安全校驗,如身份ID加token類似校驗;
接口是否防止惡意請求(如大量偽造請求接口致使伺服器崩潰);
性能測試,如接口的響應時間、並發處理能力、壓測處理情況:

並發請求相同的接口(特別為POST請求),接口的處理情況(如插入了相同的記錄導致數據出錯,引發系統故障);
接口響應時長在用戶可忍受的範圍內;
對於請求量大的接口做壓測,確定最大的瓶頸點是否滿足當前業務需要;

84、之前用過抓包工具沒有?如何使用的?

之前在項目中用過fiddler抓包工具進行HTTP協議請求的抓取

打開fiddler之後,默認瀏覽器配置了127.0.0.1 8888埠的代理,在fiddler設置好過濾策略後,打開需要進行抓包的網站進行操作,就可以進行抓包

85、在項目中如何用jmeter進行接口測試?

1) 把線程組數量設置為1,循環次數設置為1

2) 配置好全局變量URL通過配置元件---用戶自定義的變量添加

3) 增加配置元件http請求默認值,放置在用戶定義的變量之後

4) 添加事務控制器管理和組織測試用例

5) 在事務控制中添加http請求添加測試用例中的接口請求信息

6) 添加對應的斷言元件進行斷言

86、平常用什麼工具測接口的?

常用http協議接口測試工具,如:postman、fiddler、jmeter;webService接口用SoapUI、jmeter等。

87、jmeter添加http請求默認值元件有什麼作用?

添加並設置好後,相當於給所有的http請求取樣器都設置了默認值,既不用填寫取樣器中的比如主機地址、埠、代理等,都可以使用http請求默認值設置的

88、請簡述一下cookie、session以及token的區別(有沒有感覺整個是萬年不變的面試題)

cookie數據存放在客戶的瀏覽器上,session數據放在伺服器上
cookie不是很安全,別人可以分析存放在本地的cookie並進行cookie欺騙,考慮到安全應當使用session
session會在一定時間內保存在伺服器上。當訪問增多,會比較占用你伺服器的性能,考慮到減輕伺服器性能方面應當使用cookie
單個cookie保存的數據不能超過4K,很多瀏覽器都限制一個站點最多保存20個cookie
可以將登陸信息等重要信息存放為session;其他信息需要保存,可以放在cookie

89、談談你對HTTP協議的了解?

超文本傳輸協議,埠為80,特點(無記憶功能、快速)是由請求和響應兩部分組成請求由請求頭、請求行、請求正文組成;響應是由響應頭、響應行、響應正文組成,之前我們公司的接口是採用https協議的。

90、什麼是Http協議無狀態協議?怎麼解決HTTP協議無狀態協議

無狀態是指協議對於事務處理沒有記憶能力,伺服器不知道客戶端是什麼狀態。即我們給伺服器發送 HTTP 請求之後,伺服器根據請求,會給我們發送數據過來,但是,發送完,不會記錄任何信息。HTTP 是一個無狀態協議,這意味著每個請求都是獨立的,Keep-Alive 沒能改變這個結果。缺少狀態意味著如果後續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在伺服器不需要先前信息時它的應答就較快。HTTP 協議這種特性有優點也有缺點,優點在於解放了伺服器,每一次請求「點到為止」不會造成不必要連接占用,缺點在於每次請求會傳輸大量重複的內容信息。客戶端與伺服器進行動態交互的 Web 應用程式出現之後,HTTP 無狀態的特性嚴重阻礙了這些應用程式的實現,畢竟交互是需要承前啟後的,簡單的購物車程序也要知道用戶到底在之前選擇了什麼商品。於是,兩種用於保持 HTTP 連接狀態的技術就應運而生了,一個是 Cookie,而另一個則是 Session。

91、接口執行測試後返回結果做對比,一般比對哪部分內容?

之前必須要對比的就是返回狀態碼,其次再去對比返回其它關鍵內容

92、為什麼開展接口測試?

接口測試屬於集成測試、測試介入越早、就越能在項目早期發現問題,其修復問題的成本越低

接口測試非常快速、UI自動化執行一個測試用例10S左右、接口測試用例執行的話,需要的時間是毫秒級的

93、json數據是什麼,你平時如何解析json數據?

一種開發常用的數據報文格式,由鍵值對和數組兩種格式構成。可以通過工具bejson網站等

94、依賴於第三方數據的接口如何進行測試?

mock
接著面試官會問你,如果mock的,然後你就順著坑繼續挖,搭建mock服務

95、接口測試中,依賴登錄狀態的接口如何測試?

依賴登錄狀態的接口的本質上是在每次發送請求時需要帶上session或者cookie才能發送成功,在構建POST請求時添加必要的session或者cookie

96、postman中設置環境變量有什麼用?

在之前項目中,接口測試測試的環境有開發環境,測試環境等,為了測試的時候方便,就在postman設置環境變量,到時所有接口都引用該環境變量,這樣就不用為了切換環境導致每次都去修改被測系統接口的主機地址;點擊右上角環境變量管理按鈕-新建環境變量,在腳本中使用{{變量名}}去調用

97、如何模擬弱網做測試?

Fiddler和charles都可以模擬弱網測試,平常說的模擬丟包,也是模擬弱網測試

98、在接口測試中關聯是什麼含義?如何用postman設置關聯?

關聯就是把上一個接口返回值的部分截取出來,作為下一個接口的參數,能讓接口串聯運行

在postman中設置關聯的步驟如下:

1) 先通過正則表達式提取的方式或json取值的方式把下一個接口需要的信息從上一個接口截取出來

2) 使用設置全局變量的代碼把取出來的值保存到全局變量

3) 在下一個接口中,使用{{全局變量}}代替要替換的靜態值

99、postman參數化有哪幾種方式?

內建變量、pre-scripts編寫js腳本、批量運行時導入csv或json格式的文件

100、Newman如何執行postman腳本?

Newman run 腳本名稱 也可以添加參數生成html報表等

101、jmeter中如何設置斷言?

右擊請求---斷言---響應斷言---響應斷言界面輸入要檢查比對的項,設置好斷言後,執行接口測試如果是通過的,查看結果樹不會有任何提示,如果斷言失敗,就會有紅色報錯。如果接口返回的數據是json數據,也可以添加json斷言

【自動化測試】

102、你會封裝自動化測試框架嗎?

這個問得最多,甚至有很多公司直接寫在招聘要求中!

當然可以,自動化框架主要的核心框架就是分層+PO模式:分別為:基礎封裝層BasePage,PO頁面對象層,TestCase測試用例層。然後再加上日誌處理模塊,ini配置文件讀取模塊,unittest+ddt數據驅動模塊,jenkins持續集成模式組成。

103、如何把自動化測試在公司中實施並推廣起來的?

1.項目組調研選擇自動化工具並開會演示demo案例,我們主要是演示selenium和robotframework兩種。

2.搭建自動化測試框架,在項目中逐步開展自動化。

3.把該項目的自動化流程、框架固化成文檔

4.推廣到公司的其它項目組應用

104、請描述一下自動化測試流程?

1.編寫自動化測試計劃

2.設計自動化測試用例

3.編寫自動化測試框架和腳本

4.調試並維護腳本

5.無人值守測試

6.後期腳本維護(添加用例、開發更新版本)

105、自動化測試用例如何編寫?以下答案二選一即可:

1.用例是自動化測試工程師自己設計的,一般剛開始已基本業務流程為主(登錄–完成一個業務–退出)

2.從系統測試用例中進行篩選或由業務工程師提供

106、上一個項目中自動化測試的執行策略?

上一個項目中是定時執行的,設置的執行時間是晚上12點,執行完畢後會自動發送郵件通知

107、自動化測試發現BUG多嗎?

不多,因為之前項目組是把已經測試通過的基本功能再進行自動化腳本編寫和在後續版本執行自動化測試,它主要是保證已經測試通過的功能在新版本更新後沒有問題。

108、你覺得自動化測試的價值在哪裡?你們公司為什麼要做自動化測試?

引用自動化測試之後,能代替大量繁瑣的回歸測試工作,把業務測試人員解放出來,既而讓業務測試人員把精力集中在複雜的業務功能模塊上,自動化測試一般是對穩定下來的功能進行自動化,保證不會因為產品的更新導致之前穩定下來的功能出現BUG

109、自動化測試有誤報過bug嗎?產生誤報怎麼辦?

有誤報過,有時候自動化測試報告中顯示發現了bug,實際去通過手工測試去確認又不存在該bug。

誤報原因一般是:

1.元素定位不穩定,需要儘量提高腳本的穩定性;

2.開發更新了頁面但是測試沒有及時更新維護!

110、自動化測試過程中,你遇到了哪些問題,是如何解決的?

1.頻繁地變更頁面,經常要修改頁面對象類裡面的代碼

2.自動化測試偶爾出現過誤報

3.自動化測試結果出現覆蓋的情況:Jenkins根據時間建立文件夾

4.自動化測試代碼維護比較麻煩

5.自動化測試進行資料庫對比數據

111、在上一家公司做自動化測試用的什麼框架?

可以說出以下自己擅長的一種:

1.python+selenium+unittest+htmltestrunner

2.python+selenium+pytest+allure

1. robotframework+Selenium2Library

112、在selenium自動化測試中,你一般完成什麼類型的測試?自動化覆蓋率?

主要是冒煙測試和回歸測試。回歸測試主要寫一些功能穩定的場景,通過自動化手段去實現,節約測試時間。因為自動化測試用例也是在不斷的更新和疊代,沒有刻意去統計,大概在30%-40%左右!

113、在執行腳本過程,如何實現當前元素高亮顯示?

這個其實就是利用javaScript去修改當前元素的邊框樣式來到達高亮顯示的效果,

114、如果一個元素無法定位,你一般會考慮哪些方面的原因?

1.頁面加載元素過慢,加等待時間

2.頁面有frame框架頁,需要先跳轉入frame框架再定位

3.可能該元素是動態元素,定位方式要優化,可以使用部分元素定位或通過父節點或兄弟節點定位。

4.可能識別了元素,但是不能操作,比如元素不可用,不可寫等。需要使用js先把前置的操作完成,

115、元素定位方法你熟悉的有哪些?

id name classname link_text css xpath

116、遇到frame框架頁面怎麼處理?

先用driver.switch_to.frame()跳轉進去frame,

然後再操作頁面元素,

操作完後使用driver.swith_to.default_content()跳轉出來

117、遇到alert彈出窗如何處理?

使用driver.switch_to.alert方法先跳轉到alert彈出窗口

然後再通過accept點擊確定按鈕,通過dismiss點擊取消難,通過text()獲得彈出窗口的文本。

118、如何處理多窗口?

這個多窗口之間跳轉處理,我們在項目中也經常遇到。就是,當你點擊一個連結,這個連結會在一個新的tab打開,然後你接下來要在新tab打開的頁面查找元素,

1.我們在點擊連結前使用driver.current_window_handle獲得當前窗口句柄。

2.再點擊連結。點擊後通過driver.window_handles獲得所有窗口的句柄,

3.然後再循環找到新窗口的句柄,然後再通過driver.switch_to.window()方法跳轉到新的窗口。

119、怎麼驗證元素是enable/disabled/checked狀態?

定位元素後:分別通過isEnabled(),isSelected(),isDisplayed()三個方法進行判斷。

120、 如何處理下拉菜單?

在Selenium中有一個叫Select的類,這個類支持對下拉菜單進行操作。使用方法如下:

1.定位元素

2.把定位的元素轉化成Select對象。

sel = Select(定位的元素對象)

3.通過下標或者值或者文本選中下拉框。
sel.select_by_index(index);
sel.select_by_value(value);
sel.select_by_visible_text(text);

121、在日曆這種web 表單你是如何處理的?

首先要分析當前網頁試用日曆插件的前端代碼,看看能不能通過元素定位,點擊日期實現,如果不能,可能需要藉助javascript。還有些日曆控制項一個文本輸入框,可以直接sendKeys()方法來實現傳入一個時間的數據。

122、舉例一下說明一下你遇到過那些異常

常見的selenium異常有這些:

NoSuchElementException:沒有該元素異常
TimeoutException : 超時異常

ElementNotVisibleException :元素不可見異常
NoSuchAttributeException :沒有這樣屬性異常
NoSuchFrameException :沒有該frame異常

123、關閉瀏覽器中quit和close的區別

簡單來說,兩個都可以實現退出瀏覽器session功能,close是關閉你當前聚焦的tab頁面,而quit是關閉全部瀏覽器tab頁面,並退出瀏覽器session。知道這兩個區別,我們就知道quit一般用在結束測試之前的操作,close用在執行用例過程中關閉某一個頁面的操作。

124、在Selenium中如何實現截圖,如何實現用例執行失敗才截圖

在Selenium中提供了一個get_screenshot_as_file()的方法來截圖的,一般結合try/except捕獲異常時使用,進行錯誤截圖。

125、如何實現文件上傳?

定位元素後,直接使用send_keys()方法設置就行,參數為需要上傳的文件的路徑。

126、自動化中有哪三類等待?他們有什麼特點?

1.線程等待(強制等待)如time.sleep(2):線程強制休眠2秒鐘,2秒過後,再執行後續的代碼。建議少用。

2.imlicitlyWait(隱式等待)會在指定的時間範圍內不斷的查找元素,直到找到元素或超時,特點是必須等待整個頁面加載完成。

3.WebDriverWait(顯式等待)通常是我們自定義的一個函數代碼,這段代碼用來等待某個元素加載完成,再繼續執行後續的代碼

127、你寫的測試腳本能在不同瀏覽器上運行嗎

當然可以,我寫的用例可以在在IE,火狐和谷歌這三種瀏覽器上運行。實現的思路是封裝一個方法,分別傳入一個瀏覽器的字符串,如果傳入IE就使用IE,如果傳入FireFox就使用FireFox,如果傳入Chrome就使用Chrome瀏覽器,並且使用什麼瀏覽器可以在總的ini配置文件中進行配置。需要注意的是每個瀏覽器使用的驅動不一樣。

128、什麼是PO模式,為什麼要使用它

PO是Page Object 模式的簡稱,它是一種設計思想,意思是,把一個頁面,當做一個對象,頁面的元素和元素之間操作方法就是頁面對象的屬性和行為,PO模式一般使用三層架構,分別為:基礎封裝層BasePage,PO頁面對象層,TestCase測試用例層。

關鍵字: