Web自動化測試入門


  web自動化測試

 

 

目錄

一、 自動化測試基本介紹 2

二、 Web自動化工具 3

三、 Selenium介紹 4

四、 Selenium WebDriver常用API 4

五、 TestNG 6

六、 環境搭建 8

一、自動化測試基本介紹

1 自動化測試概述:

什么是自動化測試?一般說來所有能替代人工測試的方式都屬於自動化測試,即通過工具和腳本來模擬人執行用例的過程。

 

2 自動化測試的作用

  • 減少軟件測試時間與成本改進軟件質量
  • 通過擴大測試覆蓋率加強測試工作
  • 進行手動測試難以完成的、需要更高的成本、更長的計划、更高的質量的任務
  • 迭代更新較少,但仍需測試人員維護的,通過自動化解放人力

 

3 自動化測試的主要應用:

  • 冒煙測試(主業務流程)
  • 回歸測試
  • 性能測試
  • 兼容性測試 (一套測試腳本,多個平台執行)
  • 完成手動測試無法完成的工作下班后無人值守測試

 

4 web自動化實現的目標:

(一)原則:

  • 編寫自動化測試用例庫,根據用例庫里面的用例編寫測試用例。
  • 提高測試效率,降低測試成本
  • 重復性較強的用例用自動化實現
  • 快速的回歸測試,提高版本發布的速度和質量
  • 功能覆蓋率達到要求
  • 測試具有移植性和可重復性

(二)實施策略(持續集成):

  • 框架的選擇
  • 環境搭建
  • case編寫:提取公共模塊、提取公共參數、功能邏輯熟悉
  • log輸出
  • 報告輸出
  • Jenkins持續集成:定時集成、發送郵件

二、Web自動化工具

1 web自動化工具的選擇:

市場上自動化工具分為開源和和商用付費兩種,下面提供兩種類型主流的seleniumQTP對比

 

 

 

最終選擇:selenium+IDEAjava+maven+testng+jenkins

三、Selenium介紹

(一)selenium 測試原理:

 

  • 在自動化測試過程中,存在三部分組件:客戶端腳本+瀏覽器驅動+瀏覽器終端。
  • 驅動文件,以geckodriver.exe為例,這個可執行的驅動文件啟動后,相當於一個暴露了一系列接口的服務器,監聽某一端口
  • 客戶端的操作(訪問頁面,定位元素,輸入數據,點擊按鈕等)都是封裝成了接口請求(eg/session/xx/yy),然后提交到驅動服務器。
  • 驅動服務器接收到客戶端的請求后,再跟終端瀏覽器交互。
  • 終端瀏覽器做出相應操作(操作元素、甚至瀏覽器本身:截屏、窗口、安裝插件證書)

 

 

 

(二)selenium 工具套件簡單介紹

  • Selenium WebDriver:面向對象API。
  • Selenium IDE(集成開發環境):FireFox插件,用於提供圖形化界面來錄制和回放腳本,插件只是用來模擬原型的工具,並不希望測試工程師使用此工具用來運行大批量的測試腳本。此插件需要使用第三方的javaScript代碼庫才能支持循壞和條件判斷
  • Selenium-Grid可以在多個測試環境以並發的方式執行測試腳本,實現腳本的並發執行,縮短大量測試腳本的執行時間。

四、Selenium WebDriver常用API

(一)selenium WebDriver常用基礎API

(一) 瀏覽器操作

  • 加載瀏覽器驅動打開頁面

driver = new FirefoxDriver();
String baseUrl = "http://oa2.midairen.com/index.html";
driver.get(baseUrl);

  • 關閉瀏覽器:

driver.close();//關閉瀏覽器

  • 最大化窗口:

driver.manage().window().maximize();

  • 后退到前一頁:

driver.navigate().back();

  • 前進到后一頁: 

driver.navigate().forward();

  • 刷新頁面: 

driver.navigate().refresh();

  • 獲得title並打印

String title =driver.getTitle();

  • 殺掉Windows的瀏覽器進程
  • 當前瀏覽器窗口截屏(比較截屏)
  • 操作瀏覽器的cookie

 

(二) 頁面操作

  • 獲取頁面的源代碼
  • 獲取頁面的URL地址
  • 在輸入框中清除原有的文字
  • 在輸入框中輸入指定內容
  • 單擊按鈕
  • 雙擊某個元素
  • 操作單選下拉列表
  • 操作單選框
  • 操作復選框
  • 檢查元素文本內容是否出現
  • 執行JS腳本
  • 操作iframe中的頁面元素
  • 操作富文本

 

(三) 元素定位的方法:

 

 

 

五、TestNG

(一)TestNG基本介紹:

TestNGJava中的一個測試框架,是一個目前很流行實用的單元測試框架,有完善的用例管理模塊,配合Maven能夠很方便管理依賴第三方插件。使用TestNG可以做功能、接口、單元、集成的自動化測試,最常見的是結合selenium做功能自動化測試,它使用Java注釋去寫測試方法。

測試人員一般用TestNG來寫自動化測試,開發人員一般用Junit寫單元測試,TestNG適合測試人員使用的主要原因:TestNG更適合復雜的集成測試。

  

(二) testNG的特點:

  • 注解
  • TestNG使用Java和面向對象的功能
  • 支持綜合類測試(例如,默認情況下,沒有必要創建一個新的測試來作為每個測試方法的類的實例)
  • 獨立的編譯時間測試代碼運行時配置/數據信息
  • 靈活的運行時配置
  • 支持依賴測試方法,並行測試,負載測試,局部故障
  • 靈活的插件API
  • 支持多線程測試

 

(三) 注解:

TestNG常用的測試用例組織結構由test Suite-test-測試class-測試方法。Test suite有一個或者多個test組成,test由一個或者多個測試class組成,一個測試class有一個或者多個測試方法組成。運用不同層級的測試用例時,課通過不同注解實現測試前的初始化工作,測試用例執行工作和測試后的清理工作。

常用注解如下:

      

 

 

 

(四) 依賴測試

     某些復雜的測試場景需要按照某個特定的順序執行測試用例,一以此保證某個特定順序執行測試用例,此測試場景運行需求稱為依賴測試。通過依賴測試,不同的測試方法間共享數據和程序狀態。使用dependsOnMethods參數 實現。

@Test(dependsOnMethods = {"testcase1"})

 

 

(五) 斷言

      在執行自動化測試用例的時候,我們需要自動判斷用例執行完成后獲得的輸出值是否與預期值一致,這個時候就需要用到斷言功能。TestNG中提供了一個Assert類:org.testng.AsserTestNG中提供了一個Assert類,org.testng.Assert類是作為放置一系列斷言的靜態方法的容器。

Assert.assertTrue(select1.isDisplayed());//斷言判斷select1元素是否在頁面存在

常用的斷言:

  • assertTrue:判斷是否為true。
  • AssertFALSE:判斷是否為FALSE。
  • AssertNull:判斷是否為空
  • AssertNoNull:判斷是否不為空
  • AssetEquals:判斷是否相等
  • AssertNoEquals:判斷是否不相等

六、環境搭建

見另一博文:https://www.cnblogs.com/liuzhongzhu/p/11611698.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM