從開(kāi)發(fā)人員角度對(duì)軟件測(cè)試的些許理解
對(duì)軟件測(cè)試的認(rèn)識(shí):
軟件測(cè)試要求開(kāi)發(fā)人員避免測(cè)試自己開(kāi)發(fā)的程序。從心理學(xué)角度講,這是很有道理的。特別是一個(gè)相對(duì)復(fù)雜的系統(tǒng),開(kāi)發(fā)人員在剛剛開(kāi)發(fā)完成的時(shí)候,尚沉浸于對(duì)自己設(shè)計(jì)的回味之中。此時(shí)去測(cè)試的話往往會(huì)側(cè)重于程序本身的功能通過(guò)性測(cè)試。很難發(fā)現(xiàn)錯(cuò)誤。
測(cè)試是為發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的錯(cuò)誤。一個(gè)人發(fā)現(xiàn)別人身上的不足很容易,但發(fā)現(xiàn)自己身上的錯(cuò)誤便不那么容易了。所謂“吾能指人之失而不能見(jiàn)己之失,吾能指人之小失而不能見(jiàn)己之大失”者是也。一個(gè)軟件開(kāi)發(fā)人員需要養(yǎng)成一種習(xí)慣,正視自己開(kāi)發(fā)的軟件,特別是剛剛完成的軟件。要看到它的不足,知道他能做什么,不能做什么。在不能做的時(shí)候是如何處理的。對(duì)邊界條件是否做了嚴(yán)格的判斷及約束。其實(shí)大道相通,有沒(méi)有這樣的意識(shí)往往跟一個(gè)人為人處世的心態(tài),對(duì)自己的認(rèn)知有密切的聯(lián)系。一個(gè)追求完美,經(jīng)常反思自己的人往往有一種虛懷若谷的情懷,“戰(zhàn)戰(zhàn)兢兢、如履薄冰、如臨深淵”者是也。所謂的方法、套路僅僅是方便于那些不怎么思考,只會(huì)人云亦云、亦步亦趨的人設(shè)計(jì)的。
說(shuō)了一些心態(tài)方面的,再來(lái)從方法學(xué)上說(shuō)一下軟件測(cè)試的要點(diǎn),對(duì)開(kāi)發(fā)人員來(lái)說(shuō),白盒測(cè)試要比黑盒測(cè)試更重要,這決定著你的系統(tǒng)上線后你能不能安心的睡覺(jué);測(cè)試的階段主要在單元測(cè)試與集成測(cè)試方面。
軟件測(cè)試的分類:
分類如下圖所示(該圖為大學(xué) 軟件測(cè)試課程上面的圖片)
開(kāi)發(fā)人員測(cè)試要點(diǎn):
對(duì)于開(kāi)發(fā)人員來(lái)說(shuō),我只強(qiáng)調(diào)單元測(cè)試、集成測(cè)試兩點(diǎn)。
單元測(cè)試主要 測(cè)試編寫(xiě)的類、類中的函數(shù)等。這是測(cè)試的最小單元。常用的測(cè)試工具有java的JUnit、BoostTest等。
集成測(cè)試側(cè)重于 系統(tǒng)的整體功能性測(cè)試,這需要模擬各種可能的請(qǐng)求情況,特別是邊界條件。在多系統(tǒng)中,單個(gè)系統(tǒng)的測(cè)試完了后還需要各個(gè)系統(tǒng)之間的聯(lián)調(diào)。
測(cè)試目標(biāo)方面,除了一般的功能測(cè)試之外還需要穩(wěn)定性測(cè)試、性能測(cè)試、可靠性測(cè)試、適用性測(cè)試、易用性測(cè)試、安全性測(cè)試。
下面詳細(xì)介紹一下各個(gè)測(cè)試要點(diǎn)的測(cè)試內(nèi)容。
1. 功能性測(cè)試要點(diǎn):
在軟件測(cè)試領(lǐng)域的通用理解是:“功能測(cè)試是基于產(chǎn)品功能說(shuō)明書(shū),是在已知產(chǎn)品所應(yīng)具有的功能,從用戶角度來(lái)進(jìn)行功能驗(yàn)證,以確認(rèn)每個(gè)功能是否都能正常使用、是否實(shí)現(xiàn)了產(chǎn)品規(guī)格說(shuō)明書(shū)的要求、是否能適當(dāng)?shù)亟邮蛰斎霐?shù)鋸而產(chǎn)生正確的輸出結(jié)果等。功能測(cè)試,包括用戶界面測(cè)試、各種操作的測(cè)試、不同的數(shù)據(jù)輸入、邏輯思路、數(shù)據(jù)輸出和存儲(chǔ)等的測(cè)試。” 對(duì)于開(kāi)發(fā)人員來(lái)說(shuō),功能性測(cè)試主要是對(duì)系統(tǒng)所支持的功能點(diǎn)的測(cè)試,對(duì)數(shù)據(jù)的測(cè)試,包括數(shù)據(jù)邊界的測(cè)試、數(shù)據(jù)包長(zhǎng)度限制的測(cè)試、各個(gè)功能模塊數(shù)據(jù)的正確性測(cè)試以及容錯(cuò)處理。該項(xiàng)測(cè)試要先把系統(tǒng)的功能點(diǎn)全部列出來(lái),對(duì)異常數(shù)據(jù)的處理也算在內(nèi)。
2. 穩(wěn)定性測(cè)試要點(diǎn):
測(cè)試在壓力情況下內(nèi)存使用情況,cpu使用情況,是否有內(nèi)存泄露,各個(gè)模塊功能是否正常,能否正常提供服務(wù),是否會(huì)在高壓情況下卡死等。這也需要用各種可能數(shù)據(jù)進(jìn)行壓力測(cè)試,要測(cè)試邊界條件下,收到攻擊時(shí)還能否正常工作,系統(tǒng)有沒(méi)有自清理功能等。個(gè)人的理解,該項(xiàng)測(cè)試類似于可靠性測(cè)試,要點(diǎn)在于測(cè)試系統(tǒng)在極端情況下是否正常。比如一個(gè)房子在高強(qiáng)度地震下的抗震能力。
3. 性能測(cè)試要點(diǎn):
測(cè)試程序(一般是服務(wù)器),每秒能正常處理的請(qǐng)求數(shù)。這項(xiàng)測(cè)試一般是尋找系統(tǒng)的性能瓶頸,看看能否滿足實(shí)際的需求。當(dāng)下,一個(gè)服務(wù)器每天處理5000萬(wàn)的請(qǐng)求便可以了。當(dāng)然,通過(guò)優(yōu)化對(duì)性能的追求是沒(méi)有止境的。
4. 安全性測(cè)試要點(diǎn):
安全性測(cè)試的主要目的是 確保軟件不會(huì)去完成沒(méi)有預(yù)先設(shè)計(jì)的功能。這一點(diǎn)很重要,需要開(kāi)發(fā)人員在開(kāi)發(fā)時(shí)對(duì)可能出現(xiàn)的情況作細(xì)致的判斷。常見(jiàn)的安全性測(cè)試內(nèi)容有:畸形的文件結(jié)構(gòu)、畸形的數(shù)據(jù)包、用戶輸入的驗(yàn)證、驗(yàn)證資源之間的依賴關(guān)系、配置文件等的格式等。因?yàn)殚_(kāi)發(fā)人員常常假定他所獲取的資源內(nèi)容是符合一定標(biāo)準(zhǔn)或規(guī)則的。附錄十常見(jiàn)的web安全性測(cè)試的內(nèi)容。
5. 適用性測(cè)試要點(diǎn):
在軟件測(cè)試領(lǐng)域的通用理解是“適用性主要是用戶體驗(yàn)的評(píng)估活動(dòng)”。個(gè)人理解,對(duì)于開(kāi)發(fā)人員,這方面主要跟易用性測(cè)試聯(lián)系起來(lái),開(kāi)發(fā)軟件產(chǎn)品是為了更方便的為人服務(wù),一個(gè)系統(tǒng)要盡可能的簡(jiǎn)單,盡可能減少人工的操作。比如,在配置文件方面,有配置是為了減少代碼的改動(dòng)性,但是配置要盡可能的簡(jiǎn)單,可以由一個(gè)配置項(xiàng)解決的問(wèn)題不要再添加另外一項(xiàng)配置。
附: WEB安全性測(cè)試
一個(gè)完整的WEB安全性測(cè)試可以從部署與基礎(chǔ)結(jié)構(gòu)、輸入驗(yàn)證、身份驗(yàn)證、授權(quán)、配置管理、敏感數(shù)據(jù)、會(huì)話管理、加密。參數(shù)操作、異常管理、審核和日志記錄等幾個(gè)方面入手。
1. 安全體系測(cè)試
1.1) 部署與基礎(chǔ)結(jié)構(gòu)
- 網(wǎng)絡(luò)是否提供了安全的通信
- 部署拓?fù)浣Y(jié)構(gòu)是否包括內(nèi)部的防火墻
- 部署拓?fù)浣Y(jié)構(gòu)中是否包括遠(yuǎn)程應(yīng)用程序服務(wù)器
- 基礎(chǔ)結(jié)構(gòu)安全性需求的限制是什么
- 目標(biāo)環(huán)境支持怎樣的信任級(jí)別
1.2) 輸入驗(yàn)證
A. 是否清楚入口點(diǎn)
B. 是否清楚信任邊界
C. 是否驗(yàn)證Web頁(yè)輸入
D. 是否對(duì)傳遞到組件或Web服務(wù)的參數(shù)進(jìn)行驗(yàn)證
E. 是否驗(yàn)證從數(shù)據(jù)庫(kù)中檢索的數(shù)據(jù)
F. 是否將方法集中起來(lái)
G. 是否依賴客戶端的驗(yàn)證
H. 應(yīng)用程序是否易受SQL注入攻擊
I. 應(yīng)用程序是否易受XSS攻擊
1.3) 身份驗(yàn)證
- 是否區(qū)分公共訪問(wèn)和受限訪問(wèn)
- 是否明確服務(wù)帳戶要求
- 如何驗(yàn)證調(diào)用者身份
- 如何驗(yàn)證數(shù)據(jù)庫(kù)的身份
- 是否強(qiáng)制試用帳戶管理措施
1.4) 授權(quán)
- 如何向最終用戶授權(quán)
- 如何在數(shù)據(jù)庫(kù)中授權(quán)應(yīng)用程序
- 如何將訪問(wèn)限定于系統(tǒng)級(jí)資源
1.5) 配置管理
- 是否支持遠(yuǎn)程管理
- 是否保證配置存儲(chǔ)的安全
- 是否隔離管理員特權(quán)
1.6) 敏感數(shù)據(jù)
- 是否存儲(chǔ)機(jī)密信息
- 如何存儲(chǔ)敏感數(shù)據(jù)
- 是否在網(wǎng)絡(luò)中傳遞敏感數(shù)據(jù)
- 是否記錄敏感數(shù)據(jù)
1.7) 會(huì)話管理
- 如何交換會(huì)話標(biāo)識(shí)符
- 是否限制會(huì)話生存期
- 如何確保會(huì)話存儲(chǔ)狀態(tài)的安全
1.8) 加密
- 為何使用特定的算法
- 如何確保加密密鑰的安全性
1.9) 參數(shù)操作
- 是否驗(yàn)證所有的輸入?yún)?shù)
- 是否在參數(shù)過(guò)程中傳遞敏感數(shù)據(jù)
- 是否為了安全問(wèn)題而使用HTTP頭數(shù)據(jù)
1.10) 異常管理
- 是否使用結(jié)構(gòu)化的異常處理
- 是否向客戶端公開(kāi)了太多的信息
1.11) 審核和日志記錄
- 是否明確了要審核的活動(dòng)
- 是否考慮如何流動(dòng)原始調(diào)用這身份
2. 應(yīng)用及傳輸安全
WEB應(yīng)用系統(tǒng)的安全性從使用角度可以分為應(yīng)用級(jí)的安全與傳輸級(jí)的安全,安全性測(cè)試也可以從這兩方面入手。
2.1)應(yīng)用級(jí)的安全測(cè)試
主要目的是查找Web系統(tǒng)自身程序設(shè)計(jì)中存在的安全隱患,主要測(cè)試區(qū)域如下:
2.1.1)注冊(cè)與登陸:現(xiàn)在的Web應(yīng)用系統(tǒng)基本采用先注冊(cè),后登錄的方式。
A. 必須測(cè)試有效和無(wú)效的用戶名和密碼
B. 要注意是否存在大小寫(xiě)敏感,
C. 可以嘗試多少次的限制
D. 是否可以不登錄而直接瀏覽某個(gè)頁(yè)面等。
2.1.2)在線超時(shí):Web應(yīng)用系統(tǒng)是否有超時(shí)的限制,即,用戶登陸一定時(shí)間內(nèi)(例如15分鐘)沒(méi)有點(diǎn)擊任何頁(yè)面,是否需要重新登陸才能正常使用。
2.1.3)操作留痕:為了保證Web應(yīng)用系統(tǒng)的安全性,日志文件是至關(guān)重要的。需要測(cè)試相關(guān)信息是否寫(xiě)進(jìn)入了日志文件,是否可追蹤。
2.1.4)備份與恢復(fù):為了防范系統(tǒng)的意外崩潰造成的數(shù)據(jù)丟失,備份與恢復(fù)手段是一個(gè)Web系統(tǒng)的必備功能。備份與恢復(fù)根據(jù)Web系統(tǒng)對(duì)安全性的要求可以采用多種手段如數(shù)據(jù)庫(kù)增量備份、數(shù)據(jù)庫(kù)完全備份、系統(tǒng)完全備份等。出于更高的安全性要求,某些實(shí)時(shí)系統(tǒng)經(jīng)常會(huì)采用雙機(jī)熱備或多級(jí)熱備。除了對(duì)于這些備份與恢復(fù)方式進(jìn)行驗(yàn)證測(cè)試以外,還要評(píng)估這種備份與恢復(fù)方式是否滿足Web系統(tǒng)的安全性需求。
2.1.5)傳輸級(jí)的安全測(cè)試是考慮到Web系統(tǒng)的傳輸?shù)奶厥庑裕攸c(diǎn)測(cè)試數(shù)據(jù)經(jīng)客戶端傳送到服務(wù)器端可能存在的安全漏洞,以及服務(wù)器防范非法訪問(wèn)的能力。一般測(cè)試項(xiàng)目包括以下幾個(gè)方面。
2.2)HTTPS和SSL測(cè)試:
默認(rèn)的情況下,安全HTTP(Soure HTTP)通過(guò)安全套接字SSL(Source Socket Layer)協(xié)議在端口443上使用普通的HTTP。HTTPS使用的公共密鑰的加密長(zhǎng)度決定的HTTPS的安全級(jí)別,但從某種意義上來(lái)說(shuō),安全性的保證是以損失性能為代價(jià)的。除了還要測(cè)試加密是否正確,檢查信息的完整性和確認(rèn)HTTPS的安全級(jí)別外,還要注意在此安全級(jí)別下,其性能是否達(dá)到要求。
原文鏈接:http://www.cnblogs.com/zhanghairong/archive/2012/07/11/2586341.html