2013-04-29 83 views
3

我們有一個數據採集系統,由許多程序和腳本一起運行,一些依次運行,大部分並行運行在不同的機器上。測試複雜多進程系統的工具是什麼?

我們使用Jenkins構建和運行單元測試。

我們現在想通過使用數據生成器作爲系統的輸入並檢查數據採集鏈的輸出來測試整個系統。

簡化的步驟視圖來測試系統:

  1. 還原系統(數據庫,封裝在儲存庫中,重新啓動的虛擬機)
  2. 配置系統根據需要(寫入配置文件被使用,更新數據庫)
  3. 推出爲數不多的父進程需要等他們做好準備
  4. 開始數據輸入
  5. 一旦完成,收集指標和業績,比較人口會d結果,檢查日誌中的錯誤消息,...

理想情況下,我們將運行它不同的配置和輸入。

你會用什麼工具來做到這一點?或者你會嘗試直接在詹金斯做到這一點?

回答

2

答案是:Robot Framework(參見12)。

  • 支持數據驅動測試和行爲測試
  • 測試是使用用戶定義的關鍵字寫入,在一個人樣的語言。易於開發,易於閱讀,易於維護。
  • 很多庫可以訪問不同的功能(ssh連接,數據庫,.....)
  • 可以使用用python,java或其他語言編寫的自定義庫進行擴展。
  • 每個測試的詳細日誌中生成

我不知道詹金斯,但我敢肯定,你可以機器人框架與之集成。這與運行Python腳本一樣簡單。

2

根據系統的複雜性,您可以使用一系列工具。一般來說,您需要某種形式的工作流程,並在結果中顯示結果。不要給出一個明確的答案,讓我給你指出一些工具/插件。

詹金斯:

  • 的多椎插件使你可以指定工作流程爲階段,與並行作業階段
  • 您創建一個簡單的DSL與並行和相關的作業自己的身材流動的BuildFlow插件咱們。
  • 收集指標並隨時間繪製這些指標的Plot插件
  • xUnit插件用於從測試中捕獲JUnit樣式xml或JSON,例如由一個小腳本或xUnit框架(如py)生成。測試Python或更奇特的東西。
  • RobotFramework plugin與OFrandeDienne的答案有關。

Vagrant:Vagrant基本上是VirtualBox虛擬機上的一個命令行界面。您可以使用它來同時啓動多個虛擬機(甚至可以從Jenkins完成)。使用預配,如木偶,廚師,SaltStack設置你的數據庫,配置等

構建流程的工具,如運行時間設計自動化(RTDA)提供。商業。這很可能是一種矯枉過正。

+0

對,但這是理論。我對真實的生活經歷更感興趣。特別是,**我想知道使用這些工具**測試複雜系統時發現的問題和限制。例如:他們是否升級?測試是否容易維護?我可以參數化它們嗎(即測試幾種操作系統,體系結構等)?參數化和可視化能很好地結合在一起嗎?等等。使用哪個框架來處理虛擬機,我將編寫多少集成代碼? – salva 2013-05-07 10:36:49

+0

我覺得這套工具可以用來設置一個複雜的多組件系統的測試,但它不會是同質的,可維護的,易於理解的等等。 – OGrandeDiEnne 2013-05-10 21:50:06

+0

Robot Framework是一個設計用於編寫驗收測試的工具,對於任何系統架構或工作流程都不是特別緊張我用它來檢查由〜20個網絡組件組成的系統,並進行數百次測試。 – OGrandeDiEnne 2013-05-10 21:52:00

1

如果您的測試服務器有OpenSSH或其他一些SSH服務器的服務,你可以開始通過SSH香奈兒的考驗。

例如,在Java語言:

  1. 你可以使用TestNG或JUnit來組織測試案例,既容易與詹金斯集成。
  2. 在測試代碼,導入JSCH並創建自己的SSH客戶機到遠程服務器上執行你的命令行。或者將命令行推送到plink.exe(Putty的一部分)或一些其他第三方ssh客戶端,這些客戶端也將用於執行命令行。 對於並行執行,只需使用多線程來推送命令。
  3. 檢查返回的代碼和消息。

以同樣的方式,你也可以使用Robot Framework來做到這一點,這也很容易與詹金斯(有一個第三方插件爲此)集成。它也有ootb ssh庫。

更有甚者,如果你的應用程序沒有命令行輸入,你也可以使用了AutoIt庫通過GUI運行應用。

2

你沒有告訴我們足夠的關於你的設置給你具體的答案。它強烈依賴於您使用的語言/環境。你可能需要一個或多個以下的組合:

  • 流浪/廚師或木偶/ Veewee/VirtualBox的自動構建虛擬機,配置和運行它們。這是假設一個Linux平臺。廚師+ Linux的容器是快了很多,特別是如果你RAM磁盤上運行它(它應該是一個重複的過程,所以只有神器需要存儲)
  • 與版本控制包緩存所有的系統您需要在虛擬機上安裝的軟件包
  • 運行驗收測試的一些框架,Cucumber,Robot等。如果你的單元測試是好的,你可能能夠逃脫煙霧測試。
  • 模擬您的系統,您可以從日誌中提供運行時結果,以便了解如何以及何時進行縮放。

由於必須填充數據庫並且可能必須拆分測試作業,您很可能會遇到慢速測試問題。一般而言,反饋迴路的運作速度太慢,您可能需要非常有創意才能獲得可接受的週期時間。

在不同的環境中,也有這種不同的工具,並具有多個堆棧是不是很有趣。Jenkins運行在Java堆棧上,Puppet & Ruby堆棧上的廚師,並且還有類似Python的工具,即perl堆棧。你必須自己決定是否想要集成問題的最佳解決方案,或者自己編寫一個單獨的堆棧和代碼。兩者都可以工作,而且都不是微不足道的。團隊經驗很可能是決定性的因素。

DevOps中的反饋環路比現代CI開發環境差很多,因此您必須事先做好更多的規劃研究。一天中可以運行的實驗數量要低得多,至少要20倍左右,所以第一次讓事情順利進行將會很困難。確保你有經驗的人這樣做。

相關問題