• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    讓軟件改進過程實現自動化

    發布: 2008-9-12 11:11 | 作者: 不詳 | 來源: 測試時代采編 | 查看: 35次 | 進入軟件測試論壇討論

    領測軟件測試網
    關鍵字:軟件改進過程 自動化

    目錄

    概要
    你想在提高代碼質量方面走多遠?
    你想在哪里止?
    FindBugs
    PMD/CPD
    Checkstyle
    Jalopy/Jacobe
    JDepend
    JUnit
    Eclipse
    項目集成
    故障解決

    概要

    幾年前每個人都被Quality 軟件的問題所困擾。Quality 中的Q 之所以大寫就是為了強調單詞的重要性。引入了消耗幾個小時的程序和檢查過程、以及大量的文書工作,就是為了設法減少軟件的故障率。就是前不久,這種趨勢已經演變為更為輕便的處理過程,該過程使用了輕便的軟件和極端編程。這仍然是一個積極的轉變因為保證軟件品質仍然是重要的。有些分析家估計:有60%的軟件故障可自動檢測出來。那么我們能做的就是在昨天的質量裝置恐龍和今天的困惑之間建一座橋梁,以便讓問題解決的又快又代價低?作者Joe Walker 測試了不同類型的故障和七種工具以幫助你揭示他們的真面目。

    有許多免費工具可以輕而易舉的報告你的代碼有什么故障,然后幫助你改進代碼的質量。而且因為故障常常是主觀方面的,大部分工具可以配置以適合你的本地代碼類型。

    但是一開始你就有減少故障的義務。這聽起來好像是一個簡單的問題——肯定對于每個人來說軟件質量必須擺在第一位。但是,花費最少時間來修改代碼往往看起來更加合理一些。任何保存壽命短的軟件應該編輯的盡可能少,而且編寫沒有人閱讀的單行文檔也是毫無意義的。我在想有多少塊文檔花費在編寫和檢查方面的時間比某人閱讀他們節省的時間多呢?因此,我們的目的就是把值得我們提高作品質量的工作和浪費資源的工作區別開來。

    你想在提高代碼質量方面走多遠?

    存在以下幾種故障種類。我給出的工具在它們攻擊的故障類型方面有區別。我根據他們的嚴重性確定了四種不同的故障類,從困擾用戶的普通故障到阻止代碼重新使用的有組織的故障都有:

    ·Current bugs: 當前故障阻止軟件的正確運行。它們困擾用戶并且可(或者應該)通過你的軟件測試顯示出來。當前故障與潛在故障截然不同。

    ·Latent bugs: 這些故障當前不產生問題。但是它們潛伏著,在以后才出現。阿里安5號火箭的失敗就是由于一個浮點到整數轉換錯誤引起的,當前面的火箭速度較慢時處于睡眠期;但是速度較快的阿里安 5卻觸發了這個問題。千年病毒也是一個潛伏故障的例子,只有當環境改變時它才浮出水面。使用傳統的測試方法測試潛伏病毒要困難得多,并且找到他們就需要具有遠見的人詢問:“什么改變才能讓故障從黑暗中走出來?

    ·Accident-waiting-to-happen bugs: 代碼可以既簡單又安全,或者他也可以是一團糟,等著絆倒那些對他們的編輯結果想得不多的可憐的程序員。一般而言,代碼越老,就越有可能出現明顯生銹的刀口;并且某些工業證據也表明:長時間沒有重構的代碼一般七年之后也就不再需要重新編寫了。

    ·Poorly organized bugs: 組織不好的代碼不容易重新使用并且常常包含對代碼的過多依賴,其實有些是不必要的。因此它更有可能受其他代碼位中的故障影響。編碼標準致力于解決這種類型的問題,但是編碼標準不能完全解決問題。他們不能停止問題如循環的依賴性,它使得你毫無機會來維持可重新使用的代碼。

    這些問題根據他們的嚴重性組織的比較粗糙。當前故障一般比潛伏故障更難以解決,而潛伏故障依次的比等待發生的故障或者組織故障更加令人擔心。

    下列代碼包含了上述四種故障案例。認出它們后獎勵一下你自己:

     


    1: public static void main(String[] args)
    2: {
    3:     System.out.println(toUpperCase('q'));
    4: }
    5:
    6: private static char toUpperCase(char main)
    7: {
    8:     return (char) (main - 31);
    9: }

     


    這里有一個當前故障因為行8應該讀。

     


    8: return (char) (main - 32);

     


    這種簡單問題不解決,程序也不會運轉。與其辛苦計算出q的大寫字母為Q,還不如設法勸說我們相信答案就是R。

    這里有一個潛伏故障因為遲早有人會設法得到ß 或者某數的大寫版本,而不是任何明智的東西。

    一個小小的等待發生事故的故障是由于行6中的某些傻變量名引起的。main 并沒有真正的描述什么正在進行,而且還用方法名來迷惑我們。更好的代碼如下:

     


    6: private static char toUpperCase(char lower)

     

    如果該代碼描述了為什么她要從小寫字母盤上的字符減去32,那么它會安全的多。

    最后如果你將toUpperCase()方法變為公用的,并為方便其他類的使用將它變為實際類——甚至你可以使用下面的標準Sun微系統提供的方法,那么代碼就組織得更好一些:

     


    3: System.out.println(Character.toUpperCase('q'));

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    TAG: 改進 軟件 自動化

    31/3123>

    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>