Lukasz Jasinski目前擔(dān)任波蘭弗羅茨瓦夫的BLStream質(zhì)量保證工程師。 Lukasz擁有弗羅茨瓦夫科技大學(xué)遠(yuǎn)程信息學(xué)碩士學(xué)位和兩個(gè)ISTQB高級證書。 他是一個(gè)測試自動(dòng)化專家,對各種編程語言掌握的很好。 Lukasz也對連續(xù)傳遞過程及各類散熱器的可視化質(zhì)量方面有興趣。 |
介紹
每個(gè)實(shí)行持續(xù)交付的項(xiàng)目,都有生產(chǎn)流水線的元素,如持續(xù)集成和自動(dòng)化測試。這些測試是在不同層面進(jìn)行的,從單元測試到冒煙測試再到功能測試。自動(dòng)化功能測試的優(yōu)點(diǎn)之一是可重復(fù)性和可預(yù)測的執(zhí)行時(shí)間。出于這個(gè)原因,它應(yīng)該作為軟件質(zhì)量的每一個(gè)構(gòu)建之后的指標(biāo)。功能測試自動(dòng)化往往會成為一個(gè)瓶頸,所以你應(yīng)該熟悉一下如何創(chuàng)建這樣的測試的基本原則。
首先設(shè)計(jì)你的測試
測試集合可以比作盆景樹。
初的時(shí)候,我們照顧樹根和樹干。我們選擇會成長的主要分支,我們每天都細(xì)心照料這棵樹并等待它長出健康的葉子。
我們可以以類似的方式繼續(xù)測試。
我們建一個(gè)將負(fù)責(zé)應(yīng)用程序主要功能(例如:開啟)的基類。
根據(jù)說明,我們先明確將被測試覆蓋的應(yīng)用程序的主要功能,然后每天我們在執(zhí)行測試的時(shí)候都添加更多平行測試。
每一個(gè)支持測試(例如創(chuàng)建一個(gè)新的用戶)的方法都需要與測試分離——讓我們在單獨(dú)的類里面來實(shí)現(xiàn)。
你應(yīng)該在包括了應(yīng)用程序主要功能的目錄里保持類。
去建一個(gè)規(guī)定很多功能共有方法的抽象類是很好的做法。
如果你正在測試Web應(yīng)用程序,用頁面對象設(shè)計(jì)模式。該模式里,一個(gè)類及其方法對應(yīng)了單個(gè)頁面的功能或一個(gè)大型網(wǎng)頁里單個(gè)頁面上的一個(gè)元素。
無需事事自動(dòng)化
自動(dòng)化花費(fèi)很多,所以你應(yīng)該主要測試應(yīng)用程序的主要功能。
某些測試可以快速輕松地手動(dòng)完成,且潛在腳本可能難以實(shí)現(xiàn)。
值得用到自動(dòng)化的是那些繁瑣的需要被重復(fù)很多次的,和那些需要大量數(shù)據(jù)驗(yàn)證的測試工作。
寫短測試
在一個(gè)或多個(gè)測試失敗的情況下,開發(fā)團(tuán)隊(duì)的任何成員都應(yīng)該能夠輕松地找到錯(cuò)誤的原因。
出于這個(gè)原因,每個(gè)測試方法里應(yīng)該多有5個(gè)斷言,并且每個(gè)方法都必須提供的測試操作的完整記錄。
明智的做法是使用BDD(行為驅(qū)動(dòng)開發(fā))技術(shù),但是當(dāng)你沒有用一個(gè)特定的測試框架時(shí),你應(yīng)該把接下來的測試步驟放在comments //given //when //then下。
創(chuàng)建獨(dú)立測試
在測試類中的每個(gè)方法應(yīng)該是一個(gè)獨(dú)立的實(shí)體,而不是依賴于其他測試。我們應(yīng)該能夠在任何時(shí)間運(yùn)行單個(gè)測試。否則,這樣的測試用例集將來維護(hù)起來會很貴——必須定期跟蹤和更新測試之間的聯(lián)系。
很多時(shí)候,測試需要一定的前提條件來滿足。這些條件不應(yīng)該用外部方法,應(yīng)該在試驗(yàn)開始時(shí)運(yùn)行。如果這些條件和測試類的所有方法一樣,它們可以被放在一開始進(jìn)行的方法里(例如:在JUnit中被標(biāo)記為@ BeforeClass)。
關(guān)注可讀性
源代碼應(yīng)該是自我記錄的,而寫下以下幾行代碼的每個(gè)利益相關(guān)者應(yīng)該明白測試在做什么,為什么它被這么寫。盡量避免在源代碼注釋,因?yàn)樗脖仨毐桓隆_@值得花比平常多一點(diǎn)的時(shí)間來命名方法,從而使你的代碼更易讀。
再看看行為驅(qū)動(dòng)開發(fā)技術(shù),每個(gè)測試方法都應(yīng)以單詞“應(yīng)該”開始,而不是“測試”。
根據(jù)這一慣例,我們馬上可以明白一個(gè)特定的方法測試什么內(nèi)容了,它在分析測試報(bào)告時(shí)特別有用。
測試必須要快
正如在本文開頭所提到的,自動(dòng)化功能測試應(yīng)該是應(yīng)用程序質(zhì)量的一個(gè)指標(biāo)。連續(xù)傳遞過程中的每一步都應(yīng)指明長持續(xù)時(shí)間;并且根據(jù)這個(gè)概念,開發(fā)團(tuán)隊(duì)?wèi)?yīng)該盡快獲得有關(guān)軟件質(zhì)量的反饋。自動(dòng)化功能測試的持續(xù)時(shí)間應(yīng)不超過幾分鐘。
對一個(gè)非常全面的測試集來說,有必要并行運(yùn)行測試(經(jīng)常在不同的機(jī)器上)。虛擬化在這里可能是非常有幫助的。
創(chuàng)建抗變測試
常提及自動(dòng)化功能測試的缺點(diǎn)是其對應(yīng)用程序中變化的低抵抗性,尤其是在GUI中。
在Web應(yīng)用程序中,測試應(yīng)該能抵抗網(wǎng)站的內(nèi)容的變化。測試應(yīng)該只驗(yàn)證功能,這使得它可以在不同的位置運(yùn)行測試。這并不意味著我們不應(yīng)該編寫自動(dòng)化測試來檢查網(wǎng)頁的內(nèi)容。
如果你已經(jīng)想創(chuàng)建這樣的測試,你應(yīng)該遵循DDT(數(shù)據(jù)驅(qū)動(dòng)測試)技術(shù)。這意味著,檢查內(nèi)容是與源代碼分離開的。
Web應(yīng)用程序的頁面布局變化非常頻繁,這已經(jīng)影響到了用戶界面。
當(dāng)你設(shè)計(jì)一個(gè)界面時(shí),每個(gè)區(qū)段和每個(gè)頁面你都應(yīng)該有一個(gè)你可以用來測試的標(biāo)識符,即使一個(gè)網(wǎng)站的層次結(jié)構(gòu)發(fā)生了變化。
自動(dòng)化測試無法取代人類
功能自動(dòng)化測試可以是項(xiàng)目中的主要測試技術(shù),但絕不是的一個(gè)。
自動(dòng)化測試是可重復(fù)再生的,他們的覆蓋范圍總是相同的。
另一方面,雖然探索性測試是低再生的,但是它們能夠覆蓋自動(dòng)化測試未觸及的區(qū)域。
你還應(yīng)該記住,自動(dòng)化測試的“綠色”狀態(tài)并不意味著你的應(yīng)用程序是沒有錯(cuò)誤的。
這種情況往往會讓測試員分心,而且有可能會影響測試的準(zhǔn)確性。
版權(quán)聲明:本文出自 SPASVO澤眾軟件測試網(wǎng):http://xmdc.net/news/html/201422093452.html