隨著修復(fù)通過傳統(tǒng)測試模型發(fā)現(xiàn)的錯(cuò)誤所花費(fèi)的成本和時(shí)間的增加,將測試轉(zhuǎn)移到軟件開發(fā)生命周期 (SDLC) 的早期階段的想法越來越流行。事實(shí)上,87%的公司采用這種敏捷方法進(jìn)行軟件測試。
左移測試的目標(biāo)是通過對軟件開發(fā)計(jì)劃進(jìn)行早期和頻繁的測試來減少在項(xiàng)目代碼中發(fā)現(xiàn)的錯(cuò)誤數(shù)量。
在本章中,我們將介紹傳統(tǒng)和敏捷測試方法之間的差異。
測試是產(chǎn)品開發(fā)過程中必不可少的一部分,因?yàn)樗兄诖_保您開發(fā)的產(chǎn)品在完成后能夠真正發(fā)揮作用。?
可視化生產(chǎn)的最佳方式之一是想象一條傳送帶穿過工廠。隨著流程的推進(jìn),不同的組件被添加,最終形成成品。
但測試的最佳點(diǎn)在哪里呢?這個(gè)問題一直是專家們熱議的話題。
一些人認(rèn)為,在應(yīng)用程序編程接口(API)和圖形用戶界面(GUI)完成時(shí)需要進(jìn)行測試,而其他人則認(rèn)為在部署之前有些地方值得進(jìn)行測試。
他們通常分為兩大陣營:傳統(tǒng)測試和敏捷測試或轉(zhuǎn)變測試(新的多數(shù)派發(fā)現(xiàn)自己屬于這一類)。

這種測試方法通常發(fā)生在最后階段之前(如果你愿意的話,是傳送帶的右側(cè)而不是左側(cè)),這是有道理的,因?yàn)橛懈嗟漠a(chǎn)品需要檢查錯(cuò)誤。
話雖如此,在產(chǎn)品投入生產(chǎn)之前使用傳統(tǒng)的手動(dòng)測試方法來驗(yàn)證產(chǎn)品的安全性和功能性仍存在困難。
由于此測試發(fā)生在開發(fā)周期的后期,發(fā)現(xiàn)錯(cuò)誤或可用性問題通常會導(dǎo)致發(fā)布延遲,直到這些問題得到解決,從而造成瓶頸。
這導(dǎo)致許多實(shí)施傳統(tǒng)測試的公司開始進(jìn)行不定期發(fā)布,因此這些問題不再阻礙進(jìn)展。
此外,隨著項(xiàng)目接近尾聲,修復(fù)這些錯(cuò)誤和缺陷的成本也會大幅上升。僅憑這一點(diǎn)就可能導(dǎo)致成本和預(yù)算嚴(yán)重超支,從而推遲甚至破壞整個(gè)項(xiàng)目。

來源:www.stickyminds.com
優(yōu)點(diǎn):
缺點(diǎn):

與傳統(tǒng)測試不同,這種形式的敏捷測試從生產(chǎn)后開始測試,或者一直到傳送帶的“右側(cè)”。
使用右移方法,您將測試完整且正常運(yùn)行的應(yīng)用程序,以確保性能和可用性。目標(biāo)用戶提供有關(guān)其體驗(yàn)的反饋,以進(jìn)一步改進(jìn)軟件。
利用右移測試的常見測試技術(shù)包括:
雖然這種敏捷方法允許您與用戶合作以改進(jìn)您的產(chǎn)品,但這種測試僅在后期生產(chǎn)環(huán)境中有效。它需要輔以左移測試才能為您提供全面的結(jié)果。
優(yōu)點(diǎn):
缺點(diǎn):

