『壹』 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應用系統中,一般情況下,可能發生兩散嫌種錯誤,分別是數據一致性錯誤和輸出錯誤。南邵北大青鳥認為數據一致性錯誤主要是由於用戶提交的表單信息不正確而造成的,而輸出錯誤主要是由於網路速度或程序設計問題等引起的,針對這兩種情況,可分別進行測試。
『貳』 eclipse開發的jsp網站怎麼放在tomcat下獨立運行
要使jsp在tomcat下獨立運行,需要安裝合適的jdk和tomcat,下面主要介紹配置tomcat。
首先正確的安裝tomcat,到這里下載http://tomcat.apache.org/whichversion.html下載,安裝。完成後的目錄里碧飢面conf、common、webapps三個主要目錄;從上面的圖可以看到,這個默認畫面來戚衡自$CATALINA_HOME/webapps/ROOT/index.html。
目錄說明,webapps:主要用於web應用程序部署,就是你的應用程序放在這里;conf:主要是放置tomcat的伺服器的相關配置文件;common:主要是對容器全局變數的文件放置地方,如common/lib下就是放置一些需要全文配置的文件包。
新建目錄:webapp/myapp,把應用放在這里,新建配置文件webapp/myapp/WEB-IN/web.xml,web.xml<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPEweb-appPUBLIC "-//Sun Microsystems,Inc.//DTD Web Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd"><web-app><display-name>My Web Application<悔仔返/display-name> <!-- 顯示內容標題名 --><description>A application for test</description> <!-- 描述名 --></web-app>。新建測試文件:webapp/myapp/WEB-IN/index.jsp<html><body><center>Now time is: <%=new java.util.Date()%></center></body></html>
應用部署好以後,重新啟動tomcat。
測試,在瀏覽器url:localhost:8080/myapp/index.jsp。
上面只是簡單測試,用eclipse 開發的web項目,有比較全的項目配置。
這個是一個web項目的例子。
『叄』 常見36種WEB滲透測試漏洞描述及解決方法-文件上傳
漏洞描述:文件上傳漏洞通常由於網頁代碼中的文件上傳路徑變數過濾不嚴或webserver相關解析漏洞未修復而造成的,如果文件上傳功能實現代碼沒有嚴格限制用戶上傳的文件後綴以及文件類型,攻擊者可通過 Web 訪問的目錄上傳任意文件,包括網站後門文件,進而遠程式控制制網站伺服器。
解決方法:
在前後端對上傳文件類型限制,如後端的擴展名檢測,重命名文件,MIME類型檢測以及限制上傳文件的大小,或將上傳文件放在安全路徑下;嚴格限制和校驗上傳的文件,禁止上傳惡意代碼的文件。同時限制相關目錄的執行許可權,防範webshell攻擊;對上傳文件格式進行嚴格校驗及安全掃描,防止上傳惡意腳本文件;設置許可權限制,禁止上傳目錄的執行許可權;嚴格限制可上傳的文件類型;嚴格限制上傳的文件路徑;文件擴展名服務端白名單校驗;文件內容服務端校驗;上傳文件重命名,並隱藏上傳文件路徑。
『肆』 web性能測試工具-lighthouse&&perfomance&&pagespeed
先訪問需要評估的網站,比如 http://www..com,然後 generate report 即可。lighthouse 會運行一系列的測試審查這個頁面,然後它會把關於頁面執行的一些性能指標以報告的形式展示給你。你可以參考這份報告中的一些指標提示來提升你的網站應用。Lighthouse 能夠生成一份 JSON 或 HTML 報告,比如下圖:
Lighthouse 運行測評的過程有一套完整的生命周期,可以劃分成三個主要流程:
Collecting(收集數據): 首先是 Collecting 流程,這一步會調用內置的驅動程序(Driver) ,其作用是通過谷歌開發工具協議( Chrome DevTools Protocol) 調起瀏覽器,並創建新的 tab 請求待測評的站點,通過瀏覽器採集站點數據並將結果(稱之為 Artifacts)保存在本地臨時目錄。
Auditing(分析數據): 然後進入 Auditing 流程,讀取 Artifacts 數據,根據內置的評判策略逐條進行檢查並計算出各項的數字形式得分。
Report(生成報告): 最後進行 Report 流程,將評分結果按照 PWA、性能、無障礙訪問、最佳實踐等緯度進行劃分,以 JSON、HTML 等格式輸出。
如下圖:
使用 Lighthouse 對網站進行測評後,我們會得到一份評分報告,它包含了性能(Performance),訪問無障礙(Accessibility),最佳實踐(Best Practice),搜索引擎優化(SEO),PWA(Progressive Web App)五個部分:
性能評分的分值區間是0到100,如果出現0分,通常是在運行 Lighthouse 時發生了錯誤,滿分100分代表了網站已經達到了98分位值的數據,而50分則是75分位值的數據。
影響評分的性能指標:性能測試結果會分成 Metrics,Diagnostic,Opportunities 三部分,但只有 Metrics 部分的指標項會對分數產生直接影響。
Lighthouse 會衡量以下 Metrics 性能指標項:
首次內容繪制(First Contentful Paint)。即瀏覽器首次將任意內容(如文字、圖像、canvas 等)繪制到屏幕上的時間點。
首次有效繪制(First Meaningful Paint)。衡量了用戶感知頁面的主要內容(primary content)可見的時間。對於不同的站點,首要內容是不同的,例如:對於博客文章,標題及首屏文字是首要內容,而對於購物網站來說,圖片也會變得很重要。
首次 CPU 空閑(First CPU Idle)。即頁面首次能夠對輸入做出反應的時間點,其出現時機往往在首次有效繪制完成之後。該指標目前仍處於實驗階段。
可交互時間(Time to Interactive)。指的是所有的頁面內容都已經成功載入,且能夠快速地對用戶的操作做出反應的時間點。該指標目前仍處於實驗階段。
速度指標(Speed Index)。衡量了首屏可見內容繪制在屏幕上的速度。在首次載入頁面的過程中盡量展現更多的內容,往往能給用戶帶來更好的體驗,所以速度指標的值約小越好。
輸入延遲估值(Estimated Input Latency)。這個指標衡量了頁面對用戶輸入行為的反應速度,其基準值應低於 50ms。
Metrics 部分的指標項會直接影響分數,可以作為我們的主要參考點。
另外的兩部分中, Opportunities 指的是優化機會,它提供了詳細的建議和文檔,來解釋低分的原因,幫助我們具體進行實現和改進。 Diagnostics 指的是現在存在的問題,為進一步改善性能的實驗和調整給出了指導。這兩者不會納入分數的計算。
每一項性能指標對評分的貢獻都有其計算邏輯,Lighthouse 會將原始的性能值映射成為 0-100 之間的數字。
例如,FMP(First Meaningful Paint)的原始值是從頁面初始化開始到主要內容渲染成功的耗時,根據真實站點的數據,頂級性能的站點的 FMP 值約為 1220ms,這個值會被映射成 Lighthouse 的 99 分。
針對不同的評分,Lighthouse 用了不同的顏色進行標注,分值區間和顏色的對應關系如下:
0 - 49(慢):紅色
50 - 89(平均值): 橙色
90 - 100(快): 綠色
各個指標對性能評分的貢獻並不相同,權重較大的指標,對性能評分的影響更大一些。各指標權重分配情況可參考: https://docs.google.com/spreadsheets/d//edit#gid=0
訪問無障礙評分的分值由相關指標的加權平均值計算而來。可以在 評分詳情 查閱每項指標的具體權重。同理,較大權重的指標項對分數的影響較大。
無障礙性的每個指標項測試結果為pass或者fail,與性能指標項的計算方式不同,當頁面只是部分通過某項指標時,頁面的這項指標將不會得分。例如,如果頁面中的一些元素有屏幕閱讀器友好的命名,而其他的元素沒有,那麼這個頁面的 screenreader-friendly-names 指標項得分為0。
最佳實踐評分的分數區間為0-100。影響這項評分的指標項的權重都是相同的。
比如:推薦使用 https,跨域的跳轉鏈接需要使用 rel 標識,不能使用廢棄的 API等等。
比如:圖片元素使用 alt 屬性等等提高搜索引擎搜索排名,便於搜索引擎能找到你這個網站。
Lighthouse 使用 PWA 基準檢查項列表(Baseline PWA Checklist)進行測評,測評結果將這些指標項分成了四個類別,共包含12個自動測試項和3個手動測試項,其中各個自動測試項的評分權重是相同的。PWA 的評測指標對我們來說非常重要,我們可以從這四個類別詳細了解一下基準指標項。
快速可靠:
頁面在移動網路條件下能夠快速載入。
在離線條件下頁面能夠返回狀態碼200。這里我們可以通過 Service Worker 來實現離線可用。
start_url 在離線條件下返回狀態碼200。start_url 是前面章節我們提到過的 manifest.json 中的一個屬性,它指定了用戶打開該 PWA 時載入的 URL。
可安裝:
始終使用 HTTPS。
注冊 Service Worker 來緩存頁面以及 start_url。
使用 manifest 文件來實現安裝 PWA 的需求,瀏覽器能夠主動通知用戶將應用添加到桌面,增加留存率。
PWA 優化:
將 HTTP 流量重定向到 HTTPS。
配置自定義啟動畫面。
設置地址欄主題顏色。
頁面內容針對視口大小自適應,對移動用戶的展示更友好。
使用了
當 JavaScript 文件不可用時,提供降級措施,頁面能顯示基本內容而不出現白屏。
手動測試項:
站點跨瀏覽器可用,如主流瀏覽器 Chrome, Edge, Firefox 及 Safari 等。
頁面間切換流暢,即使在較差的網路環境下,切換動畫也應該簡潔順暢,這是提高用戶感知體驗的關鍵。
保證每個頁面都有獨一無二的 URL,能夠在新的瀏覽器窗口打開,且方便在社交媒體上進行分享。
安裝成功後,瀏覽器右上角顯示:
F12後,點擊pagespeed->start analyzing
參考:https://www.cnblogs.com/xiaohuochai/p/9182710.html
『伍』 WEB標準的標准測試
頁面校驗地址 http://validator.w3.org/
CSS文檔校驗 http://jigsaw.w3.org/css-validator/
XHTML 1.0 標准規格 : The Extensible HyperText Markup Language
W3C標准測試網址 http://validator.w3.org/
測試時一定要有文件類別宣告還有指定文件編碼
<meta http-equiv=Content-Type content=text/html; charset=gb2312 />
才能順利進行測試動作,開始打造一個標準的網站! 1.XHTML 1.0文件類別宣告的正確寫法 (不可小寫)
過度標准(外語全稱:Transitional)
公共標識符 稱為:「-//W3C//DTD XHTML 1.0 Transitional//EN」。
<!DOCTYPE html
PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN
>
框架標准(外語全稱:Frameset)
公共標識符 稱為:「-//W3C//DTD XHTML 1.0 Frameset//EN」。
<!DOCTYPE html
PUBLIC -//W3C//DTD XHTML 1.0 Frameset//EN
>
嚴格標准(外語全稱:Strict) 包含以上須注意的問題,還有其他更嚴格的標准
公共標識符 稱為:「-//W3C//DTD XHTML 1.0 Strict//EN」。
<!DOCTYPE html
PUBLIC -//W3C//DTD XHTML 1.0 Strict//EN
>
2.頭文件問題
所有的網頁頭文件都一律都改為標准形式,寫法如下: <head><metahttp-equiv=content-typecontent=text/html;charset=gb2312/><metahttp-equiv=content-languagecontent=zh-cn/><metaname=keywordscontent=.../><metaname=descriptioncontent=.../><title>...</title></head>3.不允許使用target=_blank
在HTML4.01可以使用target=_blank,但XHTML1.0是不被允許的.
我使用了一個HTML4.0的新屬性:rel,這個屬性用來說明鏈接和包含此鏈接頁面的關系,以及鏈接打開的目標。
原來這樣寫的代碼: 打開一個新窗口
現在要寫成這樣:打開一個新窗口
這是符合strict標準的方法。當然還必須配合一個javascript才有效。
javascript完整的代碼JS如下: function外部鏈接()//萬國碼unicodejavascript{if(!document.getElementsByTagName)return;varanchors=document.getElementsByTagName(a);for(vari=0;i<anchors.length;i++){varanchor=anchors;if(anchor.getAttribute(href)&&anchor.getAttribute(rel)==external)anchor.target=_blank;}}window.onload=外部鏈接;你可以把它保存成一個.js文件(比如外部鏈接.js),然後通過外部聯接方法調用:
<script type=text/javascript src=外部鏈接.js></script>
4.XHTML 1.0要求所有的標簽必須關閉
所有沒有成對的空標簽必須以 />結尾
和這就是成對
錯誤
<hr>
正確
<hr />
錯誤 <input type=text name=name>
正確 <input type=text name=name />
錯誤 <meta ...>
正確 <meta ... />
錯誤 <link rel=stylesheet type=text/css href=style.css>
正確 <link rel=stylesheet type=text/css href=style.css />
錯誤 <img src=bg.gif border=0 alt=說明文字>
正確 <img src=bg.gif border=0 alt=說明文字 />
5.所有標簽元素名稱都使用小寫
錯誤 <HTML> <TITLE> <HEAD> <BODY>
正確 <html> <title> <head> <body>
錯誤 <IMG SRC=BG.GIF BORDER=0 ALT=說明文字>
正確 <img src=bg.gif border=0 alt=說明文字 />
錯誤 <UL><LI></LI></UL>
正確 <ul><li></li></ul>
以上只是舉例,是所有標簽元素名稱都必須是小寫
6.同一個id選擇器不可重復使用
一個網頁中id=xx同一個選擇器不能重復使用,若需要重復請用class=xx
7.標簽必須是一對
[font][/font]
8.正確的標簽順序
錯誤文字
正確文字
9.JavaScript寫法
Javascript我們通常會寫為
錯誤 <script language=javascript>
W3C標准必須為程式指定類型type=text/javascript,所以要寫為
正確 <script type=text/javascript>
或者 <script language=javascript type=text/javascript>
載入外部.js獨立檔案的寫法
正確 <script type=text/javascript src=script.js></script>
10.絕對不可省略雙引號或單引號
錯誤 style=font-size:9pt
正確 style=font-size:9pt
錯誤 <img src=bg.gif width=140 height=30 alt=text />
正確 <img src=bg.gif width=140 height=30 alt=text />
錯誤 text
正確 text
11.圖片標簽加上文字說明alt=說明
錯誤 <img src=bg.gif height=50 border=0 />
正確 <img src=bg.gif height=50 border=0 alt=說明文字 />
12.背景音樂不允許使用 bgsound 標簽
我只好用JavaScript解決這個問題。javascript完整的代碼如下:
<!-- Begin
var MSIE=navigator.userAgent.indexOf(MSIE);
var NETS=navigator.userAgent.indexOf(Netscape);
var OPER=navigator.userAgent.indexOf(Opera);
if((MSIE>-1) || (OPER>-1)) {
document.write(<BGSOUND SRC=背景音樂地址 LOOP=INFINITE>);
} else {
document.write(<EMBED SRC=背景音樂地址 AUTOSTART=TRUE );
document.write(HIDDEN=true VOLUME=100 LOOP=TRUE>);
}
// end -->
你可以把它保存成一個.js文件(比如bjmusic.js),然後通過外部聯接方法調用:
<script type=text/javascript src=bjmusic.js></script>
13. 標簽的爭議
<embed>是Netscape的私有標簽,W3C 從HTML3.2 HTML 4.01 到 XHTML 1.0 中都沒有這個標簽,所以使用的頁面是不能通過標准測試。
W3C推薦使用 <object> 標簽,用<object>插入flash影片的代碼可以寫為:
<object type=application/x-shockwave-flash data=index.swf width=400 height=200>
</object>
但這樣的寫法可能IE5/IE6 Win瀏覽器版本會出現問題。
標簽因為廣大的受到運用,不再標准范圍引起很大的爭議,想要解決這個問題,只能等IE瀏覽器對<object>有更好的支持或者W3C願意收錄標簽。
14. 不允許使用框架標簽<IFRAME>
這次又要用JavaScript解決問題了。javascript完整的代碼如下:
function ifr(url,w,h){document.write('<iframe id=ifr name=ifr width='+w+' height='+h+' border=0 frameborder=0 scrolling=no src='+url+'></iframe>');}
把它保存成一個.js文件(比如ifr.js),然後通過外部聯接方法調用:
<script type=text/javascript src=ifr.js></script>
在你需要插入框架的地方寫以下代碼即可:
<script type=text/javascript>ifr('需插入的網頁地址','567','485');</script>
函數ifr()使用說明:ifr('這里寫地址','這里寫寬度','這里寫長度',)
15.google廣告問題
google廣告的代碼是不符合W3C標準的,我只好又把它轉成JS調用,但GOOGLE政策里是寫著不允許修改代碼的,
關於這點我正在寫信給GOOGLE詢問中,應該很快會有答案。
我的JS文件(google.js)代碼如下:
document.writeln(<script type= ext/javascript><!--);
document.writeln(google_ad_client = pub-0538745384335317;);
document.writeln(google_ad_width = 125;);
document.writeln(google_ad_height = 125;);
document.writeln(google_ad_format = 125x125_as;);
document.writeln(google_ad_type = ext_image;);
document.writeln(//2007-06-29: www.ybj86.cn);
document.writeln(google_ad_channel = 4751988107;);
document.writeln(google_color_border = 1a1a1a;);
document.writeln(google_color_bg = 1a1a1a;);
document.writeln(google_color_link = d0eb6a;);
document.writeln(google_color_text = ffffff;);
document.writeln(google_color_url = 8ad459;);
document.writeln(google_ui_features =
c:6;);
document.writeln(//-->);
document.writeln(</script>);
document.writeln(<script type= ext/javascript);
document.writeln( src=http://pagead2.googlesyndication.com/pagead/show_ads.js>);
document.writeln(</script>)
各位朋友可以按照自己的情況修改,網上也有把HTML代碼轉為JS代碼的地方。
最後在需要掛廣告的地方放入代碼 <script type=text/javascript src=google.js></script>
其他需注意的地方:
16.註解文字不可包含--符號
錯誤 <!-- OEC--SPACE -->
正確 <!-- OECSPACE -->
17.正確使用CSS樣式表
一定要放在<head></head>之間
<link rel=stylesheet type=text/css href=style.css />
<style type=text/css>
<!--
body{font-size:9pt;}
-->
</style>
錯誤 <style>
正確 <style type=text/css>
18.使用表格常犯的錯誤
我們在做表格通常會指定寬與高,例如: 內容 這樣做是沒有辦法通過,W3C建議使用CSS來控制標簽元素的高度
.table{
height:55px;
} TEXT 但是若使用太多表格,在CSS一一指定不同高,也不是好方法
其實很簡單將高度height屬性指定在儲存格就可以了通過測試 TEXT 但這不是w3c希望的標准,建議能夠使用div代替不必要的table
19.非標簽一部分的符號以編碼表示
表單內包含以下符號也必須用編碼表示
< 以 < 表示
> 以 > 表示
& 以 & 表示
程式中的連結 & 也要改用 &
錯誤 <a href=foo.cgi?chapter=1&ion=2>
正確 <a href=foo.cgi?chapter=1&ion=2>
20.所有屬性都必須有值
XHTML1.0規定所有屬性都必須有值,若沒有就必須重復屬性作為值
錯誤 <input type=radio value=v1 checked name=s1 />
正確 <input type=radio value=v1 checked=checked name=s1 />
錯誤 <option selected>S1</option>
正確 <option selected=selected>S1</option>
錯誤
正確