このセクションでは、C++test を構成して、作成者を算定してチーム全体に品質タスクを割り当てる方法を説明します。

このセクションの内容

概要

通常、1 つの開発プロジェクトには SDLC 全体を通じて数多くのチームメンバーが参加します。アプリケーションロジックの開発者や Web インターフェイスの開発者から、エンドツー エンドプロ セスとトランザクションをテストする QA まで、チームメンバーの構成はさまざまです。

レビューワークフローの自動化、静的解析、単体テスト、実行時エラー検出、SOA ポリシーの推進、個々の SOA コンポーネントの機能テスト、そしてエンドツーエンド テストシナリオと多岐にわたるテクノロジーによって、C++test はさまざまなチームメンバーのための品質タスクを生成します。これらの品質タスクは適切なチームメンバーに割り当てることができ、手動による割り当てだけでなく、自動検出された作成者データに基づいて割り当てることもできます。

品質タスクの割り当ては、次の目的で行われます。

  • 各チームメンバーが自分の担当するタスクだけをコマンドラインテストから GUI にインポートできるようにする。
  • 各チームメンバーに、自分に割り当てられたタスクについてだけのレポートを送る。
  • どのチームメンバーがどのタスクを担当するかをマネージャーレポートに表示する。

開発者のタスク割り当て

開発者については、コードの作成者情報によって、どのくらいのコードがテストされるか、また各開発者の品質タスク ビューにどのテスト結果が表示されるかが異なる場合があります。

テストコンフィギュレーションの [スコープ] 設定を変更することで、指定の期間または指定の日付の後に作成/変更されたファイル/行だけをテストするよう、テスト範囲を指定することができます。さらに、[ユーザーが作成したファイル/行だけをテスト] オプションを有効にした場合、[品質タスク] ビューには自分が作成したコードからのタスクと自分に割り当てられたタスクだけが表示されます。

QA のタスク割り当て

QA の場合、C++test はソース管理データに基づいてさまざまな方法でタスクを割り当てるこ とができます。

  • ソース管理システムにあるソースファイルの静的解析を実行するか、またはソース管理システムにテストファイルがある機能テストを実行する場合、タスクを割り当てるためにソース管理システムのデータを使用するよう、C++test を設定することができます。静的解析タスクは、その違反を引き起こしたコードの作成者に割り当てられます。テストの失敗は、 そのテストに最後に関わったチームメンバーに割り当てられます。

C++test 環境のプロジェクトにソースファイルを追加した場合、そのソースファイルの最終更新についての情報だけでなく、そのソースファイルの特定の行に割り当てられたチームメンバーを参照することができます。

  1. 適切なファイルのエディターを開きます。
  2. 作成者を参照したい行を右クリックし、ショートカットメニューの [Parasoft] > [行の作成者を表示] をクリックします。

なお、ソース管理システムのデータを使って作成者を算出していない場合、選択した行に対する情報ではなく、ファイルの変更情報が表示されます。

C++test の作成者とタスクの割り当て

C++test は、サポートするソース管理システムのデータ、@author Javadoc タグ、xml マッピングファイル (ファイルと作成者の直接マッピング)、および現行のローカルユーザーに基づいて「作成者」を割り当てることができます。

複数のソースを使って作成者を判定する場合、作成者の優先順位は、[設定] ウィンドウの [スコープと作成者] の設定に従って上から下へ判定されます (ソース管理システムのリスト、@author タ グ、xml マッピングファイル、最後に現行ユーザー)。ただし、選択したオプションが作成者を判定できない場合 (例えば @author タグが選択されたがファイルには @author タグがない場合)、 C++test は選択された次のオプションに基づいて作成者を判定します。それでも作成者を判定できなかった場合、ユーザーは "unknown" として設定されます。同様に、どのオプションも選択されていない場合もユーザーは「unknown」に設定されます。

ソース管理データと @author タグの両方を作成者の算定に使用している場合、可能なかぎりソース管理データが使用され、 @author はソース管理されていないファイルとプロジェクトに対してだけ使用されます。

現行ローカルユーザーを算定に使用している場合、ローカルユーザーが作成者と見なされ、ローカルの時刻が最終修正時刻と見なされます。

作成者とタスクは次のように割り当てられます。

  • ソース管理データに基づいて作成者が決定される場合、C++test はソース管理データを読み込み、ファイル/行/メソッドなどを最後に変更した、タスクに責任があるユーザーを特定します。そしてそのユーザーにタスクを割り当てます。
  • @author Javadoc タグに基づいて作成者が決定される場合、C++test はタスクに最も近い @author Javadoc タグを探し、返された作成者にタスクを割り当てます。
    • メソッドレベルのタスクの場合、メソッド => 包含クラス => ファイルの最初のクラスの順番で Javadoc がチェックされます。最初の null ではない作成者が返されます。
    • クラスレベルのタスクの場合、クラス => ファイルの最初のクラスの順番でJavadoc がチェックされます。最初の null ではない作成者が返されます。
    • 行レベルのタスクの場合、包含しているメソッド => クラス => ファイルの最初のクラスの順番で Javadoc がチェックされます。
    • ファイルおよびファイルレベルのタスクの場合、最初の null ではない作成者が返されます。
  • ファイルから作成者へのマッピングは直接指定され、その指定に従って作成者が割り当てられます。
  • それ以外には、ローカルユーザーがタスクの責任があると見なされ、ローカルの変更時刻が最終変更時刻と見なされます。
  • 抑制されている静的解析違反は、その抑制を実行した開発者に割り当てられます。

ソースコードの特定行に割り当てられた作成者を参照するには、次の操作を行います。

  1. 適切なファイルのエディターを開きます。
  2. 作成者を参照したい行を右クリックし、ショートカットメニューの [Parasoft] > [行の作成者を表示] をクリックします。

ソース管理システムのデータを使って作成者を算定していない場合、選択された特定の行ではなくファイルについての変更情報メッセージが表示されます。

作成者の算定方法の変更

作成者の算定の設定は、次の 2 つの方法で指定できます。

  • C++test GUI の [設定] ウィンドウの [スコープと作成者]
  • 設定ファイル

GUI で作成者の算定方法を変更するには、次の操作を行います。

  1. [Parasoft] メニューの [設定] をクリックして [設定] ウィンドウを表示します。
  2. [Parasoft] の下の [スコープと作成者] カテゴリをクリックします。
  3. チェックボックスのオン/オフを切り替えてスコープと作成者の計算方法を指定します。
    • ソース管理システムを使ってスコープを計算: ソース管理システムのデータを使って作成者を算定します。
    • ファイルシステム (XML マップ) を使ってスコープを計算: ファイルと作成者のマッピングがある XML ファイルを使って作成者を算定します (たとえば developer1 をあるファイルのセットの担当者とし、developer2 を別のファイルのセットの担当者とするなど)。詳細については「"ファイルと作成者" のマッピングの指定」を参照してください。
    • ファイルシステム (現在のユーザー) を使ってスコープを計算: ローカルユーザー名 (ログインユーザー名) を使って作成者を算定します。
  4. [OK] をクリックして設定を保存します。

設定ファイルで作成者を設定する方法については、「設定ファイルでの指定」を参照してください。

" ファイルと作成者" のマッピングの指定

特定のファイルまたはファイルのセットを割り当てる方法を直接指定したい場合、次の操作を行います。

  1. マッピング情報を直接入力するための設定を行います。次の操作を行います。
    1. [Parasoft] メニューの [設定] をクリックして [設定] ウィンドウを表示します。
    2. 左側のカテゴリリストから [スコープと作成者] を選択します。
    3. [ファイルシステム (XML マップ) を使ってスコープを計算] チェックボックスをオンにします。
  2. ファイルと作成者のマッピングについての情報を入力します。
    1. 左側のカテゴリリストから、[スコープと作成者] の下の [作成者のマッピング] を選択します。
    2. [ 新規] ボタンをクリックして、[ パス] と [ 作成者] を指定します[パス] にはワイルドカードを使用することができます。以下はワイルドカードの使用例です。
      • ?oo/src/SomeClass.java - ファイル名の先頭がスラッシュ (/) 以外の任意の文字であり、最後が "oo/src/SomeClass.java" であるすべてのファイルを割り当てます。
      • **.cs - 任意のディレクトリにあるすべての *.cs ファイルを割り当てます。
      • **/src/** - パスにフォルダー名 "src" が含まれるすべてのファイルを割り当てます。
      • src/** - "src" ディレクトリにあるすべてのファイルを割り当てます。
      • src/**/Test* - src ディレクトリにあり、名前が "Test" で開始するすべてのファイル (例えば src/some/other/dir/TestFile.c) を割り当てます。

        マッピングの順序

        最も一般的なパスをマッピングの最後に置いてください。例えば次の例では、/ATM/** が最も一般的なパスであるため、最後に置かれています。
        /ATM/unittests/**  user 1

        /ATM/other/**       user 2

        /ATM/**                user 3

        この例では、unittests のファイルが user 1 に、other のファイルが user 2 に、そしてその他のすべての ATM プロジェクトファイルが user 3 に割り当てられます。もしこの順序を逆にすると、ATM のすべてのファイルが user 3 に割り当てられます。

    3. [変更の保存] をクリックします。
  3. まだチーム内で設定を共有していない場合、[エクスポート] ボタンをクリックして作成者マッピングテーブルを XML ファイルとしてエクスポートします。そしてこの XML マッピングファイルを各チームメンバーにインポートさせます。

別の方法として、エクスポートされた XML ファイルを使用するよう、次のいずれかの方法で C++test を設定できます。

  • GUI からの設定 - [スコープと作成者] > [作成者のマッピング] で [共有ファイル] を選択し、ファイルへのパスを指定します。
  • コマンドラインからの設定 - 設定ファイル (オプションファイル ) で scope.xmlmap=true、scope.xmlmap.file=[file]、および scope.mappings.location プロパティを使ってファイルのパスを指定します。-settings オプションを使って属性を設定する方法については、「設定ファイルでの指定」および製品個別の『ユーザーズガイド』の「テストの基本事項」>「コマンドラインインターフェイスからのテスト」を参照してください。なお、コマンドラインでの設定は GUI でのすべての作成者設定を上書きする点に注意してください。

次のコードは、XML 作成者マッピングファイルの例です。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE authorship (View Source for full doctype...)>
<authorship>
  <!-- assigns all files named: "foo/src/SomeClass.java" to "author1" -->
  <file author="author1" path="foo/src/SomeClass.java" />

  <!-- assigns all files whose names starts with any character (except /) and ends with "oo/
src/SomeClass.cs" to "author2" -->
  <file author="author2" path="?oo/src/SomeClass.cs" />
  <!-- assigns all *.c files in any directory to "author3" -->
  <file author="author3" path="**.c" />
  <!-- assigns every file whose path has a folder named "src" to "author4" -->
  <file author="author4" path="**/src/**" />
  <!-- assigns all files located in directory "src" to "author5" -->
  <file author="author5" path="src/**" />
  <!-- assigns all files in directory "src" whose name starts with "Test" i.e. "src/some/
other/dir/TestFile.java" to "author6" -->
  <file author="author6" path="src/**/Test*" />
