最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

一篇文章學(xué)通QTP UFT自動化測試實戰(zhàn)

2023-04-12 15:09 作者:大牛測試技術(shù)  | 我要投稿

? ? ? ?UFT作為一款老牌自動化測試工具,入門相對簡單,在開源自動化工具爆發(fā)的今天,UFT在當今在自動化測試領(lǐng)域仍有一定優(yōu)勢,學(xué)習(xí)UFT可以幫助大家快速建立自動化測試思想,尤其在開發(fā)自動化測試平臺、測試工具過程中,可以根據(jù)UFT提供的設(shè)計思想,為設(shè)計出好的工具提供思路。像現(xiàn)今流行的智能駕駛智能座艙、arm底層測試工具都有UFT身影。本篇通過實例方式幫助大家學(xué)會UFT自動化測試工具,包含重點、難點以及最終的測試框架。

1、基礎(chǔ)使用

  • ? ?? ?錄制腳步功能使用

    首先需打開UFT 選擇Web、NET等常用的控件

1-1 選擇控件

工具欄選擇?

Record->Record and Run Settings 選擇Web程序或者Windows Applications->Recod(開始錄制)


1-2 錄制腳本

? ? ? ??錄制開始后,首先打開”百度”窗口,我們在搜索框中輸入”test”,并“百度一下”錄制的腳本如下:

1-3 錄制百度首頁
  • ?識別不同對象

    Web應(yīng)用:

1-4 識別web控件

腳本如下:

? ?普通C/S系統(tǒng)

1-5 C/S系統(tǒng)

.NET應(yīng)用

1-6 NET應(yīng)用

代碼如下:


2、登錄功能開發(fā)

? 步驟: 先增加對象庫

? ? ? ? 工具欄 Object Spy->Add Object to Respository,對象庫用于保存UI界面元素屬性方法,以下是“Flight”-“l(fā)ogin”-“Agent Name”對象庫,其中Login是登錄界面,Agent Name是登錄框,如下:

1-7 登錄對象庫
1-8 登錄對象庫

注意:以上圖1-7為Login對象屬性,圖1-8為Name對象屬性,寫腳本之前先把界面對象增加到對象庫中,如上:1-8中,Agent Name在對象庫中有兩層,第一層為Login,第二層為Agent Name:,腳本中要先從第一層開始,找到對應(yīng)的Class,Login對應(yīng)的Class->Dialog,Agent Name:對應(yīng)WinEdit

登錄腳本如下:

1-9 登錄腳本

Run之后:Agent Name:中成功輸入“test”,如下圖所示:


圖1-10 登錄運行

基礎(chǔ)加強:以上Login,Agent Name:對應(yīng)的Name值是默認值,也可以在對象框中進行修改:

Login->Flight_Login,Agent Name:->Name:,如下圖所示:

圖1-11 修改屬性值

修改完之后測試腳本會自動修改為:


3、增加訂單

? ? ? 通過上面的學(xué)習(xí),我們學(xué)會了編寫第一個測試腳本,下面繼續(xù)登錄到Flight Reservation中進行增加航班。

表1-1 登錄與增加訂單

步驟: (1)先增加訂單對象增加到對象庫中

圖1-12 訂單對象

(2)、控件類型分析:該流程涉及到text,buttonwincombobox,winlist四種控件。用到Set,GetROProperty,Select,Click方法.可以通過幫助文檔查看每種控件具體用法,以Set為例:

圖1-13 幫助文檔

如:文本框詳細注釋如下

增加訂單功能如下:

:腳本詳解,點擊”ok”之后,跳轉(zhuǎn)到訂單界面,頁面出現(xiàn)需要時間,腳本中加入wait方法,wait之后的腳本便會延遲執(zhí)行;Select是選取值,選第一個值,則用0,選二個,則用1,以此類推;直接點擊按鈕用click;為文本框賦值用set;Type方法是按照字符逐個輸入,而set是一次性賦值。

執(zhí)行完之后”Order No”產(chǎn)生

圖1-14 增加訂單

4、檢查FlyFrom與FlyTo下拉列表值

功能分析:以FlyFrom為例,通過幫助文檔,我們得知用GetItemsCount方法計算下拉框元素總個數(shù),通過For循環(huán)獲取其中某個值,然后與預(yù)期值進行比對。

?腳本如下:

腳本分析:

把預(yù)期值存放于數(shù)組中,用GetItemsCount方法獲取總數(shù),用GetItem獲取FlyFrom列表實際值,由于是從第一個值對應(yīng)Item是0,故For語句總數(shù)要減1,數(shù)組Item也是從零開始,取”Denver”用flyFrom(0),取數(shù)組長度可用ubound方法,如:ubound(flyFrom),msgbox 是以彈出框的形式輸出消息,vbs連接字符串需要用&符號

圖1-15 數(shù)組長度

5、工具欄新增訂單以 File->Open Order為例

首先需要把menu對象增加到對象庫中,有以下兩種方法可打開Open Order…

?方法一: Window("Flight Reservation").WinMenu("Menu").Select "File;Open Order..."

?方法二:Window("Flight Reservation").WinMenu("Menu").Select "<Item 1>;<Item 2>"

圖1-16 工具欄操作

6、對象庫操作

6.1 合并對象庫、對象庫就是儲存QTPObject以及其識別屬性,從而在被測應(yīng)用程序中找到對應(yīng)的唯一的對象,在進行寫腳本之前,需要先增加對象庫Resources->Object Repository,用鼠標點擊Help下方”+”鼠標會變成”手”狀,然后點擊被測程序的UI元素,如點擊Fly From,便會加入到對象庫中.

圖1-17 對象庫

合并對象庫:

如A同學(xué)在對象框中增加了FlyFrom,B同學(xué)在對象框中增加了FlyTo,我們可以把A,B同學(xué)的對象框合并成一個新的對象庫包含F(xiàn)lyFrom與FlyTo?

打開:Object->Object Repository Manager->Tools->Object Repository Merge Tool

圖1-18 合并對象庫

選擇文件并”ok”,通過file-save便可得到合并后的對象庫

圖1-19 新對象庫

6.2 描述性編程

如不使用對象庫,可以用描述性編程:

:如果父級對象使用使用描述性編程,則子級對象必須使用描述性編程,以下兩種寫法都有錯

6.3 GetROPropertySetTOProperty GetTOProperty?

GetROProperty:獲取被測對象的運行時屬性值

SetROProperty:修改運行時被測對象的屬性,

GetTOProperty:取得倉庫對象的某個屬性的值

如:獲取FlyFrom當前值,可用GetROProperty方法,點”+”可以看到更詳細的Name,Value.其中text對應(yīng)的值是”Denver”

圖1-20 GETRO

電“+”增加"text“屬性

圖1-21 text屬性

由上,可以用以下腳本得到FlyFrom當前值

Set?fly?=?Window("Flight Reservation").WinComboBox("Fly From:")
msgbox?fly.GetROProperty("text")

SetTOProperty?增加屬性與屬性值

fly.SetTOProperty?"add","wang"

msgbox?fly.GetTOProperty("add")用GetTOProperty查看對象庫中該屬性值


7、函數(shù)與報告

7.1 vbs中函數(shù)有Function與Sub

FunctionSub,Function可有返回值,Sub沒有

Sub:


圖 7-1 sub

Function:

圖7-2 Function

練習(xí):用函數(shù)重構(gòu)檢查FlyFrom值代碼:

分析:我們可用Set定義FlyFrom對象,如:

Set flyFrom = Window("Flight Reservation").WinComboBox("Fly From:")

定義后求列表框元素總數(shù)可用flyFrom.GetItemsCount

腳本如下:

注釋:定義函數(shù)CompareComobox(obj),其中obj是需要傳遞的FlyFrom對象,函數(shù)內(nèi)部直接用obj代替之前的Window("Flight Reservation").WinComboBox("Fly From:"),調(diào)用函數(shù)時直接把fly作為參數(shù)傳遞過去便好。

7.2 報告

UFT自帶測試報告Reporter方法

Reporter.ReportEvent EventStatus, ReportStepName, Details, [ImageFilePath]?

EventStatus有四種狀態(tài)0,1,2,3分別對應(yīng)micPass,micFail,micDone,micWarnging

例:用micPass,micFail重構(gòu)檢查FlyFrom下拉框值,腳本如下:

圖7-3 測試報告

注:ImageFilePath可以不要,輸出時采用obj.GetItem(i)&"is right"方便查看是哪邊出錯,在"is right" is前應(yīng)增加一個空格,便不會與前面字符連接在一起:obj.GetItem(i)&" is right"

QTP在運行結(jié)束后,不讓它立即產(chǎn)生測試報告:

Tools-Options-Run sessions-View results 變?yōu)?strong>uncheck

配置Configure選項可以產(chǎn)生不同形式測試報告HTML,Doc,Pdf


圖7-4 報告模版
圖7-5 HTML格式生存

7.3 開啟應(yīng)用程序

打開flight程序:

圖7-6 打開應(yīng)用

打開瀏覽器


8.數(shù)據(jù)驅(qū)動

8.1 自帶databable應(yīng)用舉例

? ?DataTable("Col", dtLocalSheet)

?? DataTable("Col", dtGlobalSheet)

?? dtLocalSheet就是當前ActionDataTabledtGlobalSheet就是GlobalDataTable,Col是列名

?? DataTable("Col", "Action2")

列名值不可為數(shù)字,特殊字符,否則會報錯

圖8-1 datable

?DataTable(1, 1) 獲取Global,第1列元素數(shù)據(jù)

圖8-2 global

獲取Action1,第1列元素數(shù)據(jù)

?? 循環(huán)獲取下一行

8.2 導(dǎo)入導(dǎo)出

8.3 實戰(zhàn)datatable重構(gòu)檢查FlyFrom:

步驟把預(yù)期值貼入datatable中


圖8-3 fly值

首先要循環(huán)讀出flyFrom這一列值:

法一:File-Setting-Run-Run on all rows

用以下腳本

圖8-4 設(shè)置datatable

選擇Run one iteration only 或者Run from row 1 to row 1

用以下腳本:

:以上兩種方法都可以循環(huán)讀取flyFrom這一列值,重構(gòu)如下:

注:把數(shù)組直接改為datatable,并在Next語句之前加上datatable.SetNextRow讓datatable讀取下一行數(shù)值

8.4 動態(tài)數(shù)組與字典

Datatable中值我們也可以存放于動態(tài)數(shù)組或者字典中,然后再調(diào)用,重構(gòu)如下:

法一:動態(tài)數(shù)組

注:該函數(shù)返回值直接為數(shù)組類型,僅需要用ubound求出數(shù)組長度,便可遍歷該數(shù)組

法二:字典

:對datatable可以不適用字典或動態(tài)數(shù)組,直接適用便可,這里只是順便介紹存儲數(shù)據(jù)的方法.字典是Key-value 數(shù)據(jù)格式,其中Key必須是唯一的,用Add方法把數(shù)據(jù)增加到字典中,如上腳本輸出的key以及對應(yīng)的value值。

9. Excel操作

注:以上腳本把讀取excel值存放于動態(tài)數(shù)組中,該函數(shù)以數(shù)組形式返回,第一個參數(shù)是excel存放路徑,第二個位工作薄名字,第三個為第幾列.讀者可以根據(jù)以下方法進行重構(gòu)檢查FlyFrom元素值,調(diào)用該方法:

寫excel:

調(diào)用該函數(shù): 調(diào)用完之后Sheet2中第一行第一列被寫入值test

9-1 寫excel

10、外部文件

10.1對外部vbs文件操作

之前演示的函數(shù),我們都存放于同一個腳本文件中,下面介紹幾種方法直接調(diào)用外部文件:

把CompareComobox函數(shù)拷貝到com.vbs文件中

10-1 vbs文件

(1)關(guān)聯(lián)函數(shù)File->Settings->Resources增加com.vbs函數(shù)

10-2 關(guān)聯(lián)函數(shù)

增加完成后運行報錯:

這是由于數(shù)組放于腳本文件中,沒有作為變量傳遞過來,找不到數(shù)組原因,

法一:把數(shù)組也拷貝到該函數(shù)中

法二:函數(shù)增加一個參數(shù),用于傳遞數(shù)組

修改后執(zhí)行成功

(2)用ExecuteFile執(zhí)行

注:ExecuteFile后可直接用vbs存放路徑,也可以把com.vbs文件放solution下

用相對路徑:ExecuteFile?"com.vbs"

(3) 用LoadFunctionLibrary

10.2 對dll文件操作

用C#編寫Add方法

Set var_CreateInstance = DotNetFactory.CreateInstance(“類","dll路徑")

10-3 動態(tài)庫

11、框架篇

?(1)啟動UFT

:該方法是通過QTP自身接口AOM對象啟動QTP,該腳本只能存放于vbs文件中,然后雙擊文件,QTP便會啟動執(zhí)行腳本工程

?(2)? 代碼加載對象庫

去掉對象庫后,直接運行

Window("Flight Reservation").WinComboBox("Fly From:").Select(3)會報錯


圖11-1 對象庫

?RepositoriesCollection.Add加載對象庫正常執(zhí)行,直接引用tsr文件路徑

視頻課程以及框架請關(guān)注公眾號“大牛測試”





















?? ??








一篇文章學(xué)通QTP UFT自動化測試實戰(zhàn)的評論 (共 條)

分享到微博請遵守國家法律
九台市| 旬阳县| 庄河市| 惠东县| 宣化县| 简阳市| 建宁县| 平果县| 资兴市| 定日县| 凤阳县| 保山市| 珲春市| 新蔡县| 南川市| 万安县| 白山市| 墨江| 玉田县| 项城市| 邹城市| 新郑市| 漳浦县| 丰镇市| 丘北县| 西乌珠穆沁旗| 朝阳区| 桂阳县| 棋牌| 黑河市| 桑日县| 灵寿县| 西乌珠穆沁旗| 敦煌市| 沅江市| 灵璧县| 台东县| 洮南市| 岚皋县| 韶山市| 织金县|