<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          從缺陷到創(chuàng)新:質(zhì)量保障的新視角

          共 3025字,需瀏覽 7分鐘

           ·

          2024-06-26 15:15

          1.背景:

          最近一段時(shí)間研發(fā)大佬們?cè)诜e極的治理告警,經(jīng)過(guò)一段時(shí)間的治理,現(xiàn)在告警情況已經(jīng)有了很大的改觀,但難免還有漏網(wǎng)之魚(yú);具體我們可以以下邊一個(gè)例子來(lái)看:

          這是一個(gè)生產(chǎn)的UMP告警,通過(guò)這個(gè)告警我們發(fā)現(xiàn)XXX這個(gè)應(yīng)用的堆內(nèi)存使用率為90.18%,超過(guò)了設(shè)置的告警閾值85%,所以產(chǎn)生了這樣的一個(gè)告警;那什么是堆內(nèi)存呢?

          1.1.Java堆內(nèi)存

          Java堆內(nèi)存的定義

          Java堆內(nèi)存是JVM內(nèi)存的一部分,專(zhuān)門(mén)用于動(dòng)態(tài)分配對(duì)象和數(shù)組。它是一個(gè)運(yùn)行時(shí)數(shù)據(jù)區(qū),從JVM啟動(dòng)到JVM關(guān)閉,堆內(nèi)存一直存在。堆內(nèi)存的大小可以通過(guò)JVM啟動(dòng)參數(shù)進(jìn)行調(diào)整,如-Xms(表示java虛擬機(jī)堆區(qū)內(nèi)存初始內(nèi)存分配的大小-Xmx(表示java虛擬機(jī)堆區(qū)內(nèi)存可被分配的最大上限。

          Java堆內(nèi)存的特點(diǎn)

          動(dòng)態(tài)分配:Java堆內(nèi)存允許在運(yùn)行時(shí)動(dòng)態(tài)分配和釋放對(duì)象。

          自動(dòng)管理:Java具有自動(dòng)垃圾回收機(jī)制(Garbage Collection, GC),自動(dòng)回收不再使用的對(duì)象,防止內(nèi)存泄漏。

          全局訪問(wèn):堆內(nèi)存中的對(duì)象可以被程序中的任何部分訪問(wèn),只要有對(duì)該對(duì)象的引用。

          分代回收:Java堆內(nèi)存通常被劃分為不同的代(Generation),如新生代(Young Generation)和老年代(Old Generation),以?xún)?yōu)化垃圾回收性能。

          堆內(nèi)存的結(jié)構(gòu)

          Java堆內(nèi)存通常劃分為以下幾個(gè)區(qū)域:

          新生代(Young Generation):存儲(chǔ)新創(chuàng)建的對(duì)象,分為Eden區(qū)、幸存者區(qū)(Survivor Space S0和S1)。大多數(shù)新對(duì)象首先在Eden區(qū)分配,經(jīng)過(guò)幾次垃圾回收后,如果對(duì)象仍然存活,則移到幸存者區(qū),最終移到老年代。

          老年代(Old Generation):存儲(chǔ)生命周期較長(zhǎng)的對(duì)象。經(jīng)過(guò)多次垃圾回收后仍然存活的新生代對(duì)象會(huì)被移到老年代。

          永久代(Permanent Generation)或元空間(Metaspace):存儲(chǔ)類(lèi)的元數(shù)據(jù)(如類(lèi)定義和方法元數(shù)據(jù))。Java 8及以后,永久代被移除,改為元空間,并且使用本地內(nèi)存而不是堆內(nèi)存。

          Java堆內(nèi)存的工作原理

          對(duì)象分配:當(dāng)通過(guò)new關(guān)鍵字創(chuàng)建一個(gè)對(duì)象時(shí),JVM會(huì)在堆內(nèi)存中分配空間。比如:在這個(gè)例子中,new Person("John", 25)會(huì)在堆內(nèi)存中分配空間來(lái)存儲(chǔ)Person對(duì)象。

          public class Main {    public static void main(String[] args) {        // 創(chuàng)建一個(gè)對(duì)象        Person person = new Person("John", 25);    }}
          class Person { String name; int age; //構(gòu)造方法 Person(String name, int age) { this.name = name; this.age = age; }}
          垃圾回收:Java的垃圾回收機(jī)制自動(dòng)回收不再使用的對(duì)象,釋放堆內(nèi)存空間。垃圾回收器(Garbage Collector)會(huì)周期性地掃描堆內(nèi)存,識(shí)別不再有任何引用指向的對(duì)象,并回收它們占用的內(nèi)存。

          垃圾回收的過(guò)程大致分為以下幾步:

          標(biāo)記:標(biāo)記出所有存活的對(duì)象。

          清除:清除所有未被標(biāo)記的對(duì)象,釋放它們占用的內(nèi)存。

          壓縮:(可選)將存活的對(duì)象移到堆的一端,減少內(nèi)存碎片,提高分配效率。

          堆內(nèi)存管理中的問(wèn)題

          內(nèi)存泄漏:雖然Java有垃圾回收機(jī)制,但不正確的代碼設(shè)計(jì)仍可能導(dǎo)致內(nèi)存泄漏,即對(duì)象雖然不再使用但仍然被引用,無(wú)法被回收。

          內(nèi)存溢出(OutOfMemoryError):當(dāng)堆內(nèi)存被耗盡且垃圾回收無(wú)法釋放足夠內(nèi)存時(shí),會(huì)拋出OutOfMemoryError。

          性能問(wèn)題:頻繁的垃圾回收會(huì)影響應(yīng)用性能,因此需要優(yōu)化內(nèi)存使用和垃圾回收策略。

          通過(guò)對(duì)堆內(nèi)存和垃圾回收簡(jiǎn)單的了解**(備注,由于不是專(zhuān)業(yè)開(kāi)發(fā)可能對(duì)堆內(nèi)存和垃圾回收闡述的不是特別專(zhuān)業(yè),只是作為背景知識(shí)補(bǔ)充了解問(wèn)題??)**,我們大概知道上述告警多數(shù)是由于內(nèi)存泄露導(dǎo)致的,那么我們?cè)趺醋瞿?,才能避免此?lèi)問(wèn)題的發(fā)生呢?先來(lái)看看我們目前的質(zhì)量保障情況;

          2.質(zhì)量保障

          2.1.現(xiàn)有體系

          2.2.關(guān)鍵要素

          需求質(zhì)量維度

          通過(guò)產(chǎn)品輸出的PRD文檔,研發(fā)會(huì)輸出設(shè)計(jì)文檔,測(cè)試對(duì)應(yīng)的也會(huì)輸出測(cè)試用例,這也是對(duì)于需求最直觀的輸出;

          過(guò)程質(zhì)量維度

          產(chǎn)品會(huì)進(jìn)行需求評(píng)審,研發(fā)會(huì)進(jìn)行設(shè)計(jì)評(píng)審,測(cè)試會(huì)進(jìn)行測(cè)試用例評(píng)審,三方的目的是拉齊需求,以避免各自的理解有偏差;

          交付質(zhì)量維度

          測(cè)試會(huì)發(fā)送驗(yàn)收?qǐng)?bào)告,產(chǎn)品會(huì)先進(jìn)行需求的驗(yàn)收,上線前產(chǎn)品會(huì)同步業(yè)務(wù)驗(yàn)收,業(yè)務(wù)驗(yàn)收有問(wèn)題會(huì)反饋到產(chǎn)品推進(jìn)研發(fā)優(yōu)化測(cè)試復(fù)測(cè),形成循環(huán);

          2.3.質(zhì)量把控

          環(huán)境治理是有專(zhuān)門(mén)的團(tuán)隊(duì)負(fù)責(zé),不做過(guò)多闡述
          Diff&CR屬于測(cè)試左移的范疇,會(huì)在改進(jìn)措施中做說(shuō)明
          監(jiān)控告警和質(zhì)量大盤(pán)屬于測(cè)試右移的范疇,也會(huì)在改進(jìn)措施中說(shuō)明

          2.4.交付過(guò)程

          持續(xù)迭代

          目前是兩周一個(gè)迭代,基于這個(gè)節(jié)奏,去排需求,基本上每個(gè)迭代都會(huì)排滿(mǎn);

          持續(xù)集成

          主要還是基于Coding集團(tuán)的代碼倉(cāng)庫(kù)管理工具?持續(xù)發(fā)布?目前由于特殊性,沒(méi)有用到集團(tuán)的JDOS,使用的是自己的發(fā)布系統(tǒng)

          持續(xù)運(yùn)營(yíng)

          專(zhuān)門(mén)團(tuán)隊(duì)負(fù)責(zé)

          持續(xù)度量

          建立線上問(wèn)題處理群,通過(guò)群中Oncall對(duì)接

          通過(guò)保險(xiǎn)一線之聲進(jìn)行問(wèn)題反饋

          通過(guò)用戶(hù)滿(mǎn)意度評(píng)價(jià)進(jìn)行問(wèn)題反饋

          2.5.質(zhì)量文化

          質(zhì)量&效率基本上就是我們的團(tuán)隊(duì)文化,可能也是大部分測(cè)試團(tuán)隊(duì)的文化,通俗一些就是要測(cè)的好還要測(cè)的快

          3.改進(jìn)措施

          3.1.測(cè)試左移Diff&CR

          傳統(tǒng)的diff&cr基本上我都是通過(guò)去讓開(kāi)發(fā)大佬開(kāi)放Coding倉(cāng)庫(kù)權(quán)限,手動(dòng)拉取開(kāi)發(fā)分支到本地倉(cāng)庫(kù),進(jìn)行diff和cr,效率較低,時(shí)間成本較高

          基于大模型工程化進(jìn)行CodeReview好處良多,具體接入方式可參照,虛擬賬號(hào)可自行申請(qǐng)diff&cr ,效果如下,我們發(fā)現(xiàn)通過(guò)AI CR確實(shí)能夠幫我們發(fā)現(xiàn)一些問(wèn)題,這些問(wèn)題可能就是潛在的風(fēng)險(xiǎn),這樣能夠補(bǔ)充我們的測(cè)試Bad Case從而進(jìn)行更充分的測(cè)試;

          3.2.測(cè)試右移監(jiān)控&告警

          通過(guò)最初我們的案例分析發(fā)現(xiàn)目前告警信息確實(shí)也存在一部分不完善的情況,只給出了具體的告警信息**(當(dāng)然這個(gè)對(duì)于專(zhuān)業(yè)水平較高的同學(xué)也是可以快速定位問(wèn)題并解決的,但是對(duì)于稍微欠缺背景知識(shí)的同學(xué)比如說(shuō)不是專(zhuān)業(yè)開(kāi)發(fā)理解起來(lái)可能就稍微晦澀**),所以我對(duì)自己所測(cè)試的業(yè)務(wù)告警信息也進(jìn)行了優(yōu)化下面是我的一個(gè)優(yōu)化情況,多少對(duì)我個(gè)人而言我覺(jué)得還是有些幫助的??;

          4.未來(lái)規(guī)劃

          基于現(xiàn)有質(zhì)量保障框架下,我會(huì)持續(xù)探索、持續(xù)發(fā)現(xiàn)、持續(xù)優(yōu)化,保障業(yè)務(wù)運(yùn)轉(zhuǎn)質(zhì)量更絲滑

          瀏覽 37
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  老司机一区二区三区 | 久久密av | 乱伦一级毛片 | 亚洲激情一区二区三区 | 懂色av无码任你操久久久久蜜桃av |