1. 程式人生 > >Web自動化測試架構設計與實現

Web自動化測試架構設計與實現

分散式計算將網路服務帶到世界的每一個角落,這些服務又大都部署在Web應用系統中。如何保障高質量軟體或服務則是個突出的問題,其實軟體測試從來就不應該被輕視。對於一個複雜的web應用程式系統需要測試的方面太多了,特別是那些開發週期很長的系統,如果所以測試都通過手工來完成,顯然成本太高,且容易出錯。通過使用自動化工具,則在某種程度上降低了測試難度,同時節約了成本,但是會有個新的問題:如果提高測試指令碼的維護性和移植性。 
  本文通過對軟體測試過程分析,並結合分層思想,提出一個較好的測試架構,並介紹如何通過自動化測試工具Selenium和測試框架TestNG搭建該測試平臺。 
  1 WEB自動化測試 
  軟體測試是確保軟體質量的重要手段,然而相對於企業級的系統規模和複雜不斷增大,手工測試容易出錯,而且枯燥的機械重複性工作對於軟體質量保證的人員來說是個不小的挑戰。自動化工具的引入則讓軟體質量保證人員從中解脫出來。
  1.1 自動化測試介紹 
  自動化測試是一種通過自動化工具執行定製好的測試指令碼的過程。通過該過程的實施,可以節省人力和時間成本,提高測試效率。自動化測試可以被用於單元測試,功能測試,效能測試,迴歸測試等等,但是自動化測試不是並不能完全代替人工測試,而且這種程度需要看自動化測試所能覆蓋路徑的範圍,而且最能體現自動化測試優勢的應該算是它的複用性,特別是對於開發週期很長的系統。由於以上優點,自動化測試的架構顯得尤為重要,好的測試架構將給指令碼的維護帶來巨大的方便。 
  1.2 Web自動化測試軟體 
  對於眾多的Web自動化測試軟體,有商業用途的付費軟體,也有開源免費軟體,它們功能同樣強大,同時優點缺點也很突出。常見的web自動化測工具有:QTP, Winn Runner, Silk Test, Selenium。Selenium雖然是開源軟體,但是表現卻非常優秀。 
  1.2.1 開源軟體Selenium 
  Selenium可能是現在使用最為廣泛的開源Web自動化測試工具了。Selenium主要產品元件有:Selenium-IDE,Selenium –RC,Selenium-Grid。它們都有各自不同特點,可以結合實際情況選擇不同的組合。 
  Selenium IDE是以Firefox瀏覽器的外掛的形式釋出的,通過它可以進行測試指令碼的錄製,除錯,回放和轉換。 
  Selenium RC是Selenium家族中最為重要的產品。通過代理伺服器的方式,模擬向目標Web應用系統傳送測試請求和接收反饋,從而達到控制模擬自動化測試的過程。 
  Selenium Grid相當於一個用於控制測試的遠端控制器,它顯式地將測試請求傳送到一個或多個機器上的某個有效的Selenium-RC例項上,這則為自動化測試提供了分散式和並行測試的環境。 
  以上產品都是以Selenium Core作為基礎。Selenium Core其實是一個java script函式庫,通過混合測試指令碼注入到瀏覽器中,被主要用來操作Web頁面上的元素,從而模擬代替人工手動操作,例如向文字框輸入文字,點選按鈕提交表單等等。 
  同時Selenium的另外一個重要優點就是:對各種瀏覽器,作業系統和指令碼程式語言都有廣泛的支援。支援的瀏覽器有IE,Firefox,Safari,Opera,Chrome;支援的作業系統有Windows,Linux,Mac;支援的指令碼語言有Java,Python,C#,Ruby等等。正是因為這樣一個特性,使得Selenium具有很好的靈活性和擴充套件性 
  1.3 軟體測試框架 
  若要搭建一個測試平臺,有了Selenium還不夠,因為它只提供自動化測試關於瀏覽器部分的驅動,然而對於測試指令碼模組之間的控制還不夠,需要像JUnit或TestNG這樣的測試框架的輔助。 
  1.3.1 TestNG 
  JUnit從過去到現在依然是單元測試的一個標準,是最流行的開源工具。同JUnit一樣,TestNG支援包括從單元測試到整合測試,但是TestNG所支援的高階的特性更加吸引我們。對於每天都進行編譯來說,重新執行失敗的測試的機制對於QA(Quality Assurance)的管理來說是非常有幫助,而TestNG就有這樣的特性。TestNG的另一個亮點是支援引數化。在JUnit中如果你要測試不同的引數,你需要寫不同的測試用例來覆蓋不同引數。而在TestNG中,可以通過使用Testing.xml配置檔案做到。這樣的做法提高了測試指令碼的清晰性。並且它支援三個級別的測試,分別是Test Suite,Test,Test Method,通過結合註釋的使用,這樣使得測試用例的實現更加靈活。如下例項程式碼可以看到: 
  public class TestSample { 
  public TestSample() { 
  super(); 
  } 
  @Test//註釋並標記為要測試的方法 
  public void testPass() { 
 doTesting(); 
  } 
  @BeforeTest//在測試方法呼叫之前執行 
  public void doBeforeTests() { 
  doSomethingBeforTesting(); 
  } 
  @AfterTest//在測試方法呼叫之後執行 
  public void doAfterTests() { 
  doSomethingAfterTesting(); 
  }}

