了解初級(jí)測試人員開始測試自動(dòng)化需要什么
軟件發(fā)布比以往任何時(shí)候都更快。他們正在添加新功能,更快地響應(yīng)缺陷,尤其是在生產(chǎn)中發(fā)現(xiàn)的缺陷,等等!這導(dǎo)致對(duì)自動(dòng)化測試人員的需求大幅增加,并且“手動(dòng)”和“自動(dòng)化”測試人員之間存在相當(dāng)大的薪酬差距。此外,自動(dòng)化測試通過重復(fù)測試(如回歸測試)幫助公司節(jié)省時(shí)間。
如果您是軟件測試新手或者還沒有機(jī)會(huì)學(xué)習(xí)測試自動(dòng)化,那么本文適合您。因此,事不宜遲,讓我們看看開始測試自動(dòng)化需要學(xué)習(xí)什么!
將測試自動(dòng)化視為軟件開發(fā)
測試自動(dòng)化應(yīng)被視為軟件開發(fā)的一個(gè)組成部分,暗示著編程知識(shí)。這個(gè)想法主要通過敏捷方法論得到普及,例如XP(極限編程).自動(dòng)化測試不僅涉及單元和集成級(jí)別的自動(dòng)化測試(主要由開發(fā)人員完成),還涉及API和UI自動(dòng)化。還有其他思想流派,例如整個(gè)團(tuán)隊(duì)的質(zhì)量方法和現(xiàn)代測試原則,它們聲明每個(gè)人都應(yīng)該以自己的權(quán)利參與測試。軟件開發(fā)知識(shí)對(duì)測試自動(dòng)化有很大幫助,因?yàn)?除了編碼)許多技能用于自動(dòng)化,就像在“常規(guī)”功能開發(fā)中一樣——比如使用版本控制、創(chuàng)建構(gòu)建、使用數(shù)據(jù)庫、API、CI/CD管道,和更多。
選擇一種編程語言開始
如果您剛剛開始學(xué)習(xí)編碼,您可能會(huì)想從一種語言跳到另一種語言——因?yàn)橼厔菰诓粩嘧兓?。然而,要擅長編程,就必須像問題解決者一樣思考,而不是死記硬背特定的語法。因此,您應(yīng)該在開始時(shí)選擇一種語言并長期堅(jiān)持使用它,直到您對(duì)它非常熟悉為止。在處理C系列的高級(jí)語言時(shí)尤其如此。這是因?yàn)檫@些語言共享許多相似的概念并且具有相似的語法。因此,當(dāng)您不再是最初使用的語言(假設(shè)是Java)的初學(xué)者時(shí),學(xué)習(xí)另一種語言將非常簡單——只是習(xí)慣語法差異的問題——就像了解一種語言的新方言一樣你已經(jīng)說得很好了!
學(xué)習(xí)清潔代碼實(shí)踐和原則
有些人試圖學(xué)習(xí)太多特定的工具、框架和庫,給自己增加了太多負(fù)擔(dān),即使這不是他們工作所必需的,因?yàn)樗麄冋J(rèn)為這是讓自己在不斷變化的工作中保持相關(guān)性的唯一方法市場。這可能會(huì)非常耗費(fèi)精力并且要求很高;相反,您應(yīng)該專注于學(xué)習(xí)和應(yīng)用廣泛適用和普遍適用于許多情況的實(shí)踐和原則。
所以,你可以做什么:
保持自動(dòng)化代碼簡單——始終牢記您編寫的代碼最有可能被其他人使用;盡量保持簡單易讀,并盡可能避免過度設(shè)計(jì)。編寫易于重構(gòu)和更改的代碼。
確保使用有意義的命名約定——自動(dòng)化測試的名稱應(yīng)該清晰。對(duì)于其他人來說,通過閱讀名稱來破譯它的作用應(yīng)該是顯而易見的。變量和函數(shù)名稱是顯而易見的。為此使用DAMP(描述性和有意義的短語)原則。
明智地使用評(píng)論——評(píng)論可能會(huì)有幫助,但是當(dāng)評(píng)論一些顯而易見的事情時(shí),這樣的評(píng)論只會(huì)增加噪音和混亂。此外,評(píng)論需要更新和維護(hù),因此除非需要,否則不要為自己創(chuàng)造額外的工作。相反,在您認(rèn)為需要額外解釋的地方發(fā)表評(píng)論——例如,您正在測試一個(gè)復(fù)雜的企業(yè)系統(tǒng),其中包含許多令人困惑的集成。此外,您的測試人員是項(xiàng)目的新手,不具備所需的領(lǐng)域知識(shí)。
SRP——盡可能在測試中使用單一責(zé)任原則。這將使調(diào)試失敗的測試更容易,并簡化處理假陽性/陰性。此外,確保每個(gè)類、函數(shù)等只做一件事——這將使您的自動(dòng)化代碼更易于維護(hù)和重構(gòu)。
持續(xù)重構(gòu)是一個(gè)永無止境的過程;隨著知識(shí)的提高,您會(huì)注意到代碼可以改進(jìn)的地方。此外,技術(shù)變革將需要代碼重構(gòu),因此請(qǐng)將重構(gòu)作為您職業(yè)生涯中的常態(tài)。
了解在自動(dòng)化中有用的設(shè)計(jì)模式
設(shè)計(jì)模式是有益的,因?yàn)樗鼈兲峁┝嗽S多好處:它們是構(gòu)建代碼的絕佳方式,它們眾所周知,因此您的代碼將被其他人閱讀,等等。
測試自動(dòng)化中最著名的方法之一是POM(頁面對(duì)象模型),這是一種主要用于UI自動(dòng)化的OOP方法,其中網(wǎng)站上的頁面對(duì)應(yīng)于代碼中的對(duì)象——通常是類。
接下來,我們有Factory原則,它涉及一個(gè)超類和許多子類。當(dāng)您事先不知道需要?jiǎng)?chuàng)建什么類型的對(duì)象時(shí),它最有用。其他常用的還有Facade模式、Singleton和Fluent接口。
學(xué)習(xí)清潔代碼實(shí)踐和原則
我發(fā)現(xiàn)Rober.C.Martin(也被稱為Uncl.Bob)已經(jīng)很好地總結(jié)了這些。他是當(dāng)今IT領(lǐng)域最有經(jīng)驗(yàn)的人之一,他的影響力是巨大的。查看GitHub上的Gist了解更多詳情。有關(guān)更多詳細(xì)信息,您可以閱讀他關(guān)于此主題的書或參考下面的信息圖:
學(xué)習(xí)網(wǎng)絡(luò)工作原理的基礎(chǔ)知識(shí)
在這里,我們需要具備一些網(wǎng)絡(luò)技術(shù)、HTML、CSS和JavaScript的基礎(chǔ)知識(shí)。我們還應(yīng)該對(duì)Web瀏覽器的工作原理有一個(gè)基本的了解。例如,需要了解當(dāng)他們?cè)跒g覽器中輸入U(xiǎn)RL并按下回車鍵時(shí)會(huì)發(fā)生什么。發(fā)生這種情況時(shí)發(fā)送的請(qǐng)求是什么,它們是什么意思?什么是DNS,它如何適應(yīng)這個(gè)過程?什么是IP地址?什么是HTTP協(xié)議,為什么在我們進(jìn)行API測試時(shí)它必不可少?此外,還應(yīng)該通過熟悉最常見的格式(例如XML和JSON)來了解數(shù)據(jù)是如何傳輸?shù)?。最后,了解服?wù)器端和客戶端之間的區(qū)別以及數(shù)據(jù)如何存儲(chǔ)在數(shù)據(jù)庫中——無論是關(guān)系數(shù)據(jù)庫(基于表,如SQL)還是基于文檔的非關(guān)系數(shù)據(jù)庫,如MongoDB。
選擇一個(gè)UI自動(dòng)化工具來開始
如果您剛剛起步,那么今天可用的工具數(shù)量之多可能會(huì)讓您不知所措——我們有這么多選擇既是福也是禍!但是,如果我們積極地看待它,堅(jiān)持使用一種工具有其優(yōu)勢。當(dāng)你學(xué)好它時(shí),你將了解具有類似用途的其他工具在功能方面必須具備哪些功能,以及某種工具的常見缺點(diǎn)是什么。這種元知識(shí)以后將使學(xué)習(xí)新工具變得更加容易,而且花費(fèi)的時(shí)間和精力更少!
使用UI工具時(shí),請(qǐng)考慮它的易用性、支持、是否有活躍的社區(qū)、好的教程、該特定工具的市場需求等。無聊的”工具——它具有很高的采用率和良好的信任度,而不是尚未被廣泛使用的新的熱門工具。例如,Selenium被廣泛使用(其優(yōu)點(diǎn)和缺點(diǎn))、文檔齊全,并且擁有大量的在線教程。盡管如此,Playwright和Cypress(比Selenium更容易設(shè)置,適用于簡單的網(wǎng)站,但在處理重定向、iframe和更改標(biāo)簽時(shí)會(huì)遇到問題)似乎更有吸引力,但使用并不那么廣泛——盡管它們的采用正在穩(wěn)步增長——因?yàn)樘貏e是Cypress,因?yàn)樗赑laywright之前問世。
Playwright是一個(gè)開源的跨瀏覽器自動(dòng)化框架,無需第三方工具即可提供端到端測試。了解它是什么、如何安裝它以及我們?nèi)绾问褂肞laywright執(zhí)行測試。
了解HTTP協(xié)議以及如何自動(dòng)化API測試
超文本傳輸??協(xié)議(HTTP)是用于傳輸超媒體文檔(如HTML)的應(yīng)用層協(xié)議。它旨在在瀏覽器和服務(wù)器之間進(jìn)行通信,但還有其他用途。首先,作為測試人員,您需要了解它的基礎(chǔ)知識(shí),例如HTTP方法(GET、POST、DELETE、PUT等)、標(biāo)頭、請(qǐng)求和響應(yīng)以及最常見的狀態(tài)代碼。然后,學(xué)習(xí)使用瀏覽器中的開發(fā)人員工具(網(wǎng)絡(luò)選項(xiàng)卡)來深入了解發(fā)送和接收的HTTP請(qǐng)求。最后,學(xué)習(xí)一些HTTP客戶端工具,例如Postman,最好是HTTP客戶端庫,例如來自Apache的庫或Rest-Assured等工具。
API測試將使您作為測試人員的生活更輕松,因?yàn)樗cUI自動(dòng)化相比具有許多優(yōu)勢,例如更早的測試(您可以在UI可用之前測試業(yè)務(wù)邏輯)。此外,API測試的開發(fā)和維護(hù)速度更快、更容易;即使在自動(dòng)化UI時(shí),API測試知識(shí)也會(huì)使您受益。
假設(shè)您有一個(gè)要求用戶登錄的UI。執(zhí)行該測試的先決條件是用戶首先登錄以進(jìn)行身份??驗(yàn)證并獲得訪問所請(qǐng)求資源的授權(quán)。由于UI測試比低級(jí)別測試花費(fèi)的時(shí)間更長,因此通過登錄表單登錄用戶是不必要的時(shí)間浪費(fèi)。相反,您可以請(qǐng)求HTTP為用戶獲取令牌并繼續(xù)測試。這樣,您將獲得相同的結(jié)果,但速度要快得多。
熟悉數(shù)據(jù)庫基礎(chǔ)知識(shí)
學(xué)習(xí)SQL(或一些非關(guān)系數(shù)據(jù)庫)的基礎(chǔ)知識(shí)以在測試中使用CRUD(創(chuàng)建、讀取、更新、刪除)。這將使您能夠在自動(dòng)化中使用數(shù)據(jù)驅(qū)動(dòng)的方法,即從數(shù)據(jù)庫中獲取測試數(shù)據(jù),將一些記錄存儲(chǔ)在數(shù)據(jù)庫中(如果測試需要),通過自動(dòng)化測試更改一些數(shù)據(jù),等。訪問有效的測試數(shù)據(jù)并使用它在進(jìn)行可靠測試方面起著重要作用,因?yàn)樵S多錯(cuò)誤都與數(shù)據(jù)相關(guān)。
選擇一個(gè)測試管理工具以簡化報(bào)告
一個(gè)好的測試管理工具甚至可以幫助自動(dòng)化測試。選擇此類工具時(shí),請(qǐng)確保其API與報(bào)告工具集成。一些最流行的測試管理工具是——TestRail、Xray、Zephyr等。另一件需要考慮的事情是與其他工具的集成——例如,當(dāng)你運(yùn)行測試時(shí),你能得到生成的報(bào)告(關(guān)于通過、失敗和跳過測試)通過Slack、Teams等通過電子郵件或發(fā)送給您?
始終牢記測試的手動(dòng)方面
自動(dòng)化和手動(dòng)測試齊頭并進(jìn)。要在自動(dòng)化方面取得成效,您還需要成為一名優(yōu)秀的探索性測試人員,他知道如何深入研究您正在測試的系統(tǒng),以確定在風(fēng)險(xiǎn)覆蓋方面對(duì)自動(dòng)化候選方案最有利的場景,并識(shí)別是否有回報(bào)在自動(dòng)化它們時(shí)進(jìn)行投資是值得的。此外,在自動(dòng)化測試之前,您需要熟悉被測系統(tǒng)以提高您的領(lǐng)域知識(shí)。與領(lǐng)域?qū)<疫M(jìn)行配對(duì)測試在這方面也有很大幫助。
結(jié)論
一開始,進(jìn)入自動(dòng)化領(lǐng)域似乎令人恐懼和望而生畏,但與其感到緊張不安并試圖一次學(xué)習(xí)所有內(nèi)容,不如分段學(xué)習(xí),一次攻克一個(gè)主題。保持一致和好奇,并始終嘗試應(yīng)用您從閱讀博客、查看文檔和觀看教程中學(xué)到的知識(shí)。
不要只是復(fù)制您看到的內(nèi)容并執(zhí)行相同的步驟;試著給它你的扭曲;不要自動(dòng)化課程講師正在使用的同一網(wǎng)站,而是嘗試不同的網(wǎng)站。當(dāng)然,這會(huì)讓你的事情變得更難一些,但這是一個(gè)很好的跡象,表明你在困難的時(shí)候正在學(xué)習(xí)。
慢慢來,保持一致,并有長期目標(biāo)。在6-12個(gè)月的專門學(xué)習(xí)中,您可以精通自動(dòng)化。在那之后,你被聘用為初級(jí)職位、談判更好的加薪或找到一份薪水更高的工作就足夠了。
最后,不要被測試自動(dòng)化嚇倒;它不會(huì)讓你自動(dòng)失業(yè)。自動(dòng)化在那里充當(dāng)絆線或警報(bào),如果有什么東西壞了,你會(huì)立即得到通知。這比從客戶那里聽到缺陷要好得多。此外,自動(dòng)化將釋放您的一些時(shí)間(在最初的開發(fā)和設(shè)置工作之后)。通過自動(dòng)執(zhí)行重復(fù)性任務(wù),您將有更多時(shí)間用于測試其他方面,而這些方面對(duì)人類的創(chuàng)造力意義重大。祝您在自動(dòng)化之旅中好運(yùn)!
- 上一篇
ChatGPT能否對(duì)谷歌在搜索領(lǐng)域的主導(dǎo)地位構(gòu)成威脅?
幾十年來,Google 已成為全球數(shù)十億人的生活空間,成為回答他們查詢的首選搜索引擎。從使用它來學(xué)習(xí)“如何制作山核桃派”到通過輸入癥狀來診斷疾病,谷歌以其臭名昭著
- 下一篇
網(wǎng)絡(luò)智能:開啟數(shù)字化轉(zhuǎn)型的新機(jī)遇
隨著世界變得越來越數(shù)字化,企業(yè)也在努力跟上不斷變化和不斷變化的終端用戶期望的步伐。在當(dāng)今的數(shù)字時(shí)代蓬勃發(fā)展意味著現(xiàn)代企業(yè)必須擁抱數(shù)字化轉(zhuǎn)型,以提高運(yùn)營效率和規(guī)模創(chuàng)新——而絕大多數(shù)企業(yè)正在這樣做。