敏捷中質(zhì)量內(nèi)建的5個(gè)方面

今天看到一篇質(zhì)量內(nèi)建落地的實(shí)踐文章辖众,講了落地的三步法昏鹃,但從頭到尾沒看到什么是質(zhì)量內(nèi)建外冀?敏捷很火生闲,我們今天看下敏捷(SAFe)中怎么定義質(zhì)量內(nèi)建媳溺?

術(shù)語介紹:

SAFe(Scaled Agile Framework) 規(guī)模化敏捷架構(gòu)

Built-In Quality質(zhì)量內(nèi)建

Lean-Agile Mindset精益敏捷思維

Lean-UX精益用戶體驗(yàn)

Non-Functional Requirements (NFRs) 非功能需求

Continuous Delivery Pipeline(CDP)持續(xù)交付的流水線

質(zhì)量內(nèi)建

質(zhì)量內(nèi)建能保證每個(gè)增量解決方案滿足開發(fā)過程中的質(zhì)量標(biāo)準(zhǔn)碍讯。企業(yè)在最短的可持續(xù)交付周期內(nèi)是否能發(fā)布新功能和是否能適應(yīng)快速變化的企業(yè)環(huán)境悬蔽,取決于解決方案的質(zhì)量。

質(zhì)量內(nèi)建是SAFe的核心價(jià)值之一捉兴,同時(shí)也是敏捷宣言的原則之一蝎困。持續(xù)關(guān)注卓越的技術(shù)和良好的設(shè)計(jì)可增強(qiáng)敏捷性。質(zhì)量內(nèi)建也是精益敏捷思維的核心原則倍啥,有助于避免與召回禾乘、返工和修復(fù)缺陷相關(guān)的延遲成本 (CoD)。 SAFe質(zhì)量內(nèi)建的理念應(yīng)該應(yīng)用系統(tǒng)思維來優(yōu)化整個(gè)系統(tǒng)虽缕,確保整個(gè)開發(fā)價(jià)值流的快速流動始藕,讓質(zhì)量成為每個(gè)人的工作。

所有的團(tuán)隊(duì)氮趋,包括軟件伍派、硬件、運(yùn)營剩胁、產(chǎn)品營銷诉植、法律、安全倍踪、合規(guī)等系宫,共享質(zhì)量內(nèi)建的目標(biāo)和原則。但是建车,實(shí)踐因?qū)W科而異扩借,因?yàn)樗鼈兊漠a(chǎn)品不同。

SAFe以團(tuán)隊(duì)和產(chǎn)品的技術(shù)為中心的質(zhì)量內(nèi)建的五個(gè)方面:缤至、架構(gòu)和設(shè)計(jì)質(zhì)量潮罪、代碼質(zhì)量系統(tǒng)質(zhì)量领斥、發(fā)布質(zhì)量嫉到。基于業(yè)務(wù)的團(tuán)隊(duì)在質(zhì)量內(nèi)建實(shí)踐時(shí)月洛,可將參考這五個(gè)方面何恶。

建立流是所有團(tuán)隊(duì)基本的,因?yàn)樗枋隽巳绾蜗e(cuò)誤嚼黔,返工和其他降低吞吐量的浪費(fèi)细层。其他四個(gè)方面描述了適用不同領(lǐng)域的質(zhì)量內(nèi)建,包括測試為先唬涧、 自動化疫赎、 基于集合的設(shè)計(jì)探索替代方案碎节。

1. 通過測試為先和持續(xù)交付流水線實(shí)現(xiàn)流

敏捷團(tuán)隊(duì)在一個(gè)基于流的快速的系統(tǒng)中運(yùn)轉(zhuǎn)捧搞,可以開發(fā)和發(fā)布高質(zhì)量的業(yè)務(wù)能力狮荔。

敏捷團(tuán)隊(duì)不是在最后才進(jìn)行大多數(shù)測試轴合,而是盡早题涨、經(jīng)常和在多個(gè)維度上定義和執(zhí)行大多數(shù)測試总滩。

使用測試驅(qū)動開發(fā)TDD來定義代碼更改測試闰渔,使用行為驅(qū)動BDD來定義故事卡席函、特性和能力驗(yàn)收標(biāo)準(zhǔn),使用精益用戶體驗(yàn)Lean-UX來定義特性收益假設(shè)冈涧。

質(zhì)量內(nèi)建可確保敏捷開發(fā)頻繁變更茂附,不會引入新錯(cuò)誤正蛙,以實(shí)現(xiàn)快速、可靠的執(zhí)行营曼。

Test-first practices accelerate flow

1.1 以測試為先

敏捷團(tuán)隊(duì)為一切生成測試乒验,包括特性,故事卡和代碼等等蒂阱,理想情況下锻全,在創(chuàng)建事項(xiàng)之前或同時(shí),或測試為先录煤。

