このセクションでは、C++test を構成して、作成者を算定してチーム全体に品質タスクを 割り当てる方法を説明します。
このセクションの内容
概要
通常、1 つの開発プロジェクトには SDLC 全体を通じて数多くのチームメンバーが参加します。ア プリケーションロジックの開発者や Web インターフェイスの開発者から、エンドツー エンドプロ セスとトランザクションをテストする QA まで、チームメンバーの構成はさまざまです。
レビューワークフローの自動化、静的解析、単体テスト、実行時エラー検出、SOA ポリシーの推 進、個々の SOA コンポーネントの機能テスト、そしてエンドツー エンド テストシナリオと多岐に わたるテクノロジーによって、C++test はさまざまなチームメンバーのための品質タスク を生成します。これらの品質タスクは適切なチームメンバーに割り当てることができ、手動による 割り当てだけでなく、自動検出された作成者データに基づいて割り当てることもできます。
品質タスクの割り当ては、次の目的で行われます。
- 各チームメンバーが自分の担当するタスクだけをコマンドラインテストから GUI にイン ポートできるようにする。
- 各チームメンバーに、自分に割り当てられたタスクについてだけのレポートを送る。
- どのチームメンバーがどのタスクを担当するかをマネージャーレポートに表示する。
開発者のタスク割り当て
開発者の場合、コードの作成者データは、テストするデータの量に影響するほか、各開発者の [品質 タスク] ビューに表示されるテスト結果に影響します。
テストコンフィギュレーションの [スコープ] 設定を変更することで、指定の期間または指定の日 付の後に作成/ 変更されたファイル/ 行だけをテストするよう、テスト範囲を指定することができま す。さらに、[ユーザーが作成したファイル/ 行だけをテスト] オプションを有効にした場合、[品質タスク] ビューには自分が作成したコードからのタスクと自分に割り当てられたタスクだけが表示 されます。タスクの割り当ての詳細については「Configuring Task Assignment and Code Authorship Settings」を参照してください。
QA のタスク割り当て
QA の場合、Parasoft Test はソース管理データに基づいてさまざまな方法でタスクを割り当てるこ とができます。
- ソース管理システムにあるソースファイルの静的解析を実行するか、またはソース管理シス テムにテストファイルがある機能テストを実行する場合、タスクを割り当てるためにソース 管理システムのデータを使用するよう、Parasoft Test を設定することができます。静的解 析タスクは、その違反を引き起こしたコードの作成者に割り当てられます。テストの失敗は、 そのテストに最後に関わったチームメンバーに割り当てられます。
- Parasoft Test を使ってレビューを自動化する場合、レビュータスクの割り当てはコードレ ビューインターフェイスを介して定義されます。詳細については「コードレ ビュー」のセクションを参照してください。
C++test 環境のプロジェクトにソースファイルを追加した場合、そのソースファイルの最 終更新についての情報だけでなく、そのソースファイルの特定の行に割り当てられたチームメン バーを参照することができます。
- 適切なファイルのエディターを開きます。
- 作成者を参照したい行を右クリックし、ショートカットメニューの [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 ではない作成者が返されます。
- ファイルから作成者へのマッピングは直接指定され、その指定に従って作成者が割り当てられます。
- それ以外には、ローカルユーザーがタスクの責任があると見なされ、ローカルの変更時刻が最終変更時刻と見なされます。
- 抑制されている静的解析違反は、その抑制を実行した開発者に割り当てられます。
ソースコードの特定行に割り当てられた作成者を参照するには、次の操作を行います。
- 該当ファイルのエディターを開きます。
- 作成者を参照する行を右クリックし、ショートカットメニューの [Parasoft] > [ 行の作成者を表示] をクリックします。
ソース管理システムのデータを使って作成者を算定していない場合、選択された特定の行ではなくファイルについての変更情報メッセージが表示されます。
作成者の算定方法の変更
作成者の算定の設定は、次の 2 つの方法で指定できます。
- C++test GUI の [ 設定] ウィンドウの [ スコープと作成者]
- ローカル設定
GUI で作成者の算定方法を変更するには、次の操作を行います。
- [Parasoft] メニューの [ 設定] をクリックして [ 設定] ウィンドウを表示します。
- [Parasoft] の下の [ スコープと作成者] カテゴリをクリックします。
- チェックボックスのオン/ オフを切り替えてスコープと作成者の計算方法を指定します。
- ソース管理システムを使ってスコープを計算: ソース管理システムのデータを使って作成者を算定します。
- ファイルシステム (XML マップ) を使ってスコープを計算: ファイルと作成者のマッピングがある XML ファイルを使って作成者を算定します。詳細については「" ファイルと作成者" のマッピングの指定」を参照してください。
- ファイルシステム ( 現在のユーザー) を使ってスコープを計算: ローカルユーザー名 ( ログインユーザー名) を使って作成者を算定します。
- [OK] をクリックして設定を保存します。
ローカル設定で作成者を設定する方法については、「ローカル設定の指定」を参照してください。
" ファイルと作成者" のマッピングの指定
作成者を自動的に算定するのではなく、どの作成者をどのファイルの担当にするかを直接指定したい場合、ファイルと作成者とのマッピングを指定できます。「C++test 環境設定-概要」の説明にある自動構成プロセスによって、このマッピングをいったん自動的に構成した後にチーム全体で共有できます。
特定のファイルまたはファイルのセットを割り当てる方法を直接指定するには、次の操作を行います。
- マッピング情報を直接入力するための設定を行います。次の操作を行います。
- [Parasoft] メニューの [ 設定] をクリックします。
- 左側のカテゴリリストから [ スコープと作成者] を選択します。
- [ファイルシステム (XML マップ) を使ってスコープを計算] チェックボックスをオンにします。
- ファイルと作成者のマッピングについての情報を入力します。
- 左側のカテゴリリストから、[スコープと作成者] の下の [作成者のマッピング] を選択します。
- [ 新規] ボタンをクリックして、[ パス] と [ 作成者] を指定します。[ パス] にはワイルドカードを使用することができます。以下はワイルドカードの使用例です。
- ?oo/src/SomeClass.java - ファイル名の先頭がスラッシュ (/) 以外の任意の文字であり、最後が "oo/src/SomeClass.c" であるすべてのファイルを割り当てます。
- **.cs - 任意のディレクトリにあるすべての *.c ファイルを割り当てます。
- **/src/** - パス中に src というディレクトリがあるすべてのファイルを割り当てます。
- src/** - src ディレクトリのすべてのファイルを割り当てます。
src/**/Test* - src ディレクトリにあり、名前が "Test" で開始するすべてのファイル ( 例えば src/some/other/dir/TestFile.c ) を割り当てます。
- [変更の保存] をクリックします。
- まだチーム内で設定を共有していない場合、[ エクスポート] ボタンをクリックして作成者マッピングテーブルを XML ファイルとしてエクスポートします。そしてこの XML マッピングファイルを各チームメンバーにインポートさせます。
別の方法として、エクスポートされた XML ファイルを使用するよう、次のいずれかの方法で C++test を設定できます。
- GUI からの設定 - [ スコープと作成者] > [ 作成者のマッピング] で [ 共有ファイル] を選択し、ファイルへのパスを指定します。
- コマンドラインからの設定 - ローカル設定ファイル ( オプションファイル ) で scope.xmlmap=true、scope.xmlmap.file=[file]、および scope.mappings.location プロパティを使ってファイルのパスを指定します。-local-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 スクリプトは、CVS から作成者マッピング ファイルを生成する方法を示しています。他のソース管理システムを使用している場合、適宜変更を加えてください。
#!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(@_); my $author = "DontKnow"; system qq(cvs log $fileName > cvslog.txt); open(TMPFILE, "< cvslog.txt") || die "Could not open cvslog.txt"; while (<TMPFILE>) { chop; if (m/(^date.*author:)(.*)(;[\s]*state)(.*)/) { $author = $2; } } close TMPFILE; return $author; } 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); print "<file path=\"$fileName\" "; print "author=\"$author\" />\n"; } print "</mapping>\n";
" 作成者と作成者" および " 作成者と E-mail" のマッピングの指定
C++test は、ソース管理データ、システムのローカルユーザー設定、@author タグ、XML マッピングファイル、インポートされた scanner.properties ファイルなどからユーザー名を検出します。デフォルトでは、Parasoft Test は検出したユーザー名の値をコード作成者のユーザー名と推測し、そのユーザーの電子メールアドレスを [username]@[mail_domain] と推測します。
しかし、自動検出されたユーザー名を別のユーザー名や電子メールアドレスにマップしたい場合もあります。例えば次のような場合です。
- ある開発者のすべてのタスクを別の開発者に再割り当てする場合。例えば、User1 が開発チームから抜けたため、User1 のすべてのタスクを User2 に引き継がせる場合などです。このマッピングを「作成者から作成者へのマッピング」と呼びます。
- 開発者のユーザー名が電子メールアドレスと一致していない場合。例えば、検出されたユーザー名が tanaka でも、電子メールアドレスは [email protected] である場合などです。このマッピングを「作成者から電子メールアドレスへのマッピング」と呼びます。
これらの作成者の設定をいったん自動的に行った後、「C++test 環境設定-概要」で説明している自動設定プロセスを利用してチーム全体で設定を共有できます。
適切な作成者の設定をまだ自動構成プロセスから行っていない場合、あるいはインポートした設定を変更/ 上書きする場合、検出されたデフォルトのユーザー値を別のユーザー名あるいはアドレスにマッピングできます。次の操作を行います。
- [Parasoft] メニューの [ 設定] をクリックします。
- [Parasoft] > [ 作成者] タブをクリックします。[
- [DTP の設定を使用] チェックボックスがオフになっていることを確認します。
- [ 作成者マッピングの場所] チェックボックスがオフになっていることを確認します。
- 「作成者から電子メールアドレスへのマッピング」を指定するには、次の操作を行います。
- [ ログイン/E-mail/ 完全な名前] の表に移動します。
- [ 追加] ボタンをクリックします。
- マッピングを
- 「作成者から作成者へのマッピング」を指定するには、次の操作を行います。
- [ 作成者からタスクを再割り当て/ 割り当て先作成者] の表に移動します。
- [ 追加] ボタンをクリックします。
- [ 適用] ボタンをクリックして変更を保存します。
- [ 適用] ボタンをクリックして変更を保存します。.
大文字 / 小文字の区別
作成者の値で大文字と小文字を区別するかどうかを設定できます。この設定は、以下の場所の作成者の値に適用されます。
- コードレビュー
- 品質タスク
- レポート
- スコープと作成者
- DTP タスク
- テストコンフィギュレーション ( 例えば [ スコープ] タブの [ 作成者] オプションや [ コー
ドレビュー] タブ)
この設定は、Concerto の大文字/ 小文字の区別の設定に一致させるべきです。デフォルトでは、DTPは大文字と小文字を区別します。DTPでの大文字/ 小文字の区別の設定については、『DTP ユーザーズガイド』を参照してください。
設定の影響
大文字/ 小文字の区別の設定は、同一ユーザー名の複数の違反を、一人のユーザーとして扱うか、複数のユーザーとして扱うかを決定します。
- 区別する: David と DAVID は別々のユーザーとして扱われます。
- 区別しない: David と DAVID は一人のユーザー ( 同じユーザー) として扱われます。
大文字/ 小文字を「区別しない」モードが特に役立つのは、ユーザー名の大文字/ 小文字が重要ではない外部データベースを使用している場合です。david というユーザー名がデータベースでは DAVID として格納されていて、大文字/ 小文字の設定が「区別する」モードの場合、DAVID のタスクとしてインポートされたタスクは、david には影響しません。
大文字/ 小文字の区別の設定
[Parasoft 設定] ダイアログの [Parasoft] > [ 作成者] > [Parasoft Test プラットフォームでユーザー名の大文字/ 小文字を区別しない] オプションで設定します。
次のローカル設定オプションを使って大文字と小文字の区別を設定することもできます。
authors.ignore.case=true|false
ローカル設定の詳細については「ローカル設定の指定」を参照してください。
複数のソース管理システムを使用している場合の作成者の処理
チームメンバーが同じログインで複数のソース管理システムを使用している場合、次のように製品nを起動してソース管理システムから正確な作成者を取得できるようにします。
- C++test スタンドアロン:
cpptest -J-Duser.name=your_username ...
- プラグイン:
eclipse .... -vmargs -Duser.name=your_username
ローカルユーザーの設定
「ローカルユーザー」データを使って作成者を判定している場合、デフォルトではマシンで定義されているローカルユーザー設定を使用します。
別のユーザー名を使用するには、[ 設定] ウィンドウで左側のリストから [Parasoft] を選択し、[ デフォルト] チェックボックスをオフにして [ ユーザー名] フィールドに適切な名前を入力します。