自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

GUI自動化測試原理剖析

開發(fā) 測試 自動化
一般是指軟件測試的自動化,軟件測試就是在預(yù)設(shè)條件下運行系統(tǒng)或應(yīng)用程序,評估運行結(jié)果,預(yù)先條件應(yīng)包括正常條件和異常條件。本文主要介紹就是JAVA篇自動化測試,來看本文。

 

序言:接觸過自動化測試工具的測試人員,例如,Rational fuction teste,QTP等,一定對“錄制—回放”這種機制不陌生吧,但是又有多少人能夠了解其內(nèi)部大概的運行機制呢?更又有多少人能從代碼級別及其框架去分析其運作原理呢?

我一直覺得,你不理解它,你就無法用好它,更別說去拓展它成一個框架或者平臺了。

它,在錄制時,是怎么獲取對象的?可以不通過錄制的方式獲得對象嗎?

它,在回放時,是采用調(diào)用什么方式進行回放的?可以通過API或者自己編寫代碼使其錄制的腳本進行回放嗎?

自己如何去編寫一個簡單的“錄制—回放”工具呢?

那么,今天就大概根據(jù)自己的簡單介紹一下這種機制,希望能夠幫助大家一起真正走入一個自動化測試的“大門”。

一、工具如何實現(xiàn)錄制和回放

首先大概介紹一下自動化測試工具實現(xiàn)錄制和回放的兩種方法,其重點是對象的識別。

1、靜態(tài)映射:當(dāng)錄制時,通過ObjectMap,將需要識別的JAVA應(yīng)用程序的組件對象映射進對象庫,然后,回放時,RFT首先根據(jù)正在運行的JAVA程序到對象庫去查找相應(yīng)的對象,若匹配到對應(yīng)屬性閾值適合的對象,則調(diào)用其腳本中的方法對對象執(zhí)行操作。

一般的工具在工具與AUT之間都有一個代理,這個代理就是包裹著實際要測試的界面的控件,而ObjectMap是腳本層面的東西,它們之間存在一個映射關(guān)系。RFT通過代理與AUT進行交互。

需要明白的是,由于swing組件的樹形結(jié)構(gòu)關(guān)系,因此,ObjectMap中的映射出來的對象也是采用這種形式,雖然RFT中可以通過自己設(shè)置識別閾值的方式,但是對界面更改的適應(yīng)能力還是不高。

2、動態(tài)搜索:應(yīng)用動態(tài)搜索就可以不需要采用錄制的方式了,而且也不需要對象庫的方式,它是直接通過調(diào)用工作庫中的API來定制相應(yīng)的組件屬性進行查找即可;回放時,自動化測試工具會獲取正在運行的JAVA程序的各個組件屬性,然后進行屬性匹配,若是能夠匹配到相應(yīng)符合的屬性,則會進行腳本規(guī)定的方法操作;

所以,應(yīng)用動態(tài)搜索的方式,雖然在識別效率上降低了,但是其識別能力大大提高,界面如何變化,只要屬性值不變,就沒有太大問題,這也是為什么需要開發(fā)在開發(fā)JAVA程序的時候,盡量在屬性值里添加一個唯一的識別屬性ID了,這樣做的目的可以使自動化測試更好的開展,這也可以作為以后各位的一個DFT需求了。

二、錄制和回放的原理

經(jīng)過了第一環(huán)節(jié)的介紹,大家對自動化測試工作實現(xiàn)錄制和回放的兩種方式大概有所了解,但是深層次是怎么樣的呢?

借用關(guān)于JAVA的事件生命周期的一幅圖片來說明:

JAVA的事件生命周期

測試人員通過對界面的操作會生成一系列的事件,這些事件在工具的代碼中會由事件生成后放在系統(tǒng)事件隊列內(nèi)部?,F(xiàn)在事件處于事件分發(fā)線程的控制下。事件在隊列中等待處理,然后事件從事件隊列中選出,送到dispatchEvent()方法,dispatchEvent()方法調(diào)用processEvent()方法并將事件的一個引用傳遞給processEvent()方法。此刻,系統(tǒng)會查看是否有送出事件的位置,如果沒有這種事件類型相應(yīng)的已經(jīng)注冊的監(jiān)聽器,或者如果沒有任何組件受到激活來接收事件類型,事件就被拋棄。

錄制時,采用了監(jiān)聽器模式,和平常swing編程不同的是,這里的監(jiān)聽器不是針對某個組件的,而是針對某種事件的。也就是說,任何組件發(fā)出的同一類型的事件,比如鼠標(biāo)或者鍵盤事件,都會被其相應(yīng)的監(jiān)聽器捕獲到,然后進行處理。然后將捕獲到的JAVA事件,可以以某種格式保存在腳本文件中,這里就需要一個轉(zhuǎn)換機制了。

回放時,則從腳本文件讀取并還原事件,這里會用到j(luò)ava.awt.Robot類(JDK1.3之后引入的一個類,能模擬鼠標(biāo)和鍵盤操作),這個類通常用來在自動化測試或程序演示中模擬系統(tǒng)事件,這個類主要的目的就是為方便的實現(xiàn)java的GUI自動化測試平臺。在事件回放時,我們同樣需要該類來模擬生成系統(tǒng)的事件,完成記錄的操作的回放

三、Gui自動化測試的簡單框架架構(gòu)

GUI

1、類加載器或者應(yīng)用程序加載器,則是去加載相應(yīng)的應(yīng)用程序或者主類,這樣可以指定需要測試的應(yīng)用程序。

2、事件監(jiān)聽器,則是對應(yīng)用程序所產(chǎn)生的各種事件的一個監(jiān)聽機制,可以通過拓展不同的事件監(jiān)聽來獲得不同的事件。

3、腳本解析器,包括腳本記錄器與腳本讀取器兩個模塊,一個可以從監(jiān)聽器中獲得事件的有效信息并記錄,可以指定記錄到生成相應(yīng)腳本。一個可以從本地腳本文件或文本域中讀取腳本信息,并解釋成相應(yīng)事件。

4、Robot類再封裝,即是一個模擬回放器,將從腳本解析器解析過來的代碼通過調(diào)用Rboot類進行模擬鼠標(biāo)和鍵盤的一系列操作。

一個GUI自動化測試框架的基本架構(gòu)大概就是這樣,如果有興趣的朋友可以深入研究,因為商業(yè)化的自動化測試工作實現(xiàn)的架構(gòu)比這個要復(fù)雜一些,但原理基本還是一樣的。

WEB與WIN32等界面自動化測試的原理架構(gòu)大致也是如此,不過實現(xiàn)方式還是很不一樣的,關(guān)鍵是調(diào)用的庫方式不一樣,具體在以后可以一起討論。

四、選擇一種合適的自動化測試方案

所以根據(jù)以上架構(gòu)和原理,在自動化測試項目開展過程中

1、有資源和人力的情況下,可以考慮自己去開發(fā)一個簡單的自動化測試工具,這樣的好處是靈活,能夠很好的與自身的產(chǎn)品結(jié)合起來,缺點就是耗費資源太大,而且開發(fā)自動化測試工具不一定能好用。

2、可以結(jié)合相應(yīng)的開源自動化測試工具(例如:測試swing的可以用abbot),這種方式優(yōu)點就是免費而且實現(xiàn)也有一定的基礎(chǔ),缺點就是其功能不一定滿足其需求。

3、采用商業(yè)性的自動化測試工作(例如:RFT),這種方式的優(yōu)點是成熟度高,而且能很快的應(yīng)用到項目中,但是注意的是需要自己去搭建一個框架,個人建議,應(yīng)用RFT的話最好直接應(yīng)用其API去拓展一個自己的庫,通過自己的庫去搭建一個適應(yīng)自己需求的框架,這個在后期會介紹。

總之:各種方案的實行方式還是得具體根據(jù)項目的需求來,需求才是導(dǎo)向,而且個人根據(jù)經(jīng)驗:不要為了做自動化而自動化,不要去為了做自動化而迷戀入技術(shù)而不可自拔,一定要在適當(dāng)?shù)臅r候采用適當(dāng)?shù)姆绞?,步步為進。真心希望大家都能做好自動化測試。

版權(quán)聲明:本文出自 散步的SUN 的51Testing軟件測試博客:http://www.51testing.com/?382641

【編輯推薦】

  1. 整體思考自動化測試發(fā)展和價值回報
  2. 談自動化測試框架思想與構(gòu)建
  3. 軟件自動化測試在功能測試中的應(yīng)用
  4. 自動化測試面面觀
  5. 如何評估自動化測試工作量
責(zé)任編輯:于鐵 來源: 51Testing軟件測試博客
相關(guān)推薦

2012-03-29 10:57:12

Web自動化測試

2022-02-17 10:37:16

自動化開發(fā)團隊預(yù)測

2012-02-27 17:34:12

Facebook自動化

2021-09-03 09:56:18

鴻蒙HarmonyOS應(yīng)用

2013-05-16 10:58:44

Android開發(fā)自動化測試

2014-04-16 14:15:01

QCon2014

2011-12-23 17:09:57

自動化測試

2021-06-30 19:48:21

前端自動化測試Vue 應(yīng)用

2012-12-24 22:54:31

2024-11-01 15:05:12

2014-11-20 13:49:15

2023-03-27 15:37:43

自動化測試開發(fā)

2011-01-20 10:17:25

ibmdwWeb

2011-05-30 17:31:26

自動化測試

2022-06-08 14:22:55

自動化測試測試

2022-05-10 11:18:42

自動化測試軟件測試

2009-08-19 09:00:48

單元測試框架自動化測試

2021-06-25 10:57:30

前端自動化測試開發(fā)

2021-06-26 07:40:21

前端自動化測試Jest

2022-02-16 09:01:13

iOSS開發(fā)XCode
點贊
收藏

51CTO技術(shù)棧公眾號