測試為先的理念同時(shí)適用于功能需求(特性和故事卡)和非功能需求的性能和可靠性等鳄厌。一個(gè)測試為先的方法,通過開發(fā)生命周期中盡早創(chuàng)建測試的妈踊,來改善傳統(tǒng)的“V 模型” 了嚎。

BDD and TDD shift testing left

為了支持更快的流,測試需要跑的更快响委,團(tuán)隊(duì)?wèi)?yīng)該努力使它們自動化新思。至今,大型的基于UI的端到端的測試比小型的自動的測試跑的更慢些赘风,我們期望平衡下測試用例,有大量小型快速的測試和少量慢的測試纵刘。

測試為先的理念創(chuàng)建一個(gè)平衡的測試金字塔邀窃。但不幸,很多組織機(jī)構(gòu)的測試不平衡假哎,有太多大量的慢的昂貴的測試和少量快速的性價(jià)比高的測試瞬捕。通過構(gòu)建大量代碼和故事卡測試,組織將減少對慢速的端到端的昂貴的測試的依賴舵抹。

1.2 構(gòu)建持續(xù)交付的流水線

質(zhì)量內(nèi)建實(shí)踐有助于構(gòu)建一個(gè)持續(xù)交付的流水線(CDP)和培養(yǎng)根據(jù)需求發(fā)布的能力肪虎。下圖展示了CDP的持續(xù)集成部分,展示了在未被產(chǎn)品集成前跨多個(gè)環(huán)境組件構(gòu)建的變更是如何測試的惧蛹。通過用更快扇救、性價(jià)比更高的代理(例如內(nèi)存數(shù)據(jù)庫代理)替換緩慢或昂貴的組件(例如企業(yè)數(shù)據(jù)庫)。

1.3 減少測試套件以加速反饋

隨著測試時(shí)間的推移而增長香嗓,它們將拖延敏捷團(tuán)隊(duì)迅腔。完整的測試套件可能需要很大的時(shí)間來設(shè)置和執(zhí)行。團(tuán)隊(duì)可以創(chuàng)建簡化的測試套件和測試數(shù)據(jù)(“冒煙測試”)靠娱,以確保最重要功能沧烈,在切換到其他流水線之前。他們與系統(tǒng)團(tuán)隊(duì)合作以平衡速度和質(zhì)量像云,并有助于確保流锌雀。

2. 架構(gòu)和設(shè)計(jì)質(zhì)量

系統(tǒng)的架構(gòu)和設(shè)計(jì)無疑決定了系統(tǒng)當(dāng)前支持的和將來業(yè)務(wù)的需要蚂夕。架構(gòu)和設(shè)計(jì)中的質(zhì)量將未來需求更容易實(shí)現(xiàn),系統(tǒng)更容易測試腋逆,更能滿足非功能性特性婿牍。

2.1 支持未來業(yè)務(wù)的需要

隨著市場變化的需求,開發(fā)發(fā)現(xiàn)或其他原因闲礼,架構(gòu)和設(shè)計(jì)必須要解決牍汹。傳統(tǒng)流程中早期決策可能影響次優(yōu)選項(xiàng),導(dǎo)致慢流或返工的低效率柬泽。識別最佳決策需要知識慎菲,通過實(shí)驗(yàn),建模锨并,模擬露该,原型制作和其他學(xué)習(xí)活動獲得。它還需要一種基于集的設(shè)計(jì)方法第煮,從多種替代方案中找到最佳決策解幼。一旦確定,開發(fā)人員使用架構(gòu)跑道來實(shí)現(xiàn)最終決策包警。敏捷架構(gòu)為團(tuán)隊(duì)間的設(shè)計(jì)和實(shí)現(xiàn)同步提供指導(dǎo)撵摆。

2.2 設(shè)計(jì)質(zhì)量

隨著系統(tǒng)的需求發(fā)展,系統(tǒng)設(shè)計(jì)必須要支持需求害晦。低質(zhì)量的設(shè)計(jì)難以理解和修改特铝,影響到面臨多種困難的慢速的交付。應(yīng)用良好的耦合/凝聚和適當(dāng)?shù)某橄?封裝使實(shí)現(xiàn)更易于理解和修改壹瘟。SOLID原理使系統(tǒng)靈活具有彈性鲫剿,因此可以更輕松地支持新的需求。設(shè)計(jì)模式描述了解支持這些原則的知名方法稻轨,并提供一種簡化的語言灵莲,以便于理解和可讀性。 命名元素“工廠”或“服務(wù)”快速描述系統(tǒng)內(nèi)更廣泛的含義殴俱。

2.3 設(shè)計(jì)和架構(gòu)使測試容易

