ページを選択

移行: 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 以降スクリプトの最新版は、次の場所からダウンロードできます。

TestRail CSV Migration

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ファイルに、 MANUALAUTO などの値を持つ Test Type という名前の列が含まれている場合、それらの値を FunctionalAutomated などの値を持つ 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