2 分層的軟體測試架構 
  2.1 常見測試架構 
  模組化測試指令碼框架:測試用例的指令碼是由樹狀的獨立小的可以描述的測試指令碼模組組成,從而實現模組化。 
  測試庫框架:不同於模組化的是把目標應用程式分解為過程和函式而不是指令碼。 
  關鍵字驅動測試框架:將目標應用程式的功能和測試步驟分別對映為Keyword和Driven驅動表的形式。 
  資料驅動測試框架:測試驅動模組從資料來源中獲取測試資料進行測試。 
  混合測試框架:以上框架的一些結合。 
  2.2 分層測試框架 
  Web應用程式主要是以網頁的形式提供服務的,Web應用程式的測試除了測試網頁功能,往往還需要對網頁的GUI(graphical User Interface)進行測試。但是一個完成好的測試指令碼會有一些預想不到的失敗,而這些問題常常是因為期望的結果與實際自動化測試的結果不一致,而且這種不一致大多是因為頁面GUI的問題。例如某個按鈕位置改變了或某個連結順序改變了。對於現在大量使用Ajax技術的時候,這種情況似乎普遍起來,這使得指令碼維護起來更加困難起來。 
  基於以上的一些經歷,從某種程度來說網頁的功能和頁面GUI其實是存在耦合的,而且根據軟體開發的經歷,如果能將軟體開發的分層思想應用到測試上來:如果可以將目標測試網頁的GUI和功能分開,那自動化的測試指令碼會健壯起來,維護固然也將變得更加輕鬆。所以結合混合測試框架的各種優點,給出分層的自動化測試框架圖。 
  從圖1可以看到在測試指令碼中,模組化業務指令碼和測試控制指令碼,這樣好處是提高業務指令碼的複用性和維護性,同時將業務指令碼互動的頁面GUI方面的資訊封裝起來,並使用資料來源的方式提供給業務指令碼使用。圖中的驅動模組則是控測試資料的載入和測試指令碼執行的。


  2.3 平臺實現 
  2.3.1 基於Selenium和TestNG的平臺實現 
  首先從Selenium官方網站中分別下載並安裝Selenium IDE,Selenium RC,Selenium Grid安裝包。從TestNG官方網站下載並安裝TestNG安裝檔案。 
  軟體測試活動是圍繞測試用例來進行的,對於Web自動化測試,基本步驟如下:編寫測試用例,錄製測試指令碼,配置測試工程,執行測試指令碼,檢視測試報告。


  對於測試指令碼的開發和執行,首先需要在測試用例的基礎上,使用Selenium IDE進行指令碼錄製,除錯,回放,再確定測試指令碼無誤後,則轉換為特定語言的指令碼程式碼,例如轉換為TestNG框架的Java程式碼。接著需要重構轉換了的測試指令碼程式碼,使其業務指令碼和控制指令碼分離到不同模組中,同時重構其中的測試資料,包括業務測試資料和介面資料(可以使用XPath來定位介面元素)。在重構過程中,通過使用TestNG的註釋標籤來對測試指令碼進行設定和控制。測試報告是由TestNG在測試中自動生成的,可以直接使用瀏覽器開啟,也可以擴充套件部署到伺服器上,這樣相關程式設計師可以立即獲得屬於自己那部分的測試結果。 
  3 結論 
  軟體測試分層架構是在混合測試框架的基礎上結合分層的思想設計出來的,通過Selenium 和TestNG搭建起來的平臺,可以廣泛用於Web應用程式的自動化測試,但是應該根據工程複雜程度選擇適當的組合去搭建平臺。 

