軟件自動化測試的推動力
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時間:[ 2011/10/14 13:49:37 ] 推薦標簽:
誰在推動軟件自動化測試?
做過一個單元測試自動化,我們開發(fā)了近百行的測試代碼去測試一個代碼行為10行的函數(shù);在UI測試自動化,則調(diào)用了IE的COM接口去驅(qū)動IE application,以模擬在界面上的兩個動作,輸入“測所”和點擊“搜索”按鈕,總共9行代碼(如果考慮自動化健壯性的話,還要增加錯誤處理代碼)。
觀察到這些,我們暫且不考慮自動化測試開發(fā)之后的維護,至少可以有一個直觀的認識:從手工測試向自動化測試的轉(zhuǎn)變是要付出的成本的,而且這個投入要遠比做一次手工測試的代價要高,比如,一個有經(jīng)驗的自動化測試開發(fā)人員完成一段健壯的100行左右的測試腳本大概需要左右的時間,而手工完成這個功能點的測試則只需要10分鐘。 VS十分鐘,按理說,這是一個賠本的買賣,但為什么還有這么多的軟件企業(yè)對測試自動化情有獨鐘呢?排除一些盲目跟風,試圖提高測試技術(shù)含金量的情感因素,至少有以下幾個理性的現(xiàn)實驅(qū)動力。
1. 測試自動化主要是做長線投資,而非一時之計
顯而易見地,開發(fā)一個程序,只為了運行一次自動化測試是非常不劃算的。那么要想能收回開發(fā)自動化測試的投資,要盡可能多地運行測試程序,每多運行一次,會多節(jié)省一份手工測試工作量。這個簡單的道理可以說明為什么如今測試自動化應(yīng)用多的是回歸測試階段。由于回歸測試往往是驗證軟件bug的fix或者軟件補丁的有效性,理論上,每一次bug的修復(fù),都需要進行一次全面回歸測試。如下圖所示。
這樣在軟件測試流程里,回歸測試包括在測試分支(Test Branch)上進行的bug驗證測試,還有在發(fā)布分支(Release Branch)上進行的補丁更新測試(在實際的企業(yè)實踐中,發(fā)布分支的更新遠遠比圖中頻繁),這樣回歸測試的重復(fù)性非常高,而且持續(xù)時間長,直到軟件在市場上的退出才結(jié)束。這對于手工測試人員來說,可以說是一個對耐心和毅力的巨大考驗,再美好有趣的事情如果天天重復(fù)去做,而不做任何變化,終也會成為枯燥乏味的代名詞。所以手工測試人員是有愿望通過自動化測試來改變現(xiàn)狀的。這為回歸測試自動化的實施同時提供了主觀的動機和客觀需求。
【案例】:
一些有經(jīng)驗的軟件測試團隊通常會采用一些激勵或游戲規(guī)則來增加回歸測試的趣味性,我曾看過一個TOP500的軟件企業(yè)里的測試部門,每隔一段時間會由高層發(fā)起一個“蟲子打獵”(Bug hunting)的活動,通常在一個不太繁忙的周五午后,通知郵件一發(fā)出,全體部門立即行動,不論職務(wù)高低,不分經(jīng)理,工程師,紛紛赤膊上陣。為了找到獵物,每人都各顯神通,盡可能地設(shè)計一些平時想不到的測試場景去尋找軟件里的bug,但有一個前提條件,是他不能測試自己本來負責的系統(tǒng)模塊,必須去測試別人的而且他不熟悉的的模塊。比如小張是負責測Email的,那他在這次活動中,偏偏要去測試Messenger;測試messenger的小李這次又要去測試calendar,這完全是一個網(wǎng)狀交叉的測試。打獵活動結(jié)束后,高層還要召開“慶功會”,評定出“好的bug”,“有創(chuàng)意的bug”等等稱號,雖然沒有獎金,但是每個獲得榮譽的人都會倍感自豪。而且,對于團隊來說,打獵活動收到成效也是顯著的,是一舉三得的好事情。
第一,交叉測試會找到以往被忽略的bug。
第二,熟悉不同模塊,測試人員將來可以在工作中互為備份。
第三,增強了團隊凝聚力,并激發(fā)對測試工作的熱情。
2. 測試自動化可以隨時觸發(fā)運行
測試自動化一旦開發(fā)完成,可以在任何時間被觸發(fā)運行,而沒有下班或的概念,測試人員完全可以在下班之前觸發(fā)某個自動化開關(guān),把測試任務(wù)移交給自動化腳本,然后經(jīng)過一夜的運行,第二天早上上班來查看自動化測試報告,這是自動化的獨特優(yōu)勢所在。從這個意義上講,測試自動化延伸了手工測試的工作時間和范圍。
3. 測試自動化有助于知識的存儲和移交
這是一個潛在的事實,在以前的手工測試一統(tǒng)天下的時候,測試人員的知識主要是靠文檔存儲,比如測試計劃,測試案例說明書,bug數(shù)據(jù)庫等等。因此,我們看到,當一個測試工程師離職的時候,他會把他的知識以文檔的方式留給原來的團隊。而隨著自動化測試的發(fā)展,這種測試知識的形式也在發(fā)生變化,測試人員的技術(shù)可以通過測試程序保留下來。對整個測試團隊來說,能夠量化共享的知識越多,團隊越穩(wěn)定,受到個體測試人員的影響越少。這是老板愿意看到的場面,因此,從這個角度來說,測試經(jīng)理比測試工程師更有動力去推動軟件測試自動化。
4. 第三方自動化測試工具的使用提高了自動化測試開發(fā)的效率
如果說前三點已經(jīng)講清了自動化測試的合理性動機,那么自動化測試工具的應(yīng)用則為自動化測試實施提供了保障,使得做自動化測試不在那么困難和復(fù)雜,而變得簡單和有效率。
使用Junit來完成案例一
import junit.framework.TestCase;
public class funTest extends TestCase {
protected void setUp() throws Exception {
super.setUp();
}
protected void tearDown() throws Exception {
super.tearDown();
}
public void testFun() throws Throwable {
//調(diào)用被測函數(shù)
int i = Fun(2);
//使用junit提供的assert斷言語句比較結(jié)果
assertTrue(1,i);
}
}
在以上代碼中, funTest類,以及funTest類的setup函數(shù)和teardown函數(shù)(環(huán)境回收工作)是由Junit自動生成的,我們寫的測試程序只有2條語句,其中斷言語句assertTrue會通過比較,給出pass還是fail的結(jié)果報告?梢钥闯,使用Junit工具幫我們減少了自動化測試開發(fā)的工作量。
使用QTP來完成案例二,如下:
使用QTP錄制同樣的google搜索操作,只有兩條語句生成:
Browser(”Google”).Page(”Google”).WebEdit(”q”).Set “測所”
Browser(”Google”).Page(”Google”).WebButton(”Google 搜索”).Click
其中Browser,page,webEdit,webbutton都是QTP提供的對象,操作起來非常直觀方便。
相關(guān)推薦
相關(guān)產(chǎn)品

最新發(fā)布
性能測試之測試環(huán)境搭建的方法
2020/7/21 15:39:32軟件測試是從什么時候開始被企業(yè)所重視的呢?
2020/7/17 9:09:11Android自動化測試框架有哪些?有什么用途?
2020/7/17 9:03:50什么樣的項目適合做自動化?自動化測試人員應(yīng)具備怎樣的能力?
2020/7/17 8:57:06幾大市面主流性能測試工具測評
2020/7/17 8:52:11RPA機器人能夠快速響應(yīng)企業(yè)需求,是怎么做到的?
2020/7/17 8:48:05Bug可以真正消滅嗎?為什么?
2020/7/17 8:43:03軟件測試基本概念是怎么來的?軟件測試生命周期的形成歷經(jīng)了什么?
2020/7/16 9:11:10