有人說,從手動測試人員過渡到自動化開發(fā)人員是一個自然的過程,并且是測試領(lǐng)域的另一個演進部分。我與之交談的許多測試人員都描述了他們手動測試相同的過程并一次又一次地查看測試文檔是多么的不舒服……他們看到自己擔(dān)任自動化測試角色,同時也增加了薪水(這也很重要)。 盡管從手動測試人員到自動化開發(fā)人員的過渡是顯而易見的,但這并不意味著并不困難,很多時候我遇到了一個問題–“ 我怎樣才能過渡到自動化測試?”。 我決定創(chuàng)建一個指南,解釋如何進行這種轉(zhuǎn)換,以及測試人員應(yīng)該采取哪些步驟來實現(xiàn)他或她在自動化測試中的第一份工作。 盡管這兩個角色(手動和自動化)都位于同一部門下,并且通常由同一個人(例如QA經(jīng)理)來管理,但過渡仍然需要從頭開始獲得自動化知識。 在下圖中,您將能夠看到手動測試人員要成為自動化開發(fā)人員所需要學(xué)習(xí)的所有步驟。我將在本指南中解釋這些步驟中的每個步驟,同時提及您在每個步驟中需要學(xué)習(xí)的確切主題,并包括有助于實現(xiàn)自動化學(xué)習(xí)目標(biāo)的有用資源 ?? *盡管許多自動化開發(fā)人員并不熟悉所有這些圖表步驟,但是這是我們在自動化過程中應(yīng)始終努力的目標(biāo)。不要害怕需要學(xué)習(xí)的科目數(shù)量。您不需要全部學(xué)習(xí),當(dāng)然也不必同時全部學(xué)習(xí)。 面向?qū)ο缶幊陶Z言自動化開發(fā)人員實際上是軟件開發(fā)人員。因此,您首先應(yīng)該學(xué)習(xí)的基本知識是某種支持面向?qū)ο蠓椒ǖ木幊陶Z言。在自動化領(lǐng)域的通用語言中,值得一提的是Java和Python,它們也被認(rèn)為更易于學(xué)習(xí)。此外,自動化開發(fā)人員還用C#,JavaScript編寫,還有一些還用Ruby編寫。 無論您選擇哪種語言,該語言的原理都相同:數(shù)據(jù)類型,變量,運算符,語句,OOP(類,對象,方法,構(gòu)造函數(shù),繼承,抽象類,接口,多態(tài)性),異常和錯誤,文件, 常用表達… 資源:有很多用于學(xué)習(xí)不同語言的教程,涉及獨立學(xué)習(xí)時,我總是更喜歡從視頻(騰訊課堂/B站)中學(xué)習(xí),而不是從書本中學(xué)習(xí)。 開發(fā)展生態(tài)系統(tǒng)開發(fā)生態(tài)系統(tǒng)涉及所有互補的學(xué)科,這些學(xué)科完成了您決定學(xué)習(xí)的編程語言的核心研究。這些是與特定語言無關(guān)的主題,它們將在編寫高效,干凈和無錯誤的代碼的過程中為您提供幫助。這是此類別下的(部分)主題列表:數(shù)據(jù)結(jié)構(gòu),算法,干凈代碼,應(yīng)用程序編程接口(API),設(shè)計模式,版本控制管理(Git),存儲庫,構(gòu)建管理工具(Maven / Gradle / Ivy…), Package Managers (NPM / Composor / Nuget / Pip / Gems…) 單元測試框架現(xiàn)在,我們開始接近測試和測試自動化世界,在這個世界中,我們有許多用于單元測試的框架。這些框架使我們能夠使用諸如注釋或?qū)傩灾惖脑獢?shù)據(jù)功能,將編寫的代碼轉(zhuǎn)換為可測試的代碼。此外,使用這些框架,我們可以插入測試功能,各種執(zhí)行機制,報告等。 有一些流行的框架,例如:
在開始使用單元測試框架時,您應(yīng)該學(xué)習(xí)以下兩個主題:注釋/屬性,運行程序(具有并行),斷言,測試套件,CI集成。 服務(wù)器端和客戶端在這一部分中,我們將深入研究服務(wù)器端和客戶端,并理解為什么我們需要同時了解兩者:
讓我們從服務(wù)器端開始。 服務(wù)器端– Web服務(wù)在我看來,Web服務(wù)及其各種協(xié)議是自動化開發(fā)人員在嘗試專門研究服務(wù)器端測試時應(yīng)首先學(xué)習(xí)的內(nèi)容。為一些沉重的名字加上大括號:
服務(wù)器端– 數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)是我們在服務(wù)之間傳輸?shù)臄?shù)據(jù)類型,它們是最終由文件表示的不同格式,其中大多數(shù)采用XML和(主要)JSON格式。您應(yīng)該熟悉這些格式,并學(xué)習(xí)可以從中提取信息的語言,例如:Xpath和JSONPath。 服務(wù)器端:API測試服務(wù)器端測試的主要部分以API測試的形式出現(xiàn)–將API請求發(fā)送到另一端,同時期望它返回響應(yīng)(我們稍后將對其進行解析,編譯和測試)。沒有GUI,也沒有元素或?qū)ο螅ㄔ诳蛻舳藴y試中確實存在,例如:按鈕,文本字段等)。關(guān)于API測試,我們沒有“外觀(web界面)”。 同樣,您還必須在這里學(xué)習(xí)如何使用工具和API測試框架,例如:REST保證,REST Sharp,Http Client。為了編寫API測試,您必須學(xué)習(xí)的重要主題是:
服務(wù)器端:數(shù)據(jù)庫測試數(shù)據(jù)庫測試在行業(yè)中不那么普遍,但是為了連接到數(shù)據(jù)庫,我們需要學(xué)習(xí)與它們一起工作的所有層,例如:JDBS(Java數(shù)據(jù)庫連接)– Java API,定義了客戶端可以訪問的方式其他數(shù)據(jù)庫。該API包括不同的接口,例如:Driver,Connection,Statement,ResultSet…甚至在.NET世界中也是如此。框架本身已經(jīng)捆綁了一些API,例如:SQL,OLEDB,OLDB等。 幾乎每個DB都具有可以與我們的代碼進行交互的任何編程語言準(zhǔn)備的框架或API。我們只需要熟悉它們的功能以及如何使用此類框架即可。 客戶端-HTML,CSS,JS現(xiàn)在出現(xiàn)了一個問題–如果我們只是測試而不是構(gòu)建它,為什么我們甚至需要了解開發(fā)Web應(yīng)用程序背后的技術(shù)?好吧,最明顯的答案是–如果我們使Web應(yīng)用程序自動化并且我們的自動化引擎知道如何讀取HTML頁面,那么我們最好也能知道這一點。HTML頁面還涉及CSS(負責(zé)應(yīng)用程序的設(shè)計)和JavaScript(負責(zé)網(wǎng)站的動態(tài))。您無需成為前端開發(fā)人員,但是您一定應(yīng)該熟悉基礎(chǔ)知識,甚至還需要一些知識。 在HTML級別上,我們應(yīng)該知道什么是DOM,如何構(gòu)建Web應(yīng)用程序,什么是HTML標(biāo)簽(尤其是常見的HTML標(biāo)簽),屬性,瀏覽器的開發(fā)人員工具(非常重要,尤其是控制臺,元素和網(wǎng)絡(luò)部分) 。 客戶端–網(wǎng)絡(luò)Web自動化是自動化測試行業(yè)中最受歡迎的,并且具有最大的生態(tài)系統(tǒng)。領(lǐng)先的平臺(目前為止?。┦?/span>硒webdriver的,難怪新一代網(wǎng)絡(luò)的自動化工具,如TestProject建立在硒的頂部。盡管最近我們已經(jīng)看到越來越多的非基于Selenium的Web自動化工具,例如:Cypress,Puppeteer,Nightwatch.js和TestCafe。 無論哪種方式,由于其中的許多測試自動化工具和解決方案(不僅用于Web)都基于WebDriver協(xié)議(以前稱為JSON Wire Protocol),因此,我們應(yīng)該徹底了解其生態(tài)系統(tǒng),WebDriver和WebElement接口,什么是RemoteWebDriver以及實現(xiàn)它們的所有功能:定位器,同步,開關(guān),操作,頁面對象,交互瀏覽器,JSExecutor,事件監(jiān)聽器。 客戶端–移動大多數(shù)從事移動測試的自動化開發(fā)人員通常都使用Appium編寫測試,但是也有其他平臺(例如:EarlGray,Esspresso,Robotium,Selendroid,Calabash),盡管它們在當(dāng)今的自動化測試市場中是少數(shù)。還有諸如TestProject之類的新一代免費自動化工具,可大大簡化Appium的框架設(shè)置并提供基于Appium的移動錄制和開發(fā)工具。 Appium的最大優(yōu)勢在于:
因此,您需要學(xué)習(xí)的Appium主題通常會在您熟悉Selenium WebDriver之后出現(xiàn)。Appium的代碼庫實際上是Selenium的擴展,我們需要集中精力。另外,我們應(yīng)該學(xué)習(xí)Appium的體系結(jié)構(gòu),該體系結(jié)構(gòu)與Selenium不同(這里我們有Appium Server而不是ChromeDriver / GeckoDriver等)。 因此,學(xué)習(xí)完Selenium后,您應(yīng)該專注于以下主題:Appium驅(qū)動程序,Appium方法,Appium手勢,Appium環(huán)境(客戶端-服務(wù)器),Android調(diào)試橋(ADB),XCode。 客戶端–桌面盡管臺式機應(yīng)用程序的自動化測試比上述Web和移動設(shè)備少見,但仍然有一些組織需要它,例如氣源。例如,特別是如果他們有一個用Winform或WPF編寫的中央后臺系統(tǒng),并且他們需要對其進行一些繁重的測試。我必須說,支持桌面應(yīng)用程序的工具數(shù)量相對較少,而且大多數(shù)工具并不常見且不那么成熟。 在這個市場中,我覺得商業(yè)工具是領(lǐng)先的工具(相對于Web和移動應(yīng)用程序市場,后者擁有領(lǐng)先的開源解決方案以及完全免費的工具(例如TestProject))。一些流行的商業(yè)工具包括:TestComplete,Ranorex,UFT,Tosca,它們在此桌面自動化領(lǐng)域中做得很好(但需要高額的許可費用),而在免費和開源方面–我們主要擁有WinAppDriver和Winium(不再維護)和白色。 通常使用WebDriver協(xié)議繼續(xù)使用這些免費工具,實際上操作大致相同,但是對象的初始化會有所不同。 測試自動化基礎(chǔ)架構(gòu)這可能是任何自動化開發(fā)人員角色中最重要的部分(以及學(xué)習(xí)編程語言)。 到目前為止,您已經(jīng)學(xué)習(xí)了如何編寫Web,移動,桌面或服務(wù)器自動化測試,太好了!現(xiàn)在,您需要學(xué)習(xí)如何使用強大,智能,模塊化,防彈(盡可能多)防自動化的自動化基礎(chǔ)結(jié)構(gòu)很好地編寫它,并且能夠?qū)⑽覀兊捻椖勘3直M可能長的時間可以并且用最少的精力。 對于任何項目來說,對可靠的測試自動化基礎(chǔ)架構(gòu)的投資是最長,最關(guān)鍵的,并且結(jié)合了模塊化組件(就像做難題或連接樂高零件一樣)。 這些是編寫自動化測試基礎(chǔ)結(jié)構(gòu)所需要學(xué)習(xí)的主題:對象存儲庫,故障機制,恢復(fù),報告系統(tǒng),屏幕快照,屏幕強制轉(zhuǎn)換,外部配置文件,多個客戶端支持,并行執(zhí)行,日志記錄系統(tǒng),數(shù)據(jù)庫支持,數(shù)據(jù)驅(qū)動程序測試,關(guān)鍵字驅(qū)動測試,行為驅(qū)動開發(fā),時間表。 開發(fā)運維好的,因此DevOps世界并不完全是自動化測試的世界。但是,即使在DevOps中,我們也使用自動化過程,盡管不一定要進行測試,這會使許多人感到困惑。那么,為什么我將DevOps包含在此最終自動化測試指南中???
我們現(xiàn)在在敏捷環(huán)境中工作(快速軟件開發(fā)),并渴望擁有自動CI / CD管道,這一事實使了解與自動化相關(guān)的所有DevOps角色變得非常重要。您應(yīng)該集中精力學(xué)習(xí)以下內(nèi)容:持續(xù)部署,持續(xù)集成,構(gòu)建工具,網(wǎng)格,Git和基于Docker的虛擬化系統(tǒng)。 GitGit使我們能夠有效地管理代碼。我的意思是,我們無法將代碼保存在本地計算機上,對嗎?我們通常不是團隊中唯一的開發(fā)人員,這意味著其他開發(fā)人員將需要從事相同的項目,每個人都向項目貢獻自己的代碼行。因此,我們需要一個地方來管理我們正在創(chuàng)建的所有代碼!我們還希望將其保存在某種類型的云存儲庫中(例如GitHub)。 這是每個軟件項目的工作方式,我們的軟件自動化測試項目也是如此。 使用Git時,您應(yīng)該學(xué)習(xí)的主題是:推,拉,合并,Github,BitBucket,GitLab,Branch,F(xiàn)ork。 CI工具在本指南中,我已經(jīng)多次提到此CI術(shù)語- 持續(xù)集成過程旨在幫助我們更快,更有效地發(fā)布軟件版本。這不是一個簡單的任務(wù),尤其是考慮到通常一個研發(fā)團隊包括幾個開發(fā)團隊,并且自動化團隊當(dāng)然也是該過程不可或缺的一部分-負責(zé)編寫,維護和上傳測試套件。團隊協(xié)作是這里的關(guān)鍵。 有一些CI工具,其中最流行的是Jenkins,還有諸如Bamboo,TeamCity等。 自動化開發(fā)人員至少應(yīng)至少知道如何使用此類工具(甚至其中一種),并熟悉如何編寫:作業(yè),調(diào)度程序,管道,參數(shù),依賴項,插件,報告。 結(jié)論那么,我們從這份(詳盡的)指南中學(xué)到了什么??? 首先,我們已經(jīng)了解了每個手動測試人員要轉(zhuǎn)變?yōu)闇y試自動化開發(fā)人員所需學(xué)習(xí)的確切步驟,這些步驟包括:學(xué)習(xí),學(xué)習(xí)以及更多的學(xué)習(xí)內(nèi)容 ??是的,有很多東西可以學(xué)習(xí)在自動化測試的美好世界中,請不要給人留下錯誤的印象-并非所有自動化開發(fā)人員都知道所有這些主題。并非所有軟件開發(fā)人員都了解所有開發(fā)技術(shù)(編程語言和框架等)。 |
|