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

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

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

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

    軟件測試之Java程序性能測試

    發布: 2009-3-19 10:17 | 作者: 不詳 | 來源: 測試時代采編 | 查看: 70次 | 進入軟件測試論壇討論

    領測軟件測試網  在開發中,性能測試是設計初期容易忽略的問題,開發人員會為了解決一個問題而“不擇手段”,作者所參與的項目中也遇到了類似問題,字符串拼接、大量的網絡調用和數據庫訪問等等都對系統的性能產生了影響,可是大家不會關心這些問題,“CPU速度在變快”,“內存在變大”,并且,“好像也沒有那么慢吧”。  
            有很多商業的性能測試軟件可供使用,如Jprofiler、JProbe  Profiler等,但在開發當中顯得有些遙遠而又昂貴。  
     
     2  目標  
            本文將講述如何利用Java語言本身提供的方法在開發中進行性能測試,找到系統瓶頸,進而改進設計;并且在盡量不修改測試對象的情況下進行測試。                                             

    3  預備知識  
            面向對象編程通過抽象繼承采用模塊化的思想來求解問題域,但是模塊化不能很好的解決所有問題。有時,這些問題可能在多個模塊中都出現,像日志功能,為了記錄每個方法進入和離開時的信息,你不得不在每個方法里添加log("in  some  method")等信息。如何解決這類問題呢?將這些解決問題的功能點散落在多個模塊中會使冗余增大,并且當很多個功能點出現在一個模塊中時,代碼變的很難維護。因此,AOP(Aspect  Oriented  Programming)應運而生。如果說OOP(Aobject  Oriented  Programming)關注的是一個類的垂直結構,那么AOP是從水平角度來看待問題。  

            動態代理類可以在運行時實現若干接口,每一個動態代理類都有一個Invocation  handler對象與之對應,這個對象實現了InvocationHandler接口,通過動態代理的接口對動態代理對象的方法調用會轉而調用Invocation  handler對象的invoke方法,通過動態代理實例、方法對象和參數對象可以執行調用并返回結果。  

            說到AOP,大家首先會想到的是日志記錄、權限檢查和事務管理,是的,AOP是解決這些問題的好辦法。本文根據AOP的思想,通過動態代理來解決一類新的問題——性能測試(performance  testing)。  

            性能測試主要包括以下幾個方面:  

            計算性能:可能是人們首先關心的,簡單的說就是執行一段代碼所用的時間  

            內存消耗:程序運行所占用的內存大小  

            啟動時間:從你啟動程序到程序正常運行的時間  

            可伸縮性(scalability)  

            用戶察覺性能(perceived  performance):不是程序實際運行有多快,而是用戶感覺程序運行有多快.  

            本文主要給出了計算性能測試和內存消耗測試的可行辦法。  

    4  計算性能測試  
    4.1  目標:  
    通過該測試可以得到一個方法執行需要的時間  

    4.2實現:  
            Java為我們提供了System.  currentTimeMillis()方法,可以得到毫秒級的當前時間,我們在以前的程序當中一定也寫過類似的代碼來計算執行某一段代碼所消耗的時間。  
    longstart=System.currentTimeMillis(); doSth();longend=System.currentTimeMillis(); System.out.println("time lasts"+(end-start)+"ms");        但是,在每個方法里面都寫上這么一段代碼是一件很枯燥的事情,我們通過Java的java.lang.reflect.Proxy和java.lang.reflect.InvocationHandler利用動態代理來很好的解決上面的問題。  

            我們要測試的例子是java.util.LinkedList和java.util.ArrayList的get(int  index)方法,顯然ArrayList要比LinkedList高效,因為前者是隨機訪問,而后者需要順序訪問。  

          

    延伸閱讀

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

    TAG: java JAVA Java 程序 軟件測試 性能測試

    21/212>

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