為了防止錯(cuò)誤變成代價(jià)高昂的大問題,左移測試實(shí)際上是通過盡可能在開發(fā)過程的早期識別和解決問題,將測試推向“左邊”。
值得注意的是,左移并不意味著將測試轉(zhuǎn)移到更早的階段并忽略再次測試。
相反,左移測試鼓勵(lì)開發(fā)人員和測試人員盡早開始測試并不斷檢查錯(cuò)誤,而不是只關(guān)注開發(fā)的一個(gè)階段。
對于 API 來說,關(guān)鍵是能夠盡早測試功能應(yīng)用程序,以便您可以試用所有功能并查看是否存在任何邏輯缺陷、漏洞或安全漏洞。
例如,為了解決應(yīng)用程序中的BOLA/IDOR 缺陷,您需要運(yùn)行測試來驗(yàn)證用戶 A 不能查看/修改/刪除屬于用戶 B 的轉(zhuǎn)賬。
USPS數(shù)據(jù)泄露事件就是該漏洞的一個(gè)完美例子——用戶能夠進(jìn)行身份驗(yàn)證,然后查找系統(tǒng)中的任何其他用戶,包括他們的電子郵件地址、電話號碼、街道地址和其他 PII。
這里左移測試的主要好處是,如果應(yīng)用程序中存在缺陷,您可以在投入生產(chǎn)之前發(fā)現(xiàn)它,而惡意的人可能會首先發(fā)現(xiàn)它。
這種方法不僅僅需要改變流程,還需要轉(zhuǎn)變參與者的思維方式,以便他們在每個(gè)階段都能持續(xù)提供反饋。
左移測試是一種很好的方法,可以防患于未然,而不是事后才做出反應(yīng)。開發(fā)人員在將代碼推送到版本控制之前進(jìn)行的測試越多越好。
優(yōu)點(diǎn):
缺點(diǎn):
DevOps 的核心在于速度、敏捷性和效率。為了實(shí)現(xiàn)這些目標(biāo),組織需要向左轉(zhuǎn)。這意味著要擺脫傳統(tǒng)的“瀑布式”方法,轉(zhuǎn)向更敏捷的方法。
左移策略確保在開發(fā)生命周期中盡早考慮安全性。
左移有很多好處。以下是影響最大的好處:

左移的主要好處是它減少了最終產(chǎn)品的缺陷數(shù)量,提高了整體質(zhì)量。實(shí)施左移方法的公司質(zhì)量提高了45% 。
通過在開發(fā)過程的早期(在產(chǎn)品發(fā)布之前)識別和解決問題,這些缺陷進(jìn)入成品的可能性就會降低。
此外,左移鼓勵(lì)團(tuán)隊(duì)成員之間的協(xié)作和溝通。使用敏捷方法的企業(yè)通常會看到團(tuán)隊(duì)生產(chǎn)力提高60%,可見性提高 70%。
通過盡早讓測試人員參與,開發(fā)人員可以獲得有關(guān)其代碼的反饋并做出相應(yīng)的更改,從而實(shí)現(xiàn)更積極、更高效的整體開發(fā)過程。
左移還有助于縮短開發(fā)時(shí)間。實(shí)施左移等敏捷實(shí)踐的企業(yè)的交付時(shí)間縮短了64%。
如果及早發(fā)現(xiàn)缺陷,在它們演變成更大的問題之前,就更容易解決,這使得開發(fā)團(tuán)隊(duì)能夠?qū)W⒂谛鹿δ芎透倪M(jìn),而不是修復(fù)錯(cuò)誤。
左移可降低與開發(fā)相關(guān)的成本。在開發(fā)過程中越早發(fā)現(xiàn)漏洞,修復(fù)成本就越低。

來源:波耐蒙研究所
及早發(fā)現(xiàn)并解決缺陷就無需重新編寫代碼,從而為開發(fā)組織節(jié)省大量成本。
現(xiàn)在您對左移有了更好的了解,讓我們來探索一下它如何影響 DevOps。
GitHub估計(jì)開發(fā)人員的數(shù)量是安全專業(yè)人員數(shù)量的 500 倍,這意味著組織需要將左移安全措施整合到其開發(fā)中才能保持競爭力。
傳統(tǒng)測試的使用通常與 DevOps 不符,DevOps 強(qiáng)調(diào)將功能和更新從一個(gè)生產(chǎn)階段傳遞到下一個(gè)生產(chǎn)階段,而不會出現(xiàn)不必要的延遲。
他們是如何解決這個(gè)問題的?通過將左移等敏捷方法應(yīng)用到 DevOps 實(shí)踐中。
左移意味著將測試和安全活動(dòng)整合到從設(shè)計(jì)到生產(chǎn)的每個(gè)相關(guān)開發(fā)階段。
這一轉(zhuǎn)變的目標(biāo)很簡單:
為了有效而高效地做到這一點(diǎn),開發(fā)人員必須了解每個(gè)階段需要什么,以避免在防御惡意行為者可能利用的漏洞方面出現(xiàn)漏洞。
CI/CD 的采用改變了 SDLC,因?yàn)樗梢宰詣?dòng)化和監(jiān)控開發(fā)過程的每一步,從代碼集成到實(shí)時(shí)生產(chǎn)環(huán)境。
除了將團(tuán)隊(duì)重組為 DevSecOps 團(tuán)隊(duì)之外,公司還必須將安全測試盡早納入其部署流程,因?yàn)?CI 對于軟件開發(fā)仍然至關(guān)重要。
左移測試是一種在缺陷造成巨大損失之前識別和修復(fù)缺陷的有效方法,這意味著您的團(tuán)隊(duì)可以在開發(fā)周期中取得更快的進(jìn)展。
其他好處包括:
為了確保組織保持高水平的安全性,OWASP建議 DevSecOps 使用各種工具。以下是五種常用的工具:
| 工作原理: | DevSecOps 方法: | |
| SAST(靜態(tài)分析) | 在此過程中,通過訪問靜態(tài)源代碼進(jìn)行結(jié)構(gòu)測試,并生成有關(guān)任何潛在問題和解決方案的報(bào)告。 | 將這些測試集成到您的開發(fā)人員的開發(fā)環(huán)境中,以便立即獲得有關(guān)可能出現(xiàn)的問題的警告。 |
| DAST(動(dòng)態(tài)分析) | 該技術(shù)通過由外而內(nèi)的方法滲透到應(yīng)用程序的前端,并像攻擊者一樣發(fā)現(xiàn)安全漏洞。 | 在整個(gè)公司網(wǎng)絡(luò)基礎(chǔ)設(shè)施中推出應(yīng)用程序之前,請?jiān)跍y試和登臺環(huán)境中使用它來驗(yàn)證應(yīng)用程序的安全性。 |
| 交互式應(yīng)用安全測試 (IAST) | 使用預(yù)定義的測試用例,混合 IAST 工具可以識別相關(guān)的代碼行并在正在運(yùn)行的應(yīng)用程序中提供上下文補(bǔ)救建議。 | 通過在 SDLC 和 CI/CD 工作流程的早期階段集成此工具來降低安全漏洞的風(fēng)險(xiǎn)。 |
| 軟件組成分析(SCA) | 該技術(shù)用于識別系統(tǒng)組件,如開源和第三方庫,并告知您這些文件中存在的潛在漏洞。 | 將 SCA 與 SAST 配對以查找掃描無法檢測到的漏洞。 |
| 云安全態(tài)勢管理 (CSPM) | 使用此方法自動(dòng)評估您的多云基礎(chǔ)設(shè)施中可能存在的漏洞。 | 在整個(gè)開發(fā)過程中,根據(jù)環(huán)境對漏洞進(jìn)行優(yōu)先排序,實(shí)施此過程。 |
在上一章中,我們概述了左移策略如何幫助您的組織實(shí)現(xiàn)可持續(xù)軟件開發(fā)。在本章中,我們將探討優(yōu)化左移方法以最大程度發(fā)揮其優(yōu)勢的方法。
應(yīng)用左移測試的最佳方法是跨團(tuán)隊(duì)進(jìn)行小規(guī)模的迭代更改。以下是一些可以開始實(shí)施的更改:
作為第一步,您需要幫助您的團(tuán)隊(duì)了解左移測試的好處,通過確定如何在整個(gè) SDLC 中應(yīng)用這種方法,而不僅僅是作為一個(gè)時(shí)間過程。
降低風(fēng)險(xiǎn)的最佳方法是在各個(gè)階段進(jìn)行測試,并在整個(gè)過程中繼續(xù)努力。請記住,左移測試并不意味著將測試移至較早的階段并忽略稍后的測試。
這將導(dǎo)致流程效率低下,遺漏一些缺陷或漏洞,如果經(jīng)過更徹底的測試,這些缺陷或漏洞是可以得到補(bǔ)救的。
您需要關(guān)注:
雖然在流程早期進(jìn)行測試是左移測試的主要目標(biāo),但早期測試和實(shí)際測試之間存在著一條細(xì)微的界限。
這意味著您不想將測試移得太“左”,以至于在它提供可操作的信息之前它就會發(fā)生。
為了避免產(chǎn)生左移測試?yán)速M(fèi),您需要評估:
在左移方法中,開發(fā)人員和測試人員應(yīng)該一起工作。
當(dāng)開發(fā)人員測試單個(gè)單元時(shí),他們能夠在合并到主系統(tǒng)之前獲得更高質(zhì)量級別的代碼。
此外,QA 應(yīng)該了解一些基本的編碼,以幫助他們提高效率。編碼技能使測試人員能夠盡可能快速修復(fù)問題,這將使他們在修復(fù)錯(cuò)誤時(shí)的工作更加輕松。
為了鼓勵(lì)最大程度的協(xié)作,您需要確保他們能夠使用相同的測試實(shí)踐,例如測試驅(qū)動(dòng)開發(fā) (TDD) 或行為驅(qū)動(dòng)開發(fā) (BDD)。這可以鼓勵(lì)每個(gè)人保持一致。
API 占互聯(lián)網(wǎng)總流量的83%,Gartner甚至報(bào)告稱,API 很有可能在 2022 年成為主要的攻擊媒介。
由于 API 是許多數(shù)字化工作的支柱,因此您需要確保它們的安全。
如果沒有自動(dòng)化測試解決方案,左移測試相對無效,因?yàn)槟鷮⒃诖诉^程中累積大量開發(fā)成本。
緩解這種情況的一種方法是使用可以減少或消除對額外開發(fā)資源的需求的工具。

在本章中,我們將了解如何在組織中實(shí)際開始實(shí)施左移安全。
左移安全性可以通過多種方式實(shí)現(xiàn),但這是最重要的五個(gè)步驟。
確定左移對團(tuán)隊(duì)意味著什么,以幫助他們了解如何取得成功至關(guān)重要。為此,您需要:
DevSecOps 的目標(biāo)是促進(jìn)參與開發(fā)過程的所有利益相關(guān)者之間的協(xié)作與協(xié)調(diào)。
為此,各團(tuán)隊(duì)需要齊心協(xié)力,明確制定左移安全策略的目標(biāo)和目的。這應(yīng)包括:
實(shí)現(xiàn)以安全為中心的開發(fā)環(huán)境,在開發(fā)生命周期的每個(gè)階段都會考慮安全性 — — 無論是在項(xiàng)目規(guī)劃、開發(fā)代碼還是進(jìn)行測試期間選擇包。
您很可能需要做一些左移神話破除,以促進(jìn)平穩(wěn)過渡。最常見的誤解是左移意味著將測試移至較早的階段,然后忽略稍后的測試。
由于 API 是系統(tǒng)的窗口,因此應(yīng)用程序的安全性取決于您為其制定的安全策略。將 API 的安全要求納入您的左移安全策略將增強(qiáng)您的安全態(tài)勢。
在建立一組 API 安全要求時(shí)需要考慮一些因素,例如:
例如,如果 API 正在由許多用戶在公共環(huán)境中訪問敏感數(shù)據(jù),那么就需要更高級別的安全性。
在確定 API 的安全要求時(shí),咨詢該領(lǐng)域的專家至關(guān)重要。他們將能夠幫助確定需要采取哪些安全措施來保護(hù) API 訪問的數(shù)據(jù)。他們還將幫助確定需要什么級別的安全性。
了解軟件開發(fā)流程是確保其安全的重要第一步。根據(jù)業(yè)務(wù)部門的復(fù)雜程度,這一步的難度會更大。
在開始將安全性左移之前,請確定誰負(fù)責(zé)開發(fā)代碼,以及該人員或團(tuán)隊(duì)如何從創(chuàng)建新功能到部署再到生產(chǎn)。
這可以幫助您確定在整個(gè)過程中將使用哪種技術(shù),從而避免出現(xiàn)差距。請確保您確定:
通過 API,應(yīng)用程序和軟件可以與您的企業(yè)進(jìn)行交互,讓外部人員直接訪問敏感信息。如果沒有適當(dāng)?shù)陌踩胧?,網(wǎng)絡(luò)犯罪分子就會利用這些漏洞。
為了解決OWASP 的十大 API 安全風(fēng)險(xiǎn),建議您在 API 級別實(shí)施安全控制,這有助于保護(hù)您的數(shù)據(jù)和系統(tǒng)。一些最廣泛使用的安全措施包括:
滲透測試和漏洞掃描程序是測試 API 安全性的最常用方法。然而,在使用左移安全方法時(shí),它們各自都有獨(dú)特的問題。
部署漏洞掃描程序是為了針對一系列已知漏洞測試您的 API,但它們不會考慮您的 API 架構(gòu)。這意味著它們會錯(cuò)過讓您易受攻擊的業(yè)務(wù)邏輯缺陷。
另一方面,滲透測試人員使用黑盒或白盒測試方法來模擬對 API 的攻擊,當(dāng)應(yīng)用于左移測試框架時(shí),這些方法極其耗時(shí)且成本高昂。
在開發(fā)代碼時(shí)實(shí)現(xiàn)安全修復(fù)非常重要,這樣您的應(yīng)用程序和 API 就不會出現(xiàn)漏洞。
修復(fù)代碼后重新測試是個(gè)好主意,因?yàn)槁┒唇?jīng)常在修復(fù)后出現(xiàn)。這可確保沒有留下任何薄弱環(huán)節(jié),攻擊者可以利用這些簡單的錯(cuò)誤。
為您的 DevSecOps 團(tuán)隊(duì)提供實(shí)施左移安全所需的工具。聯(lián)系我們的團(tuán)隊(duì)安排免費(fèi)演示。

左移等敏捷開發(fā)實(shí)踐的廣泛采用使 IT 決策者能夠獲得更高的收入。目前83% 的企業(yè)實(shí)施 DevOps 策略來確保其流程正常運(yùn)轉(zhuǎn)。
在 DevOps 實(shí)踐中向左轉(zhuǎn)變可能是一個(gè)挑戰(zhàn),但如果您真的想改進(jìn)流程,那么這絕對值得去做。
以下是一些幫助您成功實(shí)施左移的最佳實(shí)踐:
生產(chǎn)故障經(jīng)常被忽視的原因有很多。最常見的原因之一是開發(fā)人員和運(yùn)營團(tuán)隊(duì)使用的程序和工具彼此不同。
為了取得成功,運(yùn)營和開發(fā)需要對部署程序有共同的理解。團(tuán)隊(duì)協(xié)調(diào)一致將使他們能夠更快、更有效地發(fā)現(xiàn)和解決問題。
關(guān)于如何在組織內(nèi)最好地實(shí)施左轉(zhuǎn)戰(zhàn)略,并沒有一個(gè)放之四海而皆準(zhǔn)的答案;然而,我們建議從小處著手,隨著時(shí)間的推移逐漸增加左轉(zhuǎn)努力的范圍和深度。
一種方法是先找出浪費(fèi)或效率低下的領(lǐng)域。這些領(lǐng)域通常是仍在使用手動(dòng)流程的領(lǐng)域,而自動(dòng)化流程會更有效,例如滲透測試。
一旦確定了這些領(lǐng)域,您就可以開始以適合您的組織的方式實(shí)施左移原則。
開發(fā)和生產(chǎn)環(huán)境越相似,越容易避免錯(cuò)誤。您可以使用正確的模式和云技術(shù)模擬生產(chǎn)環(huán)境。
測試是質(zhì)量保證的重要組成部分,需要在整個(gè)開發(fā)過程中進(jìn)行。持續(xù)測試可讓您更快地發(fā)現(xiàn)問題,因此修復(fù)這些問題的成本會更低。
CI/CD 使軟件開發(fā)過程自動(dòng)化,以便更快地進(jìn)行更改和測試。這意味著可以在開發(fā)周期的早期發(fā)現(xiàn)并修復(fù)問題,以免它們對生產(chǎn)造成影響。
自動(dòng)化團(tuán)隊(duì)在編碼和部署階段整合的越多,他們就能越快地開發(fā)代碼、運(yùn)行更多測試、集成更改,并在每項(xiàng)活動(dòng)上花費(fèi)更少的時(shí)間。
常見的自動(dòng)化測試有三種類型:
文章來源:Shift Left Security: The Ultimate Guide