5

我遇到了一些難題。我正在寫一篇過時的系統,正在寫Behat測試。它在很大程度上很有用。但是我注意到一個問題,即如果我針對當前環境測試的數據是來自不同的環境,則Behat測試將失敗。Behat可以根據當前環境使用不同的步驟數據嗎?

例如,如果我測試在QA電話功能的搜索,並希望它返回我不能使用同一個電話號碼,實體ID在RC測試或現場特定實體的ID。所以我想要一個可管理的方式來維護Behat中每個環境的測試數據。

一對夫婦的想法已經扔在這裏,如將數據放入型材(高度不希望的)或創建CSV文件,每個功能。我也一直在思考建築全部使用表或場景勾勒出具體的數據,場景和具有將用於覈對當前的環境和當行不是當前環境跳過環境列。也許使用Background或其他鉤子來幫助解決這個問題。

有誰知道的一個很好的方法或最佳實踐來處理多個環境與每個貝哈特不同的數據集?

回答

5

根據KNP實驗室的人員在他們的一次培訓中,最佳實踐是創建必要的數據,以使場景成功作爲給定或背景的一部分,因此最終的步驟是「給定我有7個電話號碼「,並且該步驟定義將插入7個電話號碼,這些電話號碼可用於該場景的其餘部分。

當然,如果你想運行對生產現場的考驗,我已經看到了真正的策略取決於所涉及的具體的數據量,以及如何揮發的數據是對生產變化往往是不可行的。

由於最佳實踐也規定,功能文件應根據受益人可理性期望理解的功能來描述應用程序行爲,因此在功能文件中公開環境條件數據的任何內容都不是最佳方法。目標特徵用戶可能不知道變化的環境。

如果生產數據足夠穩定,可以編寫測試,我會考慮在behat.yml中設置一個參數或配置文件,它可以用來在運行時指示環境並編寫自定義步驟定義。自定義步驟定義可以在一種情況下提供已知的生產值,並將這些值插入其他值中。而小黃瓜仍然會看起來像「假設我有7個電話號碼」,因此該功能將專注於業務價值和對用戶而不是測試環境的好處。

+0

是啊,這樣的情況有一定的困難。我確實喜歡通過從一些自定義函數中提取數據並定義在步驟調用中提供多少數據來尋找另一種爲環境提供數據的方法。 – pthurmond

+1

雖然現在我們已經開始削弱Behat對非開發人員的質量保證人員的有用性。在這種情況下,我是開發人員,質量保證人員第二(作爲測試軟件工程師)。但對於我的團隊中另外兩位QA人員,我不能期望他們知道SQL,也不知道PHP。這個想法是儘可能簡單地輸入步驟和數據,然後能夠在後臺無GUI服務器上自動運行測試。 – pthurmond

+0

我會這樣說,我們正在開始一個新的項目,將取代目前的系統。在此期間,我正大力推薦他們爲我們提供將數據即時注入系統所需的方法,然後進行測試,最後再將其退出。不幸的是,在我們完全轉向我們目前正在建立的新系統之前,還需要一年甚至更長的時間。 – pthurmond

相關問題