新聞中心

EEPW首頁 > 測試測量 > 設(shè)計(jì)應(yīng)用 > 自動(dòng)化測試腳本運(yùn)行控制方法研究

自動(dòng)化測試腳本運(yùn)行控制方法研究

作者:張少博,羅省賢 時(shí)間:2008-08-06 來源:電子測試 收藏

  0 引言

本文引用地址:http://butianyuan.cn/article/86686.htm

  作為保證軟件質(zhì)量和可靠性的關(guān)鍵技術(shù),正日益受到廣泛的重視。而,已經(jīng)成為國內(nèi)軟件工程領(lǐng)域受到廣泛關(guān)注的課題。不言而喻,從業(yè)者都意識(shí)到軟件測試這項(xiàng)工作走向成熟化、標(biāo)準(zhǔn)化的一個(gè)必經(jīng)之路就是要實(shí)施測試。

  本文結(jié)合測試框架、創(chuàng)建運(yùn)行控制點(diǎn)、實(shí)現(xiàn)運(yùn)行控制機(jī)制等技術(shù),設(shè)計(jì)了一套面向行業(yè)應(yīng)用的自動(dòng)化測試運(yùn)行控制方法,很好地解決了自動(dòng)化測試中面臨的腳本運(yùn)行控制問題。

  1自動(dòng)化測試流程

  1.1自動(dòng)化測試

  自動(dòng)化測試就是通過測試工具或其他手段,按照測試工程師的預(yù)定計(jì)劃對(duì)軟件產(chǎn)品進(jìn)行自動(dòng)的測試,它是軟件測試的一個(gè)重要的組成部分,能夠完成許多手工無法完成或者難以實(shí)現(xiàn)的一些測試工作。正確、合理地實(shí)施自動(dòng)化測試,能夠快速、全面地對(duì)軟件進(jìn)行測試,從而提高軟件質(zhì)量,節(jié)省經(jīng)費(fèi),縮短產(chǎn)品發(fā)布周期。
 
  1.2自動(dòng)化測試流程

  自動(dòng)化測試工具標(biāo)準(zhǔn)流程提供了一套完整的測試流程框架,軟件測試團(tuán)隊(duì)可以以它為基礎(chǔ),根據(jù)業(yè)務(wù)發(fā)展的實(shí)際要求,定制符合團(tuán)隊(duì)使用的軟件測試流程。自動(dòng)化測試工具標(biāo)準(zhǔn)流程中的軟件測試流程如圖1所示。


  2行業(yè)應(yīng)用面臨的運(yùn)行控制問題及對(duì)策

  2.1面臨問題

  目前,行業(yè)應(yīng)用系統(tǒng)越來越多,這些系統(tǒng)可能包括EPR系統(tǒng),CRM系統(tǒng)等。這些系統(tǒng)在發(fā)布之前或升級(jí)之前都要經(jīng)過測試,確保主要功能都能正常運(yùn)行,錯(cuò)誤最少。如何有效地測試不斷升級(jí)和不斷更換應(yīng)用環(huán)境的應(yīng)用系統(tǒng),是每個(gè)公司都會(huì)面臨的問題。

  同時(shí),目前企業(yè)的網(wǎng)絡(luò)應(yīng)用環(huán)境都必須支持大量用戶和不同的軟硬件應(yīng)用環(huán)境。難以預(yù)知的用戶負(fù)載和越來越復(fù)雜的應(yīng)用環(huán)境使公司時(shí)時(shí)擔(dān)心會(huì)發(fā)生用戶響應(yīng)速度過慢、系統(tǒng)崩潰等問題。這些問題都將不可避免地導(dǎo)致公司收益的損失。

  在大型業(yè)務(wù)系統(tǒng)的測試過程中大都采用了自動(dòng)化測試工具,但是這些工具只提供了測試的基本手段,缺乏-個(gè)可用的自動(dòng)化測試管理框架,導(dǎo)致自動(dòng)化測試往往無法得到有效的實(shí)施和進(jìn)行。其根本原因是由于自動(dòng)化測試建立在業(yè)務(wù)基礎(chǔ)上,具有強(qiáng)烈的行業(yè)相關(guān)性,而自動(dòng)化測試工具是與業(yè)務(wù)無關(guān)的,不能自動(dòng)適應(yīng)各個(gè)行業(yè)具體業(yè)務(wù)需求,測試過程的實(shí)施還需要大量的人為干預(yù),自動(dòng)化測試的實(shí)施效果往往很難達(dá)到人們的預(yù)期目標(biāo)。如何管理好自動(dòng)化測試工具腳本,是測試自動(dòng)化所面臨的一大難題。

  2.2方法思路

  構(gòu)建自動(dòng)化測試運(yùn)行控制平臺(tái),首先需要理解業(yè)務(wù)特點(diǎn),根據(jù)自動(dòng)化測試框架,設(shè)計(jì)測試用例,創(chuàng)建控制點(diǎn),運(yùn)行測試腳本控制模型,完成自動(dòng)化測試。

  自動(dòng)化測試運(yùn)行控制實(shí)施步驟如下: (1)根據(jù)行業(yè)應(yīng)用自動(dòng)化測試框架,設(shè)計(jì)測試用例腳本;
  (2)向目標(biāo)腳本中嵌入若干控制點(diǎn),取得控制權(quán);
  (3)使用測試管理工具和程序?qū)崿F(xiàn)運(yùn)行控制機(jī)制;

  3面向行業(yè)應(yīng)用的軟件測試運(yùn)行控制方法

  3.1自動(dòng)化測試框架

  手工測試一般不會(huì)涉及到測試腳本。在自動(dòng)化測試中,需要采用自動(dòng)化測試工具,每種自動(dòng)化測試工具都有自己的測試腳本,通過編寫測試腳本,實(shí)現(xiàn)某個(gè)測試用例,運(yùn)行測試腳本,既可執(zhí)行該測試用例,并可以通過腳本自動(dòng)檢查測試用例的執(zhí)行結(jié)果。

  根據(jù)行業(yè)應(yīng)用的諸多復(fù)雜特點(diǎn),我們提出構(gòu)建自動(dòng)化測試框架。根據(jù)框架,利用行業(yè)業(yè)務(wù)規(guī)則和自動(dòng)化測試腳本語言可以設(shè)計(jì)測試用例腳本。具體框架如圖2所示。

  在軟件自動(dòng)化測試中,涉及到回歸測試?;貧w測試是對(duì)同一個(gè)測試用例的不同版本進(jìn)行質(zhì)量檢查評(píng)估,是一個(gè)反復(fù)迭代的過程。在這樣一個(gè)過程中,同一個(gè)業(yè)務(wù)對(duì)象在多次測試中反復(fù)出現(xiàn)的現(xiàn)象大量存在,測試用例的復(fù)用顯得尤為重要。根據(jù)自動(dòng)化測試框架,反復(fù)迭代可以實(shí)現(xiàn)自動(dòng)化回歸測試,直到測試完畢。

  3.2創(chuàng)建運(yùn)行控制點(diǎn)

  為了實(shí)現(xiàn)對(duì)測試腳本的運(yùn)行控制,需要對(duì)各個(gè)測試腳本創(chuàng)建運(yùn)行控制點(diǎn)。而實(shí)現(xiàn)這個(gè)運(yùn)行控制,需要知道測試腳本運(yùn)行的人口和出口,根據(jù)測試腳本運(yùn)行的機(jī)制對(duì)其進(jìn)行控制。具體方法如下:

  在理解業(yè)務(wù)規(guī)則的基礎(chǔ)之上,根據(jù)各個(gè)測試腳本之間的聯(lián)系,創(chuàng)建腳本控制點(diǎn)。在生成的目標(biāo)腳本中嵌入若干控制點(diǎn)(control point),其位置分別位于測試腳本的入口(前置控制點(diǎn))、出口(后置控制點(diǎn))和內(nèi)部(內(nèi)部控制點(diǎn)),其中前置、后置控制點(diǎn)在生成測試用例時(shí)直接置于目標(biāo)腳本的入口和正常出口,內(nèi)部控制點(diǎn)則按照需要置于目標(biāo)腳本一些關(guān)鍵位置:如耗時(shí)無法預(yù)計(jì)的語句前,非正常出口等,以便實(shí)施控制。

  控制的基本手段是信號(hào)燈,信號(hào)燈位于創(chuàng)建的中心數(shù)據(jù)庫(DB)的控制表run_signal中,控制點(diǎn)的基本行為就是檢查自己的信號(hào)燈,并對(duì)之做出反應(yīng)??刂泣c(diǎn)通過DB接口訪問控制信號(hào)燈。控制點(diǎn)只對(duì)信號(hào)燈做出反應(yīng),如果是運(yùn)行信號(hào),則運(yùn)行,如果是等待信號(hào),則輪詢等待,如果是中止信號(hào),則中止運(yùn)行。前置控制點(diǎn)負(fù)責(zé)檢查運(yùn)行條件,運(yùn)行條件由運(yùn)行控制系統(tǒng)確定;內(nèi)置控制點(diǎn)檢查暫停和中止信號(hào);外置控制點(diǎn)則接受信號(hào)燈控制指令(用于協(xié)調(diào)與其它用例的關(guān)系,例如排隊(duì))。

  在自動(dòng)化工具目標(biāo)腳本中,控制點(diǎn)以工具檢查點(diǎn)的形式實(shí)現(xiàn)。所有的控制點(diǎn)都在運(yùn)行日志中留一條通過信息,以便審計(jì)。

  控制表run_signal結(jié)構(gòu)如下:
 

  3.3實(shí)現(xiàn)運(yùn)行控制機(jī)制

  運(yùn)行控制發(fā)生在測試腳本層面,它針對(duì)所有已經(jīng)發(fā)布并且形成測試腳本的用例。分布式環(huán)境下的運(yùn)行控制通過圖3實(shí)現(xiàn)。

  管理端:管理端用編寫,測試用例腳本由測試工程師提交。管理端主要完成以下任務(wù):運(yùn)行控制的決策系統(tǒng),負(fù)責(zé)建立并維護(hù)運(yùn)行隊(duì)列,控制運(yùn)行策略和信號(hào)燈;管理端將測試用例集加入運(yùn)行隊(duì)列中。運(yùn)行隊(duì)列中包含所有已經(jīng)提交運(yùn)行但未運(yùn)行完成的用例。

  執(zhí)行端:執(zhí)行端根據(jù)管理端的決策系統(tǒng),來執(zhí)行運(yùn)行隊(duì)列中的測試腳本,其中運(yùn)行控制的執(zhí)行系統(tǒng),負(fù)責(zé)分配測試腳本,并按照指定策略啟動(dòng)腳本等也是執(zhí)行端的功能;

  信號(hào)燈組:信號(hào)燈組主要描述的是準(zhǔn)備運(yùn)行的測試腳本首先判斷自己的信號(hào)燈,其中信號(hào)燈的結(jié)構(gòu)在run_signal結(jié)構(gòu)中已經(jīng)給出。通過對(duì)控制點(diǎn)進(jìn)行判斷,來決定是否運(yùn)行腳本。主要功能包括:一個(gè)受管理端控制的表,里面有針對(duì)不同用例的信號(hào)燈;

  運(yùn)行隊(duì)列;通過連接數(shù)據(jù)庫DB,得到測試腳本排隊(duì)表。再根據(jù)執(zhí)行端確定的順序執(zhí)行自動(dòng)化測試。其中,運(yùn)行隊(duì)列中應(yīng)包含對(duì)運(yùn)行過的腳本和未運(yùn)行的腳本進(jìn)行判斷處理。主要功能包括:由管理端建立的等待運(yùn)行的測試用例(腳本)排隊(duì),中心數(shù)據(jù)庫(DB)的表。

  表1是工作設(shè)計(jì)文檔。

  運(yùn)行隊(duì)列是可維護(hù)的,可以通過改變某個(gè)用例的狀態(tài)(啟動(dòng)、等待、暫停、掛起)來控制用例的運(yùn)行行為,還可以改變(屬于自己的)用例的運(yùn)行順序。管理員可以對(duì)隊(duì)列中所有用例的狀態(tài)和順序進(jìn)行調(diào)整。運(yùn)行后的用例加入另一個(gè)隊(duì)列(已運(yùn)行隊(duì)列),運(yùn)行失敗的用例將標(biāo)記為"失敗"狀態(tài),等待修改或重新啟動(dòng)。

  4實(shí)例分析

  在大型業(yè)務(wù)系統(tǒng)的測試過程中,自動(dòng)化測試工具只提供了測試的基本手段,不具有強(qiáng)烈的行業(yè)相關(guān)性。通過業(yè)務(wù)規(guī)則可以生成不同的測試腳本。根據(jù)運(yùn)行控制機(jī)制,我們以銀行金融系統(tǒng)"儲(chǔ)蓄用戶取款"腳本為例說明運(yùn)行控制機(jī)制。

  4.1問題描述

  大型金融系統(tǒng)都是基于終端界面的,通過對(duì)UI界面進(jìn)行錄制,生成基于業(yè)務(wù)流程的腳本,進(jìn)行控制管理。

  銀行金融系統(tǒng)"儲(chǔ)蓄用戶取款"描述:儲(chǔ)蓄用戶輸入賬戶密碼合法后,先查詢儲(chǔ)蓄余額,若有余額,則用戶可以對(duì)其進(jìn)行取款操作。若取款金額超過儲(chǔ)蓄余額,則提示"余額不足";若取款金額小于儲(chǔ)蓄余額,則操作成功。最后用戶注銷退出。

  4.2腳本運(yùn)行控制

  通過業(yè)務(wù)描述,根據(jù)規(guī)則和經(jīng)驗(yàn),我們創(chuàng)建以下簡單業(yè)務(wù)測試腳本:

  測試腳本A:用戶登陸>查詢余額>退出;(用于登陸查詢)
  測試腳本B:取款>余額充足>操作成功;(在登陸狀態(tài)下)
  測試腳本C:取款>余額不足>操作失敗;(在登陸狀態(tài)下)

  設(shè)計(jì)好A、B、C三個(gè)測試腳本后。通過運(yùn)行控制平臺(tái),我們可以實(shí)現(xiàn)對(duì)腳本的運(yùn)行控制。在數(shù)據(jù)庫DB中創(chuàng)建測試腳本排隊(duì)表,并創(chuàng)建運(yùn)行隊(duì)列Q。對(duì)每個(gè)測試腳本設(shè)置自己信號(hào)燈,如余額充足條件下,設(shè)置腳本B為運(yùn)行信號(hào)等;并通過管理類Mamgerment中創(chuàng)建Lights實(shí)例??梢缘玫揭粋€(gè)儲(chǔ)蓄取款的測試用例運(yùn)行腳本:

  其中,腳本A,B共享腳本A運(yùn)行過程中傳遞的登陸帳號(hào)和密碼。在運(yùn)行控制中增加各個(gè)腳本運(yùn)行的判斷條件,采取不同的路徑完成自動(dòng)化測試。然后用自動(dòng)化測試工具進(jìn)行測試,得到分析結(jié)果。

  通過組合各個(gè)基礎(chǔ)測試腳本,可以實(shí)現(xiàn)不同用例采取基礎(chǔ)測試腳本組合而成。這樣可以實(shí)現(xiàn)用例腳本的高可復(fù)用性。

  5結(jié) 論

  軟件測試尤其是以自動(dòng)化測試為代表的軟件質(zhì)量保證伴隨著行業(yè)應(yīng)用系統(tǒng)的整個(gè)生命周期。自動(dòng)化測試方法的應(yīng)用大大提高了軟件測試工作的效率,當(dāng)然,自動(dòng)化測試也存在著一些缺陷:自動(dòng)化測試不能發(fā)現(xiàn)軟件新出現(xiàn)的問題,不能根據(jù)實(shí)際的情況及時(shí)調(diào)整測試流程,而且自動(dòng)化測試腳本的編寫和管理工作也是一項(xiàng)比較繁雜的工作。本文就自動(dòng)化測試腳本管理中遇到的問題,提出一種運(yùn)行控制方法。這種方法在一定程度上減輕了測試人員管理自動(dòng)化測試腳本的壓力,增強(qiáng)了腳本的可維護(hù)性。



關(guān)鍵詞: 軟件測試 自動(dòng)化 JAVA

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