一、軟件測試的目的
軟件測試的目的是檢驗軟件系統是否滿足規定的需求或弄清預期結果與實際結果之間的差別,盡可能多地找出軟件中的錯誤 。
也就是盡可能的發現問題并確保問題修復。
發現問題并確保修復使系統正常使用,為什么一定得進行軟件測試這步呢?開發人員也可以測試,這樣還能省一步溝通,測出問題直接修復就好。首先開發是非常自信的,沒有開發人是認為自己的程序是有問題的。其次,測試是一個學科,它是有自己一套完整的工作體系和測試方法的。
五大目的
提高軟件質量
保證軟件的安全
降低軟件開發的成本
降低企業風險
提升用戶體驗感
提高軟件的質量
軟件測試的首要目的就是提高軟件的質量,保證軟件的高質量,讓用戶使用時有更好的體驗。
二、保證軟件的安全
軟件測試的第二大目的就是保證軟件的安全,像銀行系統的APP,會涉及到資金的支出和存入,對軟件的安全性要求是特別高的。所以要盡可能多的覆蓋資金相關的場景再者就是需要安全性測試(軟件測試的一個技術分支)來提高產品的安全性,保證產品質量。
三、降低軟件開發成本
軟件測試的另外一個目的就是降低軟件的開發成本,軟件測試的越早介入,問題發現的越早, 軟件缺陷修正時所投入的人力物力就越少 。
四、降低企業風險
除了降低開發成本,還可以降低企業風險,試想,用戶在使用過程中出現各種問題,客戶的體驗感就極差,想要長期或再次合作就很難,對企業的信譽嚴重影響。
五、提升用戶體驗感
開發人員在開發過程中都是以順向思維來寫程序代碼的,所以很少有開發人員能夠站在用戶角度去思考,測試是除了順向思維還需要逆向思維來思考程序是否有存在問題,站在用戶的角度進行測試。盡可能讓用戶使用程序更舒暢、解決他們需要程序解決的問題。
六、軟件測試的原則
軟件測試的原則呢?就是前輩在以往工作中總結的經驗,前人栽樹給我們后人乘涼的。
測試是上下文相關的
各種產品或項目包含不同的元素、特征和要求。因此,測試人員不能對不同的項目用相同的測試方法。例如,金融項目的測試,安全性就是第一位。電子商務測試,功能性則更加重要。
窮盡測試是不可能的Exhaustive testing is impossible
時間、人員、資金或設備等資源都是有限,不可能對軟件產品進行完全測試,即不可能考慮到或測試到軟件產品的所有執行情況或路徑。現在軟件的規模越來越大,復雜度越來越高,想做到完全性的測試那就更不可能。這就需要在測試階段,測試人員需要根據風險和優先級來進行測試,從而保證軟件的質量。
七、測試盡早介入
為什么測試要盡早介入呢,簡單的說就是保證軟件質量,降低風險和成本。研發流程中,研發活動抽象 為需求分析、開發管理、 測試管理、發布運維四個階段。
在傳統的開發模型里,測試只關注測試管理活動,而嚴重缺乏對需求、開發的測試。據調查,缺陷的 修復成本與其發現時間成反比,且越晚修復其修復成果會成指數級增長。
缺陷集群性(2/8 原則)-Defect clustering
有一種理論,二八原則,一般認為,百分之 80 的缺陷是由百分之 20 的模塊引起的。缺陷聚類指的是 在幾個模塊中發現了大部分缺陷。
這一原則要求測試團隊利用自己的知識和經驗,確定要測試的潛在模塊。 這一預測有助于節省時間和 精力,因為團隊只需要關注那些 “敏感” 領域。然而,這種方法也有缺點: 一旦測試人員只專注于那些敏感領域,可能會錯過其他區域的錯誤。
八、殺蟲劑悖論
當我們反復使用相同的殺蟲劑的時候,會有少量害蟲產生免疫而存活下來,使得殺蟲劑失去藥效 。測試 也一樣。如果一直使用相同的測試方法或手段,可能無法發現新的 bug。為了解決這個問題,測試用例應當定期修訂和評審,增加新的或不同的測試用例幫助發現更多的缺陷。測試人員不能一直依賴于現有的測試技術,還需要不斷的提升測試方法以提高測試效率。
九、測試證明軟件存在缺陷
測試只能證明軟件中存在缺陷,但并不能證明軟件中不存在缺陷。軟件測試只是為了降低存在缺陷的可能性,即便是沒有找到缺陷,也不能證明軟件是完美的。
十、不存在缺陷的謬論
軟件測試不僅僅只是為了找出 Bug 而存在的活動,還需要確認軟件是否滿足用戶的期望和需求,如果產品不能滿足用戶的需求,即使沒有出現任何缺陷,這個產品也是失敗的。“沒有錯誤”并不是我們的追求,在這互聯網時代,始終快速給用戶創造最大的價值才是我們孜孜不倦的追求。