一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

項目實施DevOps時,我們是如何做測試的

茶棚小二a ? 來源:茶棚小二 ? 作者:茶棚小二 ? 2021-12-16 17:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

正如我們所知,DevOps最近幾年很風(fēng)靡,很多企業(yè)正在如火如荼的推行它。然而,你可曾想過,從傳統(tǒng)到敏捷、再到DevOps,開發(fā)模式的不斷革新對測試提出了怎樣的挑戰(zhàn)?

最近我們項目在實施DevOps,因此想趁熱打鐵,就DevOps模式下如何做測試,談一談自己的認知。

DevOps有什么特征

DevOps是一系列軟件開發(fā)實踐,強調(diào)開發(fā)人員(Dev)和運維人員(Ops)之間的溝通合作,通過自動化流程,使得軟件構(gòu)建、測試、發(fā)布更加快捷、頻繁和可靠。

1. DevOps強調(diào)一種文化

在很多企業(yè)中,開發(fā)和運維人員通常隸屬于不同部門,有著不同的工作環(huán)境,采用不同的溝通方式,使用不同的開發(fā)或運維工具,并且有著不同的業(yè)務(wù)目標,這使得他們之間形成一道參不透的墻。

pYYBAGG6uSqAQQKUAAErYAPc8PU272.png

DevOps實際是一種文化上的變遷,強調(diào)開發(fā)、運維、測試等環(huán)節(jié)之間的溝通合作。意在幫助這些人向著一個共同的目標努力:盡可能為公司提供更多價值。為了支持這種合作的發(fā)生,需要在團隊內(nèi)部文化和企業(yè)組織文化兩個層面做出努力。

poYBAGG6uTGAUr9aAAFISlNK2v8279.png

2. DevOps是一種實踐

所謂DevOps,就是將敏捷方法延伸到Production!

DevOps主要是為了將敏捷開發(fā)實踐擴展到運維階段,進一步完善軟件構(gòu)建、驗證、部署、交付等流程,使得跨職能團隊能夠完成從設(shè)計到生產(chǎn)支持等各環(huán)節(jié)的工作。

pYYBAGG6uTeANe8cAAGRF8a9qUQ739.png

3. DevOps包含一系列工具鏈

DevOps是一種融合了一系列基本原則和實踐的方法論,并從這些實踐中派生出了各種工具。這些工具體現(xiàn)在軟件開發(fā)和交付過程的不同階段:

編碼:代碼開發(fā)和審閱,版本控制工具、代碼合并工具

構(gòu)建:持續(xù)集成工具、構(gòu)建狀態(tài)統(tǒng)計工具

測試:通過測試和結(jié)果確定績效的工具

打包:成品倉庫、應(yīng)用程序部署前暫存

發(fā)布:變更管理、發(fā)布審批、發(fā)布自動化

配置:基礎(chǔ)架構(gòu)配置和部署,基礎(chǔ)架構(gòu)即代碼工具

監(jiān)視:應(yīng)用程序性能監(jiān)視、最終用戶體驗

DevOps對測試提出了哪些挑戰(zhàn)

剛參加工作時,我參與了某Audi系汽車電子的軟件研發(fā),采用的是傳統(tǒng)瀑布開發(fā)模式。在整個項目生命周期中,前半部分設(shè)計和編碼,后半部分用來測試。然而我在東家工作了兩年,也沒能等到產(chǎn)品交付到用戶手上。直到去年,我們的軟件才得以量產(chǎn)并投入市場。在這4年中,產(chǎn)品從未交到用戶手上,因此無法驗證它所帶來的價值,也沒有任何機會得到用戶反饋從而適應(yīng)變化。

后來,我又參與一個銀行項目,我們采用敏捷的開發(fā)模式,全功能團隊,開發(fā)測試并行,每2-3周就交付一個版本。但因為沒有真正發(fā)布到生產(chǎn)環(huán)境,我們?nèi)匀粺o法及時得到有效的用戶反饋。

現(xiàn)在,我們采用DevOps的優(yōu)秀實踐,開發(fā)和運維協(xié)同工作。每個迭代完成,或者每修復(fù)一個線上缺陷就立即部署到生產(chǎn)環(huán)境。這樣,我們就能夠迅速從用戶處獲得反饋并且快速做出響應(yīng)。

