国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

JUnit實施--1.測試的概念

JUnit實施--1.測試的概念

更新時間:2022-05-10 文章作者:未知 信息來源:網絡 閱讀次數:

1.測試的概念

長期以來,我所接觸的軟件開發人員很少有人能在開發的過程中進行測試工作。大部分的項目都是在最終驗收的時候編寫測試文檔。有些項目甚至沒有測試文檔。現在情況有了改變。我們一直提倡UML、RUP、軟件工程、CMM,目的只有一個,提高軟件編寫的質量。舉一個極端的例子:如果你是一個超級程序設計師,一個傳奇般的人物。(你可以一邊喝咖啡,一邊聽著音樂,同時編寫這操作系統中關于進程調度的模塊,而且兩天時間內就完成了!)我真得承認,有這樣的人。(那個編寫UNIX中的vi編輯器的家伙就是這種人。)然而非常遺憾的是這些神仙們并沒有留下如何修成正果的README。所以我們這些凡人--在同一時間只能將注意力集中到若干點(據科學統計,我并不太相信,一般的人只能同時考慮最多7個左右的問題,高手可以達到12個左右),而不能既縱覽全局又了解細節--只能期望于其他的方式來保證我們所編寫的軟件質量。

為了說明我們這些凡人是如何的笨。有一個聰明人提出了軟件熵(software entropy)的概念:一個程序從設計很好的狀態開始,隨著新的功能不斷地加入,程序逐漸地失去了原有的結構,最終變成了一團亂麻。你可能會爭辯,在這個例子中,設計很好的狀態實際上并不好,如果好的話,就不會發生你所說的情況。是的,看來你變聰明了,可惜你還應該注意到兩個問題:1)我們不能指望在恐龍紀元(大概是十年前)設計的結構到了現在也能適用吧。2)擁有簽字權的客戶代表可不理會加入一個新功能是否會對軟件的結構有什么影響,即便有影響也是程序設計人員需要考慮的問題。如果你拒絕加入這個你認為致命的新功能,那么你很可能就失去了你的住房貸款和面包(對中國工程師來說也許是米飯或面條,要看你是南方人還是北方人)。

另外,需要說明的是我看過的一些講解測試的書都沒有我寫的這么有人情味(不好意思...)。我希望看到這片文章的兄弟姐妹能很容易地接受測試的概念,并付諸實施。所以有些地方寫的有些夸張,歡迎對測試有深入理解的兄弟姐妹能體察民情,并不吝賜教(ericwq@263.net)。

好了,我們現在言歸正傳。要測試,就要明白測試的目的。我認為測試的目的很簡單也極具吸引力:寫出高質量的軟件并解決軟件熵這一問題。想象一下,如果你寫的軟件和Richard Stallman(GNU、FSF的頭兒)寫的一樣有水準的話,是不是很有成就感?如果你一致保持這種高水準,我保證你的薪水也會有所變動。

測試也分類,白箱測試、黑箱測試、單元測試、集成測試、功能測試...。我們先不管有多少分類,如何分類。先看那些對我們有用的分類,關于其他的測試,有興趣的人可參閱其他資料。白箱測試是指在知道被測試的軟件如何(How)完成功能和完成什么樣(What)的功能的條件下所作的測試。一般是由開發人員完成。因為開發人員最了解自己編寫的軟件。本文也是以白箱測試為主。黑箱測試則是指在知道被測試的軟件完成什么樣(What)的功能的條件下所作的測試。一般是由測試人員完成。黑箱測試不是我們的重點。本文主要集中在單元測試上,單元測試是一種白箱測試。目的是驗證一個或若干個類是否按所設計的那樣正常工作。集成測試則是驗證所有的類是否能互相配合,協同完成特定的任務,目前我們暫不關心它。下面我所提到的測試,除非特別說明,一般都是指單元測試。

需要強調的是:測試是一個持續的過程。也就是說測試貫穿與開發的整個過程中,單元測試尤其適合于迭代增量式(iterative and incremental)的開發過程。Martin Fowler(有點兒像引用孔夫子的話)甚至認為:“在你不知道如何測試代碼之前,就不應該編寫程序。而一旦你完成了程序,測試代碼也應該完成。除非測試成功,你不能認為你編寫出了可以工作的程序。”我并不指望所有的開發人員都能有如此高的覺悟,這種層次也不是一蹴而就的。但我們一旦了解測試的目的和好處,自然會堅持在開發過程中引入測試。

因為我們是測試新手,我們也不理會那些復雜的測試原理,先說一說最簡單的:測試就是比較預期的結果是否與實際執行的結果一致。如果一致則通過,否則失敗。看下面的例子:

//將要被測試的類public class Car {public int getWheels() {return 4;}}//執行測試的類public class testCar {public static void main(String[] args) {testCar myTest = new testCar();myTest.testGetWheels();}public testGetWheels() {int expectedWheels = 4;Car myCar = Car();if (expectedWheels==myCar.getWheels()) System.out.println("test [Car]: getWheels works perfected!");elseSystem.out.println("test [Car]: getWheels DOESN'T work!");}}
如果你立即動手寫了上面的代碼,你會發現兩個問題,第一,如果你要執行測試的類testCar,你必須必須手工敲入如下命令:
[Windows] d:>java testCar[Unix] % java testCar
即便測試如例示的那樣簡單,你也有可能不愿在每次測試的時候都敲入上面的命令,而希望在某個集成環境中(IDE)點擊一下鼠標就能執行測試。后面的章節會介紹到這些問題。第二,如果沒有一定的規范,測試類的編寫將會成為另一個需要定義的標準。沒有人希望查看別人是如何設計測試類的。如果每個人都有不同的設計測試類的方法,光維護被測試的類就夠煩了,誰還顧得上維護測試類?另外有一點我不想提,但是這個問題太明顯了,測試類的代碼多于被測試的類!這是否意味這雙倍的工作?不!1)不論被測試類-Car 的 getWheels 方法如何復雜,測試類-testCar 的testGetWheels 方法只會保持一樣的代碼量。2)提高軟件的質量并解決軟件熵這一問題并不是沒有代價的。testCar就是代價。

我們目前所能做的就是盡量降低所付出的代價:我們編寫的測試代碼要能被維護人員容易的讀取,我們編寫測試代碼要有一定的規范。最好IDE工具可以支持這些規范。 好了,你所需要的就是JUnit。一個Open Source的項目。用其主頁上的話來說就是:“JUnit是由 Erich Gamma 和 Kent Beck 編寫的一個回歸測試框架(regression testing framework)。用于Java開發人員編寫單元測試之用。”所謂框架就是 Erich Gamma 和 Kent Beck 定下了一些條條框框,你編寫的測試代碼必須遵循這個條條框框:繼承某個類,實現某個接口。其實也就是我們前面所說的規范。好在JUnit目前得到了大多數軟件工程師的認可。遵循JUnit我們會得到很多的支持。回歸測試就是你不斷地對所編寫的代碼進行測試:編寫一些,測試一些,調試一些,然后循環這一過程,你會不斷地重復先前的測試,哪怕你正編寫其他的類,由于軟件熵的存在,你可能在編寫第五個類的時候發現,第五個類的某個操作會導致第二個類的測試失敗。通過回歸測試我們抓住了這條大Bug。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

  • <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        久久综合九色综合欧美98| 一区二区中文视频| 免播放器亚洲一区| 亚洲欧美另类小说| 国产精品私人自拍| 久久久精品日韩欧美| 欧美一级夜夜爽| 666欧美在线视频| 欧美精品xxxxbbbb| 欧美日韩大陆在线| 在线一区二区三区| 在线一区二区三区四区五区| 91丨国产丨九色丨pron| 91免费精品国自产拍在线不卡| www.av精品| 色婷婷亚洲综合| 色吧成人激情小说| 在线区一区二视频| 欧美女孩性生活视频| 3d动漫精品啪啪一区二区竹菊| 91精品婷婷国产综合久久 | 91小视频在线免费看| 91在线精品一区二区三区| 成人免费观看男女羞羞视频| 波多野结衣欧美| 欧美午夜片在线看| 欧美成人午夜电影| 国产精品午夜在线观看| 欧美激情在线看| 一区二区在线观看视频| 亚洲一区二区三区在线播放| 免费高清视频精品| 国产成人精品1024| 91黄色免费看| 日韩一级高清毛片| 日本一区二区三区在线观看| 亚洲另类春色国产| 看国产成人h片视频| hitomi一区二区三区精品| 欧美精品少妇一区二区三区| 久久久国产午夜精品| 亚洲欧洲成人自拍| 久久成人免费电影| 色综合久久六月婷婷中文字幕| 91精品久久久久久久久99蜜臂| 久久这里只有精品6| 一区二区三区在线观看网站| 蜜臀精品一区二区三区在线观看 | 国产精品18久久久久久久久久久久| 北条麻妃一区二区三区| 欧美美女视频在线观看| 国产网红主播福利一区二区| 亚洲精品视频在线观看免费| 精品系列免费在线观看| jiyouzz国产精品久久| 欧美成人伊人久久综合网| 亚洲精品视频在线观看网站| 国内一区二区视频| 欧美日韩在线播放一区| 国产午夜精品一区二区| 日韩av中文字幕一区二区三区| 99久久er热在这里只有精品15| 日韩欧美一区中文| 亚洲精品国产无套在线观| 国产乱码精品1区2区3区| 91精品免费观看| 一区二区国产视频| www..com久久爱| 国产亚洲污的网站| 精品一区二区免费看| 日韩一区二区三区四区五区六区| 樱桃视频在线观看一区| 不卡欧美aaaaa| 欧美激情一区二区三区四区| 黄色日韩网站视频| 日韩精品一区二区三区老鸭窝| 亚洲国产一区二区三区| 91丨九色丨黑人外教| 中文字幕欧美国产| 国产凹凸在线观看一区二区| 久久奇米777| 韩国成人在线视频| 日韩欧美不卡一区| 激情文学综合丁香| 精品久久国产97色综合| 久草在线在线精品观看| 欧美一二三区在线| 六月丁香综合在线视频| 日韩免费性生活视频播放| 人人爽香蕉精品| 日韩欧美中文字幕公布| 国产一区二区在线观看免费| 久久青草国产手机看片福利盒子| 国产一区二区三区最好精华液| 久久综合999| www.欧美.com| 一区二区三区四区精品在线视频| 在线观看日韩高清av| 亚洲成人免费在线观看| 欧美一二三在线| 狠狠色丁香婷婷综合| 2021久久国产精品不只是精品| 韩国一区二区三区| 欧美高清在线一区| 色偷偷成人一区二区三区91| 午夜精品久久久久久不卡8050| 欧美日韩一二三区| 国产在线播精品第三| 国产精品久久久久久久久晋中 | 欧美一区二区国产| 国产麻豆精品视频| 亚洲人成在线观看一区二区| 欧美剧情电影在线观看完整版免费励志电影 | 92精品国产成人观看免费| 亚洲天堂成人网| 欧美日韩视频在线一区二区| 精品无码三级在线观看视频| 亚洲欧洲日韩女同| 欧美日韩在线观看一区二区| 国内成人免费视频| 亚洲综合无码一区二区| 精品国产一区二区三区av性色| 福利视频网站一区二区三区| 亚洲成人免费视频| 国产精品三级久久久久三级| 欧美日韩在线免费视频| 国产久卡久卡久卡久卡视频精品| 一区二区三区四区高清精品免费观看| 亚洲精品一区二区三区精华液| 日本韩国欧美在线| 国产高清成人在线| 美美哒免费高清在线观看视频一区二区| 国产区在线观看成人精品| 51精品国自产在线| 色诱视频网站一区| 处破女av一区二区| 久久99精品国产麻豆婷婷| 一区二区国产视频| 国产精品美女久久久久高潮| 日韩丝袜美女视频| 欧美三级中文字| 日本韩国欧美一区| 成人激情小说网站| 国产毛片精品国产一区二区三区| 日韩黄色一级片| 亚洲午夜国产一区99re久久| 亚洲欧美在线观看| 精品国产精品一区二区夜夜嗨| 欧美日韩视频在线第一区| www.欧美日韩国产在线| 国产精品一线二线三线精华| 青青国产91久久久久久| 亚洲444eee在线观看| 亚洲美女视频在线观看| 久久婷婷色综合| 欧美电影免费观看高清完整版在线| 精品婷婷伊人一区三区三| 97超碰欧美中文字幕| 成人免费高清在线观看| 国产99久久精品| 成人综合婷婷国产精品久久| 国产精品资源在线| 国产激情一区二区三区桃花岛亚洲| 美女视频一区在线观看| 免费成人av在线| 精品一区二区国语对白| 极品少妇xxxx偷拍精品少妇| 精品一二三四在线| 国产精品一区二区你懂的| 国产一区福利在线| 懂色av一区二区三区免费观看| 国产精品996| jlzzjlzz亚洲日本少妇| 不卡视频在线观看| 91久久精品国产91性色tv | 亚洲色图一区二区| 亚洲精品乱码久久久久久黑人 | 成人毛片在线观看| 成人高清免费在线播放| 99久久99精品久久久久久 | 日本欧美一区二区三区乱码| 日本伊人午夜精品| 国内外精品视频| 不卡一区二区中文字幕| 欧美在线|欧美| 日韩一区二区不卡| 欧美国产日韩亚洲一区| 亚洲色图在线视频| 三级一区在线视频先锋| 国产精品一品视频| 99久久精品一区| 欧美日韩视频第一区| 日韩欧美国产精品| 国产精品久久久久久久久免费樱桃| 一区二区三区国产| 国内外精品视频| 一本色道久久综合亚洲aⅴ蜜桃| 欧美视频三区在线播放| 欧美成人乱码一区二区三区| 亚洲欧洲99久久|