軟體測試理論(一)
軟體測試目的
軟體測試的目的是發現問題,發現至今未發現的問題,檢查系統是否滿足需求。
軟體測試的具體目的
測試程式執行的過程,目的在於發現錯誤
發現錯誤
- 程式的具體的邏輯
- 頁面的互動的驗證
- 瀏覽器的相容性的驗證
- 易用性的驗證
一個好的測試用例在於能發現至今未發現的問題
一個成功的測試是發現了至今未發現的錯誤的測試
軟體測試的工作內容
- 要求參與公司產品體系的所有流程和工作
- 參與到開發技術方案的評審和開發程式碼的評審(關於對邏輯是否合理)
- 測試工作:編寫測試用例,評審測試用例,測試具體的程式
- 上線後的產品質量監控
軟體測試十大原則
1、測試應基於客戶需求
被測試的產品是服務於使用者的,是給使用者賦能的。產品會收集使用者的需求,需求評審後,大家就會達成一致的目標。
2、做好軟體測試計劃是做好軟體測試工作的關鍵
測試計劃會明確規範每個時間點的工作內容,和工作進度,以及工作安排,和工作完成度。
3、應儘早的開始軟體測試並不斷的進行軟體測試
- 從產品經理髮出需求開始,測試工作都已經進行了開展:梳理需求點,梳理邏輯
- 產品上線後,需要持續跟蹤產品的執行情況,如果有設計不合理的,需要記錄,到下個版本加入到需求裡面
4、測試前必須明確定義好產品的質量標準
- 會有質量標準,達到標準就可以上線,達不到就是不能
- 在設計測試用例的時候,要考慮到產品各個維度
5、避免測試自己的軟體
場景:
線上出現問題,程式設計師修改完成後,程式設計師自己進行了測試,同時反饋測試結果是OK的,那麼測試還需要測試嗎?
需要是的,因為程式設計師測試的不代表考慮到了所有的測試場景,必須測試這邊需要驗證
6、應充分注意測試中的叢集現象
- 儘可能的覆蓋以及考慮到更多的場景,但是無法做到100%的覆蓋
- 測試需要持續不斷的進行
7、必須檢查每一個實際輸出結果
8、窮舉測試是不可能的
解決辦法:
優先考慮優先順序高的業務場景來進行測試,優先順序低的,可以在上線後,再進行測試
9、測試設計決定了測試的有效性和效率
編寫測試方案,指的是“測試的思路”
10、注意保留測試設計和說明文件,並注意測試設計的可重用性
軟體測試的分類
按階段劃分
1、單元測試
是針對程式最小離度的測試,單元測試主要是應用於白盒測試。程式是由程式碼寫的,程式碼裡面最小單位是方法,所以單元測試是針對方法的測試
注:
1、測試方法
白盒測試——根據不同程式語言有對應的測試框架。如Java裡面的Junit和TestNG框架,Python裡面的 UnitTest和Pytest測試框架。
2、程式語言
主流語言:C,Python,Java,Go,Net
2、整合測試
是把單個模組的程式整合到一起後的測試,整合測試主要來驗證各個模組整合後模組與模組之間的功能性,以及各個模組整合後的功能流程性和邏輯相容性的測試。
注:
現代版的整合測試
- 現代企業都是前後端分離的模式,前後端各自完成工作後,需要聯調來驗證產品的完整性
- 後端與後端之間的聯調
- 公司程式設計師與第三方程式設計師之間的聯調
3、系統測試
將軟體系統看成是一個系統的測試。包括對功能、效能以及軟體所執行的軟硬體環境進行測試。時間大部分在系統測試執行階段來驗證被測程式的整體性的功能。
注:
- 系統測試現在又稱為端到端的測試
- 可以理解為產品的業務鏈,從開始至結束所有流程的驗證測試
- 測試內容:功能、介面、可靠性(服務持續執行是否出現癱瘓)、易用性、效能、相容性、安全性等
4、驗收測試
驗收測試是部署軟體之前的最後一個測試操作。它是技術測試的最後一個階段,也稱為交付測試
注:
驗收流程
- 自研公司:由測試發起,產品經理來進行驗收測試,產品經理驗收測試通過後,再開始上線
- 外包:外包驗收是甲方(客戶)來進行驗收
按檢視程式碼分類
1、黑盒測試
就是把被測試的程式看成一個黑色的盒子,看不到裡面內部的結構,對應的是系統測試
2、白盒測試
被測程式看成一個白色的盒子,能夠看見程式內部的結構,對應的是單元測試
3、灰盒測試
介於白盒測試和黑盒測試之間,它對測試的要求是:能夠參與開發程式碼的評審,以及開發程式碼的檢查
針對程式判斷邏輯,判斷分支,判斷迴圈,程式流程走向的測試。白盒測試是一種高技能的測試。對測試的技術水平要求是比較高的
按測試編寫程式碼分類
1、手工測試
手工測試就是由人去一個一個的輸入測試用例,然後觀察結果,和機器測試相對應,屬於比較原始但是必須的一個步驟。
手工測試又叫功能測試,或者說是業務測試。
特點主要為:
- 優點:自動化測試是無法替代人的測試的行為模式的,也無法替代探索性的測試
- 缺點:執行效率慢,影響測試交付的效率
2、自動化測試
自動化測試就是通過編寫程式碼(使用工具)的方式來替代模擬人的一種行為方式來對系統進行的一種測試。自動化測 試又分為UI自動化測試,API自動化測試,效能自動化測試。一般性說的自動化測試大多數時候指的是UI自動化測 試和API自動化測試。
軟體質量
描述當前軟體是否好用,在當前的軟體行業裡我們所採用的一套標準是基於 ISO 組織 制定的。
軟體質量的六大特性
1、功能性
軟體需要滿足使用者顯式或者穩式的功能。
2、易用性
軟體易於學習 和上手使用。
3、可靠性
指的就是軟體必須實現需求當中指明的具體功能。
4、效率性
類似於軟體的效能。
5、可維護性
要求軟體具有將某個功能修復之後繼續使用的能力。
6、可移植性
當前軟體可以從一個平臺移植到另一個平臺上去使用的能力。
三大主流平臺:windows unix linux
軟體測試的人工檢查
注:
- 程式設計測試發展方向:服務端測試開發、演算法 測試開發、大資料測試開發、移動專項測試開發
- 佇列 :先進先出 堆疊 :先進後出
- 資料型別 :
int(正整數)
字串
float (帶小數的正整數)
bool:true flase(邏輯:對,錯)
表示式:<、=、 >、 &&(並且)、||(或者)、++(現有基礎上加1)、 -- (現有的基礎上減去1)
軟體的分類
注:
中介軟體 :mysql(資料庫) 、redis(快取中介軟體) 、kafka (MQ)
win常用命令
ipconfig:查詢IP的地址
cmd:win+R,輸入cmd,就可以開啟控制檯
dir:展示當前目錄下的檔案和資料夾
d:/ :進入到了D盤
pwd:查詢當前的在那個盤下
測試術語
1、冒煙測試
冒煙測試目的是確認軟體基本功能正常
使用場景:開發轉測後,測試要進行冒煙測試 ,驗證被轉測的軟體基本流程是否正常
2、探索性測試
探索性測試可以說是一種測試思維技術,探索性強調測試人員的主觀能動性 使用場景:測試報告已經完成,要準備上線前,對產品進行探索性的測試
3、安全性測試
目前安全測試更多的聚焦於滲透測試這部分
4、迴歸測試
迴歸測試是指修改了舊程式碼後,重新進行測試以確認修改沒有引入新的錯誤或導致其他程式碼產生錯誤。 自動迴歸測試將大幅降低系統測試、維護升級等階段的成本。
迴歸測試的場景:
- 轉測後,對系統已有功能進行迴歸測試
- 上線前,開發對程式碼進行了合併,需要整體的進行迴歸測試
- 上線後,對產品進行整體的迴歸測試
如何做軟體測試需求分析
為什麼要需求分析
- 軟體測試需求是設計測試用例的依據。
- 有助於保證測試的質量和進度
- 軟體測試需求是衡量測試覆蓋率的重要指標
軟體測試需求分析步驟
- 列出需求文件中的具有可測性的原始需求
- 對每一條需求進行細化分解,形成可測試的分層描述的測試點
- 對形成的每一個測試點,從軟體產品的質量需求來分析,確定測試執行時需要實施的測試型別。
- 建立測試需求跟蹤矩陣,對測試需求進行管理
測試需要分析的主要目的
獲取測試點,根據測試點來編寫測試用例
舉例:
1、搜尋“測試開發工程師”的職位關鍵字,按下回車鍵後,顯示測試開發工程師職位搜尋的結果資訊 點選搜尋按鈕 按下回車鍵
2、結果資訊可以進行翻頁 每頁 顯示15條資料 大於15條資料進行翻頁 假設返回的資料是35條,那麼第三條展示的資料是5條
3、結果資訊可以根據工作經驗,。。。。聯合搜尋
4、驗證搜尋的結果資訊是否準確
測試用例概述
測試用例是為特定的目的而設計的一組測試輸入、執行條件和預期的結果。測試用例是執行的最小實體。
測試用例的流程
拿到測試需求 分析需求 編寫用例 劃分用例優先順序
編寫用例
- 寫的非常詳細,測試步驟很詳細
- 思維導圖的模式
- checklist
選擇原則
和現在的團隊保持一致,至少對自我的要求上,要比現在的團隊做的好
測試用例編寫特徵
測試用例組成元素
用例ID; 用例名稱; 測試目的; 測試級別; 參考資訊; 測試環境; 前提條件; 測試步驟; 預期結果