2013-03-11 199 views
0

我遇到了一個黃瓜測試套件的問題,我想不出任何調試方法。如何調試隨機黃瓜失敗?

我們有一個相當大的西瓜黃瓜功能,所有這些都通過開發機器。問題是,當我們在ci服務器上運行整個黃瓜套件時,一些場景失敗了,並且單獨運行它們使得它們在場景嘗試填充表單時隨機傳遞和失敗(顯然))(顯然,它不在頁)。由於隨機故障,我認爲這是一個時間問題與ajax請求,但似乎並不是這樣,因爲增加真正的大睡眠(嘗試從1到60秒的一切)不會改變任何東西。這個場景更加有趣,因爲還有另外3個場景運行相同的步驟,並且第一個場景以相同的順序出現故障,除了刪除第一個場景外,這些場景都會通過,在這種情況下,第一個運行這些步驟的場景是一個失敗。

是否有任何技巧在黃瓜上調試這種古怪?功能(請記住這些場景總是在開發機器上傳遞,問題在於ci服務器)。

謝謝!

+1

我很抱歉,但標題是熱鬧的背景下。 XD – 2013-03-11 10:28:47

回答

0

我也有機會調試只在CI上覆制的間歇性測試失敗。根據我的經驗,問題總是歸結爲幾個基本原因:

  1. 前端的競爭條件。例如,在xhr回調之前啓用輸入表單會添加默認值。
  2. 「樂觀」從前端寫入。有時候,前端工程師會通過忽略結果而使涉及PUT/POST請求的操作更具響應性。在這種情況下,無法讓Cucumber等待請求完成,因此對數據庫中狀態更改的測試將與應用程序進行比賽。
  3. 請求測試夾具中不可用的資源。例如,對第三方API的請求可能會被CI阻止。有時URL在測試環境中的構建不正確,特別是在「手動」構建時,而不是使用Rails助手。

間歇黃瓜故障總是具有挑戰性的調試。不要放棄!值得努力弄清楚如何構建一個可測試的,無競爭的前端。您可以使用capybara-webkit來調試僅限CI的故障。獲取要在CI上打印的javascript控制檯輸出,然後可以將打印件添加到您的javascript中以追蹤其狀態,直至測試失敗。你也可以攻擊capybara-webkit來打印關於前端請求的信息。這裏是一個例子:https://github.com/joshuanapoli/capybara-webkit/commit/96b645073f7b099196c5d3da4653606e98a453e4

+0

我嘗試將驅動程序更改爲capybara-webkit(之前我們使用的是poltergeist),以及間歇性失敗之前的功能不再失敗。我假設這必定是一個對於極端主義者的錯誤,但我無法弄清楚發生了什麼。謝謝你的提示,但我會留意這類事情。 – uorbe001 2013-03-11 14:44:53