使用人工和自動手段來執行或測試某個系統的過程,其目的在於檢驗它是否滿足規定的需求或是弄清預期結果與實際結果之間的差別。可以理解為,預期結果和實際結果做對比,如果實際結果和預期結果不一樣,那麼就找到了一個bug。
被測軟體當成一個黑盒子,不關心盒子內部結構是什麼,只關心軟體的輸入資料和輸出資料。
又稱結構測試、透明盒測試、邏輯驅動測試或基於程式碼的測試,白盒指的開啟盒子,去研究裡面的原始碼和程式結果。
介於白盒測試和黑箱測試之間的一種測試,多用於整合測試階段,不僅關注輸入輸出的重要性,同時也關注程式的內部結構。
單元測試是對軟體中的基本組成單位進行的測試,如程式碼塊、函數、方法等等。(一般由開發自己做,採用白盒測試)
整合測試是單元測試的邏輯擴充套件。它的最簡單的形式是:兩個已經測試過的單元組合成一個元件,並且測試它們之間的介面。有時候整合測試又叫介面測試。(一般採用灰盒測試)
系統測試是將經過測試的子系統裝配成一個完整系統來進行測試。(一般採用黑箱測試)
驗收測試一般根據產品規格說明書嚴格檢查產品,逐行逐字地對照說明書上對軟體產品所做出的各方面要求,確保所開發的軟體產品符合使用者的各項要求。驗收測試包括α測試和β測試。(一般由領導或者甲方驗收,測試員協助)
α測試:是一種前期使用者測試,公司內部組織員工與部分使用者模擬實際操作環境下進行的驗收測試,也稱驗收內測。
β測試:是一種後期使用者測試,此時系統已通過內部測試大部分錯誤已修正即將正式發行,在一個或多個真實環境下發布版本,進行測試,也稱公測。
測試軟體功能是否符合需求,功能測試大部分使用的是黑箱測試方法。
(1)壓力測試
是指不斷地給被測系統增加壓力,直到被測系統被壓垮,從而確定系統能承受的最大壓力。它實際上是通過對系統不斷施壓,來確定系統瓶頸或不能接受使用者請求的效能點,以獲得系統能提供的最大服務級別。換句話說,壓力測試就是為了發現什麼條件下系統效能變得不可接受。
(2)負載測試
通常是讓被測系統在其能忍受的壓力極限範圍內(或臨界狀態下)連續執行,來測試系統的穩定性。其目的是找到系統的處理極限,為系統調優提供依據。可以理解為,在極限工作狀態下,最多能持續多久。(負載測試很容易產生記憶體洩露)
壓力測試和負載測試的區別:負載測試側重於壓力持續的時間,而壓力測試則更加強調施加壓力的大小。
(3)並行測試
主要指當測試多使用者並行存取同一個應用、模組、資料時是否產生隱藏的並行問題,如記憶體漏失、執行緒鎖、資源爭用問題,幾乎所有的效能測試都會涉及並行測試。
補充:記憶體漏失是指程式在申請記憶體後,無法釋放已申請的記憶體空間,一次記憶體漏失似乎不會有大的影響,但記憶體漏失堆積後的後果就是記憶體溢位。比如因為多人存取tomcat記憶體越來越大,退出後缺因為某種原因還不釋放記憶體,導致記憶體一直處於很大的狀態。
安全測試是在軟體產品的生命週期過程中,對產品檢驗是否符合安全需求定義(瞭解即可)
常見的攻擊方式:
(1)滲透測試:在取得客戶授權的情況下,通過模擬駭客攻擊來對客戶的整個資訊系統進行全面的漏洞查詢,分析、利用。最後給出完整的滲透報告和問題解決方案。
(2)DDOS攻擊:全稱是 Distributed Denial of Service,即分散式拒絕服務。其原理是傳送大量的合法請求到伺服器,伺服器無法分辨這些請求是正常請求還是攻擊請求,所以都會照單全收。海量的請求會消耗目標網站的主機資源,造成伺服器停止工作或拒絕服務的狀態。
(3)跨域攻擊:攻擊者在網頁中巢狀,惡意指令碼程式,當使用者開啟網頁時,程式開始在瀏覽器上啟動,盜取使用者的cooks,從而盜取密碼等資訊,下載執行木馬程式。
(4)SQL隱碼攻擊:通過把SQL命令偽裝成正常的HTTP請求引數,傳遞到伺服器端,欺騙伺服器最終執行惡意的SQL命令,達到入侵目的。
(5)暴力破解:暴力破解的原理就是使用攻擊者自己的使用者名稱和密碼字典,一個一個去列舉,嘗試是否能夠登入。因為理論上來說,只要字典足夠龐大,列舉總是能夠成功的!
(1)檢查介面是否美觀
(2)檢查介面風格是否保持一致
(3)檢查介面按鈕大小是否保持一致
(4)檢查介面是否和設計圖保持一致
相容性測試是指要測試的軟體在不同的硬體平臺上、不同的應用軟體之間、不同的作業系統中、不同的網路環境中是否可以正常的執行、有無異常的測試過程。即是通常說的軟體的可移植性。
(1)app相容性測試,可分為andriod和ios系統
android相容性測試涉及到不同的作業系統、不同的螢幕、不同的解析度、不同的品牌,但是由於安卓手機數量很多,這就要考慮市場佔有率,去選擇主流的手機型號進行測試。可在網上查詢手機市場份額。
ios一般不需要做相容性測試,因為無論什麼手機型號,ios系統都是互相相容的,且必須保持一致,這是由蘋果公司統一的。
(2)web相容性測試,考慮不同的瀏覽器,常用瀏覽器有谷歌、新的edge、火狐、IE、360、QQ......等等
可理解為使用者體驗測試,學習成本越低越好,功能越簡潔越好,覺得不好用就可以提bug,站在使用者的角度去體驗
指被測試系統在特定硬體、軟體、網路環境條件下,給系統載入一定業務壓力,使系統執行一段較長時間,以此檢測系統是否穩定,一般穩定性測試時間為 n*12 小時。
穩定性測試分為前端和後端,對於後端來說,一般要求7*24小時,保證系統7*24小時穩定執行,不會報任何錯誤;對於前端(app/網站)來說,要求會低一些,一般要求執行3-5個小時沒問題。穩定性測試重點是測試app,網站穩定性測試較少,可使用工具執行手機app 3-5小時。
(1)弱網測試:app是否能在不同的網路環境下正常執行,網路環境分為2G、3G、4G、5G、wifi、熱點,可以使用工具去模擬這些網路環境。
(2)場景互動測試:不同app互相切換,前後臺切換、來電話、來簡訊、微信語音/視訊、分屏,app能否正常執行。
(3)資源爭用測試:同型別的APP同時工作時,被測試app與其他app對資源的爭奪能力。
(4)許可權測試:當關閉許可權後是否影響其他功能的使用;使用對應功能,是否提醒開啟對應許可權。一般涉及到的許可權有:位置、儲存、麥克風、相機、通知...等許可權。
(5)離線測試:斷開網路app是否能正常使用。一般app斷開網路部分功能可用,部分功能不可用,可用的功能是否正常。
(6)安裝、解除安裝、更新 :是否正常安裝、解除安裝、更新app。
(7)訊息推播:斷網後再連網,之前的訊息能否收到,時間顯示是否正常;app關閉後是否能收到訊息推播。(訊息推播不是靠app功能實現,一般由手機廠家提供)
(8)資源監控:
包體大小:安裝包越小越好;
流量:使用app消耗的流量,一般要測試平均每小時消耗多少流量;
電量:使用app消耗的電量,一般要測試平均每小時消耗多少電量;
記憶體:執行app佔用的手機記憶體;
CPU:執行app佔用的手機cpu。
按照測試物件可分為:app測試、web測試、 小程式測試、介面測試、物聯網測試、車聯網測試、ai測試、巨量資料測試
按照軟體的狀態可以分為靜態測試和動態測試(瞭解即可)
靜態測試:靜態方法是指不執行被測程式本身,僅通過分析或檢查源程式的語法、結構、過程、介面等來檢查程式的正確性。對需求規格說明書、軟體設計說明書、源程式做結構分析、流程圖分析、符號執行來找錯。
動態測試:動態測試方法是指通過執行被測程式,檢查執行結果與預期結果的差異,並分析執行效率、正確性和健壯性等效能。
冒煙測試:測試前的測試,檢查軟體是否具備可測試性,冒煙測試不通過就將版本打回開發,如果通過了就釋出到下一階段的測試。
迴歸測試:修改了舊程式碼後,重新進行測試以確認修改沒有引入新的錯誤或導致其他程式碼產生錯誤。簡單來說就是檢查上一次測試發現的問題是否修改,是否引入了新問題。