為何要開展自動(dòng)化測試?手工測試與自動(dòng)化測試相比孰優(yōu)孰劣呢?本節(jié)針對該問題展開論述與講解。
測試工作中,往往需要面對很多問題。經(jīng)??梢月牭綔y試工程師的抱怨,其抱怨內(nèi)容大體如下:
那如何將測試工程師從繁雜的測試工作中解脫出來?如何體現(xiàn)測試工程師的價(jià)值,發(fā)揮測試工程師的特長?又如何將測試結(jié)果精確到秒呢?
上述問題均可以通過自動(dòng)化測試來解決,一方面提高了測試的工作效率,另一方面可以通過自動(dòng)化測試體現(xiàn)測試工程師的能力,改變眾人對測試工作的觀點(diǎn)。
既然自動(dòng)化測試可以彌補(bǔ)手工測試的一些不足,并能體現(xiàn)測試工程師的價(jià)值,那何為自動(dòng)化測試?它又具備哪些特性?
自動(dòng)化測試即借助于測試工具、依照測試規(guī)范,從局部或全部代替人工進(jìn)行測試以及提高測試效率的過程。其具備如下主要特征:
相對于手工測試,自動(dòng)化測試可概括為如下幾點(diǎn):
自動(dòng)化測試既然有如此大的優(yōu)勢,那手工測試是否可以退出測試舞臺呢?首先,,讓我們思考幾個(gè)問題。通過對如下問題的討論,來解答讀者的疑問。
測試的主要目的是通過發(fā)現(xiàn)缺陷、解決缺陷來提高軟件質(zhì)量。通常,測試的執(zhí)行需要依賴測試用例。而測試工作中執(zhí)行測試用例的通用方法往往是手工運(yùn)行測試用例。假想一下,如果某個(gè)測試用例被自動(dòng)化,則首先應(yīng)對自動(dòng)化后腳本的正確性進(jìn)行測試。
據(jù)統(tǒng)計(jì)數(shù)據(jù)顯示:手動(dòng)測試可以發(fā)現(xiàn)80%以上的缺陷,而自動(dòng)測試只能發(fā)現(xiàn)20%左右的缺陷。這恰恰反映出自動(dòng)化測試源于手工測試,且只是替代人工的重復(fù)性勞動(dòng)。
自動(dòng)化測試(工具)只能判斷實(shí)際結(jié)果與期望結(jié)果之間的差異。因此,在自動(dòng)化測試過程中,測試任務(wù)就演變?yōu)轵?yàn)證實(shí)際結(jié)果與期望結(jié)果的一致性。而測試的目的是提高測試的質(zhì)量。因此通過手動(dòng)測試,測試質(zhì)量更高一些。
自動(dòng)化測試比手動(dòng)測試更"脆弱"。軟件開發(fā)過程中,部分功能的改變,也有可能使自動(dòng)化測試崩潰。而由于自動(dòng)化測試比手工測試開銷大,并且需要不斷的維護(hù),這也限制了自動(dòng)化測試的開展。
自動(dòng)化測試工具畢竟是軟件,工具只可按預(yù)訂指令執(zhí)行。而自動(dòng)化測試工具和測試者都可以按指令執(zhí)行一組測試,但人擁有思想,可以按不同的方式、不同的思維完成相同的任務(wù)。
例如:測試工程師運(yùn)行測試用例(或測試場景),執(zhí)行測試執(zhí)行過程中,經(jīng)常需檢查實(shí)際輸出是否正確。此時(shí),即使軟件實(shí)際輸出與期望輸出一致,軟件也有可能存在缺陷,測試者可以判斷,而測試工具則不可。測試者可以發(fā)揮其想象力和創(chuàng)造力改進(jìn)測試用例(或測試場景),而測試工具只有呆板的執(zhí)行。
通過以上四個(gè)問題的討論,可以得出結(jié)論:手動(dòng)測試不會(huì)退出歷史舞臺,其有存在的價(jià)值。同時(shí),手動(dòng)測試比測試工具的優(yōu)越性還有很多,手動(dòng)測試可以靈活的處理意外事件。例如,網(wǎng)絡(luò)連接中斷時(shí),手動(dòng)測試就可以盡可能快地解決問題,然而這樣的意外事件卻可以讓自動(dòng)測試的執(zhí)行終止。
以上,1.1.2和1.1.3小節(jié)分別闡述了自動(dòng)化測試與手動(dòng)測試存在的必要性,那么在測試工作中,何時(shí)引入自動(dòng)化測試呢?自動(dòng)化測試又有哪些優(yōu)勢呢?下面通過以下幾節(jié),逐一揭示。
什么時(shí)候適合開展自動(dòng)化測試呢?
測試工作中,被測軟件(或系統(tǒng))需要多個(gè)版本的迭代。根據(jù)公司(或項(xiàng)目)的不同,版本發(fā)布的時(shí)間也存在差異。
開展自動(dòng)化測試之前,首先需依照測試用例,對被測功能模塊展開手動(dòng)測試。當(dāng)手動(dòng)測試執(zhí)行通過后,使用自動(dòng)化測試工具,將手動(dòng)測試的操作過程錄制下來,并將正確的結(jié)果進(jìn)行保存(被稱為期望結(jié)果)。由于自動(dòng)化測試工具記錄的為關(guān)鍵性功能模塊,被測軟件(系統(tǒng))的下一版本發(fā)布后,該模塊仍應(yīng)進(jìn)行測試。
在軟件新版本的測試中,啟動(dòng)自動(dòng)化測試工具,運(yùn)行前面錄制好的自動(dòng)化測試腳本。對比實(shí)際運(yùn)行后的結(jié)果與預(yù)期結(jié)果,如不一致,則確定為缺陷;如一致,則認(rèn)為該功能模塊在新的版本中測試通過。
到此,可以得出一條結(jié)論:自動(dòng)化測試,適合在被測軟件(或系統(tǒng))版本相對穩(wěn)定后開展。如軟件版本相對不太穩(wěn)定,則會(huì)造成使用自動(dòng)化測試工具錄制的腳本在新的版本中回放失敗,這樣既浪費(fèi)人力,又浪費(fèi)時(shí)間。
自動(dòng)化測試的開展究竟能給測試工作帶來哪些改進(jìn),帶來哪些突破與欣喜呢?其實(shí),自動(dòng)化測試的特點(diǎn)即能夠很好的概括自動(dòng)化測試的優(yōu)勢。其主要特點(diǎn)如下:
不可否認(rèn),軟件測試有時(shí)確實(shí)是繁雜且重復(fù)性較高的工作。關(guān)鍵性功能模塊要在不斷迭代的測試版本中重復(fù)的測試,而這些工作,隨著軟件測試版本的迭代將一直持續(xù)下去。當(dāng)開展自動(dòng)化測試后,即可通過自動(dòng)化工具來替代這些重復(fù)性工作。大大縮減回歸測試的工作量與壓力,有效提高工作效率,縮短回歸測試的時(shí)間。
自動(dòng)化測試深入開展后,將不再是簡簡單單的錄制與回放,自動(dòng)化測試將優(yōu)化錄制的測試腳本,大大提高腳本的靈活性與交互性。自動(dòng)化測試錄制后生成腳本,腳本中包含錄制過程中生成的操作與數(shù)據(jù)。測試工作中,需用不同的測試數(shù)據(jù)覆蓋不同的測試路徑來滿足不同的測試場景。
因此,數(shù)據(jù)維護(hù)將是一個(gè)繁雜的工作。可以將數(shù)據(jù)與錄制的自動(dòng)化腳本剝離,用外部數(shù)據(jù)源管理測試數(shù)據(jù),而測試腳本只負(fù)責(zé)測試流程的組織。這樣,就可以大大提高自動(dòng)化測試的靈活性與可持續(xù)性。
后續(xù)自動(dòng)化測試工作中,還可開發(fā)UI界面,使用UI驅(qū)動(dòng)自動(dòng)化測試腳本。增加自動(dòng)化測試交互性。
自動(dòng)化測試可以執(zhí)行一些手工測試難以達(dá)到或不可能實(shí)施的測試。例如,測試工作的執(zhí)行要精確到秒;模擬大量用戶同時(shí)對某一個(gè)功能點(diǎn)展開測試。這些工作都是手動(dòng)測試無法實(shí)現(xiàn)或很難達(dá)到的。而開展自動(dòng)化測試后,很容易實(shí)現(xiàn)這些測試需求。
將繁雜重復(fù)的測試任務(wù)實(shí)現(xiàn)自動(dòng)化,可以提高準(zhǔn)確性和工作效率,提高測試工程師的工作積極性。將測試工程師從繁雜重復(fù)的工作中解脫出來,投入更多精力到其他的測試工作中(如測試質(zhì)量),這更有利于測試質(zhì)量的提高。在實(shí)際工作中,有些測試場景是僅適合于手動(dòng)測試的,測試工程師可以專注于手動(dòng)測試部分,提高手動(dòng)測試的效率。
1.1.4小節(jié)中提到,并非任何手動(dòng)測試都適合用自動(dòng)化測試來替代。究竟哪些場合適合開展自動(dòng)化測試呢?
哪些場合又不適合開展自動(dòng)化測試呢?
當(dāng)前,很多企業(yè)或管理者期望借助軟件測試自動(dòng)化作為催化劑,提高效率、提高質(zhì)量,同時(shí),節(jié)省開支。甚至有些企業(yè)希望實(shí)施自動(dòng)化測試后,就能夠給企業(yè)帶來效益。
在此,可以肯定的是自動(dòng)化測試已經(jīng)在很多領(lǐng)域成功實(shí)施,也有很多成功案例給了企業(yè)希望,并且這些企業(yè)成功實(shí)施自動(dòng)化測試后,確實(shí)節(jié)省了相當(dāng)可觀的費(fèi)用。而不幸的是,也有很多失敗的案例,即使在看到光鮮的成功案例背后,也有失望與失敗的過程。身邊也有很多企業(yè)不止一次嘗到了自動(dòng)化測試失敗的滋味?;ň拶Y購買自動(dòng)化軟件,被擱置,努力化為了泡影。失敗的結(jié)果不僅僅造成了人力、物力的損失,更是直接給公司帶來了經(jīng)濟(jì)上的損失。
測試自動(dòng)化實(shí)施前期需要考慮很多因素,人力、物力、財(cái)力都是需要認(rèn)真考慮與規(guī)劃的。自動(dòng)化測試在整個(gè)測試周期中何時(shí)開展,哪些測試工作可以由自動(dòng)化測試替代,這些都需要在開始部署自動(dòng)化測試前,認(rèn)真的思考。影響自動(dòng)化測試效率的因素,不單單是大家看到可量化的測試工作,還有許多無形的因素影響著自動(dòng)化測試,如測試組織的部署等。因此,在真正實(shí)施前一定要認(rèn)真規(guī)劃和考慮自動(dòng)化測試實(shí)施方案。
自動(dòng)化測試的實(shí)施過程,完全不同于手動(dòng)測試。自動(dòng)化測試用例與手工測試用例也大不相同。自動(dòng)化測試實(shí)施過程中,需要不斷的開發(fā)與維護(hù)腳本,因此對測試人員能力有很高的要求。
自動(dòng)化測試實(shí)施前,需要認(rèn)真分析與規(guī)劃測試方案,計(jì)算自動(dòng)化測試的成本。自動(dòng)化測試成本包括以下幾方面:
只有合理的規(guī)劃自動(dòng)化成本,站在全局角度考慮自動(dòng)化的成本與收益,方可增加自動(dòng)化方案成功實(shí)施的可能性。
聯(lián)系客服