移行:CSV および Excel
TestRail 4.1以降、TestRail にはさまざまな Excel/CSV 形式をサポートする Excel/CSV の直接インポート機能が含まれるようになりました。単純な Excel/CSV ファイルをインポートする場合は、こちらが推奨される方法になりました。このインポートオプションの詳細については、次を参照してください。
TestRail Excel/CSV インポート
このスクリプトを使用すると、CSV ファイル内の既存のテスト ケースを TestRail のテスト ケースに変換できます。Excel ファイルを変換することもできます。それにはまず CSV ファイルとして保存します (Excel で [ファイル] メニューの [名前を付けて保存] を選択します)。
テストケースを CSV/Excel ファイルに保存する方法については標準的なフォーマットがないため、スクリプトにデータの抽出方法を指示する必要があります。それには、 csv2testrail スクリプトから呼び出される簡単なフィルター ルーチンを作成し、CSV ファイルから実際のデータを抽出します。
データを変換したら、テスト ケースとセクションを TestRail にインポートできます。変換した XML ファイルを TestRail にインポートするには、空のテストスイートを作成してツールバーのインポート ボタンをクリックします。
ダウンロード
CSV & Excel 移行スクリプトの最新版は、次の場所からダウンロードできます。
CSVとExcelファイルをTestRailに移行するためのスクリプト
使用方法
> php csv2testrail.php <filter> <input-file> <output-file> [mode] [delimiter] <filter-script> a PHP script to extract the CSV data for conversion. <input-file> should be the filename of a CSV file with test cases you want to convert (for example, an exported Excel file). <output-file> specifies the filename of the resulting TestRail import/export file. [mode] An optional mode. The following modes are available: --export The default behavior; exports the data to the XML file. --csv For debugging: prints the CSV data as seen by the script --cases For debugging: prints the cases after the filter script was called --tree For debugging: prints the section/case tree after analyzing the cases and sections [delimiter] Allows you to override the default comma delimiter.
カスタム フィルター
CSV ファイルには標準的なレイアウトがないため、実際のデータ抽出を行うには、簡単なフィルター ルーチンを作成する必要があります。CSV/Excel ファイルはそれぞれ異なるため、このようなフィルターが必要になります。たとえば、企業 A はケースのタイトルを列 1 に格納するが、企業 B ではタイトルを列 5 に格納するといった違いがありえます。テスト ケースに複数の行を使用する CSV ファイルなどもあります。
フィルター ルーチンを使用することで、csv2testrail スクリプトが非常に柔軟になり、ほぼどんな CSV ファイルおよび Excel ファイルでも機能します。フィルター ルーチンは PHP で書かれており、csv2testrail スクリプトによって呼び出されます。csv2testrail スクリプトを実行するときに、最初の引数としてカスタムフィルター ルーチンを含む PHP スクリプトを指定します。
このフィルタールーチンは非常に単純な形式です。custom_filter という関数を指定するだけです。唯一のパラメーターとして CSV データが渡されます。$csvパラメーターは、CSV ファイル内の行の配列です。各行は列の配列です。一般的な custom_filter.php スクリプトは次のようになります。
function custom_filter($csv)
{
// Skip the first line
unset($csv[0]);
// Iterate rows and build cases
foreach ($csv as $row)
{
// Create a new case and assign the various properties
$case = array();
$case['title'] = $row[0];
$case['type'] = $row[1];
$case['priority'] = $row[2];
// Custom fields, such as Preconditions, Steps and
// Expected Results
$custom = array();
$custom['preconds'] = $row[3];
$custom['steps'] = $row[4];
$custom['expected'] = $row[5];
$case['custom'] = $custom;
// The export script will automatically create the section
// hierarchy for us. All we have to do is to specify the
// sections for a test case in this format:
//
// "Section 1 > Section 2 > Section 3"
$case['section'] = $row[6];
// Add the cases to the list
$cases[] = $case;
}
// Return all cases
return $cases;
}
custom_filter 関数はケースの配列を返す必要があります。各ケースは、ケースの詳細を指定する連想配列で構成されています。たとえば、 $case[‘title’] 配列要素はケースのタイトルを指定します。ケースのプロパティとして配列を割り当てることもできます。すべての配列と値は XML に変換されます。たとえば、TestRail XML ファイルの custom 要素を指定するには、配列を $case[‘custom’] に割り当てます。したがって、ケースは次のようになります。
[35] => Array
(
[title] => Verify line spacing on multi-page document
[type] => Other
[priority] => 2
[custom] => Array
(
[preconds] => Suspendisse ..
[steps] => In vulputate ..
[expected] => Massa sodales ..
)
[section] => Customization
)
csv2testrail スクリプトは自動的にセクションとケースの階層を構築します。必要な処理は、各ケースのセクション パスを指定することだけです。たとえば、セクション Foo のサブセクションであるセクション Bar にケースを追加するには、次のように $case[‘section’] 要素を指定します。
Foo > Bar
このスクリプトは、必要にあわせて柔軟に CSV データをケースにマッピングでき、あらゆるデータ型をその場で簡単に変換することもできます。たとえば、CSV/Excelファイルに、 MANUAL や AUTO などの値を持つ Test Type という名前の列が含まれている場合、それらの値を Functional や Automated などの値を持つ TestRail の組み込み型に簡単に変換できます。方法については上級サンプルを見てください。
トラブルシューティング
このスクリプトは、フィルター ルーチンのトラブルシューティングに役立ついくつかのオプションをサポートしています。具体的には、オプションの [mode] 引数を使用して、スクリプト実行のさまざまな段階で移行スクリプトの内部データ構造を出力できます。以下のオプションがあります。
引数 | 説明 |
–export | デフォルトの動作: データを XML ファイルにエクスポートし、追加情報を出力しません。 |
–csv | そのままの CSV データを出力します。出力データは、フィルター ルーチンに $csv パラメーターとして渡されるデータそのままなので、さまざまなデータ列の $row インデックスを確認したい場合に特に便利です。 |
–cases | csv2testrail スクリプトが呼び出された後のケースを出力します。csv2testrail スクリプトによって返されるデータです。 |
–tree | ケースの section 値を分析した後のセクション/ケースツリーを出力します。 |
例:
次の例はダウンロード アーカイブに含まれています。
Simple
この例には、簡単な CSV ファイルとそれに対応するフィルター スクリプトが付属しています。CSV ファイルには、タイトル、種類、手順などのさまざまなテスト ケース フィールドが含まれています。フィルター スクリプトはデータを抽出し、正しい形式でケースを返します。サンプルの CSV ファイルを TestRail の XML ファイル形式に変換するには、 examples\simple ディレクトリから次のコマンドを実行します。
> php ../../csv2testrail.php custom_filter.php testdata.csv suite.xml
Advanced
このadvancedサンプルには、CSV ファイルとそれに対応するフィルター スクリプトが付属しています。simpleの例と同様に、CSV ファイルにはテスト ケース データが含まれています。ただし、一部のテストケースは、複数のテスト ステップ行を指定するために複数の行を使用しています。さらに、CSV ファイルには、Priority という名前のフィールドが含まれています。このフィールドは、TestRail の組み込み優先順位形式 (数値) に変換する必要があります。フィルター ルーチンは両方の問題を処理し、CSV ファイルを TestRail の XML ファイル形式に正しく変換します。
CSV ファイルを変換するには、 examples\advanced ディレクトリから次のコマンドを実行します。
> php ../../csv2testrail.php custom_filter.php testdata.csv suite.xml
Steps
この例は、上記のsimpleの例と似ていますが、テスト ケースのステップに steps カスタム フィールド タイプを使用する点が異なります。サンプルの CSV ファイルを TestRail の XML ファイル形式に変換するには、 examples\simple ディレクトリから次のコマンドを実行します。
> php ../../csv2testrail.php custom_filter.php testdata.csv suite.xml