? 功能測試通常從以下幾個角度來對軟件測試進(jìn)行評價:
- 軟件是否正確實(shí)現(xiàn)了需求規(guī)格說明書中明確定義的需求。
- 軟件是否遺漏了需求規(guī)格說明書中明確定義的需求。
- 軟件是否將需求規(guī)格說明書中未定義的需求實(shí)現(xiàn)。
- 軟件是否對異常情況進(jìn)行了處理,容錯性好。
- 軟件是否滿足用戶的使用需求。
- 軟件是否滿足用戶的隱性需求。
? 在大多數(shù)情況下,功能測試主要關(guān)注于業(yè)務(wù)邏輯層面。而我們?yōu)榇蠹医榻B的功能測試,則忽略具體系統(tǒng)的業(yè)務(wù)邏輯,主要關(guān)注于WEB 系統(tǒng)通用的一些測試點(diǎn)。
- 表單測試
- 鏈接測試
- Cookie驗(yàn)證
表單測試
什么是表單?
HTML 表單用于搜集不同類型的用戶輸入。通長把文本框、下拉框、標(biāo)簽、按鈕控件放在一個表單中,用于接收用戶的輸入。網(wǎng)站頁面通過提交表單把用戶的輸入信息提交到服務(wù)器。

表單測試項(xiàng)
表單控件完整、布局合理
表單控件數(shù)據(jù)校驗(yàn)
表單控件聯(lián)動
表單數(shù)據(jù)的提交完整、正確
功能符合業(yè)務(wù)需求
表單控件顯示內(nèi)容正確,且功能正常
鏈接測試
? 原理
從待測網(wǎng)站的根目錄開始遍歷所有的網(wǎng)頁文件,對所有網(wǎng)頁文件中的超級鏈接、圖片文件、包含文件、CSS文件、頁面內(nèi)部鏈接等所有鏈接進(jìn)行讀取。以求最大程度的發(fā)現(xiàn)被測網(wǎng)站不完整是不存在的資源,并提交給相關(guān)人員進(jìn)行整改。
? 鏈接測試分為三個方面:
- 測試所有鏈接是否按指示的那樣確實(shí)鏈接到了該鏈接的頁面;
- 測試所鏈接的頁面是否存在;
- 保證Web 應(yīng)用系統(tǒng)上沒有孤立的頁面。所謂孤立頁面是指沒有鏈接指向該頁面,只有知道正確的URL地址才能訪問。
COOKIE測試
是Web服務(wù)器保存在用戶硬盤上的一段文本。Cookie允許一個Web站點(diǎn)在用戶的電腦上保存信息并且隨后再取回它。信息的片斷以‘名/值’對(name-value pairs)的形式儲存。
例如: C:\Users\jack\AppData\Local\Microsoft\Windows\Temporary Internet Files
1、Cookie是否正確保存用戶信息。
2、Cookie清楚不影響程序的功能
3、Cookie有效期驗(yàn)證。
##################
可用性測試
? 站點(diǎn)整體布局、風(fēng)格適宜
? 頁面導(dǎo)航直觀
? 頁面內(nèi)容準(zhǔn)確
? 使用過程是否方便、易理解
? 注意快捷方式
? 滿足區(qū)域文化
? 考慮用戶群體
容量測試
? 模擬真實(shí)數(shù)據(jù)量下的驗(yàn)證。功能測試往往構(gòu)造幾條測試數(shù)據(jù),可以完成功能
驗(yàn)證即可。但是系統(tǒng)在真正使用時,往往數(shù)據(jù)量是比較大的,另外會存在各種
情況的數(shù)據(jù),數(shù)據(jù)量大的時候可能會出現(xiàn)一些缺陷。
構(gòu)造測試數(shù)據(jù):
? A、手工構(gòu)造。
? B、編碼構(gòu)造。
? C、生產(chǎn)環(huán)境導(dǎo)出。
? D、數(shù)據(jù)生成器 Datafactory
安全性測試
? 認(rèn)證與授權(quán)
? Session和cookie
? 文件上傳漏洞
? SQL 注入
? XSS 跨站攻擊
? DDoS拒絕服務(wù)攻擊
認(rèn)證和授權(quán)
? 認(rèn)證的目的是為了認(rèn)出用戶是誰,而授權(quán)的目的是為了決定用戶能夠做什么。
? 認(rèn)證:Authentication (who am I ?)
? 認(rèn)證實(shí)際上就是一個驗(yàn)證憑證的過程。
? 多因素認(rèn)證的強(qiáng)度要高于單因素的認(rèn)證,但是在用戶體驗(yàn)上,多因素認(rèn)證或多或少會帶來一些不方便的地方。
? 密碼策略:長度、復(fù)雜度,要經(jīng)過不可逆的加密后保存在數(shù)據(jù)庫中。
? 多因素認(rèn)證:支付寶