</authorship>

ソース管理システムから XML マッピング ファイルを生成する

スクリプトを利用すると、ソース管理システムから XML マッピング ファイルを生成できます。次のサンプル Perl スクリプトは、Git から作成者マッピング ファイルを生成する方法を示しています。他のソース管理システムを使用している場合、適宜変更を加えてください。

#!perl
 
############################################################
# GetAuthors.pl
# Sample script to generate file --> author mapping.
# Note that this is usually run only once, when you first
# deploy C++test .
#
# This script assumes that you have a list of all the files in the
# project. For example, such a list can be obtained on windows
# by using "dir /s/b *.c" for c files.
############################################################
 
sub GetAuthor
############################################################
# Gets the author (person who last modified the file) for
# the input file.
############################################################
{
   my $fileName = shift(@_);
   return `git log --pretty=format:"%an" -1 $fileName`;
}
 
print "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n";
print "<mapping>\n";
 
############################################################
# AllCFiles.txt has a list of all the c files in the
# project. The following loop iterates through all the
# files and assigns owners to each.
############################################################
open(FILELIST, "<AllCFiles.txt") || die "Could not open AllCSFiles.txt";
while (<FILELIST>)
{
    chop;
    my $fileName = $_;
    my $author = GetAuthor($fileName);
    if ($author eq "")
    {
        $author = "DontKnow";
    }
    print "<file path=\"$fileName\" ";
    print "author=\"$author\" />\n";
}
 
print "</mapping>\n";

"作成者と作成者" および "作成者と E-mail" のマッピングの指定

デフォルトでは、C++test はソース管理データ、システムのローカルユーザー設定、@author タグ、XML マッピングファイル、インポートされた scanner.properties ファイルなどからユーザー名を検出します。検出したユーザー名の値をコード作成者のユーザー名と推測し、そのユーザーの電子メールアドレスを [username]@[mail_domain] と推測します。

しかし、自動検出されたユーザー名を別のユーザー名や電子メールアドレスにマップしたい場合もあります。例えば次のような場合です。

  • ある開発者のすべてのタスクを別の開発者に再割り当てする場合。例えば、User1 が開発チームから抜けたため、User1 のすべてのタスクを User2 に引き継がせる場合などです。このマッピングを「作成者から作成者へのマッピング」と呼びます。
  • 開発者のユーザー名が電子メールアドレスと一致していない場合。例えば、検出されたユーザー名が tanaka でも、電子メールアドレスは [email protected] である場合などです。  このマッピングを「作成者から電子メールアドレスへのマッピング」と呼びます。

これらの作成者の設定をいったん自動的に行った後、「C/C++test 環境設定-概要」で説明している自動設定プロセスを利用してチーム全体で設定を共有できます。

