自動化測試面面觀
自動化測試是把以人為驅動的測試行為轉化為機器執(zhí)行的一種過程。通常,在設計了測試用例并通過評審之后,由測試人員根據(jù)測試用例中描述的規(guī)程一步步執(zhí)行測試,得到實際結果與期望結果的比較。在此過程中,為了節(jié)省人力、時間或硬件資源,提高測試效率,便引入了自動化測試的概念。
一、項目測試的自動化
自動化是測試工程師必須掌握的技能,不管是使用自動化測試工具還是開發(fā)自動化測試工具,都是軟件測試發(fā)展的方向,因此測試工程師一定要掌握這方面的技能。
雖然說項目的臨時性特征使得項目不太適合做自動化測試,但是客戶要求我們做自動化測試,況且自動化測試也是軟件測試技術發(fā)展的最終目標,所以有必要學習和運用自動化測試技術,以提高測試的效率。
二、自動化測試面面觀
自動化測試就是指通過測試工具或其他手段,能夠按照預定計劃對軟件系統(tǒng)進行自動的測試。它是軟件測試的一個重要組成部分,它能夠完成許多手工測試無法完成或者難以實現(xiàn)的一些測試工作。
自動化測試是相對于手工測試來說的,所以說只要使用了工具執(zhí)行的測試,都可以稱之為自動化測試。軟件測試自動化涉及到測試流程、測試體系、自動化編譯,以及自動化測試等方面的整合。
現(xiàn)在很多外包項目都要求對系統(tǒng)進行自動化測試,對自動化測試本身的要求也是越來越高。但是在外包項目進行期間,要把自動化測試進行好,需要做好前期的規(guī)劃和技術準備工作。
1.適用情形
可以采用的自動化測試情況有以下幾種:
外包項目周期大于3個月,欲投入資源相對估算的外包項目工作量有余量。
對基本穩(wěn)定的系統(tǒng)進行測試。功能、技術和界面都要不輕易改變,否則維護腳本的代價會超過自動化測試帶來的好處。
系統(tǒng)中有數(shù)據(jù)量大、重復度高的測試。
對于結果可預測的系統(tǒng),如果自動化測試中可驗證的結果不可以預測,那么進行自動化測試的意義不大。
系統(tǒng)人機交互界面能夠被自動化工具所識別,支持自動化腳本錄制。
外包項目管理層要考慮進行自動化測試所要投入的資源,包括是否已經(jīng)具備了自動化測試所需要的流程和方法,自動化測試工具是否具備,是否有測試工程師熟悉自動化技術且具有外包項目經(jīng)驗等。
2.自動化測試優(yōu)勢
自動化測試的優(yōu)勢有如下幾點。
1)自動提高測試質量
軟件開發(fā)的過程就是一個持續(xù)集成和改進的過程,而每一次修改都有可能產(chǎn)生錯誤。因此,當軟件產(chǎn)品的一部分或者全部應用環(huán)境被修改時都需要對軟件產(chǎn)品重新進行測試,其目的是驗證修改后的系統(tǒng)或者產(chǎn)品的質量是否符合規(guī)格說明。例如,對于產(chǎn)品型的軟件來說,每發(fā)布一個新的版本,其中大部分功能與界面都和上一個版本相似或完全相同,這部分功能特別適合于自動化測試。
由于自動測試工具提供了簡便的回歸測試,能以便利的方式驗證是否有新的錯誤進入軟件產(chǎn)品,這樣既節(jié)省了重復手工輸入的工作量,又保證了測試案例的一致性,避免了人為因素的干擾,也可以讓測試達到每個質量特性的目的,從而提高軟件測試的質量。
2)提高測試效率,縮短測試工作時間
軟件系統(tǒng)的規(guī)模越來越大,功能也越來越多,達到幾千個甚至上萬個,因此人工測試非常耗時和煩瑣,這樣必然會導致測試效率低下,而使用自動化測試工具可以較好地執(zhí)行這些頻繁的測試任務。在充分并合理使用了測試工具以后,可以減輕測試工程師的手工測試工作,同時,測試工具還可以把控制和管理引入整個測試過程,從而保證測試的進度。
3)提高測試覆蓋率
通過自動化測試工具的錄制回放及數(shù)據(jù)驅動來測試功能,可以提高測試覆蓋率。通過測試工具的輔助分析功能,可以提高測試的深度。
4)執(zhí)行手工測試不能完成的測試任務
有些非功能性方面的測試(如壓力測試、負載測試、大數(shù)據(jù)量測試、崩潰性測試等)是人工測試不可能實現(xiàn)的。例如,找若干臺電腦和同樣數(shù)目的操作人員在同一時刻進行操作,然后用秒表記錄下反應的時間。這樣的手工作坊式的測試方法不切實際,且無法捕捉程序內部變化的情況。
5)更好地重現(xiàn)軟件缺陷的能力
自動化測試具有更好的一致性和可重復性。由于每次自動化測試運行的腳本是相同的,所以每次執(zhí)行的測試具有一致性,這是人工很難做到的。由于自動化測試具有一致性,因此很容易發(fā)現(xiàn)被測軟件的任何改變。
6)更好地利用資源
理想的自動化測試能夠按計劃完全自動地運行,在開發(fā)人員和測試人員不可能實行三班倒的情況下,自動化測試可以勝任這個任務。例如,完全可以在周末或者晚上的時間執(zhí)行測試。這樣可以充分利用資源,也避免了開發(fā)和測試之間的沖突。
7)增進測試人員與開發(fā)人員之間合作伙伴的關系
測試工程師為了更好地使用自動化測試工具,需要對開發(fā)技術有深入的理解和實踐,因此測試工程師也有了與開發(fā)工程師更多、更平等的交流機會,自動化測試為測試工程師與程序開發(fā)人員協(xié)同工作提供了一個便利的手段,雙方將有更多的合作。
3.自動化測試的局限性
我們應根據(jù)外包項目情況來確定是否采用自動化測試,如下幾種情況不適合進行自動化測試:
定制外包項目。由于這種外包項目周期一般比較短,采用自動化測試需要的投入會超過手工測試的投入。
不穩(wěn)定的軟件由于其不穩(wěn)定因素會導致自動化執(zhí)行失敗,因此不適合進行自動化測試。
周期很短的外包項目。外包項目周期很短,相應的測試周期也很短,因此花大量精力準備的測試腳本不能得到重復的利用。當然,為了某種特定的測試目的專門執(zhí)行的測試任務除外,比如針對特定應用的性能測試等。
業(yè)務規(guī)則復雜的對象。業(yè)務規(guī)則復雜的對象有復雜的邏輯關系和運算關系,工具很難實現(xiàn),或者要實現(xiàn)這些測試過程,需要投入的測試準備時間比直接進行手工測試所需時間更長。
人體感觀與易用性測試。界面的美觀、聲音的體驗、易用性的測試,無法用測試工具來實現(xiàn)。
期望通過自動測試發(fā)現(xiàn)大量缺陷替代人員投入。
涉及物理交互的系統(tǒng)或業(yè)務規(guī)則非常復雜的系統(tǒng)。
【編輯推薦】