6

我正在開發一個有很多標誌的命令行工具。一個典型的命令如下:是否存在測試命令行參數的既定標準?

mycommand --foo=A --bar=B --jar=C --gnar=D --binks=E 

在大多數情況下,一個「成功」的消息被打印,但我還是想驗證對等的外部數據庫的其他來源,以確保實際成功。

我開始創建集成測試,我不確定這樣做的最佳方法。我主要關心的是:

  1. 有很多很多的標誌組合,我怎麼知道要測試哪些組合?如果你爲可以一起使用的10+標誌做數學運算...
  2. 是否有必要測試標誌的排列?
  3. 如何構建一個能夠自動執行測試並驗證結果的框架。
  4. 如何跟蹤大量標誌並提供訂單,以便輕鬆判斷哪些組合已實施,哪些未實施。

想到手動寫出個別情況並以格式單位測試驗證結果令人望而生畏。

有誰知道可用於自動化此類型測試的模式嗎?也許甚至試圖解決這個問題的軟件?使用GNU命令行工具的人們是如何測試他們的軟件的?

回答

2

我認爲這是非常特定於您的應用程序。

首先,您如何確定您的應用程序執行的成功?它是結果代碼嗎?它是否打印到控制檯?

對於問題2,它取決於如何解析應用程序中的這些標誌。大多數情況下,標誌的順序並不重要,但有時會出現這種情況。我希望你不需要測試標誌的排列,因爲它會增加很多測試的情況。

在一般情況下,您應該分析每個標誌的影響。標誌不會干擾其他標誌,然後只需要測試一次。這也適用於單獨使用的標誌(例如--help或--version)。你還需要分析你應該測試每個標誌的值。通常,你想嘗試每種可能的有效值,以及每種可能的無效值。

我認爲可以編寫一個簡單的bash腳本來執行測試或Python等任何腳本語言。使用嵌套循環,您可以爲每個標誌嘗試可能的值,包括測試無效值和未設置標誌的情況。我將產生一個多維矩陣的結果,應該分析結果是否符合預期。

+0

感謝您的反饋。在大多數情況下,命令產生'成功'消息,但是,命令外部的實體被操縱。所以我不得不做一些額外的工作來驗證(例如查詢數據庫)。我會玩弄嵌套循環的想法,但是,看起來很難以這種方式組織測試。 – trinth 2011-04-29 05:35:07

1

當我編寫應用程序(使用腳本語言)時,我有一個解析命令行字符串的函數。我輸入了我正在開發的文件,並直接對這個函數進行單元測試,而不是涉及到shell。