架構(gòu)和設(shè)計(jì)決定了系統(tǒng)的可測性政冻。通過定義好的接口進(jìn)行通信的模塊化組件創(chuàng)建接縫,允許測試人員和開發(fā)人員使用測試替身來代替昂貴的慢速的組件粱挡。

3. 代碼質(zhì)量

所有系統(tǒng)的功能最終都是由系統(tǒng)的代碼執(zhí)行起來的赠幕。添加新功能的速度和難易程度取決于開發(fā)人員對其進(jìn)行修改的速度和可靠性。受極限編程 (XP) 的啟發(fā)询筏,列出了幾種實(shí)踐榕堰。

3.1 單元測試和測試驅(qū)動開發(fā)

單元測試實(shí)踐將代碼劃分成段,并保證每一段可以自動測試。每個(gè)片段變更后會自動測試逆屡,開發(fā)人員可以快速修改并相信修改不會影響到系統(tǒng)中其它部分圾旨。測試同樣可以作為文檔,組件接口間可執(zhí)行的案例魏蔗,展示了組件怎樣使用的砍的。

測試驅(qū)動開發(fā)指導(dǎo)我們單元測試的創(chuàng)建,為變更點(diǎn)指明測試點(diǎn)莺治。這迫使開發(fā)人員在實(shí)施之前更廣泛地考慮問題廓鞠,包括邊緣情況和邊界條件。更好的理解導(dǎo)致更快的開發(fā)谣旁,更少的錯(cuò)誤和更少的返工床佳。

3.2 結(jié)對工作

結(jié)對將有兩個(gè)開發(fā)人員在同樣工作條件下做相同的變更。開發(fā)角色變換頻繁榄审。一個(gè)充當(dāng)編寫代碼的驅(qū)動程序砌们,而另一個(gè)充當(dāng)提供實(shí)時(shí)審查和反饋的導(dǎo)航器。 開發(fā)人員經(jīng)常轉(zhuǎn)換角色搁进。 結(jié)對創(chuàng)造和維護(hù)質(zhì)量浪感,因?yàn)榇a將包含每個(gè)成員的共享知識、觀點(diǎn)和最佳實(shí)踐饼问。 隨著隊(duì)友相互學(xué)習(xí)影兽,它還提高和拓寬了整個(gè)團(tuán)隊(duì)的技能組合。

3.3 集體所有和代碼標(biāo)準(zhǔn)

集體所有可以減少了團(tuán)隊(duì)之間的依賴關(guān)系莱革,并確保任何開發(fā)人員或團(tuán)隊(duì)都不會阻礙價(jià)值交付的快速流動赢笨。任何人都可以添加功能、修復(fù)錯(cuò)誤驮吱、改進(jìn)設(shè)計(jì)或重構(gòu)。因?yàn)榇a不是一個(gè)團(tuán)隊(duì)或個(gè)人所有萧吠,支持編碼標(biāo)準(zhǔn)鼓勵(lì)一致性左冬,以便每個(gè)人都可以理解和維護(hù)每個(gè)組件的質(zhì)量新娜。

4. 實(shí)現(xiàn)系統(tǒng)質(zhì)量

當(dāng)代碼質(zhì)量和設(shè)計(jì)質(zhì)量保證系統(tǒng)可以很容易理解和變更冯丙,系統(tǒng)質(zhì)量確保系統(tǒng)按期望操作,每個(gè)人對每次變更都都保持一致匕垫。下面是實(shí)現(xiàn)系統(tǒng)質(zhì)量的幾點(diǎn)建議狰腌。

4.1創(chuàng)建任務(wù)實(shí)現(xiàn)快速流

共享理解和一致理解將減少開發(fā)延遲和返工除破,以建立快速流程。行為驅(qū)動開發(fā) (BDD) 定義了一種協(xié)作實(shí)踐琼腔,產(chǎn)品負(fù)責(zé)人和團(tuán)隊(duì)成員對故事卡或特性的理解要達(dá)成一致瑰枫。BDD可以幫助開發(fā)人員在第一時(shí)間構(gòu)建正確并減少返工和錯(cuò)誤。基于模型的系統(tǒng)工程 (MBSE) 將這種對齊方式擴(kuò)展到整個(gè)系統(tǒng)光坝。通過分析和綜合過程尸诽,MBSE提供了系統(tǒng)所有功能的高級完整視圖,以及系統(tǒng)設(shè)計(jì)如何實(shí)現(xiàn)它盯另。

4.2 持續(xù)端到端的解決方案

擴(kuò)展敏捷性導(dǎo)致許多工程師進(jìn)行許多小更改性含,必須不斷檢查沖突和錯(cuò)誤。持續(xù)集成 (CI) 和持續(xù)交付 (CD) 實(shí)踐為開發(fā)人員提供快速反饋鸳惯。每個(gè)變更都會快速構(gòu)建商蕴,然后在多個(gè)級別進(jìn)行集成和測試,包括部署環(huán)境芝发。 CI/CD在所有階段將變更這一流程自動化绪商,并在測試失敗時(shí)如何做出響應(yīng)。NFR的質(zhì)量測試也是自動化的后德。 雖然 CI/CD努力使所有測試自動化部宿,但某些功能(探索性)和 NFR(可用性)測試只能手動執(zhí)行。

5. 發(fā)布質(zhì)量

產(chǎn)品發(fā)布允許企業(yè)衡量一個(gè)特性的收益假設(shè)的有效性瓢湃。一個(gè)組織發(fā)布的越快理张,學(xué)習(xí)的越快,交付的價(jià)值就越大绵患。組件之間定義了標(biāo)準(zhǔn)接口雾叭,這樣的模塊化架構(gòu)允許獨(dú)立發(fā)布更小的組件級變更。 較小的變更允許更快落蝙、更頻繁织狐、風(fēng)險(xiǎn)更低的發(fā)布,但需要自動化流水線來確保質(zhì)量筏勒。

與傳統(tǒng)的服務(wù)器基礎(chǔ)設(shè)施不同移迫,“不可變基礎(chǔ)設(shè)施”不允許手動和直接對生產(chǎn)服務(wù)器進(jìn)行變更。 相反管行,應(yīng)用于服務(wù)器鏡像的變更厨埋,啟動并替換當(dāng)前運(yùn)行的服務(wù)器。這種方法創(chuàng)建了更加一致捐顷、更可預(yù)測的發(fā)布荡陷。它允許自動恢復(fù)。如果操作環(huán)境檢測到生產(chǎn)錯(cuò)誤迅涮,它可以通過啟動先前的鏡像來替換錯(cuò)誤的鏡像來回滾版本废赞。

5.1 支持合規(guī)

對于必須要證明其合規(guī)或?qū)徲?jì)的系統(tǒng),發(fā)布具有附加條件叮姑,即客觀證據(jù)唉地。這些組織必須證明該系統(tǒng)符合預(yù)期目的并且沒有意外的有害后果。如合規(guī)性文章所述,精益質(zhì)量管理體系 (QMS) 定義了支持精益敏捷渣蜗、基于流的持續(xù)集成-部署-發(fā)布流程的批準(zhǔn)實(shí)踐屠尊、政策和程序

5.2 完成的可擴(kuò)展定義

完成的定義是確保增值的一種重要方式。增量系統(tǒng)功能的持續(xù)開發(fā)需要對完成進(jìn)行可擴(kuò)展定義耕拷,以確保在正確的時(shí)間做正確的工作讼昆,有些是提前完成的,有些只是為了發(fā)布骚烧。每個(gè)團(tuán)隊(duì)浸赫、培訓(xùn)和企業(yè)都應(yīng)建立自己的定義。雖然每個(gè)團(tuán)隊(duì)的定義可能不同赃绊,但它們通常共享一組參數(shù)項(xiàng)的核心集合既峡。

參考資料

https://www.scaledagileframework.com/built-in-quality/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市碧查,隨后出現(xiàn)的幾起案子运敢,更是在濱河造成了極大的恐慌,老刑警劉巖忠售,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件传惠,死亡現(xiàn)場離奇詭異,居然都是意外死亡稻扬,警方通過查閱死者的電腦和手機(jī)卦方,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來泰佳,“玉大人盼砍,你說我怎么就攤上這事∈潘” “怎么了浇坐?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長黔宛。 經(jīng)常有香客問我吗跋,道長,這世上最難降的妖魔是什么宁昭? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮酗宋,結(jié)果婚禮上积仗,老公的妹妹穿的比我還像新娘。我一直安慰自己蜕猫,他們只是感情好寂曹,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般隆圆。 火紅的嫁衣襯著肌膚如雪漱挚。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天渺氧,我揣著相機(jī)與錄音旨涝,去河邊找鬼。 笑死侣背,一個(gè)胖子當(dāng)著我的面吹牛白华,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播贩耐,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼弧腥,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了潮太?” 一聲冷哼從身側(cè)響起管搪,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎铡买,沒想到半個(gè)月后更鲁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡寻狂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年岁经,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蛇券。...
    茶點(diǎn)故事閱讀 38,622評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡缀壤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出纠亚,到底是詐尸還是另有隱情塘慕,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布蒂胞,位于F島的核電站图呢,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏骗随。R本人自食惡果不足惜蛤织,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鸿染。 院中可真熱鬧指蚜,春花似錦、人聲如沸涨椒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至免猾,卻和暖如春是辕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背猎提。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工获三, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人忧侧。 一個(gè)月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓石窑,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蚓炬。 傳聞我的和親對象是個(gè)殘疾皇子松逊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容