亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-99久久99久久-99久久99久久精品国产

您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > junit
使用JUnit高效完成功能測試
作者:網絡轉載 發布時間:[ 2013/2/5 15:33:00 ] 推薦標簽:

從用例到測試用例
 
        每個入口點都必須與相應的用例匹配。某些情況下可以忽視這一步,因為類名的自記錄可以實現自動匹配,比如Saxon中的轉換類可以實現XSL轉換,查詢類可以進行XQuery轉換。
        其它情況則要復雜得多。通常用例描述的功能只能以橫切關注點的方式存在,不能用任何單獨的類進行例證。只有幾組類交互時或滿足一定條件時,才能觀察到功能行為。這種情況下,測試的初始化程序會比較長,或者可以用setUp()方法提供需要的測試環境。
        而調用代碼的運行程序應該盡可能地設計成一行,以減少與被測試代碼的關聯,這可以有效避免對邊緣效應與不穩定實現細節的依賴。測試的檢查階段是復雜的,因為這個階段經常需要添寫非測試用代碼。測試時可能需要對結果進行嚴格的分析以確保其符合要求。有時甚至需要將這個過程分為幾步來完成,以取得測試可以識別的結果。在XSL轉換中,這兩種情況都是可能的,結果儲存在文件中,然后以XML格式讀入內存并進行準確性分析。

        Saxon中有個相對簡單的例子。已有XML文件和XPath表達式的情況下,Saxon可以執行表達式并返回匹配列表。Saxon中的XpathExample樣本類是用來執行這種任務的。基于以上分析,可以設計如下的測試流程:

    public void testXPathEvaluation() {
      //initialize
      XPathEvaluator xpe = new XPathEvaluator(
        new SAXSource(new InputSource("/path/to/file.xml")));
      XPathExpression findLine =
        xpe.createExpression("/some/xpath[expression]");
      //work
      List matches = findLine.evaluate();
      //check
      assertTrue(matches.count() > 0);
    }

        兩次輸入的都是字符串常量,輸出的則是所匹配的列表,可以用來驗證匹配結果的正確性。這些工作都由一行代碼完成,這行代碼只是簡單地調用了被測試的方法。
        另一種可能的情況是XPathEvaluator沒有調用createExpression()方法。因為表達式不存在,這時可能會顯示錯誤信息。
        將輸入的源文件名和表達式保留在測試用例中不是個好習慣。某些項目(服務器名、用戶名和密碼等)不應該出現在測試文件中,它們應該可以根據情況自由設置。并且,測試用例的設計應該方便測試驅動和測試數據的分離、測試驅動對大范圍數據的可重用性和測試數據對測試驅動的可重用性。另一方面,不要將一個簡單的測試用例實現設計地過于復雜。一般來說,測試用例已經說明了系統的大部分狀態,并可對其進行參數描述,所以無需在測試中進行過于詳細的參數描述。
        許多代碼段可能出現在不止一個測試用例中。有經驗的面向對象開發人員會嘗試對其進行重構并創建通用類和有效方法。有時候這樣做非常有用,比如登錄過程應該設計成所有測試用例可用的方法。 但是,不要過度設計測試,這些Java類僅僅是用來驗證應用程序的功能行為而已。

        測試用例是脆弱的。比如,如果開發人員更改了testXPathEvaluation測試中輸入文件的位置,或者creatExpression方法簽名有所變動,測試腳本會失效。
        對于應用程序的測試用例實現來說,大量的重復性工作與改動是不可避免的。因此,可跟蹤性對于所有的測試用例都是至關緊要的。出現問題的時候,如果能為開發人員指出相應的測試用例說明和用例說明將有利于提高修正bug的速度。
        因此,測試用例注釋中應標明原始說明文檔的引用位置。這可以是一個簡單的代碼注釋,也可以對每條測試都注釋相關用例和所測功能,這樣當測試出現問題時開發人員會收到一條相關信息。因此,在代碼中加入參考并維護可追蹤性是很重要的。

設計運行時事件表
 
        要了解測試覆蓋的范圍,必須先了解所測試代碼如何運行,以及各種靜態類如何形成描述程序狀態的動態對象圖表。
        有許多模擬這種行為的方法,包括Granovetter圖和物件互動圖。其基本思想是用圖形化的方式研究代碼以了解測試中涉及到的運行時部分。這些技術都可用運行時事件表(Runtime Event Diagrams)來描述,因為這些圖表顯示了程序運行時發生的事件,而非理論上類可以控制的事件。這些圖表非常重要的原因包括:
        首先,這些圖表便于從高層上理解代碼,并提供有用的說明文檔。這個文檔與代碼的內聯文檔不同。這些圖表顯示代碼的運行時表現,是產生代碼功能的地方,也易于對系統的了解;大多數設計模式和架構在用對象和參考表示時要比用類和域表示容易得多。
        另外,這些圖表將測試執行的代碼分類列表,并確定測試是否會受到將來對任意代碼改動的影響。如果開發人員確定測試A是建立在B、C和D的基礎上,她可以確定如果對B、C或D做出改動需要對A進行重新測試(確保向后兼容)。
        以盡可能少的步驟模擬系統是個好方法。總的來說,實際調用與此無關,重要的是系統如何作為整體運作以獲得預期目標。可以用簡化的模擬系統實現這個目的,該系統只關心對象間的基本交互,并用自然語言描述交互中發生的事件。
        做出運行時事件表后,可以將其整合到類文檔中。需要注意的是,為表添加一些限制可使其對類的修改更有彈性。首先,一般不能使用方法名,因為它們會隨時間發生變化。取而代之的是更易理解的自然語言描述。其次,這些圖表主要是關于系統中各部分的交互。這是高層架構上的設計方案,一般不會再做改動。后,圖表是建立在類型而非特定類的基礎上。只要基本類型不變,為維持交互協議的正常運行,這些圖表不需要更新。
        一旦圖表創建成功,可以在許多方面獲得應用。比如,一個圖表可以用來獲取系統如何運作,以及如何運用其交互部件實現功能的概覽。在某種程度上這是一種簡化了的UML語言,它只描述關系到整體功能的系統部件:實例及其類型、其它引用的實例,以及組件可以實現的功能。
        這些圖表也可以用來分析系統的復雜性以及如何進行簡化。要確定簡化系統的方法,可以查找系統中使用過一到兩次的對象,并為其尋找其它可能更合適的位置。也可以查找重復的任務,將其封裝到方法或類中。
        然而,重要的是圖表在測試中的應用。通過對系統狀態的總結,圖表可以幫助解決系統中出現的問題。出現問題時,圖表中的信息便可用作參考。因為只需要將系統目前狀態與預期狀態作比較即可,這樣確定問題產生的原因也變得比較簡單了。對小組件的改動不應該影響整體架構,因此可以通過對照運行時事件表以保證系統仍然正常運行。并且,當有重要組件發生變動時,可以用運行時事件表對照系統當前狀態以獲取系統修正方案。由于將系統作為整體和對預期功能的描述,運行時事件表也可以看作是一種結構化的單元測試。如果系統有變動,可以更容易地做出修正以維持系統的正常功能。
        如果經常因細節問題影響對全局的把握,應該使用圖表。其高層本質可以用來分析軟件的設計模式,像反模式一樣。還有許多其它用途,并且當運行時事件表、測試用例說明和用例說明沒有描述所需的細節時,它還提供了直接進行代碼分析的路線圖。

利用功能測試進行回歸測試
 
        后,為回報你在功能測試上做出的努力,配置一個與自動生成的程序相應的自動化測試程序。這個程序不只從功能上測試代碼,還可以同時進行常規的回歸測試。現在大多開發項目都建立在龐大的代碼庫基礎上,如果不能對代碼庫進行充分測試,開發團隊將無從決定對程序的修正是否會破壞現有的功能,結果是很難對這種代碼進行擴展或優化。與此相反,如果開發人員可以在全面的功能測試基礎上進行回歸測試,優化或擴展代碼時不必擔心可能會引發不可預料的問題。畢竟,沒有比做完回歸測試后發現一切正常更令人心情愉快的事了。

上一頁12下一頁
軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 成人免费黄色网 | 春意影院免费入口 | 日韩精品免费在线视频 | 99热国产在线 | 黄色片一级免费 | 欧美片第一页 | 免费丝袜足控网站 | 老司机精品免费视频 | 国产在线播放免费 | 日韩不卡一二三区 | 亚洲乱乱 | 日本韩国欧美一区 | qvod激情视频在线观看 | 午夜影院私人 | 男女在线网站 | 日韩中文字幕视频 | 国内精品免费一区二区观看 | 波多野结衣在线观看免费区 | 国产制服在线 | 制服丝袜怡红院 | 日韩在线 中文字幕 | 久久综合视频网 | 好男人www社区视频在线 | 天天干精品 | 日韩永久免费进入2015 | 成 人国产在线观看高清不卡 | 一区二区不卡免费视频 | 成年男女男免费视频网站不卡 | 性生大片一级毛片免费观看 | 国产一区二区高清在线 | 久久亚洲欧美成人精品 | 日日碰狠狠添天天爽对白 | 欧美另类日韩 | 婷婷伊人久久 | 视频精品一区二区三区 | 国产影音先锋 | 色视频免费观看 | 天天碰人人 | 日韩一区视频在线 | 色偷偷综合网 | 五月天婷婷久久 |