• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 我談Web程序難測試

    發表于:2009-04-22來源:作者:點擊數: 標簽:webWebWEB程序
    以我用 PHP 的感覺來看,Web程序還是難以實施測試的。這里所說的“測試”主要是指自動化的 單元測試 。通常這類測試都依賴于某種 測試框架 ,如 Java 的 JUnit 測試框架。而Web程序的測試經常會涉及到Web 服務器 、瀏覽器等等外部的條件,自動化的單元測試實
    以我用PHP的感覺來看,Web程序還是難以實施測試的。這里所說的“測試”主要是指自動化的單元測試。通常這類測試都依賴于某種測試框架,如 JavaJUnit測試框架。而Web程序的測試經常會涉及到Web服務器、瀏覽器等等外部的條件,自動化的單元測試實施起來并不容易。

      時間一長,就開始思考根本原因。我認為Web程序的測試難以進行就在于HTTP是無狀態的通信協議,而在幾乎所有的Web應用程序中,又都需要記錄用戶的狀態。因此有了Cookie和Session這些東西,而這些東西嚴重依賴于瀏覽器和服務器。再者,測試歸根結底是把程序的輸出結果跟預期結果相比較,但Web程序的輸出是什么呢?通常的理解是瀏覽器里顯示的Web頁面,但Web頁面內容在語義上并不十分嚴格,通過簡單檢驗輸出來進行測試既不切實際,也無必要。

      退一步說,對于MVC結構的Web程序來講,實質性的代碼有一部分在Model層中。這個Model層應該是和瀏覽器、服務器環境沒有耦合的,這樣才能夠比較方便地進行自動測試。但在Controller部分中通常也會包含重要的流程,而Controller通常都需要Web服務器的配合。

      在Java的技術中,“解耦”往往表現得淋漓盡致。Struts 1把程序分成了明顯的M、V、C三部分,但Controller還不得不依賴一些Servlet的API,如HttpServletRequest;到了 Struts 2,不僅不需要Servlet的API,甚至連Struts本身的API都不必依賴。由框架本身統領起整個應用程序,而實際的功能則由類似于掛接在整個機器上的一些小部件來實現,這些小部件并不去使用整個機器的功能,而是由機器統一驅動這些零件來工作。我想這應該就是人們常說的“控制反轉(IoC)”吧。

      如果能很好地解耦,才能更順利地實施測試。只要測試的成本變得非常低,低到運行整個測試只需要按一兩個鍵的時候,測試才能真正起到作用。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>