有關(guān)什么構(gòu)成了一個對測試自動化的"合適執(zhí)行"的討論常常聚焦于應(yīng)當(dāng)使用什么工具,但是那只是等式的一部分。巴斯德基科斯特拉詳列了四件應(yīng)當(dāng)考慮的事情,以及他們怎樣有益于測試自動化的成功,和沒有對這四件事的其中一件進行合適的關(guān)注所帶來的風(fēng)險。
對于期望快速發(fā)布質(zhì)量的機構(gòu)來說,運行自動化測試是軟件開發(fā)生命周期的一個重要部分。然而,測試自動化只有在合理恰當(dāng)執(zhí)行的情況下才能成功。對于什么構(gòu)成了測試自動化的恰當(dāng)執(zhí)行的討論常常聚焦在應(yīng)當(dāng)使用什么工具來做這項工作,或者使用最 好的(即使已經(jīng)有了這件東西)或者最有效的方式來使用特定的工具來完成給定的任務(wù)。
在我看來,盡管使用的工具是整個測試自動化方程的一部分。任何成功的測試自動化指向都是基于五個不同的部分建立的。
在本文中,我們會來看一下這些部分的每個部分,他們怎樣助益于你的測試自動化執(zhí)行使之成功,以及沒有好好關(guān)注他們的任何一項所會帶來的風(fēng)險。
1、測試自動化工具
測試自動化工具雖然不是測試自動化執(zhí)行得以成功的唯 一因素,工具顯然對你自動化工作的整體結(jié)果有著重要的影響。選擇一個與你要測試的程序不夠兼容的工具,或者不符合你們自動化團隊所需要的技能集將很可能會導(dǎo)致不理想的結(jié)果。
然而,比工具的選擇更重要的是,問自己你到底想用什么來完成你的自動化測試,然后決定一個最有效的達成結(jié)果的方式。一個首要的問題需要問的是一個特定的功能片或商業(yè)邏輯需要在什么層面上進行驗證。
你想確保你的顧客可以打開你們的線上商店,搜索一個具體的產(chǎn)品,然后進行下單付款的操作嗎?你很可能想要使用端對端的用戶接口驅(qū)動的測試來檢驗這一點。如果你在驗證一個決定顧客是否被允許來購買給定的無品(比如,由于國家層面的規(guī)制)的邏輯片的正確性,那么你很可能需要能夠編寫潛入進較低級別的待測程序的測試腳本,例如一個接口甚至一個單獨的代碼類。這構(gòu)成了一個針對該測試的不一樣的范圍和方法,因此,需要一個不同的工具。
簡而言之,確保首先你知道要做自動化測試的程序需要驗證什么,然后再花費時間去研究怎樣取得想要的結(jié)果。記住迫使工具去做不是它被設(shè)計來做的事情會有很大的風(fēng)險。
2、測試數(shù)據(jù)
對于任何嚴(yán)肅的測試自動化方案的另外一個重要因素是采用的管理測試數(shù)據(jù)的方法。測試的范圍越廣,測試數(shù)據(jù)管理就相應(yīng)地變得越重要和要求高。
在單元測試?yán)铮憧梢酝ㄟ^模擬所有你的測試依靠的數(shù)據(jù)來過活,而當(dāng)你開始啟動集成或端對端的測試時,你會需要有特定的數(shù)據(jù)來做測試。而且,為了讓事情更復(fù)雜化,你常會需要其他與你的相互連接的程序進行交互的數(shù)據(jù)處于一個特定的狀態(tài)。
對于這些類型的測試需要以下幾種方式來處理測試數(shù)據(jù)
在測試建立階段創(chuàng)建需要的測試數(shù)據(jù)
開始測試之前詢問系統(tǒng)里已存在的測試數(shù)據(jù)
測試執(zhí)行之前初始化待測程序的數(shù)據(jù)庫
這里的每個方法都有其潛在的陷阱:
在測試建立階段創(chuàng)建測試數(shù)據(jù)增加了測試執(zhí)行時間,增加了在測試執(zhí)行開始之前的失敗風(fēng)險,還會導(dǎo)致很多無用的測試數(shù)據(jù)如果沒有合理的數(shù)據(jù)清理程序的話。
當(dāng)你在測試開始之前查詢系統(tǒng)里已存在的測試數(shù)據(jù)時,因為意外地使用了無效的測試數(shù)據(jù)或系統(tǒng)里的測試數(shù)據(jù)屬性不對而導(dǎo)致了風(fēng)險。
在測試執(zhí)行前初始化數(shù)據(jù)庫給你留下了數(shù)據(jù)庫的截圖來管理和保持?jǐn)?shù)據(jù)最 新-也就是說,你甚至需要首先被允許執(zhí)行數(shù)據(jù)庫復(fù)原程序。
助益沒有正確的處理集成和斷對端測試的測試數(shù)據(jù)的方法。然而,選擇錯的程序,或者根本沒提出測試數(shù)據(jù)的問題,將很可能會導(dǎo)致產(chǎn)出的測試自動化方案不可重用,不可維護或擴展性不好。