網(wǎng)站規(guī)劃與建設(shè)的流程與方法 高中信息技術(shù)快手seo
滴滴面試:
1. 自己負(fù)責(zé)哪部分功能?
農(nóng)餐對(duì)接系統(tǒng)分為了兩大子系統(tǒng),一個(gè)是個(gè)人訂餐系統(tǒng),二是餐館、個(gè)人與農(nóng)產(chǎn)品供應(yīng)商進(jìn)行農(nóng)產(chǎn)品交易系統(tǒng)。我主要負(fù)責(zé)組織測(cè)試人員對(duì)該系統(tǒng)進(jìn)行測(cè)試。
我們測(cè)試分為兩個(gè)階段:
一、功能測(cè)試階段。主要負(fù)責(zé)編寫測(cè)試計(jì)劃、測(cè)試用例、部署禪道BUG管理系統(tǒng),進(jìn)行功能測(cè)試。
首先,我們將系統(tǒng)分為了訂餐平臺(tái)、采購平臺(tái)、登錄注冊(cè)、消費(fèi)者/餐館/供應(yīng)商后臺(tái)等七個(gè)模塊。
其次,使用等價(jià)類劃分和邊界值分析法相結(jié)合,針對(duì)每個(gè)模塊設(shè)計(jì)測(cè)試用例。
二、 UI層自動(dòng)化測(cè)試。使用PO設(shè)計(jì)模式,工具是Selenium+Unit test+Jenkins。
2.1 目的
這個(gè)階段,是在我們項(xiàng)目需求已經(jīng)明確,版本已經(jīng)穩(wěn)定的情況下開始的,主要考慮了幾個(gè)方面:
1. UI層在多平臺(tái)、多瀏覽器下運(yùn)行結(jié)果存在不同。也就是需要我們?cè)诓煌脚_(tái)、瀏覽器下運(yùn)行相同的測(cè)試案例,大量的重復(fù)勞作力
2. 其次,我們項(xiàng)目因?yàn)榍捌谠O(shè)計(jì)不夠嚴(yán)謹(jǐn)、版本部署不夠規(guī)范,會(huì)出現(xiàn)BUG重復(fù)出現(xiàn)的情況,也就是需要我們每日構(gòu)建后進(jìn)行回歸測(cè)試。
3. 同時(shí),自己希望能夠鍛煉編程能力。
2.2 內(nèi)容
在設(shè)計(jì)UI層自動(dòng)化測(cè)試用例的時(shí)候,使用的是PO設(shè)計(jì)模式,也就是把每一個(gè)頁面所需要操作的元素和步驟都封裝在一個(gè)頁面類中。然后 Selenium+Unit test搭建四層框架——實(shí)現(xiàn)數(shù)據(jù)、腳本、業(yè)務(wù)邏輯分離(關(guān)鍵字驅(qū)動(dòng))
1)基礎(chǔ)層(BasePage)
設(shè)計(jì)一個(gè)基本的Page類,所有頁面皆繼承該類。提供了一個(gè)頁面需要實(shí)現(xiàn)的基本功能及公共方法。
2)業(yè)務(wù)邏輯層(Pages):
按照PO設(shè)計(jì)模式,將每個(gè)頁面抽象為一個(gè)類,放在Pages包里面,每個(gè)頁面繼承Basepage,可調(diào)用Data層數(shù)據(jù),內(nèi)容包括:
該頁面所有的操作對(duì)象屬性
實(shí)現(xiàn)的功能
3)數(shù)據(jù)層(Data)
該層存放相關(guān)數(shù)據(jù),例如:用戶數(shù)據(jù)和密碼。在測(cè)試用例可通過調(diào)用數(shù)據(jù)層的數(shù)據(jù)來進(jìn)行操作。
4)測(cè)試用例層(Testcases)
每一個(gè)測(cè)試用例testcase都對(duì)應(yīng)Pages里面的一個(gè)頁面,繼承unnitest.TestCase類。通過調(diào)用對(duì)應(yīng)頁面類的方法,數(shù)據(jù)層的數(shù)據(jù)、增加斷言(assert)來驗(yàn)證功能的正確性。
此外通過Jenkins自動(dòng)執(zhí)行測(cè)試、代碼質(zhì)量檢測(cè)和部署到測(cè)試服務(wù)器、部署到生產(chǎn)服務(wù)器上
2.3 自動(dòng)化測(cè)試執(zhí)行策略——三個(gè)階段
使用Jenkins持續(xù)集成工具來執(zhí)行測(cè)試腳本和部署,主要設(shè)置了三個(gè)任務(wù):
tm_test:用于執(zhí)行自動(dòng)化測(cè)試腳本,檢測(cè)代碼質(zhì)量
tm_staging_deploy:用于在測(cè)試服務(wù)器上部署代碼
tm_deploy:用于在生產(chǎn)服務(wù)器上部署
我們將測(cè)試分為三個(gè)階段:
1. 開發(fā)新的需求時(shí),創(chuàng)建分支devN。當(dāng)在這個(gè)分支中,需求開發(fā)完成或者Bug修復(fù),就配合測(cè)試人員利用JUNit框架進(jìn)行單元測(cè)試以及功能測(cè)試。通過測(cè)試后,合并到master上。
2. 當(dāng)master有變動(dòng),則觸發(fā)tm_test任務(wù),執(zhí)行自動(dòng)化測(cè)試腳本和代碼質(zhì)量檢測(cè)。如果通過則自動(dòng)觸發(fā)tm_staging_deploy,部署到測(cè)試服務(wù)器,如果沒有通過,自動(dòng)化測(cè)試腳本會(huì)將Bug截圖發(fā)送給測(cè)試人員。
3. 登陸生產(chǎn)服務(wù)器上,對(duì)網(wǎng)站進(jìn)行功能測(cè)試。如果通過測(cè)試,則手動(dòng)觸發(fā)tm_deploy,部署到生產(chǎn)服務(wù)器。如果沒有通過,在禪道管理系統(tǒng)上把bug指派給相應(yīng)模塊的開發(fā)人員。
2. 在使用Selenium中遇到的最大的問題?如何解決?——測(cè)試用例的可靠性
誤報(bào)通常是我們?cè)谑褂胹elenium的最頭疼的問題,這使得很難把selenium測(cè)試用例加入到自動(dòng)構(gòu)建中。有些構(gòu)建是必須要成功的,如果失敗將會(huì)阻塞整個(gè)發(fā)布流程。
解決方法——重試我們的解決方案是在測(cè)試步驟和測(cè)試集中都加入重試機(jī)制。
產(chǎn)生誤報(bào)最大原因是selenium在頁面加載完成之前就開始請(qǐng)求頁面資源。
重試機(jī)制:
利用遞歸封裝了一個(gè)等待元素的方法。其中,設(shè)置最大等待時(shí)間為1s,輪詢時(shí)間為50ms,這個(gè)方法會(huì)不斷輪詢,直到方法執(zhí)行成功或者超過設(shè)置的最大等待時(shí)間。在我們最好的一次實(shí)踐中,我們把一個(gè)測(cè)試用例的誤報(bào)率從10%降低到0,并且執(zhí)行時(shí)間從原先的45秒降低到33秒。
@annotation.tailrecprivate def retry[A](maxWaitMillis: Long, pollIntervalMillis: Long)(callback: => A): A = {
val start = System.currentTimeMillis
Try {
callback
} match {
case Success(value) => value
case Failure(thrown) => {
val timeForTest = System.currentTimeMillis - start
val maxTimeToSleep = Math.min(maxWaitMillis - pollIntervalMillis, pollIntervalMillis)
val timeLeftToSleep = maxTimeToSleep - timeForTest
if (maxTimeToSleep <= 0) { throw thrown } else { if (timeLeftToSleep > 0) {
Thread.sleep(timeLeftToSleep)
}
retry(maxWaitMillis - pollIntervalMillis, pollIntervalMillis)(callback)
}
}
}
}
其余還有元素定位問題:
我們主要通過Selenium WebDriver進(jìn)行元素定位。但是會(huì)遇到兩大類定位不到元素的情況:
1. ElementNotVisible元素不可見
對(duì)于這種情況,這個(gè)元素display = none/hidden,通過JS更改display = block來解決
2. NoSuchElementException沒有這種元素
1)最常見的:頁面沒有加載完全,我們就去定位這個(gè)元素。
2)動(dòng)態(tài)ID無法定位元素——1)直接使用Xpath相對(duì)路徑;2)根據(jù)部分元素定位
3)Iframe——switch_to_iframe
4) Alert——switch_to_alert
5)下拉框——Select標(biāo)簽下拉框、二次定位
3. UI層自動(dòng)化測(cè)試的作用?發(fā)現(xiàn)什么BUG?
他就是功能測(cè)試,使用WebDriver真實(shí)的模擬了用戶的操作過程。
4.有無發(fā)現(xiàn)selenium的BUG
5. 與人工測(cè)試相比,Selenium測(cè)試的產(chǎn)出,相對(duì)的優(yōu)勢(shì)?
6. 有沒有封裝過Selenium方法?
有,在BasePage層,我們就對(duì)實(shí)現(xiàn)一個(gè)頁面的基本功能進(jìn)行了封裝。
例如:
1. 設(shè)置重試機(jī)制。
2. 對(duì)webdriver各種方法進(jìn)行封裝。
JUnit如何實(shí)現(xiàn),它的功能是什么?什么時(shí)候使用?
一、Selenium基本認(rèn)識(shí)
1. 什么是Selenium?
Selenium是瀏覽器自動(dòng)化工具,主要用來Web的自動(dòng)化測(cè)試,以及基于Web的任務(wù)管理自動(dòng)化。它支持的語言有:python、Java、ruby、JavaScript等,并且?guī)缀跄茉谥髁鞯臑g覽器上運(yùn)行。
Selenium2.0、Selenium3.0主要由三大部分組成:SeleniumIDE、Selenium WebDriver、Selenoium Grid。
Selenium IDE:錄制和回放腳本,可以模擬用戶對(duì)頁面的真實(shí)操作,區(qū)別于其他工具:是通過攔截http請(qǐng)求。
一般只把錄制腳本當(dāng)作一個(gè)輔助功能,因?yàn)橐粋€(gè)UI節(jié)點(diǎn)的細(xì)微變化,都可能導(dǎo)致自動(dòng)化測(cè)試工具無法識(shí)別,當(dāng)測(cè)試項(xiàng)目項(xiàng)目大時(shí),定位、更新十分困難。
其次,錄制的腳本有時(shí)候人工難以理解。
Selenium Grid:實(shí)現(xiàn)在多臺(tái)機(jī)器上、和異構(gòu)環(huán)境中并行執(zhí)行測(cè)試用例。并行執(zhí)行不僅節(jié)省時(shí)間,而且可以同時(shí)在不同的瀏覽器、平臺(tái)上運(yùn)行自動(dòng)化測(cè)試腳本。
Selenium Web Driver:針對(duì)各個(gè)瀏覽器而開發(fā),通過原生瀏覽器支持或者擴(kuò)展(Chrome webDrive、FireFox WebDriver)直接控制瀏覽器
VS Selenium RC(Selenium1.0):在瀏覽器中運(yùn)行javaScript,使用瀏覽器內(nèi)置的JavaScript來翻譯和執(zhí)行selense
2. Selenium的特點(diǎn)有:
支持錄制和回放(Selenium IDE)
通過WebDriver,直接控制瀏覽器,而不是通過攔截HTTP請(qǐng)求,實(shí)現(xiàn)真正模仿了用戶的操作;同時(shí)使用WebDriver能夠靈活的獲取頁面元素(WebDriver),并且提供執(zhí)行JS的接口
能夠分布式運(yùn)行在不同機(jī)器和異構(gòu)環(huán)境中(不同瀏覽器)
3. Selenium的內(nèi)部運(yùn)行機(jī)制?如何能夠跨瀏覽器使用?——WebDriver原理(&RC原理)
1)RC原理
在Selenium1.0中,是通過Selenium RC服務(wù)器作為代理服務(wù)器去訪問應(yīng)用從而達(dá)到測(cè)試的目的。
Selenium RC分為三個(gè)部分,Launcher、HttpProxy、Core。
Launcher用于啟動(dòng)瀏覽器,把Selenium Core加載到瀏覽器中,并且把瀏覽器的代理設(shè)置為Selenium Server的Http Proxy。
Core是一堆JavaScript的集合,所以本質(zhì)相當(dāng)于運(yùn)行這些JavaScript函數(shù)來實(shí)現(xiàn)對(duì)Html頁面的操作。——這也是為什么可以運(yùn)行在幾乎所有主流的瀏覽器上。
然而直接運(yùn)行JavaScript會(huì)有極大的安全漏洞,所以會(huì)受到“同源限制”,在這個(gè)基礎(chǔ)上,Selenium2.0引入了WebDriver。
2)Web Driver原理
webDriver是按照client/server模式設(shè)計(jì)的。client是我們的測(cè)試腳本,發(fā)送請(qǐng)求;server就是打開的瀏覽器,用來接收client的請(qǐng)求并作出響應(yīng)。
具體的工作流程:
webDriver打開瀏覽器并綁定到指定端口。啟動(dòng)的瀏覽器作為遠(yuǎn)程服務(wù)器remote server
client通過CommandExecuter發(fā)送http請(qǐng)求給遠(yuǎn)程服務(wù)器的偵聽端口(the wire protocal)
遠(yuǎn)程服務(wù)器根據(jù)原生的瀏覽器組件來轉(zhuǎn)化為瀏覽器的本地(native)調(diào)用
所以web Driver用到的協(xié)議:
打開瀏覽器時(shí):HTTP協(xié)議
client端發(fā)送http請(qǐng)求到遠(yuǎn)程服務(wù)器的偵聽端口:the wire protocol
其中:
有線協(xié)議:指的是從點(diǎn)到點(diǎn)獲取數(shù)據(jù)的方式,是應(yīng)用層的協(xié)議。
HTTP協(xié)議:是用于從服務(wù)器傳輸超文本標(biāo)記語言HTML到客戶端的通信協(xié)議。是一個(gè)應(yīng)用層協(xié)議,由請(qǐng)求/響應(yīng)構(gòu)成,是一個(gè)標(biāo)準(zhǔn)的客戶/服務(wù)器模式。是一個(gè)無狀態(tài)的協(xié)議。(無狀態(tài):對(duì)事務(wù)沒有記憶能力,不會(huì)保存這次傳輸?shù)男畔ⅰ?jié)約內(nèi)存)
4. 如何提高selenium腳本的執(zhí)行速度?
1)優(yōu)化測(cè)試用例。
盡可能不用sleep、減少使用implicityWait,而使用WebDriverWait/FluentWait,這樣可以優(yōu)化等待時(shí)間
減少不必要的操作步驟。
2)使用Selenium grid,通過testNG實(shí)現(xiàn)并發(fā)執(zhí)行。
說到這里,在編寫測(cè)試用例的時(shí)候,一定要實(shí)現(xiàn)松耦合,然后再服務(wù)器允許的情況下,盡量設(shè)置多線程實(shí)現(xiàn)并發(fā)運(yùn)行。
3)設(shè)置等待時(shí)間、中斷頁面加載。如果頁面加載內(nèi)容太多,我們可以查看一下加載緩慢的原因,在不影響測(cè)試的情況下,可以設(shè)置超時(shí)時(shí)間,中斷頁面加載。
5. 提高自動(dòng)化腳本穩(wěn)定性
首先我們要分析出不穩(wěn)定的原因,然后有針對(duì)的去解決。
1)頁面加載內(nèi)容太多。如果頁面加載內(nèi)容太多,在不影響測(cè)試的情況下,我們可以設(shè)置超時(shí)時(shí)間,中斷頁面加載。
2)網(wǎng)絡(luò)原因。設(shè)置等待時(shí)間,如果在響應(yīng)時(shí)間內(nèi)沒有加載成功,則重新執(zhí)行測(cè)試。
3)優(yōu)化代碼,減少容易沖突的函數(shù)。
4)多線程運(yùn)行時(shí),測(cè)試用例間相互影響。在并發(fā)操作時(shí),如果用例之間的耦合性沒有設(shè)計(jì)好,就會(huì)有影響。
綜上所述,我們就可以用線程的方式來監(jiān)控測(cè)試進(jìn)程的WEB加載執(zhí)行狀態(tài)。
在頁面會(huì)發(fā)生跳轉(zhuǎn)時(shí),啟動(dòng)一個(gè)Thread來監(jiān)控進(jìn)程的狀況。
在Thread的run方法中定義一個(gè)計(jì)時(shí)器。
如果計(jì)時(shí)器超時(shí),則可以刷新頁面,計(jì)時(shí)器清零;
若此時(shí)刷新頁面再次超時(shí),則關(guān)閉當(dāng)前瀏覽器進(jìn)程,fail掉這個(gè)測(cè)試用例,繼續(xù)執(zhí)行其他的測(cè)試用例。
6. 高質(zhì)量自動(dòng)化腳本特點(diǎn)
業(yè)務(wù)和代碼分離,封裝性好。
用例之間耦合性低,獨(dú)立性強(qiáng),易于擴(kuò)展維護(hù)
7. 你覺得自動(dòng)化測(cè)試最大的缺陷是什么?
1. 一旦項(xiàng)目發(fā)生變化,測(cè)試用例就需要改進(jìn),工作量大。
2. 驗(yàn)證的范圍有限,操作更加復(fù)雜,比如說簡(jiǎn)單的一個(gè)驗(yàn)證驗(yàn)證碼,如果是人工識(shí)別很快就可以輸入,但是自動(dòng)化測(cè)試中會(huì)增添很多困難。那么這個(gè)時(shí)候速度也不如人工。
3. 不穩(wěn)定
4. 可靠性不強(qiáng)
5. 成本與收益
8. Selenium用JavaScript去操作頁面元素會(huì)碰到什么問題?Selenium是如何解決這個(gè)問題的?
然而直接在瀏覽器中運(yùn)行JavaScript會(huì)有很大的安全漏洞,所以就會(huì)受到“同源策略”的限制。也就是,當(dāng)你去要運(yùn)行一個(gè)腳本的時(shí)候,會(huì)進(jìn)行同源檢查,只有和被操控網(wǎng)頁同源的腳本才能被運(yùn)行。
Selenium1.0是通過采用代理模式來解決這個(gè)問題的。
首先測(cè)試腳本向Selenium Server發(fā)出Http請(qǐng)求建立,那么Selenium Server通過Launcher來啟動(dòng)服務(wù)器,將Core加載到瀏覽器頁面中,并將瀏覽器代理設(shè)置為Http Proxy。
其次,測(cè)試腳本發(fā)送Http請(qǐng)求,Selenium Server對(duì)這個(gè)Http進(jìn)行解析,然后通過代理服務(wù)器發(fā)送JS命令通知Core執(zhí)行操作瀏覽器的動(dòng)作,Core接受到指令后,執(zhí)行操作。
Selenium Server得到瀏覽器的Http的請(qǐng)求后,重組請(qǐng)求,獲取對(duì)應(yīng)的頁面。
最后代理服務(wù)器將這個(gè)頁面返回給瀏覽器。
在這個(gè)基礎(chǔ)上,Selenium2.0是通過webDriver來時(shí)先跨平臺(tái)的。WebDriver是針對(duì)各個(gè)瀏覽器來開發(fā),是一個(gè)遠(yuǎn)程控制界面,提供了一組接口來發(fā)現(xiàn)和操作Web文檔中的DOM元素并控制用戶代理的行為。
二、自動(dòng)化測(cè)試設(shè)計(jì)
1. 為什么想到做UI自動(dòng)化測(cè)試?
在前期,我們也配合了開發(fā)人員使用JUnit框架進(jìn)行單元測(cè)試,測(cè)試覆蓋率從0提升到50%。
但是隨著版本的穩(wěn)定,我們開始考慮UI層是與客戶交互最多的界面,如果要提高用戶體驗(yàn),必須從UI層入手。其次,大量并且重復(fù)的勞動(dòng)力都集中在UI層,所以我們考慮到進(jìn)行UI層自動(dòng)化測(cè)試解放勞動(dòng)力。
2. 如何設(shè)計(jì)Selenium的自動(dòng)化測(cè)試腳本?
我們從以下幾個(gè)方面來回答:
1. 自動(dòng)化測(cè)試的內(nèi)容?
2. 自動(dòng)化測(cè)試用例設(shè)計(jì)的原則
3. 使用的框架/設(shè)計(jì)模式
3. PO設(shè)計(jì)模式,四層框架——數(shù)據(jù)、業(yè)務(wù)邏輯、測(cè)試腳本分離(關(guān)鍵字驅(qū)動(dòng))
2.1 PO設(shè)計(jì)模式:
將一個(gè)頁面內(nèi)的操作對(duì)象(按鈕框、輸入框等)和操作的步驟封裝在每個(gè)Page里面,也Page為單位進(jìn)行管理。這樣Selenium測(cè)試用例能夠通過調(diào)用頁面類來獲取頁面元素,從而巧妙的避開了當(dāng)頁面元素的ID等屬性發(fā)生變化時(shí),修改代碼的情況。——>提高了代碼的復(fù)用性、可讀性及減少工作量。
2.2 四層架構(gòu):
1. 基礎(chǔ)層(BasePage)
設(shè)計(jì)一個(gè)基本的Page類,所有頁面皆繼承該類。提供了一個(gè)類需要實(shí)現(xiàn)的基本功能及公共方法。
2. 業(yè)務(wù)邏輯層(Pages):
按照PO設(shè)計(jì)模式,將每個(gè)頁面抽象為一個(gè)類,放在Pages包里面,每個(gè)頁面繼承Basepage,可調(diào)用Data層數(shù)據(jù),內(nèi)容包括:
該頁面所有的操作對(duì)象屬性
實(shí)現(xiàn)的功能
3. 數(shù)據(jù)層(Data)
該層存放相關(guān)數(shù)據(jù),例如:用戶數(shù)據(jù)和密碼。在業(yè)務(wù)邏輯層可通過調(diào)用數(shù)據(jù)層的數(shù)據(jù)來進(jìn)行操作。
4. 測(cè)試層(Testcases)
每一個(gè)測(cè)試用例testcase都對(duì)應(yīng)Pages里面的一個(gè)頁面,繼承unnitest.TestCase類。通過調(diào)用對(duì)應(yīng)頁面類的方法,增加斷言(assert)來驗(yàn)證功能的正確性。其中每個(gè)測(cè)試用例都以test_開頭。
此外通過Jenkins自動(dòng)執(zhí)行測(cè)試、代碼質(zhì)量檢測(cè)和部署到測(cè)試服務(wù)器、部署到生產(chǎn)服務(wù)器上
4. 自動(dòng)化測(cè)試執(zhí)行策略
自動(dòng)化測(cè)試用例的執(zhí)行主要是通過Jenkins來實(shí)現(xiàn)的。而執(zhí)行的策略是根據(jù)測(cè)試用例的類別、目的來設(shè)計(jì)的。
在Jenkins中,我們?cè)O(shè)定了三個(gè)任務(wù):
tm_test:用于執(zhí)行自動(dòng)化測(cè)試腳本,檢測(cè)代碼質(zhì)量
tm_staging_deploy:用于在測(cè)試服務(wù)器上部署代碼
tm_deploy:用于在生產(chǎn)服務(wù)器上部署
測(cè)試用例的目的分為三種情況:
1)用來監(jiān)控。
在此目的下,我們就把自動(dòng)化測(cè)試用例設(shè)置成定時(shí)執(zhí)行的,如果每五分鐘或是一個(gè)小時(shí)執(zhí)行一次,在jenkins上創(chuàng)建一個(gè)定時(shí)任務(wù)即可。
2)必須回歸的用例
當(dāng)修復(fù)了新功能或者Bug以后,首先開發(fā)人員進(jìn)行冒煙測(cè)試,如果通過了JUnit單元測(cè)試,交給測(cè)試人員進(jìn)行功能測(cè)試。通過測(cè)試后,合并到master。
master一旦有變化,則觸發(fā)tm_test任務(wù),執(zhí)行自動(dòng)化測(cè)試腳本和代碼質(zhì)量檢測(cè)。如果通過,則自動(dòng)觸發(fā)tm_staging_deploy,部署到staging服務(wù)器上,沒有通過的話,自動(dòng)化測(cè)試腳本會(huì)自動(dòng)發(fā)送Bug截圖給測(cè)試人員。
3)不需要經(jīng)常執(zhí)行的測(cè)試用例/生產(chǎn)服務(wù)器上的代碼
有些非主要業(yè)務(wù)線的代碼,或者生產(chǎn)服務(wù)器上的代碼已經(jīng)很穩(wěn)定了,不需要時(shí)時(shí)回歸,所以我們采用人工執(zhí)行,在jenkins創(chuàng)建一個(gè)任務(wù),需要執(zhí)行的時(shí)候人工去構(gòu)建即可。
三、Jenkins
Jenkins是持續(xù)集成的工具,能夠自動(dòng)執(zhí)行測(cè)試和代碼檢測(cè),以及部署到服務(wù)器上。
【軟件測(cè)試到測(cè)試開發(fā)全測(cè)試生涯學(xué)習(xí)路線】
以及全套配套的學(xué)習(xí)資料,視頻教程....
:【以下路線圖太詳細(xì)了只能展開部分,具體的可以在文章末尾掃描小卡片備注000領(lǐng)取哦】
1:自動(dòng)化測(cè)試進(jìn)階系列:

2:全棧性能測(cè)試,監(jiān)控以及調(diào)優(yōu)

3:全棧測(cè)試開發(fā)平臺(tái)實(shí)戰(zhàn)

4:全棧安全測(cè)試滲透測(cè)試

5:devops持續(xù)集成部署

6:全棧接口測(cè)試工具進(jìn)階

7:跨平臺(tái)自動(dòng)化測(cè)試工具

8:大廠簡(jiǎn)歷,真題,錄音

9:全棧系列課企業(yè)項(xiàng)目實(shí)戰(zhàn)

總結(jié):現(xiàn)階段如何突出重圍呢?委員不斷的學(xué)習(xí),下面是軟件測(cè)試到測(cè)試開發(fā)全職業(yè)生涯全套學(xué)習(xí)資料
【需要的可以點(diǎn)擊下方官方推廣小卡片掃碼備注000免費(fèi)領(lǐng)取】
