1.軟件測試行業(yè)的基本介紹
1.1.為什么需要軟件測試
1.任何一款軟件都不能保證100%沒有問題,一款軟件從無到有會經(jīng)歷很多開發(fā)階段由不同的開發(fā)人員來參與開發(fā),所以更有可能存在問題,因此為了保證軟件功能是可用的,我們必須進(jìn)行測試。
2.現(xiàn)在已經(jīng)不是功能為王的時代了,現(xiàn)在除了基本功能的實現(xiàn),用戶更看重的是軟件是否容易上手,效率是否ok,等這也需要測試人員對軟件進(jìn)行大量的測試。

1.2.為什么選擇軟件測試
1.國內(nèi)軟件行業(yè)正慢慢注重軟件測試,軟件測試人員需求慢慢變大。
2.有些人喜歡創(chuàng)造世界所以選擇了開發(fā),而我們就是希望世界更完美。
1.3.為什么不讓開發(fā)自己做測試
1.專業(yè)度:軟件開發(fā)和軟件測試分別屬于軟件行業(yè)中不同的技術(shù)方向,所以讓專人做專事對質(zhì)量更加有保障。
2.思維方式:軟件開發(fā)人員更多的是想著怎么完成需求,而不會以用戶的角度去“奇葩”的使用這些功能。
3.測試力度:相對于開發(fā)來說產(chǎn)品就是他的“親兒子”,下手力度不會太大,僅僅測幾次得到想要的結(jié)果就完事了。
4.自己難以發(fā)現(xiàn)自己的錯誤,總覺得自己寫的是完美的,“不識廬山真面目,只緣身在此山中?!?/p>
2.軟件測試基本介紹
2.1軟件測試的定義
通過手動或自動(自動化測試)對軟件進(jìn)行測試,從而驗證實際結(jié)果與預(yù)想結(jié)果是否存在差異。
2.2軟件測試的作用
1.測試可以發(fā)現(xiàn)并修復(fù)軟件中存在的缺陷,避免用戶使用到有缺陷的軟件,使用戶對軟件更有信心。
2.測試可以記錄軟件運行過程中產(chǎn)生的一些數(shù)據(jù),從而為決策提供數(shù)據(jù)支持。
2.3軟件測試的七個原則
所謂的原則就是我們進(jìn)行測試時要遵守的一些規(guī)則。
1.測試顯示軟件存在缺陷:意思就是測試的目的是為了證明軟件有缺陷,而不是證明軟件沒缺陷。測試的目的是盡量降低存在缺陷的可能性,即使沒有發(fā)現(xiàn)缺陷也不能證明軟件是完美的。
2.窮盡測試是不可能的:現(xiàn)在軟件規(guī)模越來越大,復(fù)雜度越來越高,想要做到完全性的測試是不可能的。測試人員可以根據(jù)風(fēng)險和優(yōu)先級來進(jìn)行集中的高強(qiáng)度的測試,來保證軟件的質(zhì)量。
3.測試盡早介入:測試人員一般在需求階段就開始介入,使缺陷在需求階段或設(shè)計階段就被發(fā)現(xiàn),缺陷發(fā)現(xiàn)越早,修復(fù)成本就越小。
4.缺陷集群性(2/8原則):缺陷集群性表明小部分模塊包含大部分缺陷。一般來說你在一個模塊發(fā)現(xiàn)的缺陷越多,那么這個地方未發(fā)現(xiàn)的缺陷也越多,未發(fā)現(xiàn)的缺陷和發(fā)現(xiàn)的缺陷成正比。2/8原則就是%80的缺陷出現(xiàn)在20%的模塊中。
5.殺蟲劑悖論:反復(fù)使用相同的殺蟲劑會導(dǎo)致蟲子對殺蟲劑產(chǎn)生免疫,從而無法殺死蟲子,測試也是如果一直使用一套測試方法或手段,無法發(fā)現(xiàn)新的bug。測試用例應(yīng)該定期修改和評審,增加新的測試用例和方法幫助發(fā)現(xiàn)更多的缺陷。
6.測試活動依賴測試內(nèi)容:軟件測試也分為不同的行業(yè),比如游戲,電商,金融,不同的行業(yè)不同的業(yè)務(wù),根據(jù)業(yè)務(wù)的不同測試的方法也不盡相同。
7.沒有錯誤是好事謬論:有可能99%沒有bug的軟件也不能用,這種情況出現(xiàn)在需求有誤時,軟件測試不僅要找出軟件的缺陷,也要確認(rèn)軟件是否滿足需求,如果開發(fā)出的軟件不滿足用戶的需求,即使找到了和修復(fù)了缺陷意義也不大。

3.測試對象
對于當(dāng)前的測試行業(yè)來說,我們最經(jīng)常測試的主體就是軟件。但我們要知道軟件不僅僅只有功能需要我們的測試。我們可以將軟件分為三個部分組成:功能集合+使用說明(說明書)+配置數(shù)據(jù)(初始化數(shù)據(jù))
功能集合:就是測試軟件的主體功能是否有缺陷。
使用說明:就是按照說明書操作看有沒有缺陷,測試說明書的正確性。
配置數(shù)據(jù):就是測試使用配置數(shù)據(jù)有沒有缺陷,有沒有達(dá)到預(yù)期的效果。
1.需求分析階段:各種需求說明書
2.軟件架構(gòu)設(shè)計:API接口文檔(接口測試)
3.編碼實現(xiàn)階段:白盒測試,單元測試
4.系統(tǒng)功能使用:軟件功能主體
4.測試級別
測試級別就相當(dāng)于開發(fā)中的開發(fā)模型,下面要說的是最常見的一種測試級別
1.單元測試:在軟件測試中單元是組成軟件最小的底層代碼,一般指類,函數(shù),用于測試方法或類的功能是否實現(xiàn)。
2.集成測試:將多個模塊組合在一起,然后測試它們之間溝通的“橋梁”能否正常工作(接口測試)。
3.系統(tǒng)測試:這是當(dāng)前行業(yè)做的最多的一種測試,由測試人員充當(dāng)用戶對軟件主體功能進(jìn)行測試。下面單獨說
4.驗收測試:分為α(內(nèi)測)測試和β(公測)測試以及UAT(USER ACCEPTANCE TEST)測試。
UAT測試就是客戶派出一些專業(yè)人員使用該軟件,來進(jìn)行測試。
5.系統(tǒng)測試分類
1.功能測試:驗證當(dāng)前軟件的主體功能是否可用。
2.兼容性測試:驗證軟件在不同環(huán)境下是否還可已使用。
3.安全測試:驗證軟件是否只能是授權(quán)用戶提供功能使用。
4.性能測試:相對于軟件消耗的資源,它的產(chǎn)出能力。

6.系統(tǒng)測試方法
1.按測試對象進(jìn)行分類
? ? *白盒測試:這種測試主體就是軟件底層代碼,不在意外在界面是否ok,只要求底層功能實現(xiàn),同時邏輯正確。
? ? *黑盒測試:這種測試主要就是看外在的主體功能是否可用。
? ? *灰盒測試:介于兩者之間(接口測試)。
2.按測試對象是否執(zhí)行進(jìn)行分類
? ? *靜態(tài)測試:測試對象不執(zhí)行。(一般是說明書,API接口文檔,靜態(tài)展示性質(zhì)的)。
? ? *動態(tài)測試:將軟件運行在真是的環(huán)境中進(jìn)行測試。
3.按測試手段進(jìn)行分類
? ? *手動測試:由測試人員手動的對測試軟件進(jìn)行驗證,優(yōu)點是可以靈活地改變測試操作。
? ? *自動化測試:自動化測試分為兩種,一種是測試人員編寫的測試腳本,另一種是通過第三方工具測試。優(yōu)點是可以高效率的執(zhí)行一些人工無法執(zhí)行的操作。
7.軟件質(zhì)量特征
軟件質(zhì)量有6大特征
1.功能性:滿足用戶顯示或隱示的功能
2.易用性:易用性,好上手
3.可靠性:必須實現(xiàn)需求中指明的功能
4.效率性:性能
5.可維護(hù)性:要求軟件有將某個功能修復(fù)后在使用的能力
6.可移植性:可以講軟件從一個平臺移植到另一個平臺仍然能用的能力
8.軟件測試流程
1.需求分析(不是分析需求,是分析需求的正確性。)
? ? *當(dāng)前階段的核心目的就是要梳理清楚業(yè)務(wù)。
2.設(shè)計用例
? ? *用例就是用戶為了測試軟件的某個功能而執(zhí)行的操作過程。
? ? *設(shè)計用例是有方法的(等價類、邊界值、判定表……)
3.評審用例
? ? 對當(dāng)前的用例進(jìn)行評審修改或刪除
4.配置環(huán)境
? ? *環(huán)境指的是當(dāng)前被測對象運行所需的執(zhí)行環(huán)境,作為測試人員需要拒賠配環(huán)境的能力?!疽话闱闆r下都會使用一鍵安裝的集成環(huán)境】
? ? *環(huán)境分類:操作幾桶+服務(wù)器軟件+數(shù)據(jù)庫+軟件底層代碼的執(zhí)行環(huán)境。
5.執(zhí)行用例
? ? 一般在執(zhí)行用例前我們會做一個冒煙測試,意思就是先快速的對當(dāng)前軟件的核心功能或主題執(zhí)行流程進(jìn)行驗證。如果冒煙階段有問題則將此版本回退給開發(fā),如果冒煙測試通過才會開展全面的測試。
6.回歸測試及缺陷跟蹤
? ? *回歸測試就是當(dāng)我們發(fā)現(xiàn)缺陷給到開發(fā)人員并修復(fù)完成后,再次對其進(jìn)行測試。
? ? *缺陷跟蹤就是指當(dāng)我們發(fā)現(xiàn)某個缺陷后需要一直對其進(jìn)行狀態(tài)跟蹤(是否修復(fù),是否回測)。
7.輸出測試報告
? ? 將測試過程中產(chǎn)生的數(shù)據(jù)進(jìn)行可視化的輸出。方便其他人查看。
8.測試結(jié)束
? ? 將整個測試過程中產(chǎn)生的一些文檔進(jìn)行整理歸檔,方便以后使用。

9.軟件架構(gòu)【科普】
B/S????browser/server? ? 瀏覽器到服務(wù)端? ? ? ? ? ? 優(yōu)點:標(biāo)準(zhǔn),安全? ? 缺點:效率不如C/S,因為C/S中的客戶端會分擔(dān)一些數(shù)據(jù)處理
C/S? ? client/server? ? 客戶端到服務(wù)端? ? ? ? ? ? ? ? 優(yōu)點:效率? ? ? ? ? ? ? ? 缺點:開發(fā)麻煩還得開發(fā)客戶端