關(guān)閉

測試左移的進(jìn)階實(shí)踐——現代軟件測試技術(shù)之美(3)

發(fā)表于:2024-6-14 09:33

字體: | 上一篇 | 下一篇 | 我要投稿

 作者:茹炳晟 吳駿龍 劉冉    來(lái)源:51Testing軟件測試網(wǎng)原創(chuàng )

  1.1.4   測試左移的進(jìn)階實(shí)踐
  為了系統性解決軟件測試工程化的困局,我們需要重新審視測試左移的原則與實(shí)踐,在原 有測試左移實(shí)踐的基礎上加入新的原則和實(shí)踐。新時(shí)代的測試左移給整個(gè)軟件測試體系帶來(lái)了 理念上的轉變,軟件測試不僅僅是在研發(fā)過(guò)程中發(fā)現缺陷,更要致力于在研發(fā)全過(guò)程中有效推 行質(zhì)量?jì)冉,把軟件測試活動(dòng)升級為軟件質(zhì)量工程。為此,我們需要引入以下測試左移的原則 和實(shí)踐。
  1. 軟件質(zhì)量全員負責制
  軟件質(zhì)量全員負責制也可以稱(chēng)為“利益綁定”,這是很關(guān)鍵的一條原則,屬于底層邏輯的 范疇。在體制設計上,必須讓整個(gè)研發(fā)團隊共同對軟件產(chǎn)品質(zhì)量負責,畢竟軟件質(zhì)量不是測出 來(lái)的,而是開(kāi)發(fā)出來(lái)的。如果軟件質(zhì)量出現問(wèn)題,應由整個(gè)研發(fā)團隊共同負責,而不是讓測試 團隊“背鍋”,這種認知上的進(jìn)步與變革是測試左移能夠順利推行的基本前提。
  我們知道,保姆型團隊對組織成長(cháng)是有害的,只有支持型團隊才能夠發(fā)揮更大的價(jià)值,從 而推動(dòng)組織更好地成長(cháng)。當軟件質(zhì)量由整個(gè)研發(fā)團隊共同負責的時(shí)候,測試團隊就能完成從保 姆型團隊向支持型團隊的蛻變。
  2. 把測試前置到需求分析和方案設計階段
  在測試左移的早期實(shí)踐中,測試活動(dòng)已經(jīng)被前置到開(kāi)發(fā)階段,我們可以進(jìn)一步把測試前置 到需求分析和方案設計階段。這樣,測試人員除了能夠深入理解需求,在前期掌握詳實(shí)的需求 信息,更重要的是還能夠及時(shí)評估需求本身的質(zhì)量,比如分析需求的合理性及完整性等。這樣 后續的測試分析與測試設計才能有的放矢地開(kāi)展,實(shí)現測試用例先行,爭取一次性把事情做正 確,避免產(chǎn)生“信息孤島”以及由此產(chǎn)生的各種潛在返工。
  這里推薦使用行為驅動(dòng)開(kāi)發(fā)(Behavior Driven Development,BDD)和特性驅動(dòng)開(kāi)發(fā)(Feature  Driven Development,FDD)的方法,在進(jìn)行需求評估時(shí)更多地從測試視角去思考問(wèn)題,按照編  寫(xiě)用戶(hù)故事或用戶(hù)場(chǎng)景的方式,從功能使用者的視角描述并編寫(xiě)測試用例,從而讓產(chǎn)品經(jīng)理、 開(kāi)發(fā)人員和測試人員著(zhù)眼于代碼所要實(shí)現的業(yè)務(wù)行為,并以此為依據通過(guò)測試用例進(jìn)行驗證。 當然,以上實(shí)踐對測試人員也提出了更高的要求,他們必須掌握行為驅動(dòng)開(kāi)發(fā)、特性驅動(dòng)開(kāi)發(fā)、領(lǐng)域驅動(dòng)設計(Domain Driven Design ,DDD)以及實(shí)例化需求(Speci?cation By Example ,SBE)等技能。
  3. 鼓勵開(kāi)發(fā)人員自測
  一方面開(kāi)發(fā)人員必須對軟件質(zhì)量負責,另一方面測試活動(dòng)正在不斷滲透到開(kāi)發(fā)的各個(gè)階 段,同時(shí)對測試人員的技能要求越來(lái)越向開(kāi)發(fā)人員看齊,由開(kāi)發(fā)人員自己來(lái)承擔測試工作的訴 求正變得越來(lái)越強烈。我們需要的不再是獨立的開(kāi)發(fā)人才和測試人才,而是全棧型人才。在這 種大背景下,開(kāi)發(fā)者自測就變得理所應當了。我們要將傳統職能型團隊重組為全棧團隊,不然 質(zhì)量左移、質(zhì)量?jì)冉ㄖ粫?huì )流于表面。
  但是說(shuō)到讓開(kāi)發(fā)人員自己完成測試工作,我們常常會(huì )聽(tīng)到很多質(zhì)疑聲,質(zhì)疑的焦點(diǎn)是開(kāi)發(fā) 人員是否適合做測試,這里我們展開(kāi)討論一下。
  從人性的角度來(lái)看,開(kāi)發(fā)人員通常具備“創(chuàng )造性思維”,自己開(kāi)發(fā)的代碼就像親兒子一樣, 怎么看都覺(jué)得很棒;而測試人員則具備“破壞性思維”,測試人員的職責就是盡可能多地找到 潛在的缺陷,而且專(zhuān)職的測試人員通常已經(jīng)在以往的測試實(shí)踐中積累了大量典型的容易找到缺 陷的模式,所以測試人員與開(kāi)發(fā)人員相比,往往更能客觀(guān)且全面地做好測試。
  從技術(shù)層面來(lái)看,由開(kāi)發(fā)人員自己完成測試,會(huì )存在嚴重的“思維慣性”——通常開(kāi)發(fā)人 員在設計和開(kāi)發(fā)過(guò)程中沒(méi)有考慮到的分支和處理邏輯,在自己做測試的時(shí)候同樣不會(huì )考慮到。 比如對于一個(gè)函數,它有一個(gè) string 類(lèi)型的輸入參數,如果開(kāi)發(fā)人員在做功能實(shí)現的時(shí)候完全 沒(méi)有考慮到 string 類(lèi)型的參數存在 null 值的可能性,那么代碼的實(shí)現里面也不會(huì )對 null 值做處 理,在測試的時(shí)候就更不會(huì )設計針對 null 值的測試數據,這樣的“一條龍”缺失就會(huì )在代碼中 留下隱患。
  上述分析非?陀^(guān),筆者曾經(jīng)也非常認同,但是在經(jīng)歷并主導了國內外多家大型軟件企業(yè) 的開(kāi)發(fā)者自測轉型實(shí)踐之后,筆者改變了看法。開(kāi)發(fā)人員其實(shí)是最了解自己代碼的人,所以他 們能夠最高效地對自己的代碼進(jìn)行測試,開(kāi)發(fā)人員可以基于代碼變更自行判斷可能受影響的范 圍,實(shí)現高效的精準測試。同時(shí),當開(kāi)發(fā)人員有了質(zhì)量責任和測試義務(wù)之后,測試能力就會(huì )成 為其技能發(fā)展的重要方向。我們說(shuō)“好馬是跑出來(lái)的,好鋼是煉出來(lái)的”,只有通過(guò)實(shí)戰,開(kāi) 發(fā)人員的測試分析與設計能力才能提升,進(jìn)而開(kāi)發(fā)的內建質(zhì)量才能提升?梢哉f(shuō),開(kāi)發(fā)者自測 是軟件質(zhì)量提升的必經(jīng)之路。
  4. 在代碼開(kāi)發(fā)階段借助 TDD 的思想
  這里的 TDD 是指測試驅動(dòng)開(kāi)發(fā)(Test Driven Development),但我們并不是要照搬 TDD 的 實(shí)踐,而是借助 TDD 的思想,用測試先行的思路,幫助開(kāi)發(fā)人員梳理和理解需求,完成更好 的代碼設計與實(shí)現,縮短代碼質(zhì)量的反饋周期,提高軟件質(zhì)量。
  5. 預留測試時(shí)間
  在做項目計劃的時(shí)候,尤其在讓開(kāi)發(fā)人員進(jìn)行時(shí)間評估時(shí),必須為自測預留時(shí)間。一個(gè)功 能可以交付的標準不僅僅是功能的實(shí)現,對應的測試也是需要時(shí)間成本的,這需要管理層進(jìn)行 思維轉換,否則測試左移只能停留在概念層面,很難真正落地。
  6. 提高軟件的可測試性
  提高軟件的可測試性是測試左移中一個(gè)重要的實(shí)踐,因為它可以有效地幫助我們設計適合 團隊的測試策略。我們需要測試人員在參與需求分析和方案設計的過(guò)程中,能夠提出相關(guān)的可測試性需求,幫助研發(fā)人員設計出易于測試的軟件架構和代碼模塊,從而提高測試工作的效率 和有效性。關(guān)于軟件的可測試性設計,詳見(jiàn) 1.3 節。
  1.1.5   測試左移的深度思考
  下面分享筆者的一個(gè)感悟:很多時(shí)候,我們低估了測試左移的價(jià)值。它不僅僅是一種研發(fā) 模式的改進(jìn),更反映了當今軟件研發(fā)的一個(gè)底層邏輯——今天的軟件組織,正在由流程驅動(dòng)轉 變成事件驅動(dòng)。
  流程驅動(dòng)是什么呢?是設置一系列的條條框框,從而把研發(fā)活動(dòng)固定為整齊劃一的一系列 步驟。而高效的軟件質(zhì)量實(shí)踐能夠靠這個(gè)來(lái)完成嗎?答案顯然是否定的。
  現在的研發(fā)活動(dòng)本質(zhì)上是靠一個(gè)個(gè)的事件驅動(dòng)的,讓研發(fā)團隊以完成事件為指引,充分發(fā) 揮主動(dòng)性,充分給予工程師自由。從全局的視角來(lái)看,測試左移能被行業(yè)所接受,其實(shí)反映了 軟件組織的管理正在向事件驅動(dòng)的模式轉變。
  1.1.6   總結
  本節探討了傳統瀑布模型和敏捷開(kāi)發(fā)、持續交付、DevOps 等研發(fā)模式下的測試左移實(shí)踐, 并介紹了開(kāi)發(fā)者自測的實(shí)踐。
《2024軟件測試行業(yè)從業(yè)人員調查問(wèn)卷》,您的見(jiàn)解,行業(yè)的聲音!

關(guān)注51Testing

聯(lián)系我們

快捷面板 站點(diǎn)地圖 聯(lián)系我們 廣告服務(wù) 關(guān)于我們 站長(cháng)統計 發(fā)展歷程

法律顧問(wèn):上海蘭迪律師事務(wù)所 項棋律師
版權所有 上海博為峰軟件技術(shù)股份有限公司 Copyright©51testing.com 2003-2024
投訴及意見(jiàn)反饋:webmaster@51testing.com; 業(yè)務(wù)聯(lián)系:service@51testing.com 021-64471599-8017

滬ICP備05003035號

滬公網(wǎng)安備 31010102002173號

久久无码人妻精品一区二_久久亚洲春色中文字幕_亚洲艳妇自拍视频_亚洲中文字幕乱码少妇饥渴