不管做什么事情,都需要提前進行檢查,那么,其檢查的意義是什么呢?是為了該事情能夠順利進展。那么,軟件的測試也是一樣,都是為了確保該產(chǎn)品能夠正式上線所做的一些準備。上一篇中,米么信息給大家介紹了用戶體驗,那么,今天就來說一說測試對于一款軟件的意義吧。
一、什么是軟件測試?
軟件測試是一項檢查實際結果是否符合預期結果并確保軟件系統(tǒng)沒有缺陷的活動。軟件測試還有助于識別不符合實際需求或缺少項目的產(chǎn)品。測試活動可以手動或自動化工具進行。有些人喜歡稱軟件測試為白盒測試和黑盒測試。
二、為什么需要測試
往往許多人都使用自動化工具進行測試,原因主要有兩點:
1、保證這個 commit不會影響其他部分的邏輯。
2、保證這個 commit的功能代碼沒有任何 bug。
第一點是最重要的因素。想象一下,你還記得一個月前在一個大項目中寫的代碼嗎?您記得小伙伴提交的是什么代碼嗎?您知道這個代碼對上下游之間的影響嗎?到那時,自動化測試的好處就很明顯了,它可以在更短的時間內確定 commit對整個邏輯的影響,如果整個自動化測試用例都被忽略,那么它影響其他業(yè)務邏輯部分的可能性就很小。假如我們正在建造一座大廈,自動化測試將確保每一塊磚頭、每一粒沙子都符合質檢要求。
《快速軟件開發(fā)》指出,修正bug的代價是bug出生時修正的代價的10倍。小編認為,對于比較復雜的系統(tǒng),成本遠遠不止10倍。磨刀不誤砍柴,在研發(fā)過程中,自動化測試是銳利的寶劍,在一定程度上有效地保證了合并代碼的可靠性,是快速反復的基礎之一,最終提高了研發(fā)效率,保證了產(chǎn)品質量。
防火勝于救火,我們必須用各種手段盡量避免bug,不要制作漸進、有成就感的開發(fā)狀態(tài),制作出不同的shit,每個人都成為救火隊員。
三、測試的分類
從層次的緯度,可以將測試分為三類:單元測試、集成測試、性能測試
1、單元測試是面向函數(shù)級的、由開發(fā)者編寫的、用于測試一個或多個函數(shù)功能的測試用例。單元測試環(huán)境應該易于構建和運行,通常運行時不依賴其他服務:例如數(shù)據(jù)庫、緩存、第三方服務等等,因此 mock框架常常需要生成其他依賴項,這樣有助于提高開發(fā)效率。單元測試集中于覆蓋范圍,通常大約70-80%的覆蓋范圍能夠滿足大多數(shù)場景。
2、集成測試是一個面向API的測試用例,由開發(fā)人員/測試人員編寫,用來測試一個或多個API是否正常工作,以及多個組件是否相互協(xié)作正常工作。集成測試環(huán)境的構建相對復雜,可能依賴于數(shù)據(jù)庫、緩存、第三方服務等,而且一般都是大家分享的。
3、性能測試主要用于測試性能、分析性能瓶頸等。類似于高級測試。受各種條件的影響,不同應用的性能測試方法是不一樣的,這里不展開。
通常常情況下,每次commit都要先跑單元測試和集成測試,然后才能提交。每次發(fā)布上線,都必須確保發(fā)布的版本可以通過單元測試和集成測試,有些應用甚至要求跑單性能測試。
四、什么時候更需要測試
1、項目的核心程度
不用說,核心項目越多,需要越多的測試用例來確保其代碼質量。
2、代碼量
測試用例越多,整個項目的代碼越多,就越需要保證其質量。大量代碼意味著理解所有邏輯變得更加困難,而且每一次 commit都會產(chǎn)生更多的不確定性。個別人認為,當功能代碼在數(shù)千行時,您可以自己決定是否需要測試;當功能代碼超過5000行時,請補充單元測試;如果應用程序具有 API,請補充集成測試。
3、開發(fā)人員數(shù)量
開發(fā)人員的數(shù)量越多,測試用例就越必要。開發(fā)人員越多,特別是水平不一致時,交流成本大幅度增加,研發(fā)效率下降,導入缺陷的概率增加。因此,開發(fā)人員越多,就越需要自動門檻,過濾低質量的commit。
4、編程語言
通常情況下,動態(tài)類型語言在運行時進行數(shù)據(jù)類型檢查,例如python、ruby,而靜態(tài)類型語言需要嚴格定義數(shù)據(jù)類型,并在編譯過程中檢查數(shù)據(jù)類型,例如c。因此python等動態(tài)類型語言需要測試的不僅僅是靜態(tài)語言。
5、項目研發(fā)周期
對開放源碼項目來說,一般的開放源碼項目都有大量的測試用例,在進行任何開發(fā)和迭代之前,建議您先構建 CI/CD,然后逐步迭代。
對于自行開發(fā)的項目,在項目開發(fā)初期,需要進行架構設計,選擇一些重要的第三方模塊。所以項目初期的不確定性會比較大。如果測試框架和用例設計得太早,很容易成為絆腳石,降低研發(fā)效率。當項目結構相對穩(wěn)定時,核心模塊已經(jīng)選定,基本功能可用。需要給項目增加一個測試框架,補充測試用例,達到一定的覆蓋率,為以后的迭代開發(fā)提供堅實的基礎。
以上便是米么信息整理的測試對于軟件的意義,如果有軟件開發(fā)方面的需求,歡迎上米么信息咨詢!