相關推薦

Web自動化測試架構設計實現

分散式計算將網路服務帶到世界的每一個角落,這些服務又大都部署在Web應用系統中。如何保障高質量軟體或服務則是個突出的問題,其實軟體測試從來就不應該被輕視。對於一個複雜的web應用程式系統需要測試的方面太多了,特別是那些開發週期很長的系統,如果所以測試都通過手工來完成,顯然

Python3簡易介面自動化測試框架設計實現(上)

目錄 1、開發環境 2、用到的模組 3、框架設計 3.1、流程 3.2、專案結構 5、日誌列印 6、介面請求類封裝

Python3簡易介面自動化測試框架設計實現(中)

目錄 7、Excel資料讀取 7.1、讀取配置檔案 7.1、編寫Excel操作類 8、用例組裝 9、用例執行結果校驗 10、執行用例 11 、

關於介面測試——自動化框架的設計實現

一、自動化測試框架 在大部分測試人員眼中只要沾上“框架”,就感覺非常神祕,非常遙遠。大家之所以覺得複雜,是因為落地運用起來很複雜;

jQuery架構設計實現(2.1.4版本)

需要 引入 hasclass 8.4 uri and hub 組織 移除 市面上的jQuery書太多了,良莠不齊,看了那麽多總覺得少點什麽 對"幹貨",我不喜歡就事論事的寫代碼,我想把自己所學的知識點,代碼技巧,設計思想,代碼模式能很好的表達出來,所以考慮通過分析jQuer

jQuery技術內幕:深入解析jQuery架構設計實現原理