? 登錄失敗的錯誤提示消息不應(yīng)該明確告知是用戶名不存在還是密碼錯誤,避免客戶端使用暴力破解方式。
? 必須要登錄成功后才能訪問的頁面中都需要用Session 對客戶端進(jìn)行驗(yàn)證,確認(rèn)當(dāng)前Session 已經(jīng)登錄過,否則訪問該頁面時應(yīng)該自動跳轉(zhuǎn)到登錄頁面。避免客戶端直接在URL 地址欄輸入某個地址進(jìn)行訪問,繞開登錄驗(yàn)證。
? 登錄失敗后的限制策略,比如連接5 次登錄失敗,應(yīng)該暫停用戶登錄,并將該信息發(fā)送給系統(tǒng)管理員,并告知客戶端的IP 地址。
? 登錄時應(yīng)該使用圖片驗(yàn)證碼,包括后續(xù)的一些表單提交的動作,都要使用圖片驗(yàn)證碼。避免使用工具發(fā)送數(shù)據(jù)包,目前圖片驗(yàn)證碼是被證明最可靠的防攻擊手段之一。
? 授權(quán):Authorization (what can I do?)
? 某個主體對某個對象需要實(shí)施某種操作,而系統(tǒng)對這種操作的限制就是權(quán)限控制。
? 用戶只能訪問被授權(quán)的模塊和功能。
? 用戶不能通過直接輸入U(xiǎn)RL 地址的方式進(jìn)行越權(quán)訪問。
? 權(quán)限的控制只能由系統(tǒng)管理員來維護(hù),其它用戶不能做任何修改。
? 權(quán)限控制要細(xì),最好細(xì)到增刪查改這種功能上,并且不同模塊有不同的權(quán)限。
Session和Cookie
? 對客戶端生成Session ID 時最好與IP 地址進(jìn)行綁定,避免非法客戶端獲取到別人的Session ID 后來冒充合法用戶。
? Cookie 的信息由于是保存在客戶端,是公開的,所以對于關(guān)鍵信息需要加密處理。
? Cookie 的作用域需要定義清楚,不能一味的全部定義成 / ,這樣很有可能站點(diǎn)虛擬目錄之間的Cookie 信息互相影響,產(chǎn)生沖突。除非我們的站點(diǎn)只有一個虛擬目錄。
? 一些重要的具有控制功能的數(shù)據(jù)不能保存在Cookie 當(dāng)中,而必須將它保存在Session 中,避免人為地篡改Cookie 非法獲取到系統(tǒng)控制權(quán)。
Session測試
? Session 不能過度使用,會加重服務(wù)器維護(hù)Session 的負(fù)擔(dān)。
? Session 的過期時間設(shè)置是否合理。
? Session 過期后是否客戶端是否生成新的SessionID。
文件上傳漏洞
? 對文件類型進(jìn)行過濾,比如只能允許上傳圖片或壓縮文件。不能允許用戶上傳可執(zhí)行程序或代碼
? 見案例:訪問secure中的兩個php文件
? apache\bin\php.ini disable_function=phpinfo system
? 不能單純只是以文件的后綴名來進(jìn)行類型的判斷
? 不能單純只是在客戶端使用Javascript 對文件類型進(jìn)行判斷,而應(yīng)該在服務(wù)器端進(jìn)行
? 文件上傳的大小必須有限制
SQL注入
? 注入攻擊的本質(zhì),是把用戶輸入的數(shù)據(jù)當(dāng)成代碼執(zhí)行。
? 兩個關(guān)鍵條件:
- 用戶能夠控制輸入
- 原本程序要執(zhí)行的代碼,拼接了用戶輸入的數(shù)據(jù)。
? 攻擊演示:http://localhost:8008/secure
SQL注入防治
? 不要信任用戶的輸入。對用戶的輸入進(jìn)行校驗(yàn),可以通過正則表達(dá)式,或限制長度;
? 不要使用動態(tài)拼裝SQL,可以使用參數(shù)化的SQL 或者直接使用存儲過程進(jìn)行數(shù)據(jù)查詢存取。
? 不要使用管理員權(quán)限的數(shù)據(jù)庫連接,為每個應(yīng)用使用單獨(dú)的權(quán)限有限的數(shù)據(jù)庫連接。
? 不要把機(jī)密信息直接存放,加密敏感信息。
? 應(yīng)用的異常信息應(yīng)該給出盡可能少的提示,最好使用自定義的錯誤信息對原始錯誤信息進(jìn)行包裝
? 將服務(wù)器設(shè)置修改為支持自動將單引號和雙引號進(jìn)行轉(zhuǎn)義。
? SQL 注入的檢測方法一般采取輔助軟件或網(wǎng)站平臺來檢測,軟件一般采用SQL 注入檢測工具如IBM 的AppScan 等。
跨站攻擊概述
XSS又叫CSS (Cross Site Script) ,跨站腳本攻擊。它指的是惡意攻擊者往Web頁面里插入惡意html代碼,當(dāng)用戶瀏覽該頁之時,嵌入其中Web里面的html代碼會被執(zhí)行,從而達(dá)到惡意用戶的特殊目的。
?盜取Cookie
?重定向用戶到釣魚網(wǎng)站
?操縱受害者的瀏覽器
?蠕蟲攻擊
跨站攻擊測試方法
主要看代碼里對用戶輸入的地方和變量有沒有做長度和對 ”<” ,”>”, ”;” , ”’”等字符是否做過濾。還有要注意的是對于標(biāo)簽的閉合。
舉例:在用戶的輸入域輸入“”,如果提交數(shù)據(jù)后,系統(tǒng)以普通字符串形式顯示則證明沒有此漏洞,如果顯示為一個文本輸入框,則證明存在此漏洞。
DDoS拒絕服務(wù)攻擊
? DDos攻擊原理就是模擬真實(shí)用戶來使用系統(tǒng),但是模擬的量是非常大的,這樣通過利用大量合理的請求造成資源過載,導(dǎo)致服務(wù)不可用,從而導(dǎo)致系統(tǒng)無法為真正用戶提供服務(wù)。
? DDoS攻擊,基本原理均是基于網(wǎng)絡(luò)協(xié)議來進(jìn)行的。
瀏覽器兼容性測試概述
瀏覽器是Web客戶端最核心的構(gòu)件,來自不同廠商的瀏覽器對Java,、JavaScript、 ActiveX、 plug-ins或不同的HTML規(guī)格有不同的支持。例如,ActiveX是Microsoft的產(chǎn)品,是為Internet Explorer而設(shè)計(jì)的,javascript是Netscape的產(chǎn)品,Java是Sun的產(chǎn)品等等。
主流瀏覽器:IE系列、FireFox、Chrome、Safari、360瀏覽器、騰訊TT等。Web網(wǎng)站要兼容不同廠商、不同版本的瀏覽器以及相應(yīng)的插件和設(shè)置。
瀏覽器兼容性測試內(nèi)容
?手工測試:
測試一款主流的瀏覽器,其它瀏覽器測試主要業(yè)務(wù)流程。同時可以借助一些工具提升測試效率:如IETester。
?在線測試:
目前一些瀏覽器兼容性測試廠商推出在線測試平臺,可以進(jìn)行在線測試,如: http://browsershots.org/
前端測試
互聯(lián)網(wǎng)進(jìn)入Web2.0時代,各種類似桌面軟件的Web應(yīng)用大量涌現(xiàn),網(wǎng)站的前端由此發(fā)生了翻天覆地的變化。網(wǎng)頁不再只是承載單一的文字和圖片,各種富媒體讓網(wǎng)頁的內(nèi)容更加生動,網(wǎng)頁上軟件化的交互形式為用戶提供了更好的使用體驗(yàn),這些都是基于前端技術(shù)實(shí)現(xiàn)的。
? JavaScript
? CSS
? XHtml
? Flash
Web訪問時間組成
Web前端:
網(wǎng)絡(luò)通道的建立
信息的傳輸
頁面加載
瀏覽器渲染
Web后端:
服務(wù)器業(yè)務(wù)邏輯處理
數(shù)據(jù)庫數(shù)據(jù)處理
Web 前端性能測試項(xiàng)
雅虎前端研發(fā)團(tuán)隊(duì)提出的前端32條準(zhǔn)則:

CSS內(nèi)容置頂(瀑布流)
CSS最新傳輸,可以使瀏覽器逐步加載已將下載的網(wǎng)頁內(nèi)容。這對內(nèi)容比較多的網(wǎng)頁尤其重要,用戶不用一直等待在一個白屏上,而是可以先看已經(jīng)下載的內(nèi)容,用戶體驗(yàn)較好。
JavaScript 腳本置底
JavaScript腳本對于頁面展示沒有幫助,主要用于后期用戶的輸入或異步加載處理,所以要放置到HTML代碼底部,最后傳輸。
另外就是將JavaScript或CSS中的空格和注釋全去掉,精簡這些文件
HTTP 請求次數(shù)優(yōu)化
1.盡量減少HTTP請求數(shù):
?合并文件到一個文件中,減少文件請求。
?合并多個小圖到一個大圖,再使用CSS Sprites技術(shù)進(jìn)行拆分
?報(bào)文Header使用Expires屬性,進(jìn)行圖片等內(nèi)容緩存
2.文件壓縮傳輸
Gzip通常可以減少70%網(wǎng)頁內(nèi)容的大小,包括腳本、樣式表、圖片等文件。Gzip比deflate更高效,主流服務(wù)器都有相應(yīng)的壓縮支持模塊。