系統測試是可有可無的。因為系統測試是和環境結合在一起。系統測試應該是在系統設計或者是需求分析階段的前一步來完成的。
單元測試它的測試計劃是在詳細設計階段完成。所以說單元測試的計劃是在詳細設計階段來完成的。
模塊接口的測試它保證了測試模塊的數據流可以正確地流入和流出。模塊接口可以保證它的數據流可以正確地流入和流出。測試模塊接口要注意測試模塊輸入參數的形式在個數、屬性、單位上是否一致。比如說這個模塊它有五個接口參數:分別是什么類型,可以設計一些用例在調用這個模塊的時候輸入一些值。輸入一些值來看看最終它出來的結果的單位啊這些東西是否一致,和原來的設計是否一致。
再要注意調用標準函數時所使用的參數。在屬性、數目、順序方面是否正確。如果用到了一些函數,是否正確地運用了這些函數。
還有全局變量在各個模塊中它的定義和用法是否一致。
再有輸入是否僅改變了形式參數。
還有開關語句是否正確。規定的I/O的格式(輸入輸出的格式)是否與輸入輸出的語句是一致的。我的設計與我的實現是否保持一致。使用文件之前是否已經打開了文件,或者是用了之后是否把它關閉了。這些都是模塊接口部分需要注意的內容。
?
?在單元測試階段中局部數據結構出錯是比較常見的錯誤。注意四個方面內容:第一,變量的說明是否合適。第二是否使用了沒有賦值或者是沒有初始化的變量。第三是變量的初始值或者是默認值是否正確。第四是變量是否有錯,比如說拼寫上的錯誤啊這些。
重要的執行通路。 在單元測試中對路徑的測試是最基本的任務。由于我們不能夠進行窮舉的測試,由于它的單元里面模塊里面它的路徑比較多,很難做到覆蓋到每一條路徑。所以需要精心地設計測試例子來發現是否有計算啊比較啊或者是控制流這方面的錯誤。計算方面的錯誤主要指的是算術運算它的優先次序不正確或者是理解錯誤或者是精度不夠這些方面的問題。還有的是比較或者是控制流這些方面的錯誤,比如說用if語句進行分支的時候就牽涉到了比較和控制流。本應該相等的那些量由于精度不夠所以造成不等或者是不同類型進行比較或者是邏輯運算符不正確這些屬于比較和控制流的錯誤。兩個方面:一個是計算方面的,一個是比較和控制流方面的。這是對于重要的執行路徑進行測試。
?
出錯處理。錯誤的條件并且對錯誤進行處理。 對出錯的有一條專門的路徑給予提示給予正確的引導。
邊界條件。 是單元測試的最后工作。軟件或者是程序最容易出錯的往往是在邊界上面。所以在邊界上面找錯誤也是最容易把這些錯誤發現出來的。
對模塊進行測試不可能單獨地就來測這個模塊。被測的模塊可能是系統中的中間模塊,它是中間模塊意味著它上層有模塊,下層也有模塊。中層模塊所行使的功能往往就是執行上級下達的命令再把這些命令分發到下面進行具體的執行。執行完之后就有很多個結果反饋上來。然后呢它進行匯總再把結果反饋到上面去。所以測試不可能單獨地測試中間模塊,而且要涉及到它的上層模塊和它的下層模塊。如果單元測試的模塊剛好它的上層模塊和下層模塊都沒有做好,那就要設計驅動模塊和樁模塊它的替代品。處于被測模塊上層的/領導層的就是驅動模塊,就是驅使被測模塊進行一些活動。而被測模塊的它的下層模塊叫做樁模塊。我們要測試一個模塊的時候要構造它的樁模塊,也要構造它的驅動模塊。
集成測試(組裝測試).模塊與模塊之間不是孤立的,是有聯系的。因為所有的模塊經過單元測試之后測試無誤之后再把它組裝起來仍然有可能產生錯誤。幾個模塊組裝起來之后沒有達到預期的功能。模塊與模塊之間存在磨合問題,最后無法達到預期的效果。或者是單元測試注重的是局部數據結構的問題,而全局數據結構檢查比較少。全局數據結構也有可能產生問題。另外一個模塊在執行某一個任務的時候會有誤差,但是誤差是可以接受的。大型程序從上面到下面分了非常多的模塊。每一個模塊它的數據有一點點誤差,一級一級把誤差傳下來的時候最后誤差可能就很大了。組裝測試通常用的是黑盒測試法。
黑盒測試法不涉及到程序的執行流程。只看了一個運行結果。相比單元測試基本上就用到了白盒測試法。 因為單元測試主要測試的時內部的一些結構,具體的一些運行步驟。所以單元測試一般用到的是白盒測試,而組裝測試通常是用黑盒測試。
集成測試的測試計劃是在概要設計階段制定的。集成的方式又可以分為非增值式和增值式。非增值式它是指的首先對每一個模塊分別進行模塊的測試。然后再把所有的模塊組裝在一起進行測試,最終得到整個軟件的系統。它是一次性進行組裝來測試。把所有模塊一次性組裝好,它是非增值式。
增值式首先可以測一個頂層模塊。測了一個頂層模塊之后呢頂層模塊底下有幾個模塊。我要增加一個子模塊,把這兩個模塊當成一個整體來測試。測試完了之后沒問題了再加第三個模塊。把它們再重新測試一遍然后再加。一層一層這么加下來。系統就由原來的很小的一部分慢慢慢慢地擴大了。這個就是增值它的含義。
增值式它有幾種具體的形式。分了自頂向下的增值方式。
自頂向下的增殖方式:首先測試最開始的一個模塊。