適切な作成者の設定をまだ自動構成プロセスから行っていない場合、あるいはインポートした設定を変更/上書きする場合、検出されたデフォルトのユーザー値を別のユーザー名あるいはアドレスにマッピングできます。次の操作を行います。

  1. [Parasoft] メニューの [設定] をクリックします。
  2. [Parasoft] > [作成者] タブをクリックします。
  3. [DTP の設定を使用] チェックボックスがオフになっていることを確認します。
  4. [作成者マッピングの場所] チェックボックスがオフになっていることを確認します。
  5. 「作成者から電子メールアドレスへのマッピング」を指定するには、次の操作を行います。
    1. [ログイン/E-mail/ 完全な名前] の表に移動します。
    2. [追加] ボタンをクリックします。
    3. 表にマッピングを指定します。
  6. 「作成者から作成者へのマッピング」を指定するには、次の操作を行います。 
    1. [作成者からタスクを再割り当て/割り当て先作成者] の表に移動します。
    2. [追加] ボタンをクリックします。
    3. 表にマッピングを指定します。
  7. [適用] ボタンをクリックして変更を保存します。

GUI で作成者を指定する場合 - DTP との統合

C/C++test が DTP と接続されている場合、チーム メンバーの名前または E-mail アドレスの入力を始めると、自動的に候補が表示されます。たとえば、作成者名を指定するのに "a" と入力すると、"a" で始まるユーザー名のリストから簡単に作成者を選択できます。この機能は、チーム メンバーの名前または E-mail アドレスを入力可能なすべての UI 要素 (たとえば E-mail 通知、タスクの再割り当てなど) に適用されます。

DTP データベースにユーザー名または E-mail アドレスが存在しない場合、C/C++test は警告メッセージを表示します。

設定ファイルでの作成者マッピングの指定

コマンドラインまたは DTP に保存された C++test の設定から、設定ファイルで作成者マッピングを指定することもできます。

次の操作を行います。

  1. authors.mappings.location=local を設定します。
  2. authors.mapping を使って適切なマッピングを指定します。
  3. authors.user を使って電子メールの設定を指定します。

例:

authors.mappings.location=local

authors.mapping1=baduser,gooduser

authors.mapping2=brokenuser,fixeduser

authors.mapping3=olduser,newuser

authors.user1=gooduser,[email protected],Gooduser Stowe

authors.user2=fixeduser,[email protected],Fixeduser White

...

大文字 / 小文字の区別

作成者の値で大文字と小文字を区別するかどうかを設定できます。この設定は、以下の場所の作成者の値に適用されます。

  • 品質タスク
  • レポート
  • スコープと作成者
  • DTP タスク
  • テスト コンフィギュレーション

この設定は、DTP の大文字/ 小文字の区別の設定に一致させるべきです。デフォルトでは、DTPは大文字と小文字を区別します。DTPでの大文字/小文字の区別の設定については、『DTP ユーザーズガイド』を参照してください。

設定の影響

大文字/小文字の区別の設定は、同一ユーザー名の複数の違反を、一人のユーザーとして扱うか、複数のユーザーとして扱うかを決定します。

  • 区別する: David と DAVID は別々のユーザーとして扱われます。
  • 区別しない:  David と DAVID は一人のユーザー (同じユーザー) として扱われます。

大文字/小文字を「区別しない」モードが特に役立つのは、ユーザー名の大文字/小文字が重要ではない外部データベースを使用している場合です。david というユーザー名がデータベースでは DAVID として格納されていて、大文字/小文字の設定が「区別する」モードの場合、DAVID のタスクとしてインポートされたタスクは、david には影響しません。

大文字/小文字の区別の設定

設定パネルで大文字/小文字の区別を設定できます。大文字/小文字の区別を無効にするには、[Parasoft] > [作成者] に移動し、[Ignore case of user names in Parasoft Test platform] オプションを有効にします。このオプションを有効にすると、C/C++test は大文字/小文字が違うだけのユーザー名は同一だとみなします (たとえば "John" と "john" は同じユーザーだとみなされます)。

次の設定オプションを使って大文字と小文字の区別を設定することもできます。 authors.ignore.case=true|false設定オプションの詳細については「設定ファイルでの指定」を参照してください。

複数のソース管理システムを使用している場合の作成者の処理

チームメンバーが同じログインで複数のソース管理システムを使用している場合、次のように製品を起動してソース管理システムから正確な作成者を取得できるようにします。

  • C/C++test スタンドアロン: cpptest -J-Duser.name=your_username ...
  • プラグイン: eclipse ....-vmargs -Duser.name=your_username

ローカルユーザーの設定

「ローカルユーザー」データを使って作成者を判定している場合、デフォルトではマシンで定義されているローカルユーザー設定を使用します。別のユーザー名を設定するには、最上位の Parasoft 設定ページに移動し、[デフォルト] オプションを無効にして、[ユーザー名] フィールドに使用する名前を入力します。

  • No labels