qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          在軟件開發(fā)流程中運用單元測試和功能測試

           由于受到極限編程的影響,在最近的幾年時間里單元測試逐漸成為我軟件開發(fā)過程中一個不可或缺的重要組成部分。極限編程要求我們對我們所完成的每一項功能都要進行單元測試并且要很好的管理這些測試,我們不應(yīng)該在所有的單元測試通過之前去集成任何新的功能。這種做法的好處就是可以讓開發(fā)人員對自己所寫的代碼充滿信心(而不是盲目的毫無根據(jù)的自負)。

            最開始我認為既然已經(jīng)有了單元測試了,就沒有必要再去花時間在功能測試上了,可我現(xiàn)在知道這是一個錯誤的想法:單元測試和功能測試是有很大的不同的。我花了很長的時間才了解到單元測試和功能測試的差異所在,我也知道了怎樣更好的運用單元測試和功能測試來完善我們的軟件開發(fā)流程。

            這篇文章探究了單元測試和功能測試的不同點以及我們可以怎樣運用這兩種測試來支持我們的軟件開發(fā)。

            測試和軟件開發(fā)過程

            作為一個開發(fā)人員來講,測試是相當重要的,我們必須要堅持在整個軟件開發(fā)流程中測試我們的代碼,而不僅僅把測試作為軟件開發(fā)的一個特殊階段的產(chǎn)物:測試絕對不應(yīng)該成為你在軟件提交前一天才開始的一個例行公事。你怎么才能知道我們的軟件已經(jīng)可以發(fā)布了?你怎么知道我修正了這個小bug的時候沒有引發(fā)一個更嚴重的系統(tǒng)bug?你怎么知道當前的系統(tǒng)是否可以擴展一些現(xiàn)在沒有想到功能呢?測試!單元測試和功能測試必須成為我們在軟件開發(fā)流程中的一個有機組成部分。

            單元測試應(yīng)該成為你寫代碼的一個核心部分,尤其是在項目時間比較緊張但是我們?nèi)匀灰WC質(zhì)量的時候。單元測試十分重要,你甚至應(yīng)該在你的代碼寫出來之前就應(yīng)該完成單元測試。

            單元測試:

            -》有助于盡可能地重現(xiàn)最有效的設(shè)計

            -》有助于提供一個最佳的文件組織結(jié)構(gòu)

            -》有助于確定一個類是否完成

            -》讓開發(fā)人員對自己的代碼充滿信心

            -》是快速重構(gòu)的基礎(chǔ)

            單元測試有助于形成系統(tǒng)化的并可以不斷改進的設(shè)計文檔,這些文檔在軟件開發(fā)的過程中有著極其重要的意義。大多時候?qū)⒂美臋n化形成一個類要比僅僅羅列一大堆編碼的實際用例好,看看單元測試:它提供一系列有規(guī)律的輸入或數(shù)據(jù),用一系列的實際用例來告訴我們所寫的類做了些什么。這樣的話這個設(shè)計文檔就總是最新的,因為我們必須通過單元測試。

            你應(yīng)該在寫代碼之前寫單元測試,這樣做的好處就是為自己提供了一個可以測試的設(shè)計方案,這就可以幫助你想的更加完善,這樣會使設(shè)計變得簡單。你不必擔心將來會怎樣,也不必花時間去實現(xiàn)一些不必要的功能。首先寫單元測試還有助于幫你了解代碼在什么時候完成:當所有的測試都通過之后,我們的任務(wù)也就完成了。

            最后,單元測試讓你對自己代碼有高度的自信,這有助于我們做出更加好的產(chǎn)品。當你修改了自己的代碼之后,我們來運行我們的測試,如果有問題的話我們可以迅速找出來我們的修改產(chǎn)生了在什么地方哪些破壞。

            功能測試甚至比單元測試更加重要,因為它是用來檢測我們的系統(tǒng)是否達到可以發(fā)布的要求。功能測試是用來確定我們的系統(tǒng)是否是一個可用的系統(tǒng)。

            功能測試:

            -》確定是否實現(xiàn)用戶需求的一個有效方法

            -》讓用戶和開發(fā)人員了解到我們的系統(tǒng)已經(jīng)實現(xiàn)了這些用戶需求

            傳統(tǒng)的開發(fā)過程是從實際使用中確定是否實現(xiàn)用戶需求的,通常人們需要花費大力氣才可以搞清楚這些實際用例并設(shè)法概括它們,當他們完成了這些工作之后他們手中無非多了一張紙而已,而功能測試就像是自己確定實際用例一樣。極限編程闡述了這些觀念,極限編程需要提前定義這些功能(這一過程需要項目組和用戶共同完成),而功能測試就是它的產(chǎn)物,如果沒有功能測試的話,我們不可能完成的很漂亮。

            功能測試可以檢查出單元測試遺留下的一些軟件缺陷,讓開發(fā)人員對自己的代碼更加有信心,因為單元測試仍然會遺留下很多bug,它可能會覆蓋到代碼的各個部分但是卻不能覆蓋到系統(tǒng)的各個部分。功能測試可以揭露一些單元測試沒有涉及的問題。當然一個自動化的可持續(xù)運行的功能測試不可能找出系統(tǒng)中的所有問題,但它可以找出更多的單元測試找不到的bug。

          posted on 2012-06-05 09:43 順其自然EVO 閱讀(201) 評論(0)  編輯  收藏 所屬分類: 測試學習專欄

          <2012年6月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          導航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 勐海县| 河津市| 淮阳县| 和田市| 丰原市| 金华市| 恩施市| 社会| 河南省| 来宾市| 岐山县| 桂林市| 奎屯市| 大冶市| 信宜市| 浮梁县| 唐山市| 大厂| 大邑县| 呼和浩特市| 泾源县| 安塞县| 广昌县| 大厂| 桐乡市| 屯门区| 嘉兴市| 那坡县| 垣曲县| 麻城市| 临夏市| 石楼县| 电白县| 平利县| 苍南县| 朝阳市| 依兰县| 晋中市| 廊坊市| 洛浦县| 攀枝花市|