1.軟件測試行業的基本介紹
1.1.為什么需要軟件測試
1.任何一款軟件都不能保證100%沒有問題,一款軟件從無到有會經歷很多開發階段由不同的開發人員來參與開發,所以更有可能存在問題,因此為了保證軟件功能是可用的,我們必須進行測試。
2.現在已經不是功能為王的時代了,現在除了基本功能的實現,用戶更看重的是軟件是否容易上手,效率是否ok,等這也需要測試人員對軟件進行大量的測試。
1.2.為什么選擇軟件測試
1.國內軟件行業正慢慢注重軟件測試,軟件測試人員需求慢慢變大。
2.有些人喜歡創造世界所以選擇了開發,而我們就是希望世界更完美。
1.3.為什么不讓開發自己做測試
1.專業度:軟件開發和軟件測試分別屬于軟件行業中不同的技術方向,所以讓專人做專事對質量更加有保障。
2.思維方式:軟件開發人員更多的是想著怎么完成需求,而不會以用戶的角度去“奇葩”的使用這些功能。
3.測試力度:相對于開發來說產品就是他的“親兒子”,下手力度不會太大,僅僅測幾次得到想要的結果就完事了。
4.自己難以發現自己的錯誤,總覺得自己寫的是完美的,“不識廬山真面目,只緣身在此山中。”
2.軟件測試基本介紹
2.1軟件測試的定義
通過手動或自動(自動化測試)對軟件進行測試,從而驗證實際結果與預想結果是否存在差異。
2.2軟件測試的作用
1.測試可以發現并修復軟件中存在的缺陷,避免用戶使用到有缺陷的軟件,使用戶對軟件更有信心。
2.測試可以記錄軟件運行過程中產生的一些數據,從而為決策提供數據支持。
2.3軟件測試的七個原則
所謂的原則就是我們進行測試時要遵守的一些規則。
1.測試顯示軟件存在缺陷:意思就是測試的目的是為了證明軟件有缺陷,而不是證明軟件沒缺陷。測試的目的是盡量降低存在缺陷的可能性,即使沒有發現缺陷也不能證明軟件是完美的。
2.窮盡測試是不可能的:現在軟件規模越來越大,復雜度越來越高,想要做到完全性的測試是不可能的。測試人員可以根據風險和優先級來進行集中的高強度的測試,來保證軟件的質量。
3.測試盡早介入:測試人員一般在需求階段就開始介入,使缺陷在需求階段或設計階段就被發現,缺陷發現越早,修復成本就越小。
4.缺陷集群性(2/8原則):缺陷集群性表明小部分模塊包含大部分缺陷。一般來說你在一個模塊發現的缺陷越多,那么這個地方未發現的缺陷也越多,未發現的缺陷和發現的缺陷成正比。2/8原則就是%80的缺陷出現在20%的模塊中。
5.殺蟲劑悖論:反復使用相同的殺蟲劑會導致蟲子對殺蟲劑產生免疫,從而無法殺死蟲子,測試也是如果一直使用一套測試方法或手段,無法發現新的bug。測試用例應該定期修改和評審,增加新的測試用例和方法幫助發現更多的缺陷。
6.測試活動依賴測試內容:軟件測試也分為不同的行業,比如游戲,電商,金融,不同的行業不同的業務,根據業務的不同測試的方法也不盡相同。
7.沒有錯誤是好事謬論:有可能99%沒有bug的軟件也不能用,這種情況出現在需求有誤時,軟件測試不僅要找出軟件的缺陷,也要確認軟件是否滿足需求,如果開發出的軟件不滿足用戶的需求,即使找到了和修復了缺陷意義也不大。
3.測試對象
對于當前的測試行業來說,我們最經常測試的主體就是軟件。但我們要知道軟件不僅僅只有功能需要我們的測試。我們可以將軟件分為三個部分組成:功能集合+使用說明(說明書)+配置數據(初始化數據)
功能集合:就是測試軟件的主體功能是否有缺陷。
使用說明:就是按照說明書操作看有沒有缺陷,測試說明書的正確性。
配置數據:就是測試使用配置數據有沒有缺陷,有沒有達到預期的效果。
1.需求分析階段:各種需求說明書
2.軟件架構設計:API接口文檔(接口測試)
3.編碼實現階段:白盒測試,單元測試
4.系統功能使用:軟件功能主體
4.測試級別
測試級別就相當于開發中的開發模型,下面要說的是最常見的一種測試級別
1.單元測試:在軟件測試中單元是組成軟件最小的底層代碼,一般指類,函數,用于測試方法或類的功能是否實現。
2.集成測試:將多個模塊組合在一起,然后測試它們之間溝通的“橋梁”能否正常工作(接口測試)。
3.系統測試:這是當前行業做的最多的一種測試,由測試人員充當用戶對軟件主體功能進行測試。下面單獨說
4.驗收測試:分為α(內測)測試和β(公測)測試以及UAT(USER ACCEPTANCE TEST)測試。
UAT測試就是客戶派出一些專業人員使用該軟件,來進行測試。
5.系統測試分類
1.功能測試:驗證當前軟件的主體功能是否可用。
2.兼容性測試:驗證軟件在不同環境下是否還可已使用。
3.安全測試:驗證軟件是否只能是授權用戶提供功能使用。
4.性能測試:相對于軟件消耗的資源,它的產出能力。
6.系統測試方法
1.按測試對象進行分類
? ? *白盒測試:這種測試主體就是軟件底層代碼,不在意外在界面是否ok,只要求底層功能實現,同時邏輯正確。
? ? *黑盒測試:這種測試主要就是看外在的主體功能是否可用。
? ? *灰盒測試:介于兩者之間(接口測試)。
2.按測試對象是否執行進行分類
? ? *靜態測試:測試對象不執行。(一般是說明書,API接口文檔,靜態展示性質的)。
? ? *動態測試:將軟件運行在真是的環境中進行測試。
3.按測試手段進行分類
? ? *手動測試:由測試人員手動的對測試軟件進行驗證,優點是可以靈活地改變測試操作。
? ? *自動化測試:自動化測試分為兩種,一種是測試人員編寫的測試腳本,另一種是通過第三方工具測試。優點是可以高效率的執行一些人工無法執行的操作。
7.軟件質量特征
軟件質量有6大特征
1.功能性:滿足用戶顯示或隱示的功能
2.易用性:易用性,好上手
3.可靠性:必須實現需求中指明的功能
4.效率性:性能
5.可維護性:要求軟件有將某個功能修復后在使用的能力
6.可移植性:可以講軟件從一個平臺移植到另一個平臺仍然能用的能力
8.軟件測試流程
1.需求分析(不是分析需求,是分析需求的正確性。)
? ? *當前階段的核心目的就是要梳理清楚業務。
2.設計用例
? ? *用例就是用戶為了測試軟件的某個功能而執行的操作過程。
? ? *設計用例是有方法的(等價類、邊界值、判定表……)
3.評審用例
? ? 對當前的用例進行評審修改或刪除
4.配置環境
? ? *環境指的是當前被測對象運行所需的執行環境,作為測試人員需要拒賠配環境的能力。【一般情況下都會使用一鍵安裝的集成環境】
? ? *環境分類:操作幾桶+服務器軟件+數據庫+軟件底層代碼的執行環境。
5.執行用例
? ? 一般在執行用例前我們會做一個冒煙測試,意思就是先快速的對當前軟件的核心功能或主題執行流程進行驗證。如果冒煙階段有問題則將此版本回退給開發,如果冒煙測試通過才會開展全面的測試。
6.回歸測試及缺陷跟蹤
? ? *回歸測試就是當我們發現缺陷給到開發人員并修復完成后,再次對其進行測試。
? ? *缺陷跟蹤就是指當我們發現某個缺陷后需要一直對其進行狀態跟蹤(是否修復,是否回測)。
7.輸出測試報告
? ? 將測試過程中產生的數據進行可視化的輸出。方便其他人查看。
8.測試結束
? ? 將整個測試過程中產生的一些文檔進行整理歸檔,方便以后使用。
9.軟件架構【科普】
B/S????browser/server? ? 瀏覽器到服務端? ? ? ? ? ? 優點:標準,安全? ? 缺點:效率不如C/S,因為C/S中的客戶端會分擔一些數據處理
C/S? ? client/server? ? 客戶端到服務端? ? ? ? ? ? ? ? 優點:效率? ? ? ? ? ? ? ? 缺點:開發麻煩還得開發客戶端