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