自動(dòng)化測(cè)試(AT)與探索性測(cè)試(ET)
自動(dòng)化測(cè)試是把以人為驅(qū)動(dòng)的測(cè)試行為轉(zhuǎn)化為機(jī)器執(zhí)行的一種過程。通常,在設(shè)計(jì)了測(cè)試用例并通過評(píng)審之后,由測(cè)試人員根據(jù)測(cè)試用例中描述的規(guī)程一步步執(zhí)行測(cè)試,得到實(shí)際結(jié)果與期望結(jié)果的比較。在此過程中,為了節(jié)省人力、時(shí)間或硬件資源,提高測(cè)試效率,便引入了自動(dòng)化測(cè)試的概念。
前提條件
實(shí)施自動(dòng)化測(cè)試之前需要對(duì)軟件開發(fā)過程進(jìn)行分析,以觀察其是否適合使用自動(dòng)化測(cè)試。通常需要同時(shí)滿足以下條件:
1)軟件需求變動(dòng)不頻繁
測(cè)試腳本的穩(wěn)定性決定了自動(dòng)化測(cè)試的維護(hù)成本。如果軟件需求變動(dòng)過于頻繁,測(cè)試人員需要根據(jù)變動(dòng)的需求來更新測(cè)試用例以及相關(guān)的測(cè)試腳本,而腳本的維護(hù) 本身就是一個(gè)代碼開發(fā)的過程,需要修改、調(diào)試,必要的時(shí)候還要修改自動(dòng)化測(cè)試的框架,如果所花費(fèi)的成本不低于利用其節(jié)省的測(cè)試成本,那么自動(dòng)化測(cè)試便是失 敗的。
項(xiàng)目中的某些模塊相對(duì)穩(wěn)定,而某些模塊需求變動(dòng)性很大。我們便可對(duì)相對(duì)穩(wěn)定的模塊進(jìn)行自動(dòng)化測(cè)試,而變動(dòng)較大的仍是用手工測(cè)試。
2)項(xiàng)目周期足夠長(zhǎng)
自動(dòng)化測(cè)試需求的確定、自動(dòng)化測(cè)試框架的設(shè)計(jì)、測(cè)試腳本的編寫與調(diào)試均需要相當(dāng)長(zhǎng)的時(shí)間來完成,這樣的過程本身就是一個(gè)測(cè)試軟件的開發(fā)過程,需要較長(zhǎng)的時(shí)間來完成。如果項(xiàng)目的周期比較短,沒有足夠的時(shí)間去支持這樣一個(gè)過程,那么自動(dòng)化測(cè)試便成為笑談。
3)自動(dòng)化測(cè)試腳本可重復(fù)使用
如果費(fèi)盡心思開發(fā)了一套近乎完美的自動(dòng)化測(cè)試腳本,但是腳本的重復(fù)使用率很低,致使其間所耗費(fèi)的成本大于所創(chuàng)造的經(jīng)濟(jì)價(jià)值,自動(dòng)化測(cè)試便成為了測(cè)試人員的練手之作,而并非是真正可產(chǎn)生效益的測(cè)試手段了。
另外,在手工測(cè)試無法完成,需要投入大量時(shí)間與人力時(shí)也需要考慮引入自動(dòng)化測(cè)試。比如性能測(cè)試、配置測(cè)試、大數(shù)據(jù)量輸入測(cè)試等。
適用場(chǎng)合
通常適合于軟件測(cè)試自動(dòng)化的場(chǎng)合:
(1)回歸測(cè)試,重復(fù)單一的數(shù)據(jù)錄入或是擊鍵等測(cè)試操作造成了不必要的時(shí)間浪費(fèi)和人力浪費(fèi);
(2)此外測(cè)試人員對(duì)程序的理解和對(duì)設(shè)計(jì)文檔的驗(yàn)證通常也要借助于測(cè)試自動(dòng)化工具;
(3)采用自動(dòng)化測(cè)試工具有利于測(cè)試報(bào)告文檔的生成和版本的連貫性;
(4)自動(dòng)化工具能夠確定測(cè)試用例的覆蓋路徑,確定測(cè)試用例集對(duì)程序邏輯流程和控制流程的覆蓋;
隨著測(cè)試流程的不斷規(guī)范以及軟件測(cè)試技術(shù)的進(jìn)一步細(xì)化,軟件測(cè)試自動(dòng)化已經(jīng)日益成為一支不可忽視的力量。能否借助于這支外在力量以及如何借助于這支力量來規(guī)范企業(yè)測(cè)試流程、提高特定測(cè)試活動(dòng)的效率,正是本期所要討論的話題。
目前,軟件測(cè)試自動(dòng)化的研究領(lǐng)域主要集中在軟件測(cè)試流程的自動(dòng)化管理以及動(dòng)態(tài)測(cè)試的自動(dòng)化(如單元測(cè)試、功能測(cè)試以 及性能測(cè)試方面)。在這兩個(gè)領(lǐng)域,與手工測(cè)試相比,測(cè)試自動(dòng)化的優(yōu)勢(shì)是明顯的。首先自動(dòng)化測(cè)試可以提高測(cè)試效率,使測(cè)試人員更加專注于新的測(cè)試模塊的建立 和開發(fā),從而提高測(cè)試覆蓋率;其次,自動(dòng)化測(cè)試更便于測(cè)試資產(chǎn)的數(shù)字化管理,使得測(cè)試資產(chǎn)在整個(gè)測(cè)試生命周期內(nèi)可以得到復(fù)用,這個(gè)特點(diǎn)在功能測(cè)試和回歸測(cè) 試中尤其具有意義;此外,測(cè)試流程自動(dòng)化管理可以使機(jī)構(gòu)的測(cè)試活動(dòng)開展更加過程化,這很符合CMMI過程改進(jìn)的思想。根據(jù)OppenheimerFunds的調(diào)查,在2001年前后的3年中,全球范圍內(nèi)由于采用了測(cè)試自動(dòng)化手段所實(shí)現(xiàn)的投資回報(bào)率高達(dá)1500%。
方案選型六大原則
然而存在優(yōu)勢(shì)是否就一定意味著選擇自動(dòng)化測(cè)試方案都能為企業(yè)帶來效益回報(bào)呢?也不盡然,任何一種產(chǎn)品化的測(cè)試自動(dòng)化工具,都可能存在與某具體項(xiàng)目不甚貼 切的地方。再加上,在企業(yè)內(nèi)部通常存在許多不同種類的應(yīng)用平臺(tái),應(yīng)用開發(fā)技術(shù)也不盡相同,甚至在一個(gè)應(yīng)用中可能就跨越了多種平臺(tái);或同一應(yīng)用的不同版本之 間存在技術(shù)差異。所以選擇軟件測(cè)試自動(dòng)化方案必須深刻理解這一選擇可能帶來的變動(dòng)、來自諸多方面的風(fēng)險(xiǎn)和成本開銷。
以下筆者給出企業(yè)用戶進(jìn)行軟件測(cè)試自動(dòng)化方案選型的參考性原則,這些原則是從筆者實(shí)際工作中凝練而成的,它包括以下六個(gè)方面的建議:
●選擇盡可能少的自動(dòng)化產(chǎn)品覆蓋盡可能多的平臺(tái),以降低產(chǎn)品投資和團(tuán)隊(duì)的學(xué)習(xí)成本;
●測(cè)試流程管理自動(dòng)化通常應(yīng)該優(yōu)先考慮,以滿足為企業(yè)測(cè)試團(tuán)隊(duì)提供流程管理支持的需求;
●在投資有限的情況下,性能測(cè)試自動(dòng)化產(chǎn)品將優(yōu)先于功能測(cè)試自動(dòng)化被考慮;
●在考慮產(chǎn)品性價(jià)比的同時(shí),應(yīng)充分關(guān)注產(chǎn)品的支持服務(wù)和售后服務(wù)的完善性;
●盡量選擇趨于主流的產(chǎn)品,以便通過行業(yè)間交流甚至網(wǎng)絡(luò)等方式獲得更為廣泛的經(jīng)驗(yàn)和支持;
●應(yīng)對(duì)測(cè)試自動(dòng)化方案的可擴(kuò)展性提出要求,以滿足企業(yè)不斷發(fā)展的技術(shù)和業(yè)務(wù)需求。
過程
自動(dòng)化測(cè)試與軟件開發(fā)過程從本質(zhì)上來講是一樣的,無非是利用自動(dòng)化測(cè)試工具(相當(dāng)于軟件開發(fā)工具),經(jīng)過對(duì)測(cè)試需求的分析(軟件過程中的需求分 析),設(shè)計(jì)出自動(dòng)化測(cè)試用例(軟件過程中的需求規(guī)格),從而搭建自動(dòng)化測(cè)試的框架(軟件過程中的概要設(shè)計(jì)),設(shè)計(jì)與編寫自動(dòng)化腳本(詳細(xì)設(shè)計(jì)與編碼),測(cè) 試腳本的正確性,從而完成該套測(cè)試腳本(即主要功能為測(cè)試的應(yīng)用軟件)。
1)自動(dòng)化測(cè)試需求分析。
當(dāng)測(cè)試項(xiàng)目滿足了自動(dòng)化的前提條件,并確定在該項(xiàng)目中需要使用自動(dòng)化測(cè)試時(shí),我們便開始進(jìn)行自動(dòng)化測(cè)試需求分析。此過程需要確定自動(dòng)化測(cè)試的范圍以及相應(yīng)的測(cè)試用例、測(cè)試數(shù)據(jù),并形成詳細(xì)的文檔,以便于自動(dòng)化測(cè)試框架的建立。
2)自動(dòng)化測(cè)試框架的搭建。
所謂自動(dòng)化測(cè)試框架便是像軟件架構(gòu)一般,定義了在使用該套腳本時(shí)需要調(diào)用哪些文件、結(jié)構(gòu),調(diào)用的過程,以及文件結(jié)構(gòu)如何劃分。
而根據(jù)自動(dòng)化測(cè)試用例,我們很容易能夠定位出自動(dòng)化測(cè)試框架的典型要素:
(a)公用的對(duì)象。
不同的測(cè)試用例會(huì)有一些相同的對(duì)象被重復(fù)使用,比如窗口、按鈕、頁面等。這些公用的對(duì)象可被抽取出來,在編寫腳本時(shí)隨時(shí)調(diào)用。當(dāng)這些對(duì)象的屬性因?yàn)樾枨蟮淖兏淖儠r(shí),只需要修改該對(duì)象屬性即可,而無需修改所有相關(guān)的測(cè)試腳本。
(b)公用的環(huán)境。
各測(cè)試用例也會(huì)用到相同的測(cè)試環(huán)境,將該測(cè)試環(huán)境獨(dú)立封裝,在各個(gè)測(cè)試用例中靈活調(diào)用,也能增強(qiáng)腳本的可維護(hù)性。
(c)公用的方法。
當(dāng)測(cè)試工具沒有需要的方法時(shí),而該方法又會(huì)被經(jīng)常使用,我們便需要自己編寫該方法,以方便腳本的調(diào)用。
(d)測(cè)試數(shù)據(jù)。
也許一個(gè)測(cè)試用例需要執(zhí)行很多個(gè)測(cè)試數(shù)據(jù),我們便可將測(cè)試數(shù)據(jù)放在一個(gè)獨(dú)立的文件中,由測(cè)試腳本執(zhí)行到該用例時(shí)讀取數(shù)據(jù)文件,從而達(dá)到數(shù)據(jù)覆蓋的目的。
在該框架中需要將這些典型要素考慮進(jìn)去,在測(cè)試用例中抽取出公用的元素放入已定義的文件,設(shè)定好調(diào)用的過程。
探索性測(cè)試可以說是一種測(cè)試思維技術(shù)。它沒有很多實(shí)際的測(cè)試方法、技術(shù)和工具,但是卻是所有測(cè)試人員都應(yīng)該掌握的一種測(cè)試思維方式。探索性強(qiáng)調(diào)測(cè)試人員的主觀能動(dòng)性,拋棄繁雜的測(cè)試計(jì)劃和測(cè)試用例設(shè)計(jì)過程,強(qiáng)調(diào)在碰到問題時(shí)及時(shí)改變測(cè)試策略。
對(duì)探索性測(cè)試最直白的定義是:同時(shí)設(shè)計(jì)測(cè)試和執(zhí)行測(cè)試。探索性測(cè)試有時(shí)候會(huì)與即興測(cè)試(ad hoc testing)混淆。即興測(cè)試通常是指臨時(shí)準(zhǔn)備的、即興的Bug搜索測(cè)試過程。從定義可以看出,誰都可以做即興測(cè)試。由Cem Kaner提出的探索性測(cè)試,相比即興測(cè)試是一種精致的、有思想的過程。
在對(duì)測(cè)試對(duì)象進(jìn)行測(cè)試的同時(shí)學(xué)習(xí)測(cè)試對(duì)象并設(shè)計(jì)測(cè)試,在測(cè)試過程中運(yùn)用獲得的關(guān)于測(cè)試對(duì)象的信息設(shè)計(jì)新的更好的測(cè)試。
探索性測(cè)試
探索性測(cè)試強(qiáng)調(diào)測(cè)試設(shè)計(jì)和測(cè)試執(zhí)行的同時(shí)性,這是相對(duì)于傳統(tǒng)軟件測(cè)試過程中嚴(yán)格的“先設(shè)計(jì),后執(zhí)行”來說的。測(cè)試人員通過測(cè)試來不斷學(xué)習(xí)被測(cè)系統(tǒng),同時(shí)把學(xué)習(xí)到的關(guān)于軟件系統(tǒng)的更多信息通過綜合的整理和分析,創(chuàng)造出更多的關(guān)于測(cè)試的主意。
探索性測(cè)試的基本過程
探索性測(cè)試識(shí)別軟件系統(tǒng)的目的;
識(shí)別軟件系統(tǒng)提供的功能;
識(shí)別軟件系統(tǒng)潛在的不穩(wěn)定的區(qū)域;
在探索軟件系統(tǒng)的過程中記錄關(guān)于軟件的信息和問題;
探索式軟件測(cè)試一共分為自由式探索式測(cè)試、基于場(chǎng)景的探索式測(cè)試、基于策略的探索式測(cè)試和基于反饋的探索式測(cè)試。下面將詳細(xì)介紹4種類型的應(yīng)用場(chǎng)景。
一:自由式探索式測(cè)試
自由式探索式測(cè)試指的是對(duì)一個(gè)應(yīng)用程序的所有功能,以任意次序、使用任何如數(shù)進(jìn)行隨機(jī)探測(cè),而不考慮哪些功能是否必須包括在內(nèi)。自由式測(cè)試沒有 任何規(guī)則和模式、只是不停的去做。很不幸,很多人認(rèn)為所有的探索式測(cè)試都是自由式的,從長(zhǎng)遠(yuǎn)的觀點(diǎn)來看,這種看法低估了探索式測(cè)試技術(shù)的能力,我們?cè)陔S后 將看到這類測(cè)試的一些變種。
一個(gè)自由測(cè)試用例可能會(huì)被選中成為一個(gè)快速的冒煙測(cè)試,用它來檢查是否會(huì)找到重大的崩潰或者嚴(yán)重的軟件缺陷,或是在采用先進(jìn)的技術(shù)之前通過它來 熟悉一個(gè)應(yīng)用程序。顯然,自由式探索式測(cè)試無需也不應(yīng)該進(jìn)行大量的準(zhǔn)備規(guī)則。事實(shí)上,它更像是“探索”而不是“測(cè)試”,所以我們應(yīng)當(dāng)相應(yīng)的調(diào)整對(duì)它的期望 值。
自由式測(cè)試不需要多少經(jīng)驗(yàn)或者信息。但是,同以下提到的探索式技術(shù)相結(jié)合后,它將成為一個(gè)非常強(qiáng)大的測(cè)試工具。
二:基于場(chǎng)景的探索式測(cè)試
基于場(chǎng)景的探索式測(cè)試和傳統(tǒng)的基于場(chǎng)景的測(cè)試有類似之處。兩者都涉及到一個(gè)開商店,就是用戶故事或者是文檔化得端到端場(chǎng)景的開始之處,那也是我 們所期望的最終用戶開始執(zhí)行應(yīng)用程序的地方。這些場(chǎng)景可以來自用戶研究、應(yīng)用程序、以前版本的數(shù)據(jù)等,并作為腳本用于測(cè)試軟件。探索式測(cè)試對(duì)傳統(tǒng)場(chǎng)景測(cè)試 的補(bǔ)充吧腳本的應(yīng)用范圍擴(kuò)大到了更改、調(diào)查和改變用戶執(zhí)行路徑的范疇。
使用場(chǎng)景作為指導(dǎo)的探索式測(cè)試人員經(jīng)常會(huì)修改他感興趣的輸入或者是追尋一些并沒有包括在腳本中的潛在副作用。不過,由于最終的不表是完成給出的場(chǎng)景,這些測(cè)試上的彎路、最終總是會(huì)回到腳本文件記載的用戶主要執(zhí)行路徑。
三:基于策略的探索式測(cè)試
將自由式測(cè)試探索式與具有測(cè)試?yán)鲜值慕?jīng)驗(yàn)、技能和感知融合在一起,就成為基于策略的探索式測(cè)試。它屬于自由式的探索,只是他是在現(xiàn)有的錯(cuò)誤搜索 技術(shù)下引導(dǎo)完成的。基于策略的探索式測(cè)試應(yīng)用所有的已知技術(shù)(如邊界值分析或組合測(cè)試)和未知的本能(如異常處理往往容易出現(xiàn)軟件缺陷),來指導(dǎo)測(cè)試人員 進(jìn)行測(cè)試。
這些已知的策略是基于策略的探索式測(cè)試成功的關(guān)鍵,存儲(chǔ)的測(cè)試知識(shí)越豐富,測(cè)試就會(huì)更有效率。這些策略緣于積累下來的知識(shí),它們指導(dǎo)軟件缺陷隱藏在哪里,如何綜合人工輸入數(shù)據(jù),那些代碼路徑常常出現(xiàn)故障。
基于策略的探索式測(cè)試結(jié)合了測(cè)試?yán)鲜值慕?jīng)驗(yàn)和探索型測(cè)試人員的隨機(jī)性。
四:基于反饋的探索式測(cè)試
基于反饋的探索式測(cè)試緣于自由式測(cè)試,但是隨著測(cè)試歷史的形成,測(cè)試人員們就會(huì)利用反饋來指導(dǎo)今后的探索。“覆蓋”就是典型的例子。一名測(cè)試人 員通過咨詢那些覆蓋指標(biāo)(代碼覆蓋、用戶界面覆蓋、特性覆蓋、輸入覆蓋或者其中的某一些組合)來選中新的測(cè)試用例,以使這些覆蓋指標(biāo)得以提高。覆蓋指標(biāo)只 是收錄反饋信息的標(biāo)志之一。我們也會(huì)看其他標(biāo)志,如代碼改動(dòng)數(shù)量和軟件缺陷密集程度等。
基于反饋的探索式測(cè)試時(shí)一種“上一次測(cè)試”:在上一次我根據(jù)應(yīng)用程序的最后狀態(tài)選了每某一個(gè)輸入之后、下一次我就會(huì)選中另外一個(gè)輸入。或者是,在上一次遇到這個(gè)界面時(shí)我用A屬性,這一次我就會(huì)用B屬性。
基于反饋的探索式測(cè)試工具是非常有價(jià)值的,它可以是測(cè)試人員保存、搜索測(cè)試歷史并據(jù)此采取實(shí)時(shí)行動(dòng)。不幸的是這樣的工具很少。
自動(dòng)化測(cè)試(AT)與探索性測(cè)試(ET)
自動(dòng)化測(cè)試在目前得到了越來越普遍的應(yīng)用,自動(dòng)化測(cè)試的優(yōu)勢(shì)也越來越明顯。對(duì)于需求比較固定的功能,使用自動(dòng)化測(cè)試工具通過編寫自動(dòng)化測(cè)試代 碼。可以在以后得到多次的使用。這給回歸測(cè)試帶來了極大的方便性。也為持續(xù)集成(CI)的提供了很好的基礎(chǔ)。看來自動(dòng)化測(cè)試是軟件測(cè)試領(lǐng)域中一項(xiàng)重大的革 命。
然而,自動(dòng)化測(cè)試畢竟考慮時(shí)間有限,并且受到了一定的測(cè)試思想的制約,不可能在一次的測(cè)試設(shè)計(jì)中就能夠就能夠設(shè)計(jì)得很全面。另外自動(dòng)測(cè)試對(duì)于測(cè) 試正常流程往往考慮的比較周全,而對(duì)于異常流程往往考慮得不是十分的充分。而對(duì)于一個(gè)有經(jīng)驗(yàn)的測(cè)試工程師來說,bug往往在處理異常流程的時(shí)候被經(jīng)常發(fā) 現(xiàn),另外好些缺陷往往在一些怪異的,不確定的操作后出現(xiàn)。所以有了自動(dòng)化測(cè)試腳本作為支撐,探索性測(cè)試(ET)的作用不可忽略。保證一個(gè)產(chǎn)品好的質(zhì)量,既 要依賴自動(dòng)化測(cè)試工具,另外人工為主的探索性測(cè)試也不可以遺漏,這樣軟件的質(zhì)量才可真正得到保障。
版權(quán)聲明:本文出自 jerrygu625 的51Testing軟件測(cè)試博客:http://www.51testing.com/?162585
原創(chuàng)作品,轉(zhuǎn)載時(shí)請(qǐng)務(wù)必以超鏈接形式標(biāo)明本文原始出處、作者信息和本聲明,否則將追究法律責(zé)任。
posted on 2012-09-05 10:08 順其自然EVO 閱讀(1821) 評(píng)論(0) 編輯 收藏 所屬分類: selenium and watir webdrivers 自動(dòng)化測(cè)試學(xué)習(xí)