有效測試軟件的方法與技術[2] 軟件測試
◆ 問題2:由于單元測試要寫測試驅動程序,非常麻煩,能否等到整個系統全部開發完后,再集中精力進行一次性地單元測試呢?
– 如果這樣做,在開發過程中,缺陷會越積越多并且分布得更廣、隱藏得更深,反而導致測試與改錯的代價大大增加。最糟糕的是無法估計測試與改錯的工作量,使進度失去控制。因此為圖眼前省事而省略單元測試或者“偷工減料”,是“得不償失”的做法。
◆ 問題3:如果每個單元都通過了測試,把它們集成一起難道會有什么不妥嗎?集成測試是否多此一舉?
– 要把N個單元集成一起肯定靠接口耦合,這時可能會產生在單元測試中無法發現的問題。例如:數據通過不同的接口時可能出錯;幾個函數關聯在一起時可能達不到預期的功能;在某個單元里可以接受的誤差可能在集成后被擴大到無法接受的程度。所以集成測試是必要的,不是多此一舉。
◆ 問題4:在集成測試的時候,已經對一些子系統進行了功能測試、性能測試等等,那么在系統測試時能否跳過相同內容的測試?
– 不能!因為集成測試是在仿真環境中開展的,那不是真正的目標系統。再者,單元測試和集成測試通常由開發小組執行。根據測試心理學的分析,開發人員測試自己的工作成果雖然是必要的,但不能作為成果已經通過測試的依據。
◆ 問題5:既然系統測試與驗收測試的內容幾乎是相同的,為什么還要驗收測試?
– 首先是“信任”問題。對于合同項目而言,如果測試小組是開發方的人員,客戶怎么能夠輕易相信“別人”呢? 所以當項目進行系統測試之后,客戶再進行驗收測試是情理之中的事。否則,那是客戶失職。
– 不論是合同項目還是非合同項目,軟件的最終用戶各色各樣(如受教育程度不同、使用習慣不同等等)。測試小組至多能夠模仿小部分用戶的行為,但并不具有普遍的代表性。
◆ 問題6:能否將系統測試和驗收測試“合二為一”?
– 系統測試不是一會兒就能做完的,比較長時間的用戶測試很難組織。用戶還有自己的事情要做,他們為什么要為別人測試呢?即使用戶愿意做系統測試,他們消耗的時間、花費的金錢大多比測試小組的高。
– 系統測試時會找出相當多的軟件缺陷,軟件需要反反復復地改錯。如果讓用戶發現“內幕”,一是丟臉,二是會嚇跑買主。所以還是關起門來,先讓測試小組做完系統測試的好。
文章來源于領測軟件測試網 http://www.k11sc111.com/