通過參與傳統(tǒng)、敏捷和DevOps的項目,我深深地感受到流程的改進對團隊以及項目的產(chǎn)出和質(zhì)量所帶來的改變。

poYBAGG6uT-AQyezAAPra8bn7eY474.png

那么,這些改變究竟是對測試提出了什么樣的挑戰(zhàn)? 我認為有以下幾點:

1. 頻繁部署

在采用DevOps之后,我們能夠根據(jù)項目具體情況做到每天甚至一天多次部署。在生產(chǎn)環(huán)境頻繁部署軟件,最大的挑戰(zhàn)就是測試。以前,測試基本上都在開發(fā)階段之后和產(chǎn)品上線之前完成。但現(xiàn)在,不再有充足的時間留給QA團隊去發(fā)現(xiàn)問題再拋給開發(fā)團隊來修復(fù)。那么,速度成了測試面臨的一大挑戰(zhàn)。

2. 自動化

DevOps強調(diào)將流程自動化,測試作為其中一個重要環(huán)節(jié),勢必要大規(guī)模實現(xiàn)自動化。因此測試人員的自動化編碼能力正在面臨極大的挑戰(zhàn)。

3. 實踐和反饋

敏捷提倡我們要擁抱變化,更多的是要適應(yīng)需求的不斷變化。雖然一部分功能性需求是明確又具體的,我們清楚的知道用戶想要什么,也因此易于測試。然而,也有一些非功能性需求的驗收標準沒那么明確,比如:提高應(yīng)用性能達到良好的用戶體驗。我們?nèi)绾尾拍茯炞C用戶體驗是否真的良好呢?僅僅通過性能指標嗎?當(dāng)然不是,滿足指標只能說明一部分問題,唯有真實的用戶數(shù)據(jù)和反饋才是可最靠的。

4. 協(xié)作

敏捷強調(diào)全功能開發(fā)團隊的共同協(xié)作,但這僅僅止于開發(fā)階段。而DevOps注重Dev、Ops和QA三個群體之間的密切協(xié)作。因此,良好的角色定位能夠幫助測試人員將價值最大化。

我們是如何做測試的

Laurent曾經(jīng)在Hiptest上發(fā)表了博客《Shift left and shift right: the testing Swing》,提出了一個有意思的測試矩陣,從四個維度進行分析,描述了當(dāng)軟件開發(fā)模式從瀑布到敏捷、再到DevOps轉(zhuǎn)型時,測試該如何響應(yīng)變化。

pYYBAGG6uUGAM-c2AAMo9UiHYVY831.png

Laurent提出一個測試左移和右移的概念:

測試左移,就是指在開發(fā)階段之前定義測試。

測試右移,就是直接在生產(chǎn)環(huán)境中監(jiān)控,并且實時獲取用戶反饋。

在敏捷開發(fā)的生命周期中,我們通過每一次迭代來豐富和更新產(chǎn)品,以使其最大限度地符合客戶對系統(tǒng)的需求。當(dāng)時測試的關(guān)注點基本停留在開發(fā)階段,以保證產(chǎn)品達到上線標準。引入DevOps之后,我們不僅要關(guān)注產(chǎn)品的質(zhì)量是否達標,還需要使價值假設(shè)得到及時的驗證。因此,我們不僅要將測試左移,在開發(fā)環(huán)境驗證功能的可用性,還要進行測試右移,通過監(jiān)控產(chǎn)品在生產(chǎn)環(huán)境的運作情況,來驗證其價值并獲得反饋,從而持續(xù)改進?;谶@些理解,我在項目上做了初步的嘗試并取得良好的效果。我將這些嘗試和實踐總結(jié)為以下幾點:

1.如何保證新功能得以實現(xiàn)?

在開發(fā)環(huán)境,我們開發(fā)新功能,并且通過測試保證其達到產(chǎn)品驗收標準。

首先,使用BDD(Behavior Driven Development,BDD)的方式定義用戶需求,這樣用特定的語言來描述用戶行為,能夠使各個角色(測試、開發(fā)、產(chǎn)品負責(zé)人、市場等)對業(yè)務(wù)價值達成一致的理解,從而使其從需求到最后的測試驗證,進行高度的協(xié)作和溝通,最后交付最有價值的功能。同時,QA能夠提前Review故事卡,補充驗收標準。除此之外,BDD方式的用戶需求可以直接指導(dǎo)測試,后續(xù)我會寫到。

其次,采用單元測試來驗證最基本的代碼邏輯。在編寫單元測試時,建議Dev和QA Pair工作。單元測試可以認為是編碼的一部分,要對系統(tǒng)的代碼邏輯有深入的了解,因此,Dev是最合適的人選,而QA可以幫助測試覆蓋的更全面。

最后,每一個功能都要嚴格按照故事卡的AC(Acceptance Criteria)進行驗收,并采用探索性測試方法來對新功能進行無死角測試。

2.怎樣驗證新功能的價值?

我們將新功能部署到生產(chǎn)環(huán)境以后,接下來就應(yīng)該衡量業(yè)務(wù)價值是否達到預(yù)期。

驗證預(yù)期的一個好方法是衡量用戶的行為變化。比如:在上傳圖片的功能后面添加了一個預(yù)覽按鈕,但用戶卻極少用它,很可能是因為用戶根本不需要這個按鈕,或者按鈕放在了不恰當(dāng)?shù)奈恢脤?dǎo)致用戶不方便使用,亦或是按鈕樣式不夠友好,導(dǎo)致用戶沒有欲望使用它。這時候,該按鈕的業(yè)務(wù)價值就沒有真正達到,是時候調(diào)整一下了。

3.如何確保已有功能不被破壞?

在軟件開發(fā)中,任何代碼都不可能完全獨立存在,一行代碼的變更也有可能導(dǎo)致系統(tǒng)的全面崩潰。那么,如何保證在開發(fā)新功能的同時,已有功能不被破壞?換句話說,如何做到全面的回歸測試?人力是最高成本,也有現(xiàn)實的局限性,比如,人手不夠,重復(fù)做同樣的事情人會變得煩躁,手不夠快導(dǎo)致效率低下等。因此,自動化測試才是不二選擇。

將BDD需求直接轉(zhuǎn)化為自動化測試用例。每個測試用例都應(yīng)該講一個關(guān)于應(yīng)用程序的故事。當(dāng)一個測試用例使用一致的業(yè)務(wù)術(shù)語定義時,它的可讀性會比較高,且容易自動化。與此同時,上一個迭代的用例在下一個迭代就可以迅速轉(zhuǎn)化為回歸測試的基線。

支持BDD的工具有很多,比如:Cucumber。簡單舉個例子,如圖:

pYYBAGG6uUaAVE_5AATFQwWr5R0827.png

BA用BDD方式定義用戶需求,QA Review并補充AC,然后將其編寫為自動化測試腳本。如果QA的編碼能力較弱,可以讓Dev協(xié)助完成代碼實現(xiàn)的部分。這也充分說明了協(xié)作的意義。

最后,也是更重要的部分,測試應(yīng)該集成在CI中。每一次Build或者每天都要去執(zhí)行測試,驗證已有功能是否完好。這樣才會對沒有預(yù)期到的變化產(chǎn)生的問題給出快速反饋。

另外,做一些性能測試、兼容性測試、和安全性測試等等。

4.怎樣驗證產(chǎn)品的可靠性?

有時候,某些缺陷并不是源于代碼的錯誤,而是一個不好的用戶體驗,或者只有當(dāng)數(shù)據(jù)達到一定量時才會出現(xiàn),測試人員是無法模擬這種類型的測試的,因此直接在生產(chǎn)環(huán)境監(jiān)控變得高效又可靠。通常我們需要監(jiān)控兩種特性:性能和可用性。

使用工具持續(xù)獲取用戶數(shù)據(jù),或者使用log持續(xù)獲取性能信息。這有助于監(jiān)控產(chǎn)品部署到生產(chǎn)環(huán)境后是如何正確運作的??焖賳⒂靡粋€功能,在生產(chǎn)環(huán)境實時監(jiān)控驗證其業(yè)務(wù)價值,獲取到有效且快速的用戶反饋,加之擁有持續(xù)部署的能力,我們能夠在出現(xiàn)問題的時候快速做出反應(yīng),從而使得我們的產(chǎn)品更加可靠。

這里實際上融入了《QA in Production》的理念。現(xiàn)如今,已經(jīng)有很多工具和方法支持在生產(chǎn)環(huán)境做測試了。篇幅太長,這里就不做詳細闡述了,請參考原文。

到這里,再來回顧一下,我們的實踐是否真的卓有成效。

用BDD的方式定義用戶需求、編寫測試,有益于不同角色之間的一致理解和共同協(xié)作。

自動化測試解決了頻繁部署所帶來的挑戰(zhàn),同時保證產(chǎn)品的整體功能持續(xù)得到回歸和驗證。

在線監(jiān)控能有效地驗證不確定需求,通過生產(chǎn)數(shù)據(jù)分析和預(yù)警問題的發(fā)生,并且快速獲取用戶反饋從而及時調(diào)整。除此之外,這一點也充分體現(xiàn)了Dev、QA和Ops的協(xié)作,像監(jiān)控等原本只能Ops做的事,現(xiàn)在Dev或QA一樣可以做。

寫在最后

測試是一種活動,曾經(jīng)我們通過它來驗證產(chǎn)品是否達到上線標準?,F(xiàn)在DevOps模式下,我們需要在各個階段不斷地執(zhí)行測試活動,以達到產(chǎn)品質(zhì)量的持續(xù)改進。

而QA(Tester)僅僅是一種較多進行測試活動的角色。敏捷一直強調(diào)“團隊為質(zhì)量負責(zé)”,測試不再是QA(Tester)的專屬。DevOps模式更是對測試、尤其是自動化測試提出了更高的要求,也對QA的編碼能力提出了極大的挑戰(zhàn)。作為團隊成員,每個人都有責(zé)任了解開發(fā)流程、提高測試技能,把好測試這一關(guān)。但是,測試活動作為QA(Tester)的主要職責(zé)之一,提高自動化測試技能,就是當(dāng)下每個QA(Tester)最為緊急且重要的事情了。

審核編輯:ymf

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 編碼
    +關(guān)注

    關(guān)注

    6

    文章

    969

    瀏覽量

    55781
  • devops
    +關(guān)注

    關(guān)注

    0

    文章

    126

    瀏覽量

    12486
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    掃地機器人如何做自動化測試?

    明確掃地機器人需要進行哪些可靠性測試,如振動測試、跌落測試、溫濕度測試、耐久性測試等。不同的測試
    的頭像 發(fā)表于 05-08 09:15 ?349次閱讀
    掃地機器人<b class='flag-5'>如何做</b>自動化<b class='flag-5'>測試</b>?

    Nordic的matter是如何做

    測試工具(Matter test Harness)。該測試工具可確保規(guī)范和功能的正確實施。 該規(guī)范可在此處找到并下載:CSA 規(guī)范下載請求。 為什么需要Matter? 智能家居市場智能家居市場相對
    發(fā)表于 04-27 11:24

    ADS1281共有3路,想利用ADS1281EVM作為第四路,這樣的話,同步該如何做呢?

    我們自己做了一塊ADS1281的采集板卡,共有3路,現(xiàn)在想利用ADS1281EVM作為第四路,這樣的話,同步該如何做呢?這個里面的同步是用IIC控制的。
    發(fā)表于 02-10 07:44

    2025常用的氣密性測試方法,精誠工科泄漏測試解決方案選擇指南

    您是否曾好奇,日常使用的保溫杯如何做到滴水不漏?高科技的手機又如何擁有出色的防水性能?答案就在于氣密性測試。這項看似專業(yè)的檢測技術(shù),實則與我們的生活息息相關(guān),在產(chǎn)品質(zhì)量控制中扮演著至關(guān)重要的角色
    的頭像 發(fā)表于 01-08 11:11 ?854次閱讀
    2025常用的氣密性<b class='flag-5'>測試</b>方法,精誠工科泄漏<b class='flag-5'>測試</b>解決方案選擇指南

    測試項目管理系統(tǒng) - TPA

    面對當(dāng)今汽車行業(yè)高速迭代的研發(fā)節(jié)奏,測試業(yè)務(wù)的復(fù)雜性和高標準使得傳統(tǒng)的手動管理方式面臨巨大挑戰(zhàn)。經(jīng)緯恒潤基于多年測試管理經(jīng)驗,推出了測試項目管理系統(tǒng)INTEWORK-TPA產(chǎn)品(以下簡
    的頭像 發(fā)表于 01-02 09:58 ?545次閱讀
    <b class='flag-5'>測試</b><b class='flag-5'>項目</b>管理系統(tǒng) - TPA

    汽車軟件DevOps解決方案

    經(jīng)緯恒潤汽車軟件DevOps解決方案是專為現(xiàn)代汽車行業(yè)設(shè)計的一套集成化需求、開發(fā)、測試、部署、OTA與監(jiān)控,旨在加速軟件開發(fā)流程,提高軟件質(zhì)量和安全性,同時確保整個生命周期的高效性和靈活性。
    的頭像 發(fā)表于 12-16 10:33 ?1887次閱讀
    汽車軟件<b class='flag-5'>DevOps</b>解決方案

    工業(yè)AI視覺檢測項目實施第四步:工廠驗收

    在當(dāng)今智能制造的洪流中,AI視覺檢測技術(shù)憑借高效與精準,已躍升為提高產(chǎn)品質(zhì)量和生產(chǎn)效率的關(guān)鍵利器。為了助力從業(yè)者更好地理解和實施AI視覺檢測項目,阿丘科技「AI干貨補給站」特別推出了《工業(yè)AI視覺
    的頭像 發(fā)表于 12-09 16:56 ?890次閱讀
    工業(yè)AI視覺檢測<b class='flag-5'>項目</b><b class='flag-5'>實施</b>第四步:工廠驗收

    ADS1120接的PT100三線,校準應(yīng)該如何做?

    使用ADS1120,接的PT100三線,想問下這個的校準應(yīng)該如何做。查詢有資料說兩線的可以在PT100短接,三線的是不是三條線都短接,經(jīng)測試短接后得到的值為0,這個是不是正常。謝謝
    發(fā)表于 11-28 07:07

    devops使用最廣泛的集成工具盤點

    devops使用最廣泛的集成工具包括GitLab(全棧DevOps平臺)、Jenkins(CI/CD自動化服務(wù)器)、Docker(容器化技術(shù))、Kubernetes(容器編排平臺)、Ansible
    的頭像 發(fā)表于 11-26 13:48 ?646次閱讀

    照明產(chǎn)品中常見的EMC測試項目有哪些

    燈具都需進行EMC測試,其它無電子裝置的燈具可免EMS測試。燈具的EMC測試項目主要有:傳導(dǎo)騷擾測試
    的頭像 發(fā)表于 11-07 11:56 ?1174次閱讀
    照明產(chǎn)品中常見的EMC<b class='flag-5'>測試</b><b class='flag-5'>項目</b>有哪些

    LED如何做老化測試

    LED(發(fā)光二極管)因其高效能和長壽命,廣泛應(yīng)用于照明、顯示和信號等領(lǐng)域。然而,為了確保LED在實際應(yīng)用中的可靠性和穩(wěn)定性,進行老化測試是不可或缺的一步。老化測試可以模擬LED在長期使用過程中的性能表現(xiàn),幫助識別潛在的缺陷并優(yōu)化產(chǎn)品設(shè)計。本文將詳細介紹LED老化
    的頭像 發(fā)表于 10-26 17:14 ?1909次閱讀
    LED<b class='flag-5'>如何做</b>老化<b class='flag-5'>測試</b>

    常用的devops工具集成方法

    常用的devops工具集成方法涵蓋了軟件開發(fā)和運維的各個方面,從版本控制到自動化構(gòu)建、測試、部署和監(jiān)控。這些工具的有效集成可以幫助團隊提高協(xié)作效率,減少溝通障礙,實現(xiàn)快速、高質(zhì)量的軟件交付。
    的頭像 發(fā)表于 10-09 11:21 ?541次閱讀

    如何做才能使TAS5631處于準備狀態(tài)呢?

    我在用TAS5631音頻功放,但芯片總是顯示沒準備好(即READY引腳總是為低電平),其他的故障引腳都是高電平,即顯示無故障,我的PVDD電壓已經(jīng)在25V以上,我想知道如何做才能使芯片處于準備狀態(tài)呢
    發(fā)表于 09-10 07:25

    在KubeSphere 容器中快速部署使用 GitLab 并構(gòu)建 DevOps 項目

    我們先這次的演練創(chuàng)建一個名為devops的企業(yè)空間,同時創(chuàng)建一個名為gitlab的項目供GitLabCE部署使用。首先我們還是要先在devops
    的頭像 發(fā)表于 07-26 11:19 ?668次閱讀
    在KubeSphere 容器中快速部署使用 GitLab 并構(gòu)建 <b class='flag-5'>DevOps</b> <b class='flag-5'>項目</b>

    請問IR900路由器如何做端口映射?

    IR900 路由器如何做端口映射?
    發(fā)表于 07-25 06:24