源碼 att root 功能 技術內幕 瀏覽器 sel 緩存 callbacks jQuery源碼(jquery-1.7.1.js)的總體結構:(function( window, undefined ) {// 構造jQuery對象 var jQuery = (fun

Hadoop技術內幕:深入解析MapReduce架構設計實現原理 (大資料技術叢書).epub

  【下載地址】 《Hadoop技術內幕:深入解析MapReduce架構設計與實現原理》內容簡介:“Hadoop技術內幕”共兩冊,分別從原始碼的角度對“Common+HDFS”和“MapReduce的架構設計和實現原理”進行了極為詳細的分析。《Hadoop技術內幕:深入解析M

短視訊架構設計實現

視訊錄製模組 視訊錄製由視訊預覽、伴奏播放、視訊錄製/暫停、倍速/半速錄製四部分組成。 (1)視訊預覽 在Android&IOS平臺我們可以使用自己的Camera+OpenGL ES進行視訊的預覽,這裡的預覽過程一般就是從相機獲取紋理ID並進行諸如美顏

談一款MOBA類遊戲《碼神聯盟》的服務端架構設計實現(更新優化思路)

一、前言   《碼神聯盟》是一款為技術人做的開源情懷遊戲,每一種程式語言都是一位英雄。客戶端和服務端均使用C#開發,客戶端使用Unity3D引擎,資料庫使用MySQL。這個MOBA類遊戲是筆者在學習時期和客戶端美術策劃的小夥伴一起做的遊戲,筆者主要負責遊戲服務端開發,客戶

《RocketMQ技術內幕:RocketMQ架構設計實現原理》—1.1.2 Eclipse除錯RocketMQ原始碼

1.1.2 Eclipse除錯RocketMQ原始碼 本節將展示在Eclipse中啟動NameServer、Broker,並執行訊息傳送與訊息消費示例程式。1.啟動NameServerStep1:展開namesrv模組,右鍵NamesrvStartup.java,移動到Debug As,選中Debug Co

短連結服務架構設計實現

場景 整個互動流程如下: 設計要點 短連結生成演算法 (1)利用放號器,初始值為0,對於每一個短連結生成請求,都遞增放號器的值,再將此值轉換為62進位制(a-zA-Z0-9),比如第一次請求時放號器的值為0,對應62進製為a,第二次請求時放號器的值為1,對應6

深入理解TensorFlow架構設計實現原理 3 :基礎概念

1、程式設計正規化:資料流圖   宣告式程式設計與指令式程式設計的對比討論   資料流圖: tensorflow 1.2.02、資料載體:張量   張量:Tensor   稀疏張量:SparseTensor類,以鍵值對的形式表示高維稀疏資料,它包含indices、values

企業運維監控平臺架構設計實現

課程介紹 本課程主要介紹了企業常見的運維監控平臺的構建思路和常用軟體,講述了cacti、nagios、zabbix、ganglia、webnagios等常用監控軟體的差異和優劣,並深入介紹了通過ganglia+nagios如何快速構建一個統一運維監控平臺。 課時列表

馬蜂窩大交通業務監控報警系統架構設計實現

部門的業務線越來越多,任何一個線上執行的應用,都可能因為各種各樣的原因出現問題:比如業務層面,訂單量比上週減少了,流量突然下降了;技術層面的問題,系統出現 ERROR ,介面響應變慢了。拿大交通業務來說,一個明顯的特點是依賴很多供應商的服務,所以我們還需要關注呼叫供應商介面是否出現異常等等。 為了讓大交通下

5G 融合計費系統架構設計實現(一)

  5G 融合計費系統架構設計與實現(一)     隨著5G商用臨近,5G的各個子系統也在加緊研發除錯,本人有興全程參與5G中的融合計費系統(CCS)的設計、開發、聯調工作。接下來將用幾篇文章介紹我們在CCS實現過程遇到的挑戰與架構設計的考量。相信這些寶貴的經驗可以適用於更廣的軟體系統,免於重複

java+Selenium+TestNg搭建自動化測試架構(1)實現代碼和數據的分離

bsp bubuko puts 過去 frame 添加 img 通過 ava 1.主要介紹介紹Java+Selenium+POM的自動化測試框架的搭建,第一個首先實現代碼和賬號URL等信息的分離。第二點支持跨瀏覽器,通過讀取配置文件的方式實現。 1)將賬號URL等

基於WebGIS的Web服務器日誌管理系統設計實現_愛學術——免費下載

富客戶端 平臺 .com 服務器日誌 操作 shu 實現 c51 bsp 【摘要】WebGIS優勢是通過互聯網對地理空間數據進行發布和應用,以實現空間數據的共享和相互操作。將WebGIS和富客戶端技術引入Web服務器日誌管理領域,從總體設計、數據庫設計、實現框架等幾個方面設

基於Web的企業排班管理系統設計實現_愛學術——免費下載

安全 html 快速 開發框架 管理 document 企業 search src 【摘要】隨著我國企業的快速發展,落後的排班方式正日益影響企業的工作效率。本文即探討基於Web的企業排班管理。提出基於SSH開發框架並結合MVC設計模式來開發企業排班管理系統,提高系統的安全性

基於ARM和Linux的嵌入式Web Server設計實現_愛學術——免費下載

重要 image 平臺 服務 linu amp 設計與實現 體系 www. 【摘要】介紹了嵌入式ARM處理器的特點和硬件平臺的設計、嵌入式操作系統的設計,構建了基於嵌入式Web Server的遠程監測系統結構,重點分析了嵌入式TCP/IP協議棧的體系結構、嵌入式Web服務器

認證鑑權API許可權控制在微服務架構中的設計實現

引言: 本文系《認證鑑權與API許可權控制在微服務架構中的設計與實現》系列的第一篇,本系列預計四篇文章講解微服務下的認證鑑權與API許可權控制的實現。 1. 背景 最近在做許可權相關服務的開發,在系統微服務化後,原有的單體應用是基於session的安全許可權方式,不能滿足現有的微服務架構的認