• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      軟件自動(dòng)化測(cè)試框架設(shè)計(jì)與實(shí)踐

      2013-07-23 03:51:50汪邦慧
      衛(wèi)星電視與寬帶多媒體 2013年11期
      關(guān)鍵詞:配置文件測(cè)試數(shù)據(jù)腳本

      汪邦慧

      我們這里說軟件測(cè)試框架是軟件自動(dòng)化測(cè)試的整體解決方案,是一組自動(dòng)化測(cè)試的規(guī)范、測(cè)試腳本的基礎(chǔ)代碼,以及測(cè)試思想、慣例的集合,所有這一切的出發(fā)點(diǎn)是為了減少冗余代碼、提高代碼生產(chǎn)率、提高代碼重用性和可維護(hù)性, 保證自動(dòng)化測(cè)試的高效率和高收益。

      自動(dòng)化測(cè)試框架一般可以分為上下兩個(gè)層次,上層是管理整個(gè)自動(dòng)化測(cè)試的開發(fā),執(zhí)行以及維護(hù)。它可以管理整個(gè)自動(dòng)測(cè)試,包括自動(dòng)化測(cè)試用例執(zhí)行的次序、測(cè)試腳本的維護(hù)、以及集中管理測(cè)試用例、測(cè)試報(bào)告和測(cè)試任務(wù)等。下層主要是測(cè)試腳本的開發(fā),充分的使用相關(guān)的測(cè)試工具,構(gòu)建測(cè)試驅(qū)動(dòng),并完成測(cè)試業(yè)務(wù)邏輯。

      1.1 自動(dòng)化關(guān)鍵技術(shù)簡(jiǎn)介

      自動(dòng)化測(cè)試的核心就是對(duì)象識(shí)別技術(shù)。腳本錄制的主要目的是采集對(duì)象信息并生成相應(yīng)的腳本?;胤诺倪^程就是根據(jù)這些信息進(jìn)行對(duì)象的識(shí)別和執(zhí)行相應(yīng)的腳本。

      對(duì)象識(shí)別本質(zhì)是根據(jù)關(guān)鍵屬性來確認(rèn)對(duì)象,然后在該對(duì)象上執(zhí)行相應(yīng)的操作。如下圖所示:

      1.2 自動(dòng)化測(cè)試框架的作用

      ●減少冗余代碼、提高代碼生產(chǎn)率、提高代碼重用性和可維護(hù)性。提高開發(fā)速度,提升測(cè)試代碼的執(zhí)行效率。

      ●提高軟件代碼質(zhì)量,同時(shí)引入重構(gòu)概念,讓代碼更干凈和富有彈性。

      1.3 自動(dòng)化測(cè)試框架的主要類型

      ●數(shù)據(jù)驅(qū)動(dòng)測(cè)試框架

      數(shù)據(jù)驅(qū)動(dòng)測(cè)試是測(cè)試腳本從數(shù)據(jù)文件(數(shù)據(jù)池,CVS文件,Excel文件等)中讀取輸入和輸出數(shù)值并載入到錄制的或手工編寫的腳本變量中的一種框架。在這種框架里,輸入數(shù)值和輸出數(shù)值都使用變量。測(cè)試數(shù)據(jù)包含在數(shù)據(jù)文件里而不是在腳本中被硬編碼。不同的數(shù)據(jù)文件對(duì)應(yīng)不同的測(cè)試用例。在這種模式下數(shù)據(jù)和腳本分離,腳本的利用率、可維護(hù)性大大提高。

      ●關(guān)鍵字驅(qū)動(dòng)或表格驅(qū)動(dòng)測(cè)試測(cè)試框架

      關(guān)鍵字驅(qū)動(dòng)和表格驅(qū)動(dòng)測(cè)試在是數(shù)據(jù)驅(qū)動(dòng)基礎(chǔ)之上,進(jìn)一步提高自動(dòng)化測(cè)試的靈活性和擴(kuò)展性的框架解決方案。在關(guān)鍵字驅(qū)動(dòng)框架下,除了要設(shè)計(jì)應(yīng)用程序的測(cè)試數(shù)據(jù)表,還要生成一個(gè)關(guān)鍵字?jǐn)?shù)據(jù)表。這個(gè)關(guān)鍵字包含了程序的特性,或者是有關(guān)程序的操作。

      基于UI功能的自動(dòng)化測(cè)試

      圖形用戶界面(Graphical User InterFace, GUI)就是使用圖像,輸入的文字,帶有圖標(biāo)的計(jì)算機(jī)界面。GUI可以讓用戶通過圖標(biāo)和鼠標(biāo)與計(jì)算機(jī)進(jìn)行交互,而不是在命令行中輸入文本。 一般來說,應(yīng)用程序(包括桌面程序和web應(yīng)用)有一些基本的界面控件, 如窗口, 消息對(duì)話框, 菜單, 按鈕, 復(fù)選框, 組合框, 列表框, 文本輸入框, 組選框, 樹形視圖, 瀏覽器, 日期選擇控件等。它們有些是屬于Windows桌面應(yīng)用程序, 有些是屬于Web DOM對(duì)象。

      所有軟件的指令都通過這些控件以事件或消息的形式傳遞給后臺(tái)處理程序。自動(dòng)化測(cè)試腳本的開發(fā)過程就是一個(gè)工具模擬人工操作的過程。人員要通過工具去操作(錄制), 工具要能“學(xué)習(xí)”并掌握這個(gè)過程(對(duì)界面控件的識(shí)別能力),最終能夠獨(dú)立完成測(cè)試(回放)。

      2.1 利用HTML DOM編程接口實(shí)現(xiàn)UI自動(dòng)化測(cè)試

      HTML DOM(HTML Document Object Model)文檔對(duì)象模型定義了訪問和處理HTML文檔的標(biāo)準(zhǔn)方法。所有的WEB瀏覽器都內(nèi)嵌了DOM解析技術(shù),包括IE和FireFox等。要改變頁面的某個(gè)元素或節(jié)點(diǎn),瀏覽器中的JavaScript就需要獲得文檔中所有元素進(jìn)行訪問來獲得每個(gè)對(duì)象的入口。這個(gè)入口,連同對(duì)HTML元素進(jìn)行添加, 移動(dòng), 改變或移除的方法和屬性,都是通過文檔對(duì)象模型來獲得的(DOM)。

      我們來看下,如何用HTML DOM接口來實(shí)現(xiàn)在百度的首頁(見下圖)上完成自動(dòng)搜索。

      “文本輸入框”源碼:

      “百度一下按鈕”源碼:

      如果想通過DOM接口來完成自動(dòng)搜索的過程,則VBScript代碼如下。以下代碼保存在VBS文件里, 雙擊運(yùn)行。

      Set WshShell=WScript.CreateObject("WScript.Shell")

      Set ie=CreateObject("internetexplorer.application")

      ie.visible=1

      ie.navigate("http://www.baidu.com")

      Do while (ie.busy=True)

      wscript.sleep 1000

      Loop

      Set docRoot=ie.Document

      docRoot.getElementById("kw").value="163"

      docRoot.getElementById("su").click

      DOM對(duì)象接口就是對(duì)WEB UI實(shí)施自動(dòng)化測(cè)試的技術(shù)基礎(chǔ), 理論上,只要獲得DOM的根節(jié)點(diǎn),依次遍歷,就可以對(duì)根下所有的對(duì)象進(jìn)行操作了。但它的缺點(diǎn)是過于低層,需要自動(dòng)化測(cè)試開發(fā)人員對(duì)DOM非常的精通,而且要開發(fā)大量的遍歷函數(shù),才能完成一個(gè)基本功能的操作。

      2.2 QTP測(cè)試工具

      QTP(Quick Test Professional)是HP公司提供的自動(dòng)化測(cè)試工具,其腳本語言為VBScript, 目前最新版本為11。 主要為GUI自動(dòng)化測(cè)試提供解決方案。 QTP提供了VB Object, Windows Object, Web Object等對(duì)象接口, 生成的VB Script腳本好具有可讀性好,面向?qū)ο蟮葍?yōu)點(diǎn)。

      使用QTP錄制百度搜索的操作, 生成的腳本如下:

      QTP在錄制的過程中, 捕捉頁面上的元素,錄制生成了4個(gè)QTP對(duì)象(如下圖)。這些對(duì)象以樹狀的組織形式存儲(chǔ)在QTP的對(duì)象庫里。每個(gè)對(duì)象的屬性存儲(chǔ)了此對(duì)象的相關(guān)信息,對(duì)象的層次關(guān)系代表對(duì)象在界面上的隸屬關(guān)系,即DOM的層次關(guān)系。

      當(dāng)腳本回放時(shí), QTP會(huì)從對(duì)象庫中讀出對(duì)象的屬性, 按對(duì)象層次結(jié)構(gòu), 依次與頁面上的各個(gè)元素進(jìn)行比較。如果匹配成功則執(zhí)行QTP腳本里的動(dòng)作, 完成回放, 否則,腳本將會(huì)報(bào)錯(cuò), 停止運(yùn)行。

      因此,可以看出QTP是在HTML DOM的基礎(chǔ)上封閉了一套強(qiáng)大的QTP對(duì)象, 使得用戶對(duì)DOM的操作更加直觀和方便。

      2.3 QC簡(jiǎn)介

      QC(Quality Center)是HP公司的一個(gè)基于 Web 且支持測(cè)試管理的所有必要方面的應(yīng)用程序。QC測(cè)試流程包括四個(gè)階段(指定需求,計(jì)劃測(cè)試,運(yùn)行測(cè)試,跟蹤缺陷)。

      指定需求階段, 您可以創(chuàng)建一個(gè)“需求樹”,用于定義您的總體測(cè)試需求, 針對(duì)需求樹中的每個(gè)需求主題, 創(chuàng)建詳細(xì)的測(cè)試需求列表; 計(jì)劃測(cè)試階段, 創(chuàng)建“測(cè)試計(jì)劃樹”, 向計(jì)劃樹中添加每個(gè)測(cè)試的基本定義, 對(duì)于確定要自動(dòng)化測(cè)試的, 使用測(cè)試工具創(chuàng)建測(cè)試腳本; 運(yùn)行測(cè)試階段, 計(jì)劃測(cè)試執(zhí)行并將任務(wù)分配給測(cè)試人員, 自動(dòng)或手動(dòng)執(zhí)行測(cè)試集中的測(cè)試;跟蹤缺陷階段, 可以添加缺陷,查看新缺陷, 修復(fù)打開的缺陷。

      QTP + QC + 測(cè)試數(shù)據(jù)管理工具 框架實(shí)例

      測(cè)試管理平臺(tái): 管理腳本的開發(fā);管理腳本的執(zhí)行;管理腳本的維護(hù);管理測(cè)試的任務(wù); 管理測(cè)試的報(bào)告

      Quick Test Professional (QTP):讀取測(cè)試數(shù)據(jù)及全局環(huán)境變量;生成測(cè)試腳本 (對(duì)象識(shí)別); 執(zhí)行測(cè)試腳本 (腳本回放);報(bào)告測(cè)試結(jié)果

      測(cè)試數(shù)據(jù)管理工具(JAVA):從數(shù)據(jù)庫提取自動(dòng)化測(cè)試數(shù)據(jù);將測(cè)試數(shù)據(jù)存入測(cè)試數(shù)據(jù)管理文件;多線程并發(fā)提取數(shù)據(jù)

      Excel(測(cè)試數(shù)據(jù)驅(qū)動(dòng)): 保存測(cè)試數(shù)據(jù) (輸入?yún)?shù));保存測(cè)試結(jié)果 (輸出參數(shù))

      XML(全局環(huán)境配置): 保存全局環(huán)境變量

      構(gòu)建測(cè)試數(shù)據(jù)文件實(shí)例

      建立外部測(cè)試數(shù)據(jù)文件(Test_Data.xls)。QTP腳本需要從此配置文件里讀取測(cè)試數(shù)據(jù),需要將輸出參數(shù)寫回該配置文件。實(shí)現(xiàn)腳本與測(cè)試數(shù)據(jù)的分離。

      此數(shù)據(jù)文件包含三張表(General, SQL, Other)。 第一張表(General)存放全局性的配置信息(如數(shù)據(jù)庫連接串,站點(diǎn)URL,是否“下載測(cè)試時(shí)所需動(dòng)態(tài)鏈接庫文件”標(biāo)志等);第二張表(SQL)存放所有QTP腳本需要讀取的測(cè)試數(shù)據(jù)和需要保存的輸出參數(shù);第三張表(Other)保存一些其它的信息。一般情況下腳本開發(fā)人員需要使用“SQL”表。在該表內(nèi)定義輸入?yún)?shù)的名稱(供腳本讀取),定義輸出參數(shù)的名稱(供腳本寫入),相應(yīng)的SQL(供腳本運(yùn)行此SQL,從DB里自動(dòng)獲取測(cè)試數(shù)據(jù))。如下面的圖片所示:

      管理測(cè)試數(shù)據(jù)工具研發(fā)實(shí)例

      通常對(duì)于大型項(xiàng)目的回歸測(cè)試來說, 一般自動(dòng)化測(cè)試數(shù)據(jù)比較多;有的時(shí)候,測(cè)試數(shù)據(jù)需要實(shí)時(shí)從數(shù)據(jù)庫里提取, 這時(shí)候就需要有方法在啟動(dòng)腳本前能夠快速的準(zhǔn)備好測(cè)試數(shù)據(jù),因?yàn)镼TP本身對(duì)多線程支持的不是很好,所以可能需要開發(fā)另外的多線程的工具來支持快速的獲取測(cè)試數(shù)據(jù)。這很重要,不然手工維護(hù)大量的測(cè)試數(shù)據(jù)將會(huì)是令人沮喪的一件工作。

      可以將該配置文件存于MQC的固定路徑下(自動(dòng)化回歸測(cè)試腳本\通用\下載全局配置文件),在QC里建立測(cè)試集的時(shí)候,“下載全局配置文件”腳本應(yīng)該首先被選中運(yùn)行,腳本運(yùn)行后,該配置文件將被下載到測(cè)試機(jī)上(c:\temp\目錄)供QTP使用。

      研發(fā)工具工作流程的基本思路為:讀取測(cè)試數(shù)據(jù)配置文件(Excel) → 加載配置文件中的SQL語句到內(nèi)存 →查詢SQL需要連接的數(shù)據(jù)庫的類型 →連接對(duì)應(yīng)的數(shù)據(jù)庫(并發(fā)) → 執(zhí)行SQL查詢(并發(fā)) → 返回查詢結(jié)果(并發(fā)) →將結(jié)果寫入數(shù)據(jù)配置文件(Excel)→關(guān)閉數(shù)據(jù)庫連接、關(guān)閉系統(tǒng)文件連接

      腳本的復(fù)用實(shí)例

      為提高QTP腳本的復(fù)用度, 盡可能將常用功能以函數(shù)庫的形式提供出來,或二次封裝常用的函數(shù)接口以方便調(diào)用,或編寫常用的Action供別的腳本調(diào)用?;旧峡梢詫⒋a大致分成三類,如下圖所示:

      6.1 構(gòu)建底層庫函數(shù)實(shí)例

      6.2 構(gòu)建公共庫模塊腳本實(shí)例

      “登錄腳本”:用于登錄系統(tǒng)

      “退出腳本”: 該腳本用于退出系統(tǒng)

      “獲取訂單腳本”: 該腳本用于從頁面獲取訂單號(hào)

      腳本規(guī)范實(shí)例

      ●在腳本最前面加上基本信息: IE版本,QTP版本,項(xiàng)目名稱,腳本編寫人, 腳本創(chuàng)建時(shí)間,腳本修改時(shí)間,修改說明,輸入?yún)?shù),輸出參數(shù),功能描述, 調(diào)用庫函數(shù)說明,調(diào)用共享對(duì)象庫說明,調(diào)用場(chǎng)景恢復(fù)文件說明,調(diào)用存在的Action說明,更改默認(rèn)Action的名稱,業(yè)務(wù)流程說明,其它說明。舉例如上。

      ●輸入,輸出參數(shù): 原則上,所有的輸入?yún)?shù)需要定義在配置文件內(nèi)(Test_Data.xls)供腳本讀??; 所有的輸出參數(shù)需要保存入配置文件內(nèi)(Test_Data.xls)供其它腳本視需要讀取。

      ●檢驗(yàn)點(diǎn): 一般情況,腳本里應(yīng)該需要加上必要的校驗(yàn)點(diǎn); 業(yè)務(wù)完成后,需要在頁面上對(duì)業(yè)務(wù)結(jié)果進(jìn)行校驗(yàn); 有訂單產(chǎn)生的,需要在數(shù)據(jù)庫里校驗(yàn)訂單是否竣工。

      ●常量命名規(guī)范: 常量的命名應(yīng)該全部用大寫,使用"_"作為單詞間的分隔符,單詞盡量使用全名稱. 如: Public Const MSG_EMPTY_ROW As String = "有空行存在"。

      ●變量命名規(guī)范: 變量命名大小寫:盡量使用錯(cuò)落有致的大小寫字母命名變量,錯(cuò)誤的命名如STRNAME,正確的命名如strName.用標(biāo)志性的前綴來指明一個(gè)變量的數(shù)據(jù)類型,如:strName, intQuantity, blnFound, dteNow, objCurrent。如果是一般的臨時(shí)性變量定義,應(yīng)該盡可能地簡(jiǎn)單 (如for循環(huán):for i=0 to 5).

      ●參數(shù)命名規(guī)范: 參數(shù)命名的原則是全部用小寫,如果參數(shù)包括兩個(gè)或兩個(gè)以上的單詞時(shí),首單詞字母小寫,其他單詞首字母大寫,如stepName、stepDescription。

      ●函數(shù)命名規(guī)范: 動(dòng)詞+名詞,動(dòng)詞必須小寫,后面的名稱首字母大寫,如getMaterialCode; 當(dāng)函數(shù)名稱不足以表達(dá)其功能時(shí),應(yīng)使用在函數(shù)頭部加上讓調(diào)用者足夠明白的注釋。

      ●縮進(jìn): 必須嚴(yán)格執(zhí)行縮進(jìn),變量聲明塊不縮進(jìn),實(shí)現(xiàn)塊必須保證全部縮進(jìn); 對(duì)于基本的控制結(jié)構(gòu)來說,必須要有縮進(jìn),如IF、DO、WITH、FOR、WHILE塊。

      猜你喜歡
      配置文件測(cè)試數(shù)據(jù)腳本
      酒駕
      提示用戶配置文件錯(cuò)誤 這樣解決
      安奇奇與小cool 龍(第二回)
      搭建簡(jiǎn)單的Kubernetes集群
      互不干涉混用Chromium Edge
      測(cè)試數(shù)據(jù)管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
      忘記ESXi主機(jī)root密碼怎么辦
      數(shù)據(jù)庫系統(tǒng)shell腳本應(yīng)用
      快樂假期
      基于自適應(yīng)粒子群優(yōu)化算法的測(cè)試數(shù)據(jù)擴(kuò)增方法
      八宿县| 莎车县| 韶山市| 金昌市| 安塞县| 长宁县| 花垣县| 栖霞市| 西吉县| 罗平县| 邳州市| 镇巴县| 闸北区| 砚山县| 阜宁县| 古蔺县| 通化市| 恩施市| 文水县| 夏邑县| 阿巴嘎旗| 邹平县| 海安县| 阳江市| 晋州市| 台安县| 临清市| 萨迦县| 临西县| 肇源县| 屏南县| 滨州市| 盱眙县| 临安市| 屏东市| 大同县| 沧州市| 秦皇岛市| 锡林郭勒盟| 清原| 莱州市|