自動化測試面試題及答案
以下是針對經驗豐富的和剛入行的QA專家在面試中最常被問到的問題。
1. 自動化測試到底是什麼?
自動化測試是指測試人員使用自動化工具編寫和執行測試指令碼和用例的過程。
自動化測試的主要目的是儘量減少需要手動執行的測試用例數量,而不是完全取代手動測試。
2. 什麼時候你會選擇自動化測試?
在以下情況下,自動化測試是可取的:
重複性任務
冒煙測試和健全性測試
使用不同的資料集進行測試
迴歸測試用例
通常,決策取決於投資回報率 (ROI)。
3. 什麼時候你不會選擇自動化測試?
在以下情況下,應避免自動化測試:
被測應用程式頻繁修改時
一次性測試用例
臨時測試 - 即席測試
4. 自動化流程包含哪些步驟?
自動化流程中的關鍵步驟如下:
選擇測試工具
確定自動化的目的
策略、規劃和設計
測試執行管理
5. 自動化規劃階段討論哪些主題?
在自動化規劃過程中需要考慮的事項包括:
選擇“合適的”自動化工具
如果適用,選擇自動化框架。
列出自動化範圍內和範圍外的測試元素。
測試環境配置
建立測試指令碼的建立和實施的甘特圖。
確定測試交付成果
6. 在什麼情況下敏捷方法不適合使用自動化測試?
在以下情況下,自動化測試不適合敏捷方法:
在敏捷測試過程中經常需要更改規範。
在敏捷開發中需要大量文件時
僅適用於敏捷測試中的迴歸測試,例如持續整合。
7. 一個好的自動化工具的關鍵特性是什麼?
支援測試環境和易用性
強大的除錯能力
強大的物件識別能力
物件和影像測試功能
物件識別
資料庫測試
支援多種框架。
8. 軟體自動化測試中使用哪些型別的框架?
軟體自動化測試中使用了四種類型的框架。
資料驅動自動化框架
關鍵字驅動自動化框架
模組化自動化框架
混合自動化框架
9. 執行自動化測試時編寫指令碼的規範是什麼?
編寫自動化指令碼時,請記住以下幾點:
使用一致的命名約定。
十行程式碼要有三行註釋。
縮排要足夠。
健壯的錯誤處理和恢復機制
儘可能使用框架。
10. 最常見的自動化測試工具有哪些?
最常用的自動化測試工具包括:
QTP(HP UFT)
Rational Robot
Selenium
11. 根據什麼標準可以預測自動化測試的有效性?
可以使用以下條件來跟蹤自動化測試的成功情況。
缺陷檢測率
自動化完成時間和產品釋出效率
降低人工成本和其他開支。
12. 你能指出一些手動測試的缺點嗎?
手動軟體測試需要更多的時間和精力。
不一致性
不斷執行相同的測試場景既枯燥又乏味。
對於特別大且時間緊迫的專案,手動測試是不可行的。
13. 跟我們分享一下你對Selenium的所有了解。
Selenium是一個免費的測試自動化庫。它用於Web和移動環境的自動化。它由以下部分組成:
Selenium IDE(瀏覽器外掛,用於錄製和回放)
Selenium WebDriver
Selenium Grid(分散式測試)
Selenium支援使用Java、C#、Python、Ruby、PHP、Perl和Javascript編寫指令碼。
14. 請跟我們說說QTP。
HP UFT是QTP(Quick Test Professional)的新名稱。它是一個商業自動化工具,支援多種測試環境,包括Web、桌面、SAP、Delphi、.Net、ActiveX、Flex、Java、Oracle、移動、PeopleSoft、PowerBuilder、Siebel、Stingray和Visual Basic。
其指令碼語言是VBScript。該工具與HP ALM(測試管理工具)和HP LoadRunner(效能測試工具)配合使用效果很好。
QTP的突出特點包括業務流程測試、關鍵字驅動框架、XML支援、強大的檢查點和測試結果。
15. Sikuli到底是什麼?
Sikuli是一個圖形使用者介面自動化工具,它使用“視覺影像匹配”方法。在Sikuli中,所有網站元件都應作為專案中的影像儲存。
Sikuli由以下部分組成:
Sikuli指令碼
Jython視覺化指令碼API
Sikuli IDE
Sikuli的實際應用如下:
它可以用來自動化Flash網頁或物件的建立。
它可以自動化基於視窗的應用程式以及你在顯示器上看到的所有其他內容,而無需依賴內部API支援。
它有一個簡單的API。
它易於與Selenium等技術整合。
它可以自動化桌面應用程式。
Sikuli為自動化Flash物件提供了強大的支援。
它結合了先進的“視覺匹配”和Flash物件來自動化桌面。
它相容任何技術——.NET、Java等。
16. Selenium和Sikuli的區別是什麼?
| Sikuli | Selenium |
|---|---|
| 它為自動化Flash物件提供了強大的支援。 | 它無法自動化Flash物件,如影片播放器、音訊播放器等。 |
| 它有一個簡單的API。 | 它有一個複雜的API。 |
| 它使用視覺匹配來查詢顯示器上的東西。因此,我們可以自動化我們在顯示器上看到的一切。 | 它沒有視覺匹配。 |
| 它可以自動化Web和Windows應用程式。 | 它只能自動化Web應用程式。 |
17. Selenium的一些替代品是什麼?
Selenium一直是許多組織使用的最流行的測試自動化技術之一。然而,它是一個高度技術性的工具,學習曲線很陡峭,可能並不適合所有測試任務。近年來出現了一些值得注意的替代品,列舉如下:
Cucumber - 它是一個開源測試工具,允許使用簡單的、基本的語言編寫測試,這種語言團隊中的每個人都能理解。它側重於行為驅動開發,其中人類可讀的功能規範用作測試的基礎。
Cypress - Cypress是一個開源的免費測試工具。它使用JavaScript編寫,由於其易用性和強大的功能而最近變得非常流行,這些功能使您可以進行瀏覽器測試。
Cypress使建立和除錯單元測試、端到端測試和整合測試變得容易。它還允許捕獲影像和錄製來幫助重現問題。
Robot Framework - Robot Framework是一個通用的開源自動化框架。它將用於測試自動化和機器人流程自動化 (RPA)。
18. 什麼是Robot Framework?簡要概述其架構。
Robot Framework是一個非常流行的開源自動化測試框架,主要用於機器人流程自動化 (RPA)。機器人流程自動化旨在使用軟體模仿人類活動和互動。與真人相比,機器人自動化能夠在一定程度上理解顯示的內容,按下按鍵和按鈕,瀏覽連結並檢索資料。
Robot Framework是用Python開發的,並且與作業系統無關。生態系統中的大多數庫也是開源的。它具有模組化設計,可以透過其他庫進行擴充套件。它使用特定於框架的語法在檔案中描述測試資料。一個測試套件包含許多這樣的測試。
一旦開始實施測試,Robot Framework就會解碼測試資料,並利用庫提供的關鍵詞與程式進行通訊。這些庫透過驅動工具主動或被動地與程式連線。
Robot Framework從命令列執行測試。但是,您可以以XML和HTML格式訪問完整的統計資料和記錄。該框架包含對標準庫的良好支援,例如ArchiveLibrary、Browser Library、DataDriver Library、HttpRequestLibrary(用於Java)等。
19. Robot Framework提供了哪些測試庫API?
Robot Framework提供三種測試庫API。
靜態API - 一個包含過程的包或類,可以直接轉換為關鍵字名稱,這些名稱接受與實現方法相同的引數。
動態API - 應用的關鍵字名稱以及如何執行是在執行時確定的。
混合API - 靜態API和動態API的整合。庫是包含函式的類,這些函式告知它們要執行哪些關鍵字,但這些關鍵字必須可以直接訪問。
20. 你將如何自動化Web應用程式的基本登入功能?
假設測試人員已經建立了測試環境和Selenium之類的測試工具,以下是自動化登入功能的步驟。
親自驗證登入,以瞭解登入螢幕上的所有文字框、複選框和按鈕。跟蹤使用者在成功和失敗登入中被轉發到的頁面。
建立一個測試資料集,其中包含使用者名稱和密碼組合。輸入包括不同的長度和字母數字字元集。
生成測試用例以檢查使用者在真實場景中可能採取的替代路徑。只需記錄每個測試場景的預期結果。
在測試工具中,設定每個測試用例以便直接啟動,並使用步驟2中提供的測試資料。注意實際輸出與預期結果不符的情況。
檢查並確認每次登入會話後的成功/錯誤語句和重定向。
21. 自動化測試有哪些風險?
雖然測試自動化提供了顯著的優勢,例如高效可靠的重複性測試,但團隊應該注意一些問題。
投資回報率低 (Negative ROI)
團隊可能會投入大量精力來啟動自動化測試。自動化測試需要大量的程式碼和昂貴的工具。開發人員和測試人員需要投入大量精力來學習和部署自動化測試。
然而,一旦實施,團隊可能會發現測試方法並沒有帶來任何實際好處,因為產品複雜且配置和功能不斷變化。他們必須定期維護測試的最新狀態。
技術追趕 (Playing catch-up with the technology)
與任何產品一樣,測試自動化工具和框架也在不斷發展。自動化工具的學習曲線很陡峭,並且需要足夠的程式設計技能。
開發/測試團隊不是選擇一個工具並正確使用它,而是浪費時間學習和試驗其他工具和技術。在這種情況下,自動化測試可能無法實現其最初宣稱的優勢。
運營問題 (Operational Concern)
所有程式設計都需要進行管理和維護,以滿足不斷增長的需求並解決錯誤。測試自動化程式碼也不例外。
如果開發人員和測試人員發現自己將大部分時間都花在了自動化框架上,而不是改進和解決程式中的問題,那麼自動化測試就失敗了。
資料結構
網路
關係型資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP