日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

QA seven's blog

發布時間:2025/3/18 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QA seven's blog 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

從QA的角度來談談代碼質量的改進

Oct 31, 2016|?343?Hits

大部分人看到這個題目時,直接的反應是QA關心代碼質量干嘛,能看懂代碼嗎?怎么給dev feedback?

qa

如果還有人持這樣的觀點后,那么我只能說too young too simple。
首先我們得談談什么是代碼質量?
創建優秀的代碼涉及到正確性、可維護性甚至優美性。
正確性,最起碼你的代碼實現的業務邏輯是正確的。
可維護性,公司中其他的小伙伴能看看懂你的代碼邏輯,便于修改代碼。
優美性,符合各種代碼規范,其他人看到代碼后驚為天人。
但是要做到以上幾點絕非易事,首先你得有高超的編程能力,其次你對前端或后端的代碼規范有深刻的理解,但是能有這樣能力的人又有多少呢?
我們都知道軟件開發是團隊合作才能完成的工作。
那么項目的質量與客戶的需求才是項目生存下去的關鍵。
所以怎么才能改進項目代碼的質量?我們先看看業界巨頭公司都是如何做的?

microsoft怎么做?

microsoft

我們都知道微軟是做操作系統出身的,其實微軟的測試能力與測試工具都是業界中領先的,以下是兩張表展示的是微軟如何從visual studio與開發過程中提高代碼質量

Visual Studio

標準描述
使用代碼分析工具分析應用程序質量靜態代碼分析工具可查找 C++ 和托管代碼里的設計、使用、可維護性和樣式問題。 其中的許多問題可能導致難以在標準測試環境中重現的 bug。
單元測試代碼“測試資源管理器”可以在開發實踐中輕松地集成單元測試。 可以使用 Microsoft 單元測試框架或若干第三方和開源框架之一。
測量托管代碼的復雜性和可維護性代碼度量是一組軟件度量值,使開發人員可以更好地了解他們正在開發的代碼。 度量值包括函數和類的可維護性指數、函數的圈復雜度、類的繼承深度和類耦合度的數值。
使用代碼克隆檢測功能查找重復代碼代碼克隆工具可用于在整個 Visual Studio 解決方案內搜索 Visual C# 和 Visual Basic 項目中重復或高度相似的代碼。 可以經常重構代碼以消除重復代碼,從而創建更易于維護的解決方案。
PreEmptive Analytics for Team Foundation ServerPreEmptive Analytics for TFS CE 有助于將反饋驅動的開發過程集成到開發工作流中。 當應用程序在執行過程中發生錯誤時,它會自動將異常報告數據發回給 PreEmptive Analytics 服務。 然后,該服務將根據你定義的規則和閾值創建或更新 Microsoft Team Foundation Server 中的工作項。
PreEmptive Dotfuscator 和 Analytics CEPreEmptive Dotfuscator 是 .NET 模糊處理程序和壓縮程序,有助于防止程序遭遇反向工程,同時使程序更小更高效。

開發過程中改進代碼質量

標準描述
設計和代碼的檢查準則提供若干幫助進行設計和代碼檢查的技術,通過讓其他同事檢查代碼來發現 bug 和不正確的假設。
安全代碼編寫準則描述編寫安全代碼的技術和策略。
高質量代碼簽入準則列出以不同方式檢查代碼以確保代碼實現您的預期高質量設計目的的準則。
代碼分析工具使用準則提供幾條使用代碼分析工具的準則。
檢測和更正 C/C++ 代碼缺陷描述如何使用用于托管代碼的代碼分析工具檢測和更正代碼缺陷。
代碼分析簽入策略描述如何創建與 Team Foundation 源控件簽入關聯的自定義簽入策略。
調試準則提供幾條查找代碼缺陷的準則。

google 又是怎么做?

google

  • 代碼審查。在你提交任何代碼改動之前,你得找去代碼“主人”簽字確認。為了實現,評審者(被鼓勵去)建議大修代碼,而不是讓它成為根本沒有經過思考的“圖章”代碼。

  • 按語言可讀性要求堅持代碼風格指南(請參閱這里)。除了讓我們代碼有統一的外觀(所以我們能快速識別方法、變了等),我們的風格指南禁止了一些復雜、混亂、易出錯的 C++ 特性(比如:class 類型的靜態和全局變量)。

  • 整個團隊都致力改進我們代碼庫的質量,維護我們的核心庫,不斷做出更好的工具。

  • 一個活躍的“code health”課題組。

  • 發布軟件時,不對外部期限承擔責任。一般而言,這讓我們可以正確做事,而非為了期限內完成任務把亂七八糟的代碼拼湊起來。
  • “Fix it.” 例如,一個工程師或許說,“我認為我們真應該別再用過時的 Cruft Map 類(class)了。我打算在 1 月 20 日組織一次 Fix it。” 當 1 月 20 日來臨時,大家應當暫停其正常運作,把他們代碼中的 Cruft Maps 都換掉。在 1 月 21 日,Google 就永遠和 Cruft Map 說拜拜了!不過最近,核心庫團隊已經很優秀了,貌似沒有啥東西可再值得類似的 fix it 了。
  • 測試文化。單元測試覆蓋率可能接近 100%,我們有持續構建/整合/測試,還有知名的 “Testing on the Toilet” (請參見Google Testing Blog)

facebook 呢? 又有什么不一樣

facebook

  • 開發對質量負責: 開發從設計,實現,測試,到部署都要自己做。其它做工具,流程的工程師通過開發工具和流程來幫助開發人員更為簡單方便地做測試,做部署和做監控。每個開發人員有自己單獨的測試環境,測試環境就是運行在開發本地機器上,部署非常簡單快速。測試環境用的是真實的用戶數據。
  • 持續集成和測試自動化:每周發布一次。星期天晚上,要發布的構建從主線上分支出來到發布分支,到星期二的中午如果沒有大的問題,就可以上線了。所有的測試運行控制在10分鐘以內,所以不需要考慮不運行哪些測試用例。運行所有測試用例。 (只是聽說,沒有經過考證。)
  • 嚴格實施代碼審計:在Facebook 做 code review時間大約占50%,管理者對代碼質量負有一定責任 。甚至代碼質量高于一切:Facebook Code review是重點KPI考核的對象,實行連坐制,如果因為代碼質量問題,那么產生的KPI責任包括領導30%、程序員50%、審核人員20%。 在代碼checkin之前,都要由專人進行review。Facebook 創始人兼 CEO 馬克扎克伯格會親自對 News Feed 每個代碼更新把關。在 Facebook,所有重大升級的代碼都進行強制評估,任何一個改動都至少由一人把關。但是,無論工程師對 News Feed 做出任何改動,都將由扎克伯格親自把關。
  • 內測 (dog food):發布之前,公司員工使用要發布的功能。2-3天之內可以有幾百個或上千個人在使用新功能。負責要發布功能的開發人員在星期天晚上到星期二中午之間會做大量的測試 。
  • 通過灰度發布控制風險:新功能本身質量可能有問題,新功能也可能影響其它現有功能。為了減少或控制這些風險。Facebook開發了一整套完善的發布,控制,監控流程和工具。做到:1.測試通過后,產品質量基本有保證。2.即使有漏測的bug,只會影響很少量的用戶。3.及時監控到問題。4.及時修復。
  • 產品監控:通過社區討論的正負面輿情,及與歷史應用數據的對比情況,監控產品的系統的運行狀態技術修復。

    thoughtworks 業界以敏捷著稱的軟件企業又是如何改進的

    thoughtworks
  • 項目的初期,dev,BA,QA就會做到一起IPM,讓不同的角色都能了解story,讓dev盡早的分析story以及采用那種技術去完成工作。
    pair
  • 開發階段,dev會采用pair的方式,和QA,其他dev共同完成story,這樣的好處是,一讓不熟悉的新人盡快的了解項目架構,二與QApair,QA將會提供dev考慮不足的點,一起編寫單元測試以及feature test。
  • 當dev完成代碼工作后,會在github上發出pull request 或邀請其他dev,一起評審代碼。
  • 各個項目都有自己完備的cd流程,確保發布過程的正確性,減少人為手工操作的失誤。

從以上業界代表公司的改進方式,我們可以看出它們都是從以下幾點出發的:

  • 完整的單元測試覆蓋率
    UI自動化測試的覆蓋率很難被保證,不斷的改變的ui,使使用UI測試來驗證產品的功能變得十分麻煩,但是單元測試則不同,各種語言都有自己的測試工具以及測試覆蓋率工具幫助我們更好的完善我們的代碼質量,我們也可以用接口測試與pact測試來保證第三方集成服務的正確性,所以高覆蓋率的單元測試時產品的質量的基礎。
  • 嚴格的代碼審查機制
    facebook,google,微軟等公司嚴格的代碼審查機制,是確保代碼不被破壞的關鍵點,不會因為團隊成員的某次粗心的提交,造成整個項目的失敗。
  • 強大的代碼分析工具
    代碼級別的規范化,以及動態與靜態掃描,進一步的幫助軟件開發人員、質量保證人員查找代碼中存在的結構性錯誤、安全漏洞等問題,從而保證軟件的整體質量。與CI,CD的集成,能夠讓我們盡早的發現代碼中存在的錯誤。

  • 規范化的測試流程
    各個公司規范化的測試流程,保證項目在每一階段都能夠輸出高質量的代碼。

  • 完善的風險控制
    完善的風險控制,不僅僅表現的google與Facebook的A/B測試,也表現在當有任何重大問題時,能夠隨意的切換到舊的版本,保證產品不因為該問題,就造成宕機。
  • 實時的監控
    這些行業的巨頭,都有著非常強大的運維團隊,從產品的開發階段就開始實施了各種監控手段,監控范圍包括編譯階段,部署階段,產品環境,硬件服務器的狀態等,幫助項目的中所有成員及時的發現產品中存在的問題,快速跟蹤以及定位問題。
  • 最新內容請見作者的GitHub頁:http://qaseven.github.io/


    總結

    以上是生活随笔為你收集整理的QA seven's blog的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。