TestRail 4.1 以降、TestRail にはさまざまな Excel/CSV 形式をサポートする Excel/CSV の直接インポート機能が含まれるようになりました。単純な 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