2013-10-30 225 views
1

我有一個很大的應用程序,我想用phpunit進行測試。在第一步中,我想測試,如果每一頁都可以訪問和返回響應碼200PhpUnit測試響應代碼

這是我要做的事:

public function testIndexActionCanBeAccessed() 
{ 
    $this->dispatch('/'); 
    $this->assertResponseStatusCode(200); 
} 

但正如我以前說過,我的應用程序是一個大的。所以有很多頁面要測試。這些測試需要很長時間。

有沒有加快這些測試的方法,或者這些測試不相關?

感謝您的幫助

+1

那麼,每個派遣是一個完整的請求,所以很自然這需要時間。如果像這樣的單元測試是相關的,你可以自己決定。沒有辦法神奇地加速請求,只是因爲它是一個單元測試;) – Sam

+0

使用單元測試來測試公共方法。瞄準你的代碼中最小的單位。你可以看看behat測試repsonses,在那裏你發送一個GET/POST/PUT或DELETE請求,並驗證響應包括頭和主體內容。 – busypeoples

回答

-1

從您的角度來看,爲什麼這樣的測試應該是相關的?您正在測試環境中或您的開發機器上運行測試套件,因此該應用程序將隱式地「在線」。如果您確實需要測試應用程序是否響應,請爲此執行單個測試,而不是每個頁面測試一次。

+0

如何查看支票或某些頁面是否提供了正確的狀態代碼..您認識的人數更多。對於我來說,例如..我需要檢查響應代碼的休息api ..幾個例子404,400,401,422,500和是啊,那麼你也有200。 –

+0

@FlipVernooij你在說什麼是集成測試,而不是單元測試。單元測試的主要範圍是測試單個單元 - >當前正在測試的單元,而不是整個服務和依賴關係鏈。另外,不單獨運行單元測試的一個重要副作用是速度。 HTTP請求需要時間,測試將運行緩慢,因此開發人員將停止運行測試套件。 –

+0

完美的世界情景並不常見,很多項目甚至沒有測試,有時理論也不實際。 –

2

我曾經遇到過一個很少使用的頁面因代碼更改而中斷的情況,管理層大聲抱怨。通過簡單地請求頁面wget就可以很容易地發現失敗 - 這就是我作爲一個常規工作添加到我們的Jenkins之後。之後這項工作從未失敗,愉快地一天一個月,一個月一個月地愉快地請求兩三頁,大約兩年(然後刪除了這些頁面)。

如果您處於沒有更好的測試可用或者執行起來太麻煩的情況,測試HTTP狀態代碼將是一種有效的方法。但是當你看到自己的時候,速度會變得非常快,因爲你必須總是把整個系統作爲一個大黑盒子來測試。你需要在測試環境中工作的一切。

如果您現在有幾乎不可測試的系統,那麼使用功能測試來遠程控制Selenium等應用程序是快速檢測故障的第一步。您可能想要並行執行這些測試,這需要適當的硬件能力,最有可能以多臺機器的形式執行Selenium客戶端。

另一方面,你應該瞄準獲得更多的單元測試。這些將運行得非常快,因爲你將注入模擬對象來替代實際的東西,比如數據庫連接。在後臺沒有數據庫的情況下,測試不會與網絡通信,也不會與磁盤寫入和讀取 - 模擬對象在內存中,幾乎立即提供所需的答案。

結合起來,單元測試與一組選定的功能測試(可能是一些集成測試,將一些較大的部分放在一起並單獨測試,但不是整個應用程序)將顯示一切正常。

但是單憑功能測試,情況就不會如此。