Web下的整體測試

隨著Internet的日益普及,現在基于B/S結構的大型應用越來越多,可如何對這些應用進行測試成為日益迫切的問題。有許多測試人員來信問我B/S的測試如何做,由于工作較繁忙,對大家提出的問題也是頭痛醫頭腳痛醫腳,沒有對WEB的測試過程做一個整體的概述。希望通過本篇能夠讓大家了解大型Web應用是如何來進行測試的。?
B/S下的功能測試比較簡單,關鍵是如何做好性能測試。目前大多數的測試人員認為只要跑一些測試工具證明我的產品是可以達到性能的就ok了,為了證明而去測試是沒有任何價值的,關鍵是要發現產品性能上的缺陷,定位問題,解決問題,這才是測試要做的。?
首先我們從兩個方面分析如何進行WEB測試,從技術實現上來講一般的B/S結構,無論是.NET還是J2EE,都是多層構架,有界面層,業務邏輯層,數據層。而從測試的流程上來說,首先是發現問題,分析問題,定位問題,再由開發人員解決問題。那么B/S的結構的測試如何來做??
如何發現問題是我首先要介紹的,在做WEB測試之前你需要一些資料,比如產品功能說明書,性能需求說明書,不一定很完善,但一定要有,明確測試目標,這是基本的常識,可是我往往看到的是已經開始動手測了,但還不知自己的系統要達到的性能指標是什么。這里我簡單講一下測試的性能指標:?
l?通用指標(指Web應用服務器、數據庫服務器必需測試項):?
*?ProcessorTime:?指服務器CPU占用率,一般?平均達到70%時,服務就接近飽和;?
*?Memory?Available?Mbyte?:?可用內存數,如果測試時發現內存有變化情況也要注意,如果是內存泄露則比較嚴重;?
*?Physicsdisk?Time?:?物理磁盤讀寫時間情況;?
l?Web服務器指標:?
*?Avg?Rps:?平均每秒鐘響應次數=總請求時間?/?秒數;?
*?Avg?time?to?last?byte?per?terstion?(mstes):平均每秒業務角本的迭代次數?,有人會把這兩者混淆;?
*?Successful?Rounds:成功的請求;?
*?Failed?Rounds?:失敗的請求;?
*?Successful?Hits?:成功的點擊次數;?
*?Failed?Hits?:失敗的點擊次數;?
*?Hits?Per?Second?:每秒點擊次數;?
*?Successful?Hits?Per?Second?:每秒成功的點擊次數;?
*?Failed?Hits?Per?Second?:每秒失敗的點擊次數;?
*?Attempted?Connections?:嘗試鏈接數;?
l?數據庫服務器指標:?
*?User?0?Connections?:用戶連接數,也就是數據庫的連接數量;?
*?Number?of?deadlocks:數據庫死鎖;?
*?Butter?Cache?hit?:數據庫Cache的命中情況;?
上面的指標只是一些通用的指標,起到拋磚引玉的作用,對于不同的應用你還必需作相應的調整,比如程序使用的是.NET技術的,則必需加入一些針對性的測試指標。對于這些指標的詳細了解,你可以參考Windows?下面的?SystemMonitor的幫助與LoadRunner、ACT的幫助。對于發現問題,指標的設置非常重要,它會幫你定性的發現一些錯誤。對于定性的壓力測試我就不做過多的分析,工具很多,流行的主要有LoadRunner,ACT,WAS,WebLoad,各個工具有它的使用范圍,其中我各個認為LoadRunner?最全面,它提供了多種協議的支持,對復雜的壓力測試都可以勝任,WAS與ACT則對 微軟的技術支持的比較好,其中WAS支持分布式機群測試,ACT則是與.NET集成比較好,支持ViewState?(.NET?下控件緩存的支持)?的測試,當時我用時,其它測試工具還不支持,現在應該支持了吧,呵呵。在這一階段測試你要不斷的跟據系數的測試目標進行變化,一開始由于系統過于龐大,所以我們要分成若干個子系統,各個子系統的性能目標必需明確,主要是并發指標定一個閥值,同時設定一些與系統相關的測試參數,應用服務器,數據庫服務器都要有,對達不到閥值的與一些通用參數有問題的子系統進行深入分析。比如它的并發達不到你的要求,證明子系統性能有問題,或是數據庫用戶連接過高,程序沒有釋放用戶連接等等。這個我們要對子系統進行詳細測試,由于B/S?結構下,圖片的請求對性能的影響較大,所以我們對子系統測試時要分兩個部分進行,一、非程序部分,即圖片等等;二、應用程序本身。通過事務或函數的分離,可以把這兩塊實現單獨的測試,具體做法參考各個工具的手冊,我這里就不做說明。對子系統的測試參數的設置要求則更高,它有助你后面精確的定位問題,比如對異常,死鎖,網絡流量等等前面沒有注意到的情況的增加,同時你要注意增加測試參數的收集對系統的性能影響比較大,所以一般不要超過10個,剛剛介紹的整體的性能測試指標也不要增加很多,這樣影響會小一點。最后在這一階段要說明的是數據庫的數據量會很大程度的影響性能,所以要根據前面的性能需求說明書向數據庫中模擬相應的數據量,來進行測試,這樣才有更高的可信度。?
上面所說的是對問題的發現,下面就是分析問題原因,這一步的要求比較高,一般由測試人員與程序員配合完成,當然如果你有相當的開發經驗,再做這方面的測試,就更為難得。下面我們說說如何精確定位問題,出現問題的可能性可能有很多種,大致分以下幾種,一、性能達不到目標;二、性能達到目標,但有一些其它的問題,比如異常,死鎖,緩存命中過低,網絡流量較大;三、服務器穩定性的問題,比如內存泄漏……。要發現這些問題起馬的要求要有一款使用的比較稱心的性能分析與優化工具,比如 微軟的.NET下就有自己開發的工具,對Borland的Java開發工具中也有類似的工具,但我個人認為更好的工具是Rose下的Purify與Quantify,主要是他對.net?與java?,C++都有支持,而且分析效果特別專業,我們先了解一下Rational?Purify,?Rational?Purify?能自動找出Visual?C/C++?和Java?代碼中與內存有關的錯誤,確保整個應用程序的質量和可靠性。在查找典型的Visual?C/C++?程序中的傳統內存訪問錯誤,以及Java,C#?代碼中與垃圾內存收集相關的錯誤方面;Rational?Quantity?則是一款針對函數級的性能分析利器,使用它你可以從圖形化的界面中得到函數調用的時間,百分比與次數,以及子函數所占時間,使你可以更快的定位性能瓶頸。?
我們先說性能優化與異常的處理,性能優化有一個原則,即用時間比例最大的進行優化,效果才最明顯,比如有個函數它的執行時間為30秒,如果你優化了一百倍則執行時間為0.3秒,提升了29.7秒,而如果它的執行時間為0.3秒,優化后為0.003秒,實際提升了0.297秒,提升的效果并不明顯,而且寫過程序的人都知道,后者性能優化的代價更大。在性能優化的過程中,一般是先數據庫,后程序,因為數據庫的優化不需要修改程序,修改的風險很小。但如何才能確定是數據庫的問題,這就需要技巧,在使用Quantity時,你一路分析下去,大多數最終會發現,是數據庫查詢函數占用時間比較大,比如什么,SqlCmd.ExecuteNoQuery等等數據庫執行函數,這時你就需要分析數據庫,呵呵。數據庫的分析原則是先索引,后存儲過程,最后表結構視圖的優化,索引的優化是最簡單也是通常最有效的方法,如果合理的使用會帶來意想不到不到的效果。在這里我要給大家簡單的介紹一下我的最愛,SQLProfile,SQL查詢分析器,Precise,SQLProfile是一個SQL語句跟蹤器,可以跟蹤程序流程使用的SQL語句與存儲過程,結合查詢分析器對SQL的分析,可以對索引的優化做出很好的判斷,但索引也不是萬能的,在增刪改較多的表,索引過多會引起這些操作的性能下降,所以判斷還是需要一定的經驗。同時針對用戶使用頻度最高的SQL進行優化也是最行之有效的,這時我則需要Precise,它可以觀測某一個較長時間內的SQL語句的執行情況。數據庫優化的潛能挖光后,如果還是達不到性能要求或是還有問題,則要從程序來進行優化,這是程序員做的事,測試人員要做的,就是告訴他們,哪個函數執行過多引起了性能下降,比如異常過多,某個循環過多,或是DCOM調用過多等等,但說服程序員也是一件不容易的事,你要在這一階段做的出色一定要有幾年的編程經驗,并且要讓程序員感到聽你的性能會有提升,這是一件很不容易的事情哦。?
內存的分析,一般是一個長期分析的過程,要做好不容易,首先要有長期奮戰的準備,其次內存泄漏的分析最好是放在單元測試之中同步進行,而不是要等到最后再去發現問題,當然出了問題也只好面對,一般這類問題都是在服務器運行了很久才暴露出來,一旦發現問題后,則需要定位問題,分析的原則采用子系統相互獨立運行,找到最小問題的系統集,或是借助內存分析工具觀察內存對象情況,初步定位問題,再用Purify進行運行時分析,通常C++?內存問題比較多,Java與.NET比較少,一般由GC不合理引起。C++的內存錯誤就比較多了,主要常見的有:?
1、?Array?Bounds?Read?(ABR)?:數組越界讀?
2、?Array?Bounds?Write?(ABW):數組越界寫?
3、?Beyond?stack?Read?(BSR):堆棧越界讀?
4、?Free?Memory?Read(FMR):空閑內存讀?
5、?Invalid?pointer?Read(IPR):非法指針閱讀?
6、?Null?Pointer?Read(NPR):?空指針閱讀?
7、?Uninitialized?Memory?Read(UMR):未初始化內存讀寫?
8、?Memory?Leak:內存泄漏?
注:如果需要更多的信息,可以參見Purify的幫助信息。?
順便提一句,為什么我要說單元測試時做這個比較好,由于單元測試針對的是單一功能,這時結合單元測試案例做內存分析會更快的定位問題,同時由于問題較早的發現,則后期的風險則會減少,當然如果結合代碼覆蓋工具PureCoverage?來做就更完美了,呵呵。?
完成此文,已經是凌晨了,也算是回答了前一段時間提出要進行B/S結構測試又無從下手的朋友的要求,在這里要向大家表達一下歉意,由于工作比較忙,難免對大家的來信有所疏漏,請大家原諒。此文的要求的讀者,對測試工具有所了解,希望進入更深測試的同仁,希望我的文章給大家帶來幫助,同時也借此文表達一些曾經幫助過我的朋友與同事。?
注:本篇只是對B/S應用的測試過程作一個整體的描述,對某一個階段使用的工具只是作大概的介紹,你也可使用你比較熟悉的工具達到相同的目標。?

?

?

?

轉載于:https://www.cnblogs.com/ami/archive/2006/07/19/454569.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/277192.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277192.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277192.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

用計算機算算術平方根順序是ON然后是什么,第2課時用計算器求一個正數的算術平方根.ppt...

1.比較下列各組數的大小:(1) 與(2) 與 8依次按鍵顯示:1.732 050 808例3 小麗想用一塊面積為400 cm2的正方形紙片,沿著邊的方向剪出一塊面積為300 cm2的長方形紙片,使它的長寬之比為3:2.她不知能否裁得出來,…

MySQL 命令

版權聲明:本文首發 http://asing1elife.com ,轉載請注明出處。 https://blog.csdn.net/asing1elife/article/details/82892834 MySQL 一些常見命令 更多精彩 更多技術博客,請移步 asing1elife’s blog 查看版本號 mysql -V重啟/啟動/停止 mys…

Bookshelf 2 簡單DFS

鏈接:https://ac.nowcoder.com/acm/contest/993/C來源:牛客網 題目描述 Farmer John recently bought another bookshelf for the cow library, but the shelf is getting filled up quite quickly, and now the only available space is at the top.FJ…

一步一步SharePoint 2007之五:向網站中添加一個子網站

一步一步SharePoint 2007之五:向網站中添加一個子網站摘要感受完看到成果的激動,感受完鄰家女孩的漂亮、可愛和端莊,不要停止,來,讓我們一起來動手打造心目中的完美女神吧!本篇文章將介紹如何向一個網站中添…

微型計算機系統分為哪幾個層次,計算機系統分為哪4層?

滿意答案al053192014.06.23采納率:49% 等級:12已幫助:7516人第一層:物理層(PhysicalLayer),規定通信設備的機械的、電氣的、功能的和過程的特性,用以建立、維護和拆除物理鏈路連接。具體地講&#xff0c…

ASP.NET Core 基礎教程 - ASP.NET Core 基礎教程 - 簡單教程,簡單編程

原文:ASP.NET Core 基礎教程 - ASP.NET Core 基礎教程 - 簡單教程,簡單編程 ASP.NET Core 是對 ASP.NET 有重大意義的一次重新設計。本章節我們將介紹 ASP.NET Core 中的一些新的概念和它們是如何幫助我們開發現代化的 Web 應用程序 盡管 ASP.NET Core 是跨平臺的&a…

參數初始化

通過以下形式進行參數初始化 self.fc nn.Linear(n_head * d_v, d_model) nn.init.xavier_normal_(self.fc.weight) 轉載于:https://www.cnblogs.com/yeran/p/11197047.html

使用input type=file 上傳文件時需注意

在asp.net的中使用<input typefile />控件上傳文件對文件的大小有限制,默認情況下大概在4m左右,如果上傳再大的文件時就會出頁面無法顯示的錯誤.修改web.config文件中的參數可以設置該控件上傳文件的大小,web.config中配置如下:在<system.web>節點下增加"<…

html模板 循環里if,django模板里循環變量table里想要兩個一行如何控制

2016-8-3 周三做項目時遇到的問題&#xff1a;每個div由循環變量輸出&#xff1a;{% for key,value in formextenddetail %}{{ key }}{{ value }}{% endfor %}但是我想兩個div一行&#xff0c;使用...這種樣子因為我負責的是前端&#xff0c;views這些不是很熟悉&#xff0c;想…

ASP.NET Core Windows 環境配置 - ASP.NET Core 基礎教程 - 簡單教程,簡單編程

原文:ASP.NET Core Windows 環境配置 - ASP.NET Core 基礎教程 - 簡單教程&#xff0c;簡單編程 ASP.NET Core Windows 環境配置 ASP.NET Core 是對 ASP.NET 有重大意義的一次重新設計。本章節我們將介紹 ASP.NET Core 中的一些新的概念和它們是如何幫助我們開發現代化的 Web 應…

Prim算法求最小生成樹

給定一個n個點m條邊的無向圖&#xff0c;圖中可能存在重邊和自環&#xff0c;邊權可能為負數。 求最小生成樹的樹邊權重之和&#xff0c;如果最小生成樹不存在則輸出impossible。 給定一張邊帶權的無向圖G(V, E)&#xff0c;其中V表示圖中點的集合&#xff0c;E表示圖中邊的集合…

用installshield打包的asp.net程序

現在需要打包一個asp.net程序&#xff0c;具體要求如下&#xff1a;1、動態建立web虛擬目錄或web站點&#xff0c;并保存至web.config文件相關字段中。2、動態建立ftp目錄&#xff0c;并保存至web.config文件相關字段中。3、動態建立數據庫聯接類型sql或oracle&#xff0c;對sq…

合肥工業大學計算機學院王院長,王青山(合肥工業大學教授)_百度百科

王青山(合肥工業大學教授)語音編輯鎖定討論上傳視頻本詞條缺少概述圖&#xff0c;補充相關內容使詞條更完整&#xff0c;還能快速升級&#xff0c;趕緊來編輯吧&#xff01;王青山&#xff0c;中國漢族人&#xff0c;合肥工業大學教授&#xff0c;現任中國計算機學會、ACM、IEE…

go 中gcc 編譯問題(gcc.exe fatal error no input files compilation terminated)

2019獨角獸企業重金招聘Python工程師標準>>> 問題背景 在windows 中編譯 go 的pipe時由于pipe依賴sqlite&#xff0c;需要通過cgo進行編譯。出現如下異常 gcc.exe fatal error no input files compilation terminated 問題分析 由于 windows中缺少c 的編譯環境 解決…

35歲以前把下面十件事做好

35歲是青春的后期&#xff0c;35歲以后是收獲的季節&#xff0c;如果你沒有資格說這句話&#xff0c;你將會憎恨自己。所以在35歲以前&#xff0c;在爛漫蓬勃的青春年華里&#xff0c;你最好把下面十件事做好&#xff1a; 第一&#xff0c;學會本行業所需要的一切知識并有所發展…

XCode 10 升級問題總結

一、 library not found for -lstdc.6.0.9 xcode 10 中刪除了內置 libstdc.6.0.9.tbd&#xff0c;工程中一些SDK依賴這個庫&#xff0c;需要把xcode 9.4 的libstdc.6.0.9.tbd 添加到xcode中&#xff0c;重啟xcode。 libstdc.6.0.9.tbd 的下載地址&#xff1a;libstdc.6.0.9 真機…

重心轉移

做了好些時候的題了&#xff0c;發現做題對身體的摧殘比普通的寫代碼還要重的多&#xff0c;為了我的眼睛&#xff0c;還是不要那么賣命的做ACM了&#xff0c;反正這個假期還算是比較有收獲。而且&#xff0c;在沒有指導老師的幫助下做難題&#xff0c;根本就是一條艱巨異常的路…

ArcEngine開發體驗(附許可)

ArcGIS Engine Developer Guide ArcGIS9.0開發文檔《Engine_Developers_Guide.pdf》376 &#xff0c;花了兩三天看完了。guide特點&#xff1a;1 guide里面的基礎性的東西很多&#xff0c;涉及com開發應用&#xff0c;開發語言&#xff0c;環境和ao架構介紹的內容2 介紹.net開發…

安裝mysql-connector-python-8.0.11-py3.6遇到問題

1.提示“This application requires Visual Studio 2015 Redistributable” 下載vc_redist.x86安裝即可。 下載鏈接&#xff1a;https://download.microsoft.com/download/6/D/F/6DF3FF94-F7F9-4F0B-838C-A328D1A7D0EE/vc_redist.x86.exe https://download.microsoft.com/downl…

北京科技計算機與通信工程學院,北京科技大學計算機與通信工程學院-任超

第一作者或通訊作者(*)論文> 2019年&#xff1a;[7]Chao Ren, H. Zhang*, J. Chen and C. Tellambura. "Exploiting Spectrum Access Ability for Cooperative Spectrum Harvesting". IEEE Transactions on Communications, vol. 67, no. 3, pp. 1845-1857, Mar. …