首頁 考試吧論壇 Exam8視線 考試商城 網絡課程 模擬考試 考友錄 實用文檔 繽紛校園 英語學習 | ||
2010考研 | 2010高考 | 2010中考 | 自學考試 | 成人高考 | 專升本 | 法律碩士 | MBA/MPA | 中科院 | ||
四六級 | 商務英語 | 公共英語 | 職稱日語 | 職稱英語 | 博思 | 口譯筆譯 | GRE GMAT | 日語 | 托福 | ||
雅思 | 專四專八 | 新概念 | 自考英語 | 零起點英、法、德、日、韓語 | 在職申碩英語 | ||
在職攻碩英語 | 成人英語三級 | ||
等級考試 | 水平考試 | 微軟認證 | 思科認證 | Oracle認證 | Linux認證 | ||
公務員 | 報關員 | 報檢員 | 外銷員 | 司法考試 | 導游考試 | 教師資格 | 國際商務師 | 跟單員 | ||
單證員 | 物流師 | 價格鑒證師 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 人力資源管理師 | 管理咨詢師 | ||
期貨從業(yè)資格 | 社會工作者 | ||
會計職稱 | 注會CPA | 經濟師 | 統(tǒng)計師 | 注冊稅務師 | 評估師 | 精算師 | 高會 | ACCA | 審計師 | ||
法律顧問 | 會計證 | ||
一級建造師 | 二級建造師 | 造價師 | 監(jiān)理師 | 安全師 | 咨詢師 | 結構師 | 建筑師 | 安全評價師 | ||
房地產估價師 | 土地估價師 | 設備監(jiān)理師 | 巖土工程師 | 質量資格 | 房地產經紀人 | 造價員 | ||
投資項目管理 | 土地代理人 | 環(huán)保師 | 環(huán)境影響評價 | 物業(yè)管理師 | 城市規(guī)劃師 | 公路監(jiān)理師 | ||
公路造價工程師 | 招標師 | ||
執(zhí)業(yè)護士 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 衛(wèi)生資格 |
摘要
這篇文章主要闡述這樣一個問題:為什么要進行煩人的單元測試?那些剛剛接觸完全測試概念的開發(fā)人員常常遇到這個問題。我們這里將采用“反調論證”的方法來回答這個問題, 先提出一些反對單元測試的普遍論點, 然后我們會證明這些論點是站不住腳的。那些公開發(fā)表的文章和數(shù)據(jù)充分證實了單元測試的有效性。
IPL是一個獨立的軟件開發(fā)機構,成立于1979年,基地設在Bath。IPL在1988年通過了ISO9001認證,并在1991年通過TickIT認證。IPL開發(fā)并提供AdaTEST和Cantata等軟件驗證產品。AdaTEST和Cantata的開發(fā)遵循了這些標準的要求。
簡介
在使新的產品和業(yè)務的開發(fā)過程工業(yè)化的嘗試中,軟件的質量和可靠性常常被看作是薄弱環(huán)節(jié)。
在最近的十年里,隨著越來越多的人在開發(fā)過程中采用了設計方法論和使用CASE工具,軟件質量和可靠性的問題越來越受到重視。大多數(shù)軟件設計人員都接受了這方面的培訓,并且在這些正規(guī)的軟件設計方法的使用中取得了很多經驗。
但不幸的是,軟件測試并沒有得到同樣的重視。很多使用這些軟件設計方法的開發(fā)活動并沒有使軟件質量和可靠性得到控制。修改最初的軟件開發(fā)活動遺留的Bug一般要在軟件維護費用中占到50%的比例,這是不正常的,這些Bug應該在有效的軟件測試過程中被排除掉。
這篇文章主要闡述這樣一個問題:為什么要進行煩人的單元測試?那些剛剛接觸完全測試概念的開發(fā)人員常常遇到這個問題。我們這里將采用“反調論證”的方法來回答這個問題,先列出一些反對單元測試的普遍論點,然后我們會證明這些論點是站不住腳的。那些公開發(fā)表的文章和數(shù)據(jù)充分證實了單元測試的有效性。
什么是單元測試
單元測試是在軟件開發(fā)過程中要進行的最低級別的測試活動,在單元測試活動中,軟件的獨立單元將在與程序的其他部分相隔離的情況下進行測試。
在一種傳統(tǒng)的結構化編程語言中,比如C,要進行測試的單元一般是函數(shù)或子過程。在象C++這樣的面向對象的語言中, 要進行測試的基本單元是類。對Ada語言來說,開發(fā)人員可以選擇是在獨立的過程和函數(shù),還是在Ada包的級別上進行單元測試。單元測試的原則同樣被擴展到第四代語言(4GL)的開發(fā)中,在這里基本單元被典型地劃分為一個菜單或顯示界面。
單元測試不僅僅是作為無錯編碼一種輔助手段在一次性的開發(fā)過程中使用,單元測試必須是可重復的,無論是在軟件修改,或是移植到新的運行環(huán)境的過程中。因此,所有的測試都必須在整個軟件系統(tǒng)的生命周期中進行維護。
經常與單元測試聯(lián)系起來的另外一些開發(fā)活動包括代碼走讀(Code review),靜態(tài)分析(Static analysis)和動態(tài)分析(Dynamic analysis)。靜態(tài)分析就是對軟件的源代碼進行研讀,查找錯誤或收集一些度量數(shù)據(jù),并不需要對代碼進行編譯和執(zhí)行。動態(tài)分析就是通過觀察軟件運行時的動作,來提供執(zhí)行跟蹤,時間分析,以及測試覆蓋度方面的信息。
一些流行的誤解
在明確了什么是單元測試以后,我們可以進行“反調論證”了。在下面的章節(jié)里,我們列出了一些反對單元測試的普遍的論點。然后用充分的理由來證明這些論點是不足取的。
它浪費了太多的時間
一旦編碼完成,開發(fā)人員總是會迫切希望進行軟件的集成工作,這樣他們就能夠看到實際的系統(tǒng)開始啟動工作了。 這在外表上看來是一項明顯的進步,而象單元測試這樣的活動也許會被看作是通往這個階段點的道路上的障礙, 推遲了對整個系統(tǒng)進行聯(lián)調這種真正有意思的工作啟動的時間。
在這種開發(fā)步驟中,真實意義上的進步被外表上的進步取代了。系統(tǒng)能夠正常工作的可能性是很小的,更多的情況是充滿了各式各樣的Bug。在實踐中,這樣一種開發(fā)步驟常常會導致這樣的結果:軟件甚至無法運行。更進一步的結果是大量的時間將被花費在跟蹤那些包含在獨立單元里的簡單的Bug上面,在個別情況下,這些Bug也許是瑣碎和微不足道的,但是總的來說,他們會導致在軟件集成為一個系統(tǒng)時增加額外的工期, 而且當這個系統(tǒng)投入使用時也無法確保它能夠可靠運行。
在實踐工作中,進行了完整計劃的單元測試和編寫實際的代碼所花費的精力大致上是相同的。一旦完成了這些單元測試工作,很多Bug將被糾正,在確信他們手頭擁有穩(wěn)定可靠的部件的情況下,開發(fā)人員能夠進行更高效的系統(tǒng)集成工作。這才是真實意義上的進步,所以說完整計劃下的單元測試是對時間的更高效的利用。而調試人員的不受控和散漫的工作方式只會花費更多的時間而取得很少的好處。
使用AdaTEST和Cantata這樣的支持工具可以使單元測試更加簡單和有效。但這不是必須的,單元測試即使是在沒有工具支持的情況下也是一項非常有意義的活動。
相關推薦:考試吧策劃:2010年軟件水平考試完全指南北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |