測試員你為啥拿不到20K?這些Web自動化面試題助你一臂之力

在上一篇分享中,給大家帶來了selenium核心技術點在筆試/面試中的常見題型,本篇將繼續深入探究自動化測試相關面試點,如果說selenium是一款web自動化測試不可缺的"武器",那就需要安裝到合適的裝置上,才能盡情發揮其優勢,在自動化測試中,所謂的"合適裝置"即:自動化測試框架的選取,自動化框架必備面試問答將是此次分享的重點。

測試員你為啥拿不到20K?這些Web自動化面試題助你一臂之力

一.筆試/面試中常見技術要點

下篇 —— PART I Selenium WEB自動化技術深入掌握

1.如何處理基於Web的彈出窗口?

答: WebDriver中提供了專門用於處理Alert彈框的API, 包含四種常用方法:

(1)void dismiss(): 單擊彈出窗口中的"取消"按鈕;

(2)void accept(): 單擊彈出窗口中的"確定"按鈕;

(3)String getText(): 返回顯示在Alert框中的文本;

(4)void sendKeys(String stringToSend): 以字符串形式輸入內容至Alert框中;

Sample code:

// 單擊彈出窗口中的"確定"按鈕

Alert alert = driver.switchTo().alert();

alert.accept();

2.如何通過WebDriver觸發鼠標懸停事件?

答: WebDriver提供了廣泛的交互應用API,用戶可以利用這些API自動觸發鼠標/鍵盤事件。Action API就是這樣一種交互性應用API,它可以模擬單個用戶的交互動作;

例如我們可以通過Action API將鼠標懸停在某個下拉菜單上,然後打開其中的選項列表;

Sample Code:

// 初始化Action API

Actions actions=new Actions(driver);

// 鼠標懸停的到下拉菜單上

actions.moveToElement(driver.findElement(By.id("下拉菜單的ID"))).perform();

// 定位並點擊下拉菜單中某個選項

WebElement subLinkOption = driver.findElement(By.id("某選項的ID"));

subLinkOption.click();

3.如何獲取元素的CSS屬性?

答: 通過get() 方法獲取web元素css的屬性值;

例如獲取某web元素CSS中"font-size"的屬性值:

driver.findElement(By.id("某元素ID")).getCssValue("font-size");

4.WebDriver中如何捕獲屏幕截圖?

答: 通過selenium提供的TakesScreenshot和OutputType 完成屏幕截圖;

Sample Code:

// 獲取截屏

File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);

// 將截屏保存到指位置

FileUtils.copyFile(scrFile, new File("C:\\CaptureScreenshot\\sample.jpg"))

5.web測試中如何驗證網頁標題是否正確?

答: 可以結合junit/testNG中的斷言;

// 驗證頁面標題內容是否正確

  assertTrue("驗證當前頁面標題正確性:",driver.getTitle().equals("預期頁面標題內容"));

6.selenium如何處理基於Windows的彈出窗口

答:Selenium僅支持Web應用程序測試,不支持基於Windows的應用程序。但可以通過一些第三方工具處理windows彈框,例如AutoIT,Robot。

7.什麼時候應該使用Selenium Grid?

答: Selenium Grid能在多個平臺和瀏覽器上同時執行相同/不同的測試腳本,從而實現分佈式測試執行,Selenium Grid在不同環境下執行測試腳本的特性,可以大大節省自動化測試的執行時間,大幅提高效率。

8.列舉Selenium的侷限性有哪些?

答: Selenium有以下不足之處:

(1)Selenium僅支持基於Web的應用程序的測試;

(2)無法使用Selenium測試移動應用程序,可以選擇Appium進行移動端功能測試;

(3)驗證碼和條形碼閱讀器無法使用Selenium進行測試;

(4)Selenium本身不具有生成測試報告的功能,以JAVA為例,需要結合第三方框架如TestNG或JUnit來生成測試報告;

下篇 —— Part II 自動化測試框架相關知識點技能

9.自動化測試框架的優勢有哪些?

答: 優勢主要包括:

(1)代碼的可重用性

(2)儘可能確保最大測試覆蓋率

(3)場景可恢復性

(4)低廉的後期維護成本

(5)儘可能減少人工干預

(6)自動生成測試報告

10.你瞭解哪些不同類型的測試框架?

答: 比較常見的測試框架種類如下:

(1)基於模塊(module)的測試框架:這類框架將整個"被測應用程序"按邏輯性劃分為若干個獨立模塊。對於每個模塊,我們創建一個獨立的測試腳本。因此,當這些測試腳本合在一起時,就構建成一個更大的測試腳本,對應了更大範圍內的邏輯獨立性模塊。

(2)庫級別(library)的測試框架:基本原理是先確定通用步驟,然後將它們按組進行封裝,封裝成庫函數,任何時候,如有需要,可以在測試腳本中隨時調用這些庫函數。

(3)數據驅動(DDT)測試框架:DDT框架旨在將測試數據從業務邏輯腳本中獨立出來,從而使用戶可以將測試數據存儲到外部數據庫/配置文件中,測試數據一般按"鍵值"對存儲居多,在測試腳本中可以通過測試數據的key, 來獲取實際的value。

(4)關鍵字驅動(Key)測試框架:是對數據驅動的測試框架的擴展,從某種意義上說,它不僅將測試數據與腳本分離,還將測試腳本按業務拆分,單獨封裝,即每一個關鍵字,就是一個業務,關鍵字驅動下的業務拆分力度的精細程度可按實際項目需求來確定, 例如一個簡單的登錄業務可以封裝成一個login關鍵字,一個完整的購物流程同樣也能封裝成一個purchase關鍵字。

11.常見的Junit註釋?

答: Junit註釋主要包含如下幾種:

(1)@Test:告知系統被註釋為"@Test"的方法是一種測試方法。一個測試腳本中可以有多個測試方法;

(2)@Before:該方法應在每個測試方法被執行之前執行;

(3)@After:該方法應在每個測試方法之後再被執行;

(4)@BeforeClass:此方法在當前測試類中所有測試方法執行之前,先被執行一次;

(5)@AfterClass:此方法在當前測試類中所有測試方法都執行完畢後,最後被執行一次;

(6)@Ignore:告知系統不執行此測試方法;

12.TestNG比Junit更好嗎?

答: TestNG是一個開源代碼框架,對比Junit主要優勢如下:

(1)大大擴展了註釋範圍和類別

(2)可以設置執行模式

(3)支持併發執行測試腳本

(4)可以設置測試用例依賴性

13.如何在TestNG中設置測試用例優先級?

答: 以如下代碼為例,進行優先級的設置:

import org.testng.annotations.*;

public class SettingPriority {


@Test(priority=1)

public void method1() {

}


@Test(priority=2)

public void method2() {

}


@Test(priority=0)

public void method3() {

}

}

測試執行順序為:method3 ——》method1 ——》method2

14.斷言(assert)和驗證(verify)之間有什麼區別?

答: 斷言(assert)用於檢查給定條件是否滿足,即True or False;假設我們斷言某給定元素是否存在於頁面上。如果條件為真True,則程序將執行下一個測試步驟,但如果條件為假False,則程序將停止執行,並且不再往下執行後續的測試步驟;

驗證(verify) 同樣是檢查給定條件是對還是錯,即True or False;不同的是,不管條件是否滿足,程序的執行都不會停止,即驗證過程中的任何失敗都不會停止當前的程序執行,並且所有測試步驟都將被執行到;

二.總結

綜合上下兩篇,分別從Selenium核心要點,測試框架的認知及運用等方面進行了web自動化測試中面試或筆試常被問及的技術點, 大家可以在準備相關面試前將此文當作面試備考題的一部分,在大腦中自行過一遍,相信或多或少都能幫到你。

當然,成功的面試不僅需要"考前突擊",更重要的還是平日裡技術經驗的積累,希望本次分享能夠幫到即將面試的你,通過自己的努力披荊斬棘,拿到心儀的OFFER。

#學習資料#※※【重要通知】本期超級福利:《1個案例快速上手web自動化測試》課程,今日限時0元!(限時免費聽)
參與方式:私信“免費聽”即可獲取完整視頻。


分享到:


相關文章: