• <menu id="w2i4a"></menu>
  • logo Parasoft 案例研究(一)

    文檔首頁(yè)>>Parasoft 案例研究(一)>>網(wǎng)通設(shè)備成功案例:C++test靜態(tài)分析只需數(shù)分鐘為企業(yè)預(yù)防損失的發(fā)生

    網(wǎng)通設(shè)備成功案例:C++test靜態(tài)分析只需數(shù)分鐘為企業(yè)預(yù)防損失的發(fā)生


    一、問(wèn)題重現(xiàn)


    下面的描述來(lái)自 Parasoft 的客戶某跨國(guó)網(wǎng)通設(shè)備大廠的郵件內(nèi)容,客戶在郵件中描述了一段存在 Bug 的代碼。以下是郵件內(nèi)容(注:為防止泄漏客戶代碼信息,對(duì)代碼做過(guò)輕微改動(dòng)):

    As talked last night, we have solved one big code bug; here I list it here for your information.

    This code cause system running in an endless loop, that cause system reboot due to watch dog timer timeout.

    void ETN_xdd_algo::stop_running(T_global_TCID tcid)

    {

    if ( pinstances == NULL) { return;

    }

    LE_simple_list::iterator it = pinstances->begin();

    for (; it != pinstances->end(); ) { if (tcid == (*it)->get_tcid()) {

    delete *it; break;

    }

    }

    return;

    }

    對(duì)上述錯(cuò)誤代碼做簡(jiǎn)單分析,你將很容易發(fā)現(xiàn)問(wèn)題所在,原因簡(jiǎn)單甚至弱智,因?yàn)?/span> for 環(huán)的循環(huán)因子 it 沒(méi)有進(jìn)行自加運(yùn)算。這導(dǎo)致只要進(jìn)入該 for 循環(huán),必將陷入死循環(huán)。

    以上是從代碼角度進(jìn)行分析,得出死循環(huán)結(jié)論。 而當(dāng)代碼在實(shí)際項(xiàng)目中運(yùn)行時(shí)(上述錯(cuò)誤代碼的項(xiàng)目,實(shí)際運(yùn)行在客戶所生產(chǎn)的電信設(shè)備上),所產(chǎn)生的真實(shí)后果則更為嚴(yán)重。


    客戶在郵件中有簡(jiǎn)單提及:

    “solved one big code bug”

    “This code cause system running in an endless loop, that cause system reboot due to watch dog timer timeout.”

    而在我們現(xiàn)場(chǎng)支持客戶端過(guò)程中,客戶曾說(shuō)明如下:

    由于存在 Bug 的設(shè)備在電信運(yùn)營(yíng)商的系統(tǒng)上,經(jīng)常無(wú)端死機(jī),導(dǎo)致他們的客戶怨聲載道。責(zé)令他們必須在規(guī)定期限內(nèi),找到問(wèn)題根源并修復(fù);


    好了,我們?cè)俸?jiǎn)單回顧一下整個(gè)問(wèn)題發(fā)生的流程,以便我們能更好的重現(xiàn)問(wèn)題:


    作為電信設(shè)備供應(yīng)商的某跨國(guó)網(wǎng)通設(shè)備大廠,所銷售的設(shè)備正運(yùn)行在運(yùn)營(yíng)商系統(tǒng)上,而運(yùn)營(yíng)商發(fā)現(xiàn)該設(shè)備經(jīng)常無(wú)端死機(jī),于是要求某跨國(guó)網(wǎng)通設(shè)備大廠必須在短期內(nèi)找到問(wèn)題根源并修復(fù)。由于不能現(xiàn)場(chǎng)調(diào)試,某跨國(guó)網(wǎng)通設(shè)備大廠的開發(fā)人員只能在本地反復(fù)診斷,反復(fù)模
    擬,希望重現(xiàn)死機(jī)的現(xiàn)象,經(jīng)過(guò)長(zhǎng)達(dá)一周時(shí)間的模擬,他們終于發(fā)現(xiàn)問(wèn)題的根源正是上述那段簡(jiǎn)單的 for 循環(huán)錯(cuò)誤。


    二、客戶背景


    某跨國(guó)網(wǎng)通設(shè)備大廠是國(guó)際電信行業(yè)的佼佼者,是數(shù)十億美元規(guī)模的電信技術(shù)領(lǐng)先廠商, 擁有數(shù)個(gè)重要的全球研發(fā)中心,擁有技術(shù)先進(jìn)、制造能力達(dá)到世界一流水平的生產(chǎn)制造平臺(tái), 銷售服務(wù)網(wǎng)絡(luò)遍及全國(guó)和海外 50 多個(gè)國(guó)家。


    三、客戶代碼


    上述錯(cuò)誤的代碼正來(lái)自某跨國(guó)網(wǎng)通設(shè)備大廠核心設(shè)備的軟件中。述及該項(xiàng)目的歷史,也足讓你瞠目結(jié)舌??傢?xiàng)目全部基礎(chǔ)性代碼超過(guò) 1000 萬(wàn)行,最早的代碼可追蹤到 90 年代。

    客戶所測(cè)項(xiàng)目隸屬總項(xiàng)目重要模塊之一,代碼量超過(guò) 100 萬(wàn)行。


    四、問(wèn)題影響



    更為重要的影響在于運(yùn)營(yíng)商對(duì)于某跨國(guó)網(wǎng)通設(shè)備大廠產(chǎn)品質(zhì)量的認(rèn)定,這樣的問(wèn)題對(duì)于任何客戶而言都是不希望看到的,因?yàn)檫@會(huì)影響到實(shí)際產(chǎn)品的運(yùn)行,進(jìn)而消費(fèi)者對(duì)于產(chǎn)品的使用。


    五、解決之道


    在軟件開發(fā)中,我們極不情愿將 Bug 呈現(xiàn)到客戶面前,但當(dāng)問(wèn)題真正產(chǎn)生時(shí),我們需要去反思為什么如此簡(jiǎn)單的 for 循環(huán)所導(dǎo)致的問(wèn)題造成這么大影響。

    • 產(chǎn)品沒(méi)有經(jīng)過(guò)測(cè)試嗎?有測(cè)試,但往往是功能性和系統(tǒng)性測(cè)試。
    • 沒(méi)有代碼規(guī)范標(biāo)準(zhǔn)嗎?有標(biāo)準(zhǔn),但往往停留于紙面而不得執(zhí)行。
    • 項(xiàng)目初期即介入測(cè)試嗎?

    ……

    以上一些問(wèn)題是保障軟件產(chǎn)品高質(zhì)量的一些因素,對(duì)于這些,C++test 的靜態(tài)規(guī)則檢查正好完美的滿足這些需求:

    • 在代碼級(jí)別測(cè)試上,C++test 的靜態(tài)分析能建立有效代碼規(guī)范標(biāo)準(zhǔn),使得測(cè)試不僅僅局限于功能性和系統(tǒng)性測(cè)試;
    • 在代碼規(guī)范標(biāo)準(zhǔn)上,C++test 內(nèi)建近 1600 條代碼規(guī)范,同時(shí)提供自定義代碼規(guī)范工具 RuleWizard;
    • C++test 的靜態(tài)分析, Bug Detective 功能,不需要整個(gè)項(xiàng)目完成后測(cè)試,可在編寫代碼的第一行開始,即進(jìn)行測(cè)試。盡早消除代碼隱患。

    對(duì)于上文中某跨國(guó)網(wǎng)通設(shè)備大廠所出現(xiàn)的 Bug,只需要通過(guò) C++test 一條簡(jiǎn)單代碼規(guī)范, 即可防范于未然。

    以下規(guī)則來(lái)自 C++test 靜態(tài)編碼規(guī)則:

    “Null initialize or increment expressions in for loops will not be used; a while loop will be used instead [CODSTA-49-3]”


    六、客戶反饋


    從某跨國(guó)網(wǎng)通設(shè)備大廠反饋的情況,他們非常信賴 C++test 靜態(tài)分析,已經(jīng)將 C++test 的靜態(tài)分析作為測(cè)試的標(biāo)準(zhǔn)流程,每日進(jìn)行測(cè)試。因?yàn)橥ㄟ^(guò) C++test 的代碼規(guī)范,只需數(shù)分鐘即可預(yù)防該問(wèn)題發(fā)生。而該問(wèn)題從發(fā)現(xiàn)到修復(fù)前后花費(fèi) 2 周時(shí)間,更重要的是影響客戶對(duì)于他們產(chǎn)品的信心。

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();