2009-07-15 121 views
3

在單元測試/自動化測試方面,我相對缺乏經驗,所以請原諒它是否沒有任何意義。在生產代碼/服務器上運行測試

我正在使用的當前代碼基礎非常緊密,以至於我無法在其上運行單元測試之前需要重構大部分代碼,所以我閱讀了一些帖子並發現了Selenium,這是我認爲是一個非常酷的程序。

我的客戶希望在生產服務器上每十分鐘運行一次特定的自動化測試,以確保我們的網站正常運行,並且某些功能/方面正常運行。

我從來沒有真正想過對生產服務器運行測試,因爲您正在向網站添加額外的壓力。我一直以爲你會對臨時服務器運行所有測試,如果這些工作正常,只要託管服務提供商沒有遇到問題,就可以假設該授權網站是可操作的。

想要在實際生產服務器上測試生產代碼時,您有什麼想法嗎?

非常感謝你們!

回答

6

如果您將硒腳本想象爲「監視」而不是「測試」,這可能會有所幫助嗎?我希望每個主要的網站都會進行某種監控,即使它只是定期的PING,或者每隔一段時間加載一次主頁。雖然有可能採取這種方式,但不要害怕這個概念。那麼,這種監測/測試對你和你的客戶有什麼好處?

  1. 不知怎的,不是所有在世界上最好的測試可以預測奇怪的事情的用戶會做,無論是有意還是純靠人多勢衆力(如打字機百萬只猴子可以寫哈姆雷特,想象一下幾百點擊快樂的用戶可以做什麼?Ping一個網站可以告訴你它是否已經啓動,但是如果表損壞並且報告現在失敗,則不會這樣做,所有這些都是因爲用戶鍵入了一個帶有元音變音的值。

  2. 雖然您的網站在暫存服務器上可能表現出色,但它可能會隨着時間的推移而開始降級。如果您正在監測這些硒測試的性能,則可以在慢速投訴之前保持領先。當然,正如你所提到的,確保你的監控不會造成問題!你可能不得不說服你的客戶,特定的測試適合每X分鐘運行一次,而其他測試只能在每天凌晨3點運行一次。

  3. 如果您最終要對現場進行緊急更改,您會更加確信知道測試正在運行以確保一切正常。

0

在生產環境中,您需要運行自動化測試會發生什麼變化?我知道您可能需要監控和警報以確保服務器正常運行。

+0

不,我的意思是,我的客戶希望我在網站上每10分鐘運行一次測試,以確保它在大聲笑我向他們解釋說,如果它在我們的開發/分段環境中工作,則不需要。 我認爲在我們的合同中,如果有任何「關鍵問題」在10分鐘內未得到解決,他們會損失$$ – 2009-07-15 03:50:04

+0

如果確定應用程序正在運行,您可以使用像sitecope這樣的服務來監控服務器的時間時間。您可以設置各種參數進行測試。 – 2009-07-15 03:55:13

3

我長期從事類似的生產服務器。根據我的經驗,我可以說的是,總是最好在Stage環境中測試我們的更改/修補程序並將其部署到生產服務器中。這是因爲,除了數據量之外,分段和生產環境都是相似的。 如果確實需要,一旦安裝了代碼/補丁程序,就可以在生產服務器上運行少量測試。但不建議/總是在生產服務器上運行測試。

+0

他們不希望測試運行在他們想要測試的「補丁」上,以確保用戶可以登錄主頁的某些部分。 我試着解釋說,這是過度殺傷,一旦生產和一些煙霧測試,只有硬件故障會導致網站失效。 – 2009-07-15 03:51:12

1

我的建議是每晚在生產數據庫中將其映射到臨時/測試環境,並在每晚進行單元測試。客戶建議的方法對於確保引入到系統中的新數據不會導致系統內出現異常很有幫助,但我不同意在生產中這樣做。

在臨時環境中運行它可讓您在不使用生產環境作爲測試平臺的情況下評估新功能作爲新數據流入系統。

爲了確保網站已經啓動,您可以編寫一個簡單的程序,每10分鐘一次,而不是運行整個測試套件。

0

無論選擇什麼,無論是監控還是測試類型的解決方案,您首先應該爲客戶做的事情是警告他們。正如你所暗示的,在生產測試中幾乎是從來沒有一個好主意。一旦他們意識到危險,並且如果沒有其他合乎邏輯的選擇,請仔細構建非常少的測試。將它們分層應用並虔誠地監視它們,以確保它們不會對應用程序造成任何問題。

0

我同意彼得,這聽起來更像是監測而不是測試。一個小小的區別,但我認爲重要的一個。如果客戶的要求與服務水平協議相關,那麼他們的要求聽起來不太古怪。

此外,假設服務提供商沒有遇到任何問題,即網站運行正常,可能並不安全。如果網站被請求淹沒怎麼辦?或者也許在測試中運行良好的SQL開始導致問題(超時,阻塞等)與更大的生產數據庫?

相關問題