一、按照測試目標分類
1、界面測試
肉眼所看到的一切,都需要進行測試。如,按鈕的點擊;輸入框輸入文本;下拉框的選擇;其它的交互等。。。
前端開發在執行開發之前需要交互/設計的同學給出設計圖(以圖片的形式展示要實現的前端頁面,在設計圖中明確了給定了每個元素的大小、形狀、顏色等等要素)
測試的方面:
①驗證界面內容顯示的完整性、一致性、準確性、友好性。比如,界面內容對屏幕大小的自適應,換行,內容是否全部清晰展示;
②驗證整個界面布局和排版是否合理,不同板塊字體的設計,圖片的展示是否符合需求;
③對界面不同控件的測試,比如,對話框,文本框,滾動條,選項按鈕等是否可以正常使用,有效和無效的狀態是否設計合理;
④界面的布局和色調符合當下時事的發展;
2、功能測試
功能測試就是對產品的各功能進行驗證,根據功能測試用例,逐項測試,檢查產品是否達到用戶要求的功能。
如何進行功能測試?
設計功能測試用例,參考需求規格說明書進行用例的編寫,具體的測試用例需要使用黑盒設計測試用例的方法。如等價類、邊界值、判定表法、正交法、場景法、錯誤猜測法等。
3、性能測試
4、可靠性測試
可靠性即可用性,是指系統正常運行的能力或者程度,一般用正常向用戶提供軟件服務的時間占總時間的百分比表示。
可靠性=正常運行的時間/(正常運行的時間+非正常運行的時間)*100%
可用性指標一般要求達到4個或者5個9
5、安全性測試
安全性是指信息安全,是指計算機系統或網絡保護用戶數據隱私、完整,保護數據正常傳輸和抵御黑客,病毒攻擊的能力。
比如,sql注入、xss漏洞、登錄模塊密碼一般要加密顯示、數據庫用戶敏感信息要加密、接口返回值不能返回用戶的隱私數據等。。。
安全性測試的方法有代碼評審、滲透測試、安全運維等。常用的靜態安全測試工具有,Coverity、IBM、Appscan Source,HPFortify,常用的動態安全測試工具有OWASP的ZAP,HP WebInspect等。其中靜態安全測試是常用的安全性測試的方法。
6、易用性測試
檢查產品/軟件/功能是否具備簡單易上手的屬性。
二、按照執行方式分類
1、靜態測試
所謂靜態測試就是不實際運行被測軟件,而只是靜態地檢查程序代碼、界面或文檔中可能存在的錯誤的過程。
常見的靜態測試方法有代碼走查、代碼掃描工具(如sonnar)等。。
2、動態測試
動態測試指的是實際運行被測程序,輸入相應的測試數據,檢查實際輸出結果和預期結果是否相符的過程,所以判斷一個測試屬于動態測試還是靜態測試,唯一的標準就是看是否運行程序。
△大多數軟件測試工作都屬于動態測試。
三、按照測試方法
1、白盒測試
白盒測試又稱結構測試或邏輯測試,它用來分析程序的內部結構,通過程序的邏輯結構來設計測試用例來進行測試。
白盒測試的目的是,檢查軟件內部的邏輯結構,對軟件的邏輯路徑進行覆蓋測試。在程序的不同地方設置檢查點,觀察程序狀態與預期狀態是否一致。
白盒測試的方法有,語句覆蓋、判定覆蓋、條件覆蓋、判定條件覆蓋、條件組合覆蓋、路徑覆蓋。
方法解釋:
if A and Bthen action1
if C or Dthen action2
①語句覆蓋:要保證每條語句都執行到。在例子中,即讓action1和action2都執行到。
? ? ? ? 那么測試用例可以是A=T;B=T;C=T;D=F 或者A=T;B=T;C=T;D=T 或者A=T;B=T;C=F;D=T;
②判定覆蓋:每個判定都要覆蓋到為真和為假兩種情況。在例子中,即讓A and B 為T;A and B為F;C or D為T;C or D為F;
? ? ? ? 那么測試用例可以是A=T;B=T;C=T;D=T 和A=F;B=F;C=F;D=F;(沒有完全列舉)
③條件覆蓋:要保證每個條件都有T和F兩種情況。在例子中,即讓A為T,F;B為T,F;C為T,F;D為T,F;
? ? ? ? 那么測試用例可以是A=T;B=T;C=T;D=T和A=F;B=F;C=F;D=F;(沒有完全列舉)
④判定條件覆蓋:同時滿足判定覆蓋和條件覆蓋。在例子中,即讓A and B為T;A and B為F;C or D為T;C or D為F,同時讓A為T,F;B為T,F;C為T,F;D為T,F;
? ? ? ? 那么測試用例可以是A=T;B=T;C=T;D=T和A=F;B=F;C=F;D=F(沒有完全列舉)
⑤條件組合覆蓋:同一個判定里條件T,F的相互組合就是條件組合覆蓋。在例子中,第一個判定A=T,B=T;A=F,B=T;A=T,B=F;A=F,B=F。第二個判定C=T,D=T;C=F,D=T;C=T,D=F;C=F,D=F;
? ? ? ? 那么測試用例可以是A=T;B=T;C=T;D=T 和 A=F;B=T;C=F;D=T 和 A=T;B=F;C=T;D=F 和 A=F;B=F;C=F;D=F;
⑥路徑覆蓋:
記if(x>0&&y>0)判定為P1
記if(z<0)判定為P2
x>0,記為C1
y>0,記為C2
z<0,記為C3
則有,
數據 | C1 | C2 | C3 | P1 | P2 | 路徑 |
{x=3,y=3,z=-2} | T | T | T | T | T | a-b-d-f |
{x=-3,y=3,z=-2} | F | T | T | F | T | a-c-d-f |
{x=3,y=3,z=2} | T | T | F | T | F | a-b-e-f |
{x=-3,y=15,z=-2} | F | T | F | F | F | a-c-e-f |
白盒測試總結:
1°白盒測試主要應用于單元測試階段。
2°先執行靜態設計測試用例的方法,再執行動態設計測試用例的方法。
3°設計用例一般使用路徑測試,重點模塊追加使用邏輯覆蓋方法。
2、黑盒測試
黑盒測試就是不關心程序邏輯和內部結構,直接根據軟件需求規格說明書,進行功能的測試。看輸入數據之后,得到的結果是否和預期結果一致。
3、灰盒測試
灰盒測試是介于白盒測試和黑盒測試之間的一種測試。多用于集成測試時,它即關心數據的輸入輸出情況,又關心程序的內部結構。
灰盒測試即沒有白盒測試的詳細和完整,又沒有黑盒對軟件的覆蓋范圍。因此,灰盒測試不能替代黑盒測試,否則需要付出很大的代價,需要編寫很多的測試用例。
4、常見面試題
你知道的測試方法有哪些,哪種用的比較多?
常見的測試方法有白盒測試、灰盒測試、黑盒測試。開發人員主要用白盒測試和灰盒測試。測試人員主要用白盒測試和黑盒測試。對于測試人員來說,相較于白盒測試,黑盒測試用的更多一些。
四、按照測試階段分類
1、單元測試
與編碼同步進行,針對軟件的最小組成單元進行測試,主要采用白盒測試,從被測對象的內部結構出發設計測試用例。
測試階段:編碼前或編碼后
測試對象:最小模塊
測試人員:白盒測試工程師或開發工程師
測試依據:代碼和注釋+詳細設計文檔
測試方法:白盒測試
測試內容:模塊接口測試、局部數據結構測試、路徑測試、錯誤處理測試、邊界測試
2、集成測試
集成測試也稱聯合測試(聯調)、組裝測試,將程序模塊采用適當的集成策略組裝起來,對系統的接口及集成后的功能進行正確性檢測的測試工作。集成主要目的是檢查軟件單位之間的接口是否正確。
測試階段:一般單元測試之后進行
測試對象:模塊間的接口
測試人員:白盒測試工程師或開發工程師
測試依據:單元測試的模塊+概要設計文檔
測試方法:黑盒測試與白盒測試相結合
測試內容:模塊之間數據傳輸、模塊之間功能沖突、模塊組裝功能正確性、全局數據結構、單模塊缺陷對系統的影響
3、系統測試
對通過集成測試的系統進行整體測試,驗證系統功能性和非功能性需求的實現。
測試階段:集成測試通過之后
測試對象:整個系統(軟、硬件)
測試人員:黑盒測試工程師
測試依據:需求規格說明文檔
測試方法:黑盒測試
測試內容:功能、界面、可靠性、易用性、性能、兼容性、安全性等
①冒煙測試:主要是查看基本功能是否正常,正常的話再進行測試。
冒煙測試一般是在開發人員開發完畢提交給測試人員來進行測試時進行的。先進行冒煙測試,保證基本功能正常,不阻礙后續的測試。
②回歸測試:修改了舊代碼之后,重新進行測試以確認修改沒有引入新的錯誤或導致其它代碼產生錯誤。
回歸測試一般是在新版本上線后,對舊版本就行測試。在新功能上線后,對其它已上線的功能進行測試。
4、驗收測試
驗收測試也叫交付性測試,來用確定是否滿足驗收標準,由用戶或塔器授權機構決定是否接受系統。這是部署軟件之前的最后一個測試操作,也是技術測試的最后一個階段。
測試階段:系統測試通過之后
測試對象:整個系統(軟、硬件)
測試人員:主要是最終用戶或者需求方
測試依據:用戶需求、驗收標準
測試方法:黑盒測試
測試內容:同系統測試
五、按照是否手工測試
1、手工測試
手工測試就是由人去一個一個的輸入用例,然后觀察結果,和機器測試相對應,屬于比較原始但是必須的一個步驟。
2、自動化測試
就是在預設條件下運行系統或應用程序,評估運行結果,預設條件應包括正常條件和異常條件。簡單說,自動化測試是把以人為驅動的測試行為轉化為機器執行的一個過程。
3、自動化測試和手工測試的優缺點
自動化測試:
優點:①節約成本;②提高測試人員執行工作效率;③保障軟件的質量;
缺點:①對測試人員技術要求較高;②不能發散性測試;
手工測試:
優點:①對測試人員技術要求沒有自動化技術要求高;②可以進行發散性測試;
缺點:①效率低;②人員、時間成本比起自動化測試都比較高;
六、按照實施組織劃分
1、α測試(內測、a測)
α測試通常是公司內部的用戶在模擬實際操作環境下進行的測試。α測試的目的是評價軟件產品的FLURPS(即功能、可使用性、可靠性、性能和支持)。α測試不能由程序員或測試員完成。
2、β測試(公測、b測)
β測試由軟件的最終用戶們在一個或多個場所進行,這里就可以理解為,β測試是正式用戶中的一部分,他們在任意的場合來使用軟件,目的是為了發現軟件是否存在一系列的問題。
3、α測試與β測試的區別
①測試的場所不同:α測試是在公司內部進行測試的,但是β測試是在用戶環境下進行測試的;
α測試的環境是受開發方控制的,用戶的數量相對比較少,時間比較集中。
β測試的環境是不受開發方控制的,用戶的數量相對比較多,時間不集中。
②測試執行時機不同:通常是α測試通過后,再進行β測試
③測試持續時間長短不同:α測試沒有β測試持續時間長