<u id="tkccn"><dd id="tkccn"></dd></u>
<sub id="tkccn"></sub>
<dd id="tkccn"><address id="tkccn"></address></dd>
      <wbr id="tkccn"><source id="tkccn"></source></wbr>
      <wbr id="tkccn"></wbr>
    1. <nav id="tkccn"></nav>
      我的賬戶
      啄木鳥學院

      專注軟件測試菁英教育

      親愛的游客,歡迎!

      已有賬號,請

      如尚未注冊?

      Selenium(測試)面試問題大合集

      [復制鏈接]
      1979 0
      chelang 發表于 2020-2-22 15:41:00 | 只看該作者 |閱讀模式 打印 上一主題 下一主題
      本帖最后由 chelang 于 2020-2-22 15:42 編輯

      許多同學在找工作面試時經常被問到關于自動化方面的基礎,這時候即使自己之前做過自動化,要完整準確的回答面試官的問題卻不是易事,那么請看下面?。?!

      問題一:說一下你們公司自動化測試流程?

      在項目成型基本穩定,不會出現大規模的需求變動之后,就可以考慮自動化的啟動;
      首先要考慮的就是自動化工具的選擇,像常用的自動化工具就有QTP、selenium IDE、RobotFramework等,但是這樣的工具使用起來不夠靈活,一般為了與項目貼合,最好自己寫一套框架,像之前我們公司用的框架就是結合了Python+selenium和Python的unittest;

      然后在手工用例轉化自動化用例之前,我們需要進行評審和決策,將能實現自動化或難度低的模塊、用例優先進行自動化,不能實現自動化的用例給出具體原因,在回歸時指派手工覆蓋,防止漏測;

      自動化用例我們要有一定的規范和要求,便于腳本的調用和后期的維護,比如一個功能的用例寫在一個目錄下,每一條用例寫一個腳本,命名要統一格式;
      我們用python的unittest框架加載測試用例,用HTMLTestRunner運行測試套并生成測試報告,報告出來后我們要第一時間去分析測試結果,對失敗的用例要詳細定位失敗的原因,到底是腳本錯誤呢還是這就是bug?再進行處理,修改用例或者就是提交bug問題單;
      自動化用例執行全部完成后,對測試結果進行匯總并給出測試結論。

      問題二:介紹下你們公司的自動化測試框架?

      我們公司的自動化框架基于python+Selenium,我們會有一個測試用例目錄用于存放測試用例;一個公共的第三方lib庫,因為我們實現自動化的過程中會有很多經常用到的方法,做成公共模塊放在lib庫里面,可以提高代碼的復用率,便于代碼的維護;還會有一個data數據目錄,存放自動化測試中的數據,在進行數據驅動時,數據與代碼分離,便于自動化用例數據的準備和腳本的維護;還會有一個執行和報告目錄,執行的策略和報告的生成在這個目錄下進行,可以調整自動化測試中的下發策略,查看運行的結果。

      問題三:你們用的測試框架是自己寫的嗎?

      我們用的是Python自帶的單元測試框架unittest

      問題四:定位元素的方法有哪些?

      八大定位元素:
      屬性定位:id、name、clas_sname
      路徑定位:xpath 、css_selector
      鏈接定位:partial_link_text、link_text
      標簽定位:tag_name

      問題五:如果有個元素總是定位不到,怎么辦?

      一般出現這種問題的話要先分析腳本中的代碼是否與html源文件中元素的屬性值一致,經常會因為空格、特殊字符、編碼格式等問題導致腳本中代碼與html源文件不一致;再查看HTML源文件中是否使用了frame,如果有了則需要特殊處理(使用switch_to_frame跳到frame再定位元素);如果都不是以上的情況,則要檢查瀏覽器的配置,是不是攔截了一部分功能,導致需要定位的html頁面的元素不能正常加載;還有一種情況是系統使用的協議不是標準的http協議,而是用了自定義的協議,那就沒辦法了。

      問題六:你們公司自動化測試的流程是什么樣的?

      我們的項目是比較穩定的項目,做了好久了,現在主要是運維修改一些BUG和做一些新需求,所以我們公司的自動化測試是用于本次新版本上線前做回歸測試用的。腳本是前兩年就已經做好了的,每次新版本上線前一周會花兩三天的時間進行腳本更新與維護,腳本調試通過再使用測試框架執行測試,測試完成會生成報告,我們再對測試結果進行分析,如果發現了BUG,進行BUG的跟進,關于BUG的跟進就跟手工測試試試跟進BUG是一樣的了。

      問題七:定位一組元素和定位單個元素有什么區別?

      定位單個元素返回的是一個元素對象,可以直接進行操作;而定位多個元素返回的是一個元素對象列表,需要做二次定位后才可以進行操作,如下拉框中的元素,需先定位到下拉框,再用Select方法進行二次定位

      問題八:你們公司自動化用例大概多少條?會對那些進行自動化測試?

      占總系統測試用例的30%-50%左右,根據自己總用例數來估算吧!一般跳窗口,調第三方接口以及一些業務場景比較復雜的用例不適合實現自動化。

      問題九:介紹一下Selenium的原理(webdriver的原理)?

      以firefox為例,當測試腳本啟動firefox的時候,selenium-webdriver 會首先在新線程中啟動firefox瀏覽器,啟動后selenium-webdriver會將firefox綁定到特定的端口,綁定完成后該firefox就相當于webdriver的remote server存在;客戶端(也就是測試腳本)創建1個session,在該session中向remote server發送http請求(實際是restful,但不明白的話,直接說http就好了),remote server解析請求,完成相應操作并返回response;客戶端接受response,并分析其返回值來決定是接著執行下面的代碼,還是停止操作。簡單的說webdriver就是在自動化腳本與瀏覽器之間建立一種溝通(交互),腳本中的代碼以請求的形式發給瀏覽器,瀏覽器執行后返回結果。

      問題十:你覺得Selenium的缺陷是什么?

      首先Selenium是一種自動化測試框架,它就存在自動化測試的缺陷:不穩定、可靠性、不易維護、成本與收益;而且它只支持B/S架構的自動化。

      問題十一:那Selenium的優點?

      開源、輕量級、支持多種語言、提供的SeleniumIDE工具錄制腳本易于上手,支持多種瀏覽器,可以很好的測試兼容性。

      問題十二:如何去定位屬性動態變化的元素?

      - xpath或者css通過同級、父級、子級進行定位

      問題十三:selenium中如何保證操作元素的成功率?

      - 添加元素等待時間time。sleep(5)/driver.implicitly_wait(30)
      - try 方式進行 id,name,clas,xpath, css selector 不同方式進行定位,如果第一種失敗可以自動嘗試第二種

      問題十四:如何提高selenium腳本的執行速度?

      1. 減少操作步驟,如經過三四步才能打開我們要測試的頁面的話,我們可以直接通過網址來打開,減少不必要的操作
      2. 中斷頁面加載,如果頁面加載的內容過多,而加載的內容不影響我們測試,就設置超時時間,中斷頁面加載
      3. 在設置等待時間的時候,可以sleep固定的時間,也可以檢測某個元素出現后中斷等待也可以提高速度(可以用try + isElementPresent,或者try + find_element_by)
      4. 多線程執行腳本,在編寫測試用例的時候,要盡量實現松耦合,然后在服務器允許的情況下,設置多線程運行,提高執行速度(remote起多節點做分布式,需要先設置hub和node,threading做多線程)

      問題十五:怎么提高腳本執行的穩定性?

      - 設置等待時間:time.sleep( )、driver.implicitly_wait(30)
      - 多用 try 捕捉,處理異常
      - 多線程的時候,用例之間相互影響,所以設計用例的時候,盡量降低用例的耦合度;
      - 多線程的時候,如果用例執行的先后數序有要求,那么在用例命名的時候要加0-9或a-z排序,因為用例的執行順序是按照ASCII碼表排列的(數字--》大寫字母--》小寫字母)

      問題十六:自動化測試的時候需要連接數據庫做數據校驗?

      - UI自動化不需要
      - 接口測試會需要(修改了數據庫中的數據就需要,也就是對數據庫中的數據進行了增、刪、改)
      注:連接數據庫需要導入pymysql、pyoracle模塊

      問題十七:你有寫過自動化測試腳本嗎?

      有寫,因為一方面我們的系統每個版本都會有新功能上線,等這些新功能運行三四個月基本穩定后,這些功能會就會加入到自動化測試的范圍內,所以我們幾乎每個版本都會有新自動化腳本要寫。另一方面,原有的功能總會有一些新的調整,所以每個版本都需要對原有的自動化腳本進行更新與維護。
      我們一般是先使用seleniumIDE進行錄制后生成腳本,再對工具自動生成的腳本進行修改、優化。

      問題十八:Python常用的模塊、函數有哪些?

      模塊:os、time、system、unittest
      函數:time.sleep()、assertIn、assertequal等等(回憶下課堂都用了什么方法)

      問題十九:你所測試的核心模塊是怎么用自動化實現的,對于驗證碼的情況如何處理?

      自動化實現原理 把自動化測試流程說了,對于驗證碼,驗證碼,我們用的是萬能驗證碼,開發后臺代碼寫死的。



      收藏
      收藏0
      支持
      支持0
      反對
      反對0

      分享本篇文章給更多人:


      63.9K
      回復

      使用道具 舉報

      您需要登錄后才可以回帖 登錄 | 立即注冊

      本版積分規則

      關注0

      粉絲0

      帖子10

      發布主題
      關注我們
      專注軟件測試菁英教育

      客服電話:029-61859806

      客服時間:9:00-21:00

      啄木鳥學院 - 專注軟件測試菁英教育!( 陜ICP備20001493號-1 )

      版權所有 ? 西安菁英教育科技有限公司 2016-2020

      图书馆小东西自己上来_奇领6080 奇领YY6080影院 奇领YY6080YY_肉苁蓉的功效与作用_二手车交易市场