軟件測試+JAVA

          -- 新手上路
          posts - 13, comments - 7, trackbacks - 0, articles - 0

          轉自:51testing
          作者:eoliya


          如何用loadrunner批量的發送郵件


          問:小弟剛剛接觸loadrunner,想通過實踐來熟悉軟件。我用loadrunner錄制了登錄sohu郵箱并向我的本地郵箱發一封郵件的腳本,其中發郵件的過程是錄制在action里面的。如果iteration設置成1,則結果良好,每次run senario都能收到一封郵件。可是當把iteration設置成大于1的整數(例如5),我的本地郵箱還是只能收到一封而已。我曾試著把pacing改成間隔20秒后重復一次發郵件的操作,可結果還是只能收到一封。不知道這是為何,請教該如何解決?先謝過!

          答:已經搞定了,在run-time settings的browser emulatoin選項中,把simulate a new user on each iteration去掉
          因為郵箱的發信操作只能在同一用戶的條件下進行

          posted @ 2006-11-29 11:01 RedWolf 閱讀(1056) | 評論 (2)編輯 收藏

          轉自:51testing論壇
          作者:
          笑游天涯俠

          性能測試(并發負載壓力)測試分析-簡要篇


          在論壇混了多日,發現越來越多的性能測試工程師基本上都能夠掌握利用測試工具來作負載壓力測試,但多數人對怎樣去分析工具收集到的測試結果感到無從下手,下面我就把個人工作中的體會和收集到的有關資料整理出來,希望能對大家分析測試結果有所幫助。

          分析原則:
          ? ? ? 具體問題具體分析(這是由于不同的應用系統,不同的測試目的,不同的性能關注點)
          ? ? ? 查找瓶頸時按以下順序,由易到難。
          ? ? 服務器硬件瓶頸-〉網絡瓶頸(對局域網,可以不考慮)-〉服務器操作系統瓶頸(參數配置)-〉中間件瓶頸(參數配置,數據庫,web服務器等)-〉應用瓶頸(SQL語句、數據庫設計、業務邏輯、算法等)
          ? ? 注:以上過程并不是每個分析中都需要的,要根據測試目的和要求來確定分析的深度。對一些要求低的,我們分析到應用系統在將來大的負載壓力(并發用戶數、數據量)下,系統的硬件瓶頸在哪兒就夠了。
          ? ? ? 分段排除法 很有效

          分析的信息來源:
          ? ? ?1 根據場景運行過程中的錯誤提示信息
          ? ? ?2 根據測試結果收集到的監控指標數據

          一.錯誤提示分析
          分析實例:
          1 ?Error: Failed to connect to server "10.10.10.30:8080": [10060] Connection
          ???Error: timed out Error: Server "10.10.10.30" has shut down the connection prematurely

          ??分析:
          ?A、應用服務死掉。
          ? ?(小用戶時:程序上的問題。程序上處理數據庫的問題)
          ?B、應用服務沒有死
          ? ?(應用服務參數設置問題)
          ? ? 例:在許多客戶端連接Weblogic應用服務器被拒絕,而在服務器端沒有錯誤顯示,則有可能是Weblogic中的server元素的AcceptBacklog屬性值設得過低。如果連接時收到connection refused消息,說明應提高該值,每次增加25%
          ?C、數據庫的連接
          ? ?(1、在應用服務的性能參數可能太小了 2、數據庫啟動的最大連接數(跟硬件的內存有關))

          2??Error: Page download timeout (120 seconds) has expired

          分析:可能是以下原因造成
          ?A、應用服務參數設置太大導致服務器的瓶頸
          ?B、頁面中圖片太多
          ?C、在程序處理表的時候檢查字段太大多

          二.監控指標數據分析
          1.最大并發用戶數:
          應用系統在當前環境(硬件環境、網絡環境、軟件環境(參數配置))下能承受的最大并發用戶數。
          在方案運行中,如果出現了大于3個用戶的業務操作失敗,或出現了服務器shutdown的情況,則說明在當前環境下,系統承受不了當前并發用戶的負載壓力,那么最大并發用戶數就是前一個沒有出現這種現象的并發用戶數。
          如果測得的最大并發用戶數到達了性能要求,且各服務器資源情況良好,業務操作響應時間也達到了用戶要求,那么OK。否則,再根據各服務器的資源情況和業務操作響應時間進一步分析原因所在。

          2.業務操作響應時間:
          ? 分析方案運行情況應從平均事務響應時間圖和事務性能摘要圖開始。使用“事務性能摘要”圖,可以確定在方案執行期間響應時間過長的事務。
          ? 細分事務并分析每個頁面組件的性能。查看過長的事務響應時間是由哪些頁面組件引起的?問題是否與網絡或服務器有關?
          ? 如果服務器耗時過長,請使用相應的服務器圖確定有問題的服務器度量并查明服務器性能下降的原因。如果網絡耗時過長,請使用“網絡監視器”圖確定導致性能瓶頸的網絡問題
          3.服務器資源監控指標:
          內存:
          ? ? 1 UNIX資源監控中指標內存頁交換速率(Paging rate),如果該值偶爾走高,表明當時有線程競爭內存。如果持續很高,則內存可能是瓶頸。也可能是內存訪問命中率低。

          ? ? 2 Windows資源監控中,如果Process\Private Bytes計數器和Process\Working Set計數器的值在長時間內持續升高,同時Memory\Available bytes計數器的值持續降低,則很可能存在內存泄漏。

          內存資源成為系統性能的瓶頸的征兆:
          ? ? 很高的換頁率(high pageout rate);
          ? ? 進程進入不活動狀態;
          ? ? 交換區所有磁盤的活動次數可高;
          ? ? 可高的全局系統CPU利用率;
          ? ? 內存不夠出錯(out of memory errors)

          處理器:
          ? ? 1 UNIX資源監控(Windows操作系統同理)中指標CPU占用率(CPU utilization),如果該值持續超過95%,表明瓶頸是CPU。可以考慮增加一個處理器或換一個更快的處理器。如果服務器專用于SQL Server,可接受的最大上限是80-85%
          ? ? 合理使用的范圍在60%至70%。
          ? ? 2 Windows資源監控中,如果System\Processor Queue Length大于2,而處理器利用率(Processor Time)一直很低,則存在著處理器阻塞。

          CPU資源成為系統性能的瓶頸的征兆:? ?
          ? ???很慢的響應時間(slow response time)
          ? ???CPU空閑時間為零(zero percent idle CPU)
          ? ???過高的用戶占用CPU時間(high percent user CPU)
          ? ???過高的系統占用CPU時間(high percent system CPU)
          ? ? 長時間的有很長的運行進程隊列(large run queue size sustained over time)

          磁盤I/O:
          ? ? 1 UNIX資源監控(Windows操作系統同理)中指標磁盤交換率(Disk rate),如果該參數值一直很高,表明I/O有問題。可考慮更換更快的硬盤系統。
          ? ? 2 Windows資源監控中,如果 Disk Time和Avg.Disk Queue Length的值很高,而Page Reads/sec頁面讀取操作速率很低,則可能存在磁盤瓶徑。

          I/O資源成為系統性能的瓶頸的征兆 :
          ? ???過高的磁盤利用率(high disk utilization)
          ? ? 太長的磁盤等待隊列(large disk queue length)
          ? ? 等待磁盤I/O的時間所占的百分率太高(large percentage of time waiting for disk I/O)
          ? ? 太高的物理I/O速率:large physical I/O rate(not sufficient in itself)
          ? ? 過低的緩存命中率(low buffer cache hit ratio(not sufficient in itself))
          ? ? 太長的運行進程隊列,但CPU卻空閑(large run queue with idle CPU)

          4.數據庫服務器:
          SQL Server數據庫:
          ? ? 1 SQLServer資源監控中指標緩存點擊率(Cache Hit Ratio),該值越高越好。如果持續低于80%,應考慮增加內存。
          ? ? 2 如果Full Scans/sec(全表掃描/秒)計數器顯示的值比1或2高,則應分析你的查詢以確定是否確實需要全表掃描,以及SQL查詢是否可以被優化。
          ? ? 3 Number of Deadlocks/sec(死鎖的數量/秒):死鎖對應用程序的可伸縮性非常有害,并且會導致惡劣的用戶體驗。該計數器的值必須為0。
          ? ?4 Lock Requests/sec(鎖請求/秒),通過優化查詢來減少讀取次數,可以減少該計數器的值。

          Oracle數據庫:
          ??1 如果自由內存接近于0而且庫快存或數據字典快存的命中率小于0.90,那么需要增加SHARED_POOL_SIZE的大小。
          ? ? 快存(共享SQL區)和數據字典快存的命中率:
          ? ?select(sum(pins-reloads))/sum(pins) from v$librarycache;
          ? ? select(sum(gets-getmisses))/sum(gets) from v$rowcache;
          ? ? 自由內存:? ? select * from v$sgastat where name=’free memory’;
          2 如果數據的緩存命中率小于0.90,那么需要加大DB_BLOCK_BUFFERS參數的值(單位:塊)。
          ??緩沖區高速緩存命中率:
          ? ? select name,value from v$sysstat where name in ('db block gets’,
          ? ? 'consistent gets','physical reads') ;
          ? ?
          ? ? Hit Ratio = 1-(physical reads / ( db block gets + consistent gets))
          3 如果日志緩沖區申請的值較大,則應加大LOG_BUFFER參數的值。
          ? ? 日志緩沖區的申請情況 :
          ? ???select name,value from v$sysstat where name = 'redo log space requests' ;
          4 如果內存排序命中率小于0.95,則應加大SORT_AREA_SIZE以避免磁盤排序 。
          ? ?內存排序命中率 :
          ? ???select round((100*b.value)/decode((a.value+b.value), 0, 1, (a.value+b.value)), 2)from v$sysstat a, v$sysstat b where a.name='sorts (disk)' and b.name='sorts (memory)'
          ? ?
          ? ? 注:上述SQL Server和Oracle數據庫分析,只是一些簡單、基本的分析,特別是Oracle數據庫的分析和優化,是一門專門的技術,進一步的分析可查相關資料。

          說明:
          ? ? 以上只是個人的體會和部分資料的整理,并不代表專家之言。算拋磚引玉,有不同看法和更深入的分析的,希望大家勇要發言,以推動我們國內的性能測試工作。

          posted @ 2006-11-29 10:41 RedWolf 閱讀(1072) | 評論 (1)編輯 收藏


          如何迅速成為Java高手(轉自cjsdn)

          很多網友問我學習Java有沒有什么捷徑,我說“無他,唯手熟爾”。但是我卻很愿意將自己學習的一些經驗寫出來,以便后來者少走彎路,幫助別人是最大的快樂嘛!
          要想學好Java,首先要知道Java的大致分類。我們知道,自從Sun推出Java以來,就力圖使之無所不包,所以Java發展到現在,按應用來分主要分為三大塊:J2SE,J2ME和J2EE,這也就是Sun ONE(Open Net Environment)體系。J2SE就是Java2的標準版,主要用于桌面應用軟件的編程;J2ME主要應用于嵌入是系統開發,如手機和PDA的編程;J2EE是Java2的企業版,主要用于分布式的網絡程序的開發,如電子商務網站和ERP系統。J2SE開發桌面應用軟件比起VC,VB,DEPHI這些傳統開發語言來說,優勢好象并不明顯。J2ME對于初學者來說,好象又有點深奧,而且一般開發者很難有開發環境。所以現在應用最廣泛又最好學的就是J2EE了。J2EE又包括許多組件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要學習起來可不是一兩天的事。
          那么又該如何學習J2EE呢?當然Java語法得先看一看的,I/O包,Util包,Lang包你都熟悉了嗎?然后再從JSP學起。如果你學過HTML,那么事情要好辦的多,如果沒有,那你快去補一補HTML基礎吧。其實JSP中的Java語法也不多,它更象一個腳本語言,有點象ASP。然后你就該學一學Servlet了。Servlet就是服務器端小程序,他負責生成發送給客戶端的HTML文件。JSP在執行時,也是先轉換成Servlet再運行的。雖說JSP理論上可以完全取代Servlet,這也是SUN推出JSP的本意,可是Servlet用來控制流程跳轉還是挺方便的,也令程序更清晰。接下來你應該學習一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代碼的混亂方式了,這種方式跟ASP又有什么區別呢?還好,SUN提供了Javabean可以把你的JSP中的Java代碼封裝起來,便于調用也便于重用。接著就是EJB了,EJB就是Enterprise JavaBean,看名字好象它是Javabean,可是它和Javabean還是有區別的。它是一個體系結構,你可以搭建更安全、更穩定的企業應用。它的大量代碼已由中間件(也就是我們常聽到的Weblogic,Websphere這些J2EE服務器)完成了,所以我們要做的程序代碼量很少,大部分工作都在設計和配置中間件上。至于JDBC,就不用我多說了,你如果用java編過存取數據庫的程序,就應該很熟悉。還有,如果你要用Java編發送電子郵件的程序,你就得看看Javamail了。
          好了,對Java和J2EE有了一些基本概念之后,你就應該編一些程序了,千萬不要紙上談兵哦。最好找一些有實例且帶光盤的書來看,這樣看到好的程序就可以直接Ctrl+C再Ctrl+V,也不用勞您老大架再親自把它 再輸一遍吧,再說直接復制還不用怕出錯,何樂而不為呢!還有就是要經常上一些好的Java編程文章,有好的文章要Cut下來,有問題盡管問,只要問題不是太傻,一般高手都會回答你的。下面介紹幾個好的Java方面的編程網站:
          CSDN論壇 http://www.csdn.net/ ;中國最有名的技術論壇,《程序員》雜志就是他們出版的,你可以在上面提出問題,馬上就有人回答你,如果你覺得好,你可以給那人加分;
          Java研究組織http://www.javaresearch.org/ ;上面有很多原創文章,高手還是挺多的;
          Java開發者 http://www.chinajavaworld.com/ ;那里Java資料比較全;
          java.com.cn http://www.java.com.cn/ ;看這域名就知道有多牛,注冊用戶快接近一萬了,同時在線人數也在一千左右,人氣很旺的;
          IBM的開發者網絡http://www-900.ibm.com/developerWorks/cn/java/index.shtml IBM永遠的藍色巨人;
          那么我書也看了,程序也做了,別人問我的問題我都能解決了,是不是就成為高手了呢?當然沒那么簡單,這只是萬里長征走完了第一步。不信?那你出去接一個項目,你知道怎么下手嗎,你知道怎么設計嗎,你知道怎么組織人員進行開發嗎?你現在腦子里除了一些散亂的代碼之外,可能再沒有別的東西了吧!你現在最缺的是實際的工作經驗,而不是書本上那些憑空想出來的程序。所以你快去找一份Java的編程工作來做吧(如果是在校學生可以去做兼職啊),在實踐中提高自己,那才是最快的。不過你得祈禱在公司里碰到一個高手,而且他還愿意不厭其煩地教你,這樣好象有點難哦!
          還有一個辦法就是讀開放源碼的程序了。我們知道開放源碼大都出自高手,他們設計合理,考慮周到,再加上有廣大的程序員參與,代碼的價值自然是字字珠嘰,鏗鏘有力(對不起,偶最近《金裝四大才子》看多了)。學Java必讀的兩個開源程序就是Jive和Pet Store.。Jive是國外一個非常著名的BBS程序,完全開放源碼。論壇的設計采用了很多先進的技術,如Cache、用戶認證、Filter、XML等,而且論壇完全屏蔽了對數據庫的訪問,可以很輕易的在不同數據庫中移植。論壇還有方便的安裝和管理程序,這是我們平時編程時容易忽略的一部份(中國程序員一般只注重編程的技術含量,卻完全不考慮用戶的感受,這就是我們與國外軟件的差距所在)。Jive的資料在很多網站上都有,大家可以找來研究一下。相信你讀完代碼后,會有脫胎換骨的感覺。遺憾的是Jive從2.5以后就不再無條件的開放源代碼,同時有licence限制。不過幸好還有中國一流的Java程序員關注它,外國人不開源了,中國人就不能開源嗎?這里向大家推薦一個漢化的Jive版本?J道。Jive(J道版)是由中國Java界大名鼎鼎的banq在Jive 2.1版本基礎上改編而成, 全中文,增加了一些實用功能,如貼圖,用戶頭像和用戶資料查詢等,而且有一個開發團隊在不斷升級。你可以訪問banq的網站http://www.jdon.com/ ;去下載,或到同濟技術論壇的服務器上ftp://nro.shtdu.edu.cn去下,安裝上有什么問題,可以到論壇上去提問。Pet Store.(寵物店)是SUN公司為了演示其J2EE編程規范而推出的開放源碼的程序,應該很具有權威性,想學J2EE和EJB的朋友不要錯過了。
          你一定會高興地說,哈哈,原來成為Java高手就這么簡單啊!記得Tomjava也曾碰到過一個項目經理,號稱Java很簡單,只要三個月就可以學會。其實說這種話的人就如當年小日本號稱“三個月拿下中國”一樣大言不慚。不是Tomjava潑你冷水,你現在只是學到了Java的骨架,卻還沒有學到Java的精髓。接下來你得研究設計模式了。設計模式是高級程序員真正掌握面向對象核心思想的必修課。設計模式并不是一種具體"技術",它講述的是思想,它不僅僅展示了接口或抽象類在實際案例中的靈活應用和智慧,讓你能夠真正掌握接口或抽象類的應用,從而在原來的Java語言基礎上躍進一步,更重要的是,設計模式反復向你強調一個宗旨:要讓你的程序盡可能的可重用。關于設計模式的資料,還是向大家推薦banq的網站http://www.jdon.com/ ;,他把GOF的23種模式以通俗易懂的方式詮釋出來,純Java描述,真是經典中的經典。有時間再研究一下MVC結構(把Model-View-Control分離開的設計思想)吧,現在很流行的Structs就是它的一種實現方式,不過Structs用起來實在是很繁,我們只要學習其精髓即可,我們完全可以設計自己的MVC結構。然后你再研究一下軟件Refactoring(重整)和極限XP編程,相信你又會上一個臺階。
          做完這些,你不如整理一下你的Java代碼,把那些經典的程序和常見的應用整理出來,再精心打造一番,提高其重用性和可擴展性。你再找幾個志同道合的朋友成立一個工作室吧,你可以去承接一些項目做了,一開始可能有些困難,可是你有技術積累,又考慮周全,接下項目來可以迅速作完,相信大家以后都會來找你的,所以Money就嘩啦啦的來了。。。。。。
          當然你也可以參加一些開源項目,一方面可以提高自己,另一方面也是為中國軟件事業做貢獻嘛!開發者在互聯網上用CVS合作開發,用QQ,MSN,E-mail討論聯系,天南海北的程序員分散在各地卻同時開發同一個軟件,是不是很有意思呢?
          下面介紹兩個好的開源項目網站:
          湖北省軟件公共開發平臺http://gro.clinux.org/ ;
          共創聯盟http://cosoft.org.cn/ ;
          哇,好高興哦,我終于成為高手了!非也,非也。古人云:“識時務者為俊杰”。你知道計算機界現在的發展形勢嗎?你知道微軟的.NET藍圖和SUN ONE計劃之間的明爭暗斗嗎?你知道計算機技術將向何處發展嗎?其實從各大計算機廠商最近的動作,都可以看出來“Web服務將是下一代互聯網應用的制高點”,而微軟的.NET藍圖和SUN ONE計劃的斗爭焦點,也就是Web服務。Web服務就是一個嶄新的分布式計算模型,它是一系列標準的綜合(XML,SOAP,UDDI,WSDL和WSFL等)。它使得不同語言編寫的軟件能夠輕易的集成起來,使網絡資源和Web站點變成一種服務而不是混亂的垃圾場。不遠的將來,我們就可以在家里點擊一下鼠標,就可以完成出門旅游的全部準備工作,包括定飛機票,定旅游線路,定好房間等。請注意,這所有的一切都是Web站點間自動完成的,再也不用象現在一樣,表面上是電子商務,實際上很多環節都是人工操作。也許你會覺得這是天方夜談,不過就近的說,你也很有可能承接一個項目,要集成兩個企業的ERP系統。很有可能上游企業的系統是用Dephi編的,而下游企業的系統是用Java編的。你說你是Java高手,大家都看者你怎么做呢。所以啊,你還得學習新技術,如Web服務,而且你Dephi也要懂一點吧(Dephi6現在已經提供Web服務的控件了)。 你編的Java系統,可能要和.NET集成,所以你.NET要懂一點吧?到最后,你可能發現你已經成為Java高手了,但很多時間卻在搞別的技術。太極張三豐里說,最厲害的招式就是沒有招式,可能就是這個道理吧!
          因為剛剛興起,所以網上Web服務的資料不是很多,我還是給大家推薦幾個網站吧:
          中國UDDI技術聯盟http://www.uddi-china.org/ ;
          CSDN的柴曉路專欄http://www.csdn.net/develop/author/ColumnAuthor/fennivel/ ;(注:柴曉路也是互聯網上一個有名的人物,他發表過很多關于Web服務的文章,還出了一書,應該稱的上是中國Web服務技術的先行者)
          IBM的開發者網絡的XML&Web Service專欄:
          http://www-900.ibm.com/developerWorks/cn/xml/index.shtml?csdn IBM可是Web服務的力推者
          嗚…你費勁千心萬苦,總算成為Java高手了,怎叫人不由喜極而泣呢!是啊,真不容易,真不簡單,真叫人感動啊!那么打個電話告訴我吧,什么?我的電話號碼是多少?昏到,你打電話問不就知道了嗎,真是的……

          posted @ 2006-11-28 16:45 RedWolf 閱讀(592) | 評論 (1)編輯 收藏

          僅列出標題
          共2頁: 上一頁 1 2 
          主站蜘蛛池模板: 昌平区| 施秉县| 澎湖县| 太康县| 游戏| 崇州市| 辽阳市| 沈丘县| 嘉禾县| 亚东县| 兴文县| 武胜县| 深圳市| 苍溪县| 嘉禾县| 綦江县| 乌兰浩特市| 兴隆县| 达日县| 沁阳市| 如皋市| 枣强县| 会泽县| 德化县| 哈巴河县| 夏河县| 孝昌县| 江城| 西城区| 大余县| 喀喇| 临桂县| 元朗区| 章丘市| 牟定县| 元谋县| 喜德县| 南充市| 阳朔县| 永寿县| 高邑县|