成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

GUI自動化測試原理剖析

開發 測試 自動化
一般是指軟件測試的自動化,軟件測試就是在預設條件下運行系統或應用程序,評估運行結果,預先條件應包括正常條件和異常條件。本文主要介紹就是JAVA篇自動化測試,來看本文。

 

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

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

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

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

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

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

一、工具如何實現錄制和回放

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

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

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

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

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

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

二、錄制和回放的原理

經過了第一環節的介紹,大家對自動化測試工作實現錄制和回放的兩種方式大概有所了解,但是深層次是怎么樣的呢?

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

JAVA的事件生命周期

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

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

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

三、Gui自動化測試的簡單框架架構

GUI

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

2、事件監聽器,則是對應用程序所產生的各種事件的一個監聽機制,可以通過拓展不同的事件監聽來獲得不同的事件。

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

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

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

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

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

所以根據以上架構和原理,在自動化測試項目開展過程中

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

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

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

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

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

【編輯推薦】

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

2012-03-29 10:57:12

Web自動化測試

2022-02-17 10:37:16

自動化開發團隊預測

2012-02-27 17:34:12

Facebook自動化

2021-09-03 09:56:18

鴻蒙HarmonyOS應用

2013-05-16 10:58:44

Android開發自動化測試

2014-04-16 14:15:01

QCon2014

2011-12-23 17:09:57

自動化測試

2021-06-30 19:48:21

前端自動化測試Vue 應用

2012-12-24 22:54:31

2024-11-01 15:05:12

2014-11-20 13:49:15

2023-03-27 15:37:43

自動化測試開發

2011-05-30 17:31:26

自動化測試

2011-01-20 10:17:25

ibmdwWeb

2022-06-08 14:22:55

自動化測試測試

2022-05-10 11:18:42

自動化測試軟件測試

2021-06-25 10:57:30

前端自動化測試開發

2009-08-19 09:00:48

單元測試框架自動化測試

2021-06-26 07:40:21

前端自動化測試Jest

2022-02-16 09:01:13

iOSS開發XCode
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 黄色网址av | 午夜影院在线观看 | 日韩免费视频一区二区 | 成人深夜福利 | 一区二区精品视频 | 婷婷成人在线 | 久久成人精品视频 | 久久久久久久久久毛片 | 天天做日日做 | 一区二区三区精品视频 | 国产精品久久久久久久久久免费看 | 中文字幕视频在线免费 | 精品成人69xx.xyz | 综合一区 | 久久久久久久网 | 一区二区视频 | 日韩在线视频免费观看 | 国产小u女发育末成年 | 欧美成人自拍 | 成人片免费看 | 国产免费福利小视频 | 国产婷婷| 色婷婷综合网 | 激情视频中文字幕 | 亚洲日韩中文字幕一区 | av在线免费看网址 | 草草视频在线观看 | 欧美三级网站 | 日日欧美| 久久成人一区二区三区 | 日韩国产一区二区三区 | 欧美日韩电影一区二区 | 久久久精品一区 | 日本小电影在线 | 日韩av在线一区二区三区 | 国产免费一区二区三区网站免费 | 一区二区中文 | 色综合久久伊人 | 天天澡天天狠天天天做 | 成人在线一区二区三区 | 在线中文字幕第一页 |