應用軟件開(kāi)發(fā)完畢后,對于軟件的測試非常的關(guān)鍵。軟件測試人員的身價(jià)也一漲再漲,甚至有蓋過(guò)程序開(kāi)發(fā)人員的趨勢。從中也可以看出程序測試人員的重要性。特別是在團隊開(kāi)發(fā)項目中,選擇什么樣的測試類(lèi)型、如何相互協(xié)調等等,顯得尤其的重要。筆者這里就以一個(gè)團隊項目為例,談?wù)勅绾芜x擇合適的測試類(lèi)型。
一、普通測試。
普通測試是指現有的程序或者來(lái)自另一個(gè)源的測試。經(jīng)過(guò)一定的包裝之后,在Visual Studio中作為測試運行。通常情況下,如果采用普通測試的話(huà),有一個(gè)前提條件,即需要有比較完善的基礎架構。其測試效果的好壞,則主要去取決于在框架外部創(chuàng )建的自動(dòng)化測試工具。在使用一般測試的時(shí)候,可以包裝現有的測試程序或者第三方工具。在進(jìn)行測試時(shí),可以根據不同的測試需要選擇返回不同的結果。如有些情況下,只需要測試是否通過(guò),那么就可以讓其只返回“通過(guò)”或者“失敗”的結果即可,而不需要返回具體的原因。而有時(shí)候可能還需要具體的結果。如現在可能需要測試某個(gè)功能優(yōu)化的效果,那么就需要返回內部測試的詳細結果。
普通測試最常用的一個(gè)地方就是通過(guò)普通測試來(lái)收集代碼覆蓋率數據。如通過(guò)如下步驟就可以收集到代碼覆蓋率的相關(guān)數據。
第一步創(chuàng )建或者打開(kāi)包含普通測試的測試項目。在解決方案資源管理器中,打開(kāi)“解決方案項”文件夾。然后在這個(gè)文件夾中找到一個(gè)叫做testrunconfig的文件,并雙擊打開(kāi)。第二步在打開(kāi)的對話(huà)框中,可以看到“代碼覆蓋率”的按鈕。單擊這個(gè)按鈕,在“選擇要檢測的項目”對話(huà)框中,選擇要為其手機代碼覆蓋率數據的成品代碼二進(jìn)制文件。單擊應用進(jìn)行測試即可。在這個(gè)過(guò)程中需要注意一個(gè)問(wèn)題。有時(shí)候在“選擇要檢測的項目”對話(huà)框中可能會(huì )找不到需要測試的二進(jìn)制代碼文件。這主要是需要檢測的二進(jìn)制文件沒(méi)有與添加程序集關(guān)聯(lián)的原因。此時(shí)需要先點(diǎn)擊“添加程序集”,然后再在“選擇需要測試的程序集”對話(huà)框中,制定需要測試的二進(jìn)制文件。通常情況下第一次測試是需要這么操作。第二次測試時(shí)可以直接打開(kāi)。另外如果測試的是成品代碼,那么需要注意包含成品代碼的二進(jìn)制文件可能不是一般測試中所包含的文件。遇到這種情況的話(huà),測試人員需要指定普通測試將中間應用程序作為測試來(lái)包裝。也就是說(shuō)利用中間應用程序來(lái)運行需要測試的成品代碼。這往往能夠取得比較好的測試效果。
二、單元測試。
單元測試與普通測試有本主的區別。單元測試是編程測試中的一種重要方法。其主要通過(guò)調用帶參數類(lèi)的方法,來(lái)驗證返回值是否是用戶(hù)所期望的值。簡(jiǎn)單的說(shuō),就是測試人員輸入幾個(gè)參數,然后看應用程序得到的結果,是否與我們所期望的值類(lèi)似。顯然,對于單元測試來(lái)說(shuō),要取得比較好的效果,不在于測試的數量,而在于提供的參數是否包含了實(shí)際應用中涵蓋的范圍。簡(jiǎn)單的說(shuō),如果現在要測試一個(gè)單元格金額合計的程序,那么就需要提供金額為零、為負、為空(如果對輸入的金額沒(méi)有限制的話(huà))等值,以取得在包含這些數據時(shí)會(huì )返回什么樣的運算結果。
在Studio平臺中,程序測試人員可以選擇采用平臺自帶的單元測試模板進(jìn)行測試,也可以自己手工編寫(xiě)代碼進(jìn)行測試。在這個(gè)平臺中,提供了兩種專(zhuān)用的單元測試變體,分別為數據驅動(dòng)型單元測試和ASP.NET單元測試。前者主要是針對數據源的每一行反復調用時(shí)采用的。此時(shí)單元測試使用每一行的數據作為輸入數據。后者主要用來(lái)測試Web應用程序的代碼或者IIS進(jìn)程中所運行的代碼。
如果以上這兩個(gè)測試模板不能夠滿(mǎn)足要求的話(huà),則就需要手工添加新的單元測試代碼。手工添加測試代碼時(shí),也有兩種方法。一是直接添加,即使用單元測試在測試項目中添加一個(gè)源文件,該文件中包含一個(gè)有效的空白單元測試方法,然后再手工編寫(xiě)這個(gè)方法的代碼。二是通過(guò)向導來(lái)完成?梢赃x擇“使用測試向導”顯示創(chuàng )建單元測試對話(huà)框。測試人員可以使用這個(gè)對話(huà)框利用當前項目中的方法來(lái)生成單元測試。不過(guò)雖然使用向導來(lái)創(chuàng )建單元測試,可以節省代碼編寫(xiě)的時(shí)間。但是生成單元測試之后,仍然需要檢查并在必要的時(shí)候進(jìn)行手工的調整。
三、負載測試。
顧名思義,負載測試主要就是用來(lái)測試用戶(hù)并發(fā)訪(fǎng)問(wèn)時(shí)應用程序的性能。負載測試的原理比較簡(jiǎn)單,就是將單元測試、普通測試等方法進(jìn)行封裝,然后使用虛擬用戶(hù)同時(shí)運行應用程序,以判斷在多用戶(hù)的環(huán)境中應用程序的運行狀態(tài)。在負載測試下運行這些測試將生成比較多的測試結果,包括以表格或者圖標形式顯示的性能計數器等相關(guān)的計數器,F在大部分應用程序都是服務(wù)器/客戶(hù)機模式,用戶(hù)數量比較多,負載測試是一種必不可少的測試方法。
如現在需要使用Studio開(kāi)發(fā)一個(gè)Web應用程序。其有可能有成千上萬(wàn)個(gè)用戶(hù)。一個(gè)用戶(hù)使用的時(shí)候,性能等方面可能沒(méi)有問(wèn)題。但是如果許多用戶(hù)同時(shí)訪(fǎng)問(wèn)這個(gè)應用程序,是否會(huì )有性能上的障礙呢?在測試的時(shí)候,同時(shí)叫上千個(gè)人對應用程序進(jìn)行同時(shí)訪(fǎng)問(wèn),也不怎么現實(shí)。在實(shí)際工作中,通常是通過(guò)負載測試來(lái)完成。如可以將Web測試添加到負載測試項目中,然后可以模擬數千個(gè)用戶(hù)與某個(gè)特定的Web應用程序同時(shí)進(jìn)行交互訪(fǎng)問(wèn)。負載測試可以幫助程序開(kāi)發(fā)人員判斷在應用程序的訪(fǎng)問(wèn)達到最大量的時(shí)候,是否否出現錯誤或者性能上的瓶頸。而不是等到真的出現這種情況時(shí)再去彌補。
用戶(hù)選擇負載測試的時(shí)候,需要注意如下問(wèn)題。
一是要從少到多進(jìn)行測試。有時(shí)候用戶(hù)可能需要測試應用軟件的最大訪(fǎng)問(wèn)量是多少,此時(shí)最好從少到多進(jìn)行測試。這主要是因為如果頁(yè)面因數據庫或者CPU瓶頸而導致響應時(shí)間比較長(cháng)的話(huà),則會(huì )限制每個(gè)虛擬用戶(hù)每秒發(fā)出的請求數,從而影響到最后測試的結果。比較合理的做法是,先從少量的負載開(kāi)始,并確保緩慢增加負載時(shí)能夠保持合理的響應時(shí)間。如可以通過(guò)響應時(shí)間目標屬性為每個(gè)請求設置期望的最長(cháng)響應時(shí)間。工具加上合理的經(jīng)驗,才能夠得到比較準確的結果。
二是在負載測試時(shí),最好進(jìn)行直接測試,而不要在測試端與被測試端之間加入代理服務(wù)器。雖然在Studio提供的負載測式方法中,可以啟用自動(dòng)代理服務(wù)器檢測工具。但是,如果啟用這個(gè)工具的話(huà),可能會(huì )帶來(lái)一些誤診。因為代理服務(wù)器性能不同,會(huì )直接影響到檢測的結果。為了保持客觀(guān)公正的效果,最好不要使用代理服務(wù)器。畢竟代理服務(wù)器會(huì )在負載測式中降低性能,較少吞吐量。絕大部分情況下,在使用代理服務(wù)器之后,應用程序的性能都會(huì )有所下降。
從以上的分析中可以看出,在Studio平臺中提供了比較豐富的測試方法。但是不同的測試方法其側重點(diǎn)有所不同,都有各自的應用領(lǐng)域。作為程序測試人員,比較重要的一點(diǎn)就是如何根據企業(yè)的實(shí)際情況,選擇合適的測試方法,并在各個(gè)項目成員之間取得一致。
文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/