自動(dòng)化測試腳本運行控制方法研究
0 引言
本文引用地址:http://dyxdggzs.com/article/86686.htm軟件測試作為保證軟件質(zhì)量和可靠性的關(guān)鍵技術(shù),正日益受到廣泛的重視。而軟件測試自動(dòng)化,已經(jīng)成為國內軟件工程領(lǐng)域受到廣泛關(guān)注的課題。不言而喻,軟件測試從業(yè)者都意識到軟件測試這項工作走向成熟化、標準化的一個(gè)必經(jīng)之路就是要實(shí)施自動(dòng)化測試。
本文結合自動(dòng)化測試框架、創(chuàng )建運行控制點(diǎn)、實(shí)現運行控制機制等技術(shù),設計了一套面向行業(yè)應用的自動(dòng)化測試運行控制方法,很好地解決了自動(dòng)化測試中面臨的腳本運行控制問(wèn)題。
1自動(dòng)化測試流程
1.1自動(dòng)化測試
自動(dòng)化測試就是通過(guò)測試工具或其他手段,按照測試工程師的預定計劃對軟件產(chǎn)品進(jìn)行自動(dòng)的測試,它是軟件測試的一個(gè)重要的組成部分,能夠完成許多手工無(wú)法完成或者難以實(shí)現的一些測試工作。正確、合理地實(shí)施自動(dòng)化測試,能夠快速、全面地對軟件進(jìn)行測試,從而提高軟件質(zhì)量,節省經(jīng)費,縮短產(chǎn)品發(fā)布周期。
1.2自動(dòng)化測試流程
自動(dòng)化測試工具標準流程提供了一套完整的測試流程框架,軟件測試團隊可以以它為基礎,根據業(yè)務(wù)發(fā)展的實(shí)際要求,定制符合團隊使用的軟件測試流程。自動(dòng)化測試工具標準流程中的軟件測試流程如圖1所示。
2行業(yè)應用面臨的運行控制問(wèn)題及對策
2.1面臨問(wèn)題
目前,行業(yè)應用系統越來(lái)越多,這些系統可能包括EPR系統,CRM系統等。這些系統在發(fā)布之前或升級之前都要經(jīng)過(guò)測試,確保主要功能都能正常運行,錯誤最少。如何有效地測試不斷升級和不斷更換應用環(huán)境的應用系統,是每個(gè)公司都會(huì )面臨的問(wèn)題。
同時(shí),目前企業(yè)的網(wǎng)絡(luò )應用環(huán)境都必須支持大量用戶(hù)和不同的軟硬件應用環(huán)境。難以預知的用戶(hù)負載和越來(lái)越復雜的應用環(huán)境使公司時(shí)時(shí)擔心會(huì )發(fā)生用戶(hù)響應速度過(guò)慢、系統崩潰等問(wèn)題。這些問(wèn)題都將不可避免地導致公司收益的損失。
在大型業(yè)務(wù)系統的測試過(guò)程中大都采用了自動(dòng)化測試工具,但是這些工具只提供了測試的基本手段,缺乏-個(gè)可用的自動(dòng)化測試管理框架,導致自動(dòng)化測試往往無(wú)法得到有效的實(shí)施和進(jìn)行。其根本原因是由于自動(dòng)化測試建立在業(yè)務(wù)基礎上,具有強烈的行業(yè)相關(guān)性,而自動(dòng)化測試工具是與業(yè)務(wù)無(wú)關(guān)的,不能自動(dòng)適應各個(gè)行業(yè)具體業(yè)務(wù)需求,測試過(guò)程的實(shí)施還需要大量的人為干預,自動(dòng)化測試的實(shí)施效果往往很難達到人們的預期目標。如何管理好自動(dòng)化測試工具腳本,是測試自動(dòng)化所面臨的一大難題。
2.2方法思路
構建自動(dòng)化測試運行控制平臺,首先需要理解業(yè)務(wù)特點(diǎn),根據自動(dòng)化測試框架,設計測試用例,創(chuàng )建控制點(diǎn),運行測試腳本控制模型,完成自動(dòng)化測試。
自動(dòng)化測試運行控制實(shí)施步驟如下: (1)根據行業(yè)應用自動(dòng)化測試框架,設計測試用例腳本;
(2)向目標腳本中嵌入若干控制點(diǎn),取得控制權;
(3)使用測試管理工具和程序實(shí)現運行控制機制;
3面向行業(yè)應用的軟件測試運行控制方法
3.1自動(dòng)化測試框架
手工測試一般不會(huì )涉及到測試腳本。在自動(dòng)化測試中,需要采用自動(dòng)化測試工具,每種自動(dòng)化測試工具都有自己的測試腳本,通過(guò)編寫(xiě)測試腳本,實(shí)現某個(gè)測試用例,運行測試腳本,既可執行該測試用例,并可以通過(guò)腳本自動(dòng)檢查測試用例的執行結果。
根據行業(yè)應用的諸多復雜特點(diǎn),我們提出構建自動(dòng)化測試框架。根據框架,利用行業(yè)業(yè)務(wù)規則和自動(dòng)化測試腳本語(yǔ)言可以設計測試用例腳本。具體框架如圖2所示。
在軟件自動(dòng)化測試中,涉及到回歸測試?;貧w測試是對同一個(gè)測試用例的不同版本進(jìn)行質(zhì)量檢查評估,是一個(gè)反復迭代的過(guò)程。在這樣一個(gè)過(guò)程中,同一個(gè)業(yè)務(wù)對象在多次測試中反復出現的現象大量存在,測試用例的復用顯得尤為重要。根據自動(dòng)化測試框架,反復迭代可以實(shí)現自動(dòng)化回歸測試,直到測試完畢。
3.2創(chuàng )建運行控制點(diǎn)
為了實(shí)現對測試腳本的運行控制,需要對各個(gè)測試腳本創(chuàng )建運行控制點(diǎn)。而實(shí)現這個(gè)運行控制,需要知道測試腳本運行的人口和出口,根據測試腳本運行的機制對其進(jìn)行控制。具體方法如下:
在理解業(yè)務(wù)規則的基礎之上,根據各個(gè)測試腳本之間的聯(lián)系,創(chuàng )建腳本控制點(diǎn)。在生成的目標腳本中嵌入若干控制點(diǎn)(control point),其位置分別位于測試腳本的入口(前置控制點(diǎn))、出口(后置控制點(diǎn))和內部(內部控制點(diǎn)),其中前置、后置控制點(diǎn)在生成測試用例時(shí)直接置于目標腳本的入口和正常出口,內部控制點(diǎn)則按照需要置于目標腳本一些關(guān)鍵位置:如耗時(shí)無(wú)法預計的語(yǔ)句前,非正常出口等,以便實(shí)施控制。
控制的基本手段是信號燈,信號燈位于創(chuàng )建的中心數據庫(DB)的控制表run_signal中,控制點(diǎn)的基本行為就是檢查自己的信號燈,并對之做出反應??刂泣c(diǎn)通過(guò)DB接口訪(fǎng)問(wèn)控制信號燈??刂泣c(diǎn)只對信號燈做出反應,如果是運行信號,則運行,如果是等待信號,則輪詢(xún)等待,如果是中止信號,則中止運行。前置控制點(diǎn)負責檢查運行條件,運行條件由運行控制系統確定;內置控制點(diǎn)檢查暫停和中止信號;外置控制點(diǎn)則接受信號燈控制指令(用于協(xié)調與其它用例的關(guān)系,例如排隊)。
在自動(dòng)化工具目標腳本中,控制點(diǎn)以工具檢查點(diǎn)的形式實(shí)現。所有的控制點(diǎn)都在運行日志中留一條通過(guò)信息,以便審計。
控制表run_signal結構如下:
3.3實(shí)現運行控制機制
運行控制發(fā)生在測試腳本層面,它針對所有已經(jīng)發(fā)布并且形成測試腳本的用例。分布式環(huán)境下的運行控制通過(guò)圖3實(shí)現。
管理端:管理端用JAVA編寫(xiě),測試用例腳本由測試工程師提交。管理端主要完成以下任務(wù):運行控制的決策系統,負責建立并維護運行隊列,控制運行策略和信號燈;管理端將測試用例集加入運行隊列中。運行隊列中包含所有已經(jīng)提交運行但未運行完成的用例。
執行端:執行端根據管理端的決策系統,來(lái)執行運行隊列中的測試腳本,其中運行控制的執行系統,負責分配測試腳本,并按照指定策略啟動(dòng)腳本等也是執行端的功能;
信號燈組:信號燈組主要描述的是準備運行的測試腳本首先判斷自己的信號燈,其中信號燈的結構在run_signal結構中已經(jīng)給出。通過(guò)對控制點(diǎn)進(jìn)行判斷,來(lái)決定是否運行腳本。主要功能包括:一個(gè)受管理端控制的表,里面有針對不同用例的信號燈;
運行隊列;通過(guò)連接數據庫DB,得到測試腳本排隊表。再根據執行端確定的順序執行自動(dòng)化測試。其中,運行隊列中應包含對運行過(guò)的腳本和未運行的腳本進(jìn)行判斷處理。主要功能包括:由管理端建立的等待運行的測試用例(腳本)排隊,中心數據庫(DB)的表。
表1是工作設計文檔。
運行隊列是可維護的,可以通過(guò)改變某個(gè)用例的狀態(tài)(啟動(dòng)、等待、暫停、掛起)來(lái)控制用例的運行行為,還可以改變(屬于自己的)用例的運行順序。管理員可以對隊列中所有用例的狀態(tài)和順序進(jìn)行調整。運行后的用例加入另一個(gè)隊列(已運行隊列),運行失敗的用例將標記為"失敗"狀態(tài),等待修改或重新啟動(dòng)。
4實(shí)例分析
在大型業(yè)務(wù)系統的測試過(guò)程中,自動(dòng)化測試工具只提供了測試的基本手段,不具有強烈的行業(yè)相關(guān)性。通過(guò)業(yè)務(wù)規則可以生成不同的測試腳本。根據運行控制機制,我們以銀行金融系統"儲蓄用戶(hù)取款"腳本為例說(shuō)明運行控制機制。
4.1問(wèn)題描述
大型金融系統都是基于終端界面的,通過(guò)對UI界面進(jìn)行錄制,生成基于業(yè)務(wù)流程的腳本,進(jìn)行控制管理。
銀行金融系統"儲蓄用戶(hù)取款"描述:儲蓄用戶(hù)輸入賬戶(hù)密碼合法后,先查詢(xún)儲蓄余額,若有余額,則用戶(hù)可以對其進(jìn)行取款操作。若取款金額超過(guò)儲蓄余額,則提示"余額不足";若取款金額小于儲蓄余額,則操作成功。最后用戶(hù)注銷(xiāo)退出。
4.2腳本運行控制
通過(guò)業(yè)務(wù)描述,根據規則和經(jīng)驗,我們創(chuàng )建以下簡(jiǎn)單業(yè)務(wù)測試腳本:
測試腳本A:用戶(hù)登陸>查詢(xún)余額>退出;(用于登陸查詢(xún))
測試腳本B:取款>余額充足>操作成功;(在登陸狀態(tài)下)
測試腳本C:取款>余額不足>操作失??;(在登陸狀態(tài)下)
設計好A、B、C三個(gè)測試腳本后。通過(guò)運行控制平臺,我們可以實(shí)現對腳本的運行控制。在數據庫DB中創(chuàng )建測試腳本排隊表,并創(chuàng )建運行隊列Q。對每個(gè)測試腳本設置自己信號燈,如余額充足條件下,設置腳本B為運行信號等;并通過(guò)管理類(lèi)Mamgerment中創(chuàng )建Lights實(shí)例??梢缘玫揭粋€(gè)儲蓄取款的測試用例運行腳本:
其中,腳本A,B共享腳本A運行過(guò)程中傳遞的登陸帳號和密碼。在運行控制中增加各個(gè)腳本運行的判斷條件,采取不同的路徑完成自動(dòng)化測試。然后用自動(dòng)化測試工具進(jìn)行測試,得到分析結果。
通過(guò)組合各個(gè)基礎測試腳本,可以實(shí)現不同用例采取基礎測試腳本組合而成。這樣可以實(shí)現用例腳本的高可復用性。
5結 論
軟件測試尤其是以自動(dòng)化測試為代表的軟件質(zhì)量保證伴隨著(zhù)行業(yè)應用系統的整個(gè)生命周期。自動(dòng)化測試方法的應用大大提高了軟件測試工作的效率,當然,自動(dòng)化測試也存在著(zhù)一些缺陷:自動(dòng)化測試不能發(fā)現軟件新出現的問(wèn)題,不能根據實(shí)際的情況及時(shí)調整測試流程,而且自動(dòng)化測試腳本的編寫(xiě)和管理工作也是一項比較繁雜的工作。本文就自動(dòng)化測試腳本管理中遇到的問(wèn)題,提出一種運行控制方法。這種方法在一定程度上減輕了測試人員管理自動(dòng)化測試腳本的壓力,增強了腳本的可維護性。
評論