SQA Insider

ソフトウェア品質保証、ソフトウェアテストについてのメモ書き。

Bugzillaユーザー権限設定メモ

Bugzillaにおけるユーザーは、「Bugzillaに対してどのようなユーザー権限をもつか」(ユーザー権限)と「どのプロダクトに対してどのような権限をもつか」(アクセス範囲)というふたつの軸で定義する必要があります。どちらの軸を定義するにしてもグループの機能を使うのでちょっとわかりづらいですね。

今回はユーザー権限の設定について解説します。

ユーザー権限の解説

ユーザー権限の実体は、システム型をもつグループがそれに当たります。
以下に具体的な権限の内容について記します。

tweakparams			パラメーターおよび既定のユーザー設定のカスタマイズ
editusers			すべてのユーザーのユーザー権限の変更
creategroups			グループの設定
admin				カスタムフィールド、フィールド値、ワークフロー
bz_quip_moderators		ヘッドラインの承認
bz_sudoers			他ユーザーとしてふるまう
bz_sudo_protect			他ユーザーが自分としてふるまうのを防ぐ
editclassifications		クラス分類の設定
bz_canusewhineatothers		自分以外に対するリマインダーの利用
bz_canusewhines			リマインダーの利用
canconfirm			Bugの有効性確認
editcomponents			プロダクトの設定、フラグの設定
editkeywords			キーワードの作成
editbugs			Bugの報告

ユーザー権限設定のモデルケース

さて、どのような権限が用意されているかがかわったところで、実際の運用のことを考えてみたいと思います。ここではモデルケースとして、運用上のユーザー権限が以下の5つあるものとして設定してみます。

  • 主管理者: Bugzillaのパラメーターをいじることのできる特権的管理者
  • 管理者: Bugzillaのパラメーターはいじれないが、それ以外は何でもできる管理者
  • プロダクト管理者: 各プロダクトのマネージャー・リーダー
  • ユーザー: 管理者でない、ごくごく一般の利用者、バグ報告と、自身に対するリマインダーの作成ができる
  • ログインしていない人: 利用者でない可能性があるので、Bugzillaに対して何もできない

この5つをグループの設定で実現するには以下のよう設定します。

  • パラメーター requirelogin を有効にする。
  • グループ editbugs, bz_canusewhines がすべてのユーザーを含むようにする。 (正規表現 = .* )
  • 主管理者、プロダクト管理者に相当するグループを作成する。(root, productman)
  • グループの継承関係を以下の通りとする。
root (主管理者)						
	tweakparams					パラメーター、既定のユーザー設定
	editusers					すべてのユーザーのユーザー権限の変更
	creategroups					グループの設定
	admin (管理者)					カスタムフィールド、フィールド値、ワークフロー
		bz_quip_moderators			ヘッドラインの承認
		bz_sudoers				他ユーザーとしてふるまう
		bz_sudo_protect				他ユーザーが自分としてふるまうのを防ぐ
		editclassifications			クラス分類の設定
		productman (プロダクト管理者)		
			bz_canusewhineatothers		自分以外に対するリマインダーの利用
			canconfirm			Bugの有効性確認
			editcomponents			プロダクトの設定、フラグの設定
			editkeywords			キーワード

editusers, creategroups の権限を不特定多数に渡すと、意図せず権限昇格させてしまう危険性があるため特に注意が必要です。

アクセス範囲の解説については別途行います。

Bugリストに表示するBugzilla既定の項目を定義する

Bugリストに表示するBugzilla既定の項目はテンプレートでは定義できないので、下記のファイルを編集します。

/var/www/html/bugzilla/Bugzilla/Constants.pm

下記の箇所を探します。

# The default list of columns for buglist.cgi
use constant DEFAULT_COLUMN_LIST => (
    "product", "component", "assigned_to",
    "bug_status", "resolution", "short_desc", "changeddate"
);

たとえば下記のように変更します。

# The default list of columns for buglist.cgi
use constant DEFAULT_COLUMN_LIST => (
    "bug_id", "opendate", "changeddate", "priority", "bug_severity",
    "bug_status", "resolution", "short_desc"
);

IEのクロスブラウザーテストにmodern.IEを利用する

IE向けのWebアプリケーションをテストする場合、F12開発ツールブラウザーモードと
ドキュメントモードを切り替えてテストするだけでは不十分なことがあります。
かといって、いまさら Windows Vista とかのライセンスを用意するとかは勘弁してほしいところ。
そこで、マイクロソフトが無償で提供してくれている modern.IE仮想マシンを利用します。
Virtual Machine (VM), Windows Virtual PC & Browserstack | Modern.IE

これは端的に言うと、IEの動作検証をするためのWindowsVMイメージファイルです。
各OSごとに複数のバージョンのIEが導入された状態のVMイメージファイルが提供されています。
IEを利用する以外の用途のためには提供されていないので、リモートデスクトップでつながらない、
Windows Updateが無効になっているなどの特徴があります。

ライセンスは初回起動後一定期間で切れますが、コマンドを実行することで延長することができます。
詳しくは起動後のデスクトップの背景を参照してください。

一部のOSではライセンスを延長する手段が提供されていませんが、
ダウンロードしたVMイメージファイルを:消さずにとっておけばOK。

StatSVN/StatCVS 使い方メモ

StatSVN

StatSVNのダウンロード

http://www.statsvn.org/

SVNのログをファイルに出力する

YYYY-MM-DDに6日前の日付を指定すれば、直近1週間分の解析ができる。XML形式で出力。

svn log -r {YYYY-MM-DD}:HEAD --xml -v> <ログファイル名>

解析実行

java -jar statsvn.jar m-filter.log c:\src\sample -output-dir c:\temp -title "Sample Product" -include "**/*.h;**/*.c;**/*.cpp;**/*.hpp;**/*.sh" -exclude "projects/jogai/**;projects/src/gaibu/**"

実行すると、PuTTYにいろいろ怒られる場合があるが、すべて無視してOK。
出力先ディレクトリは存在しなくても可。

解析結果を見る

いろいろファイルが生成されるが、c:\temp\index.html を開く。
日本語が文字化けする場合は、ブラウザーの表示文字エンコードSHIFT_JISにしてあげればOK。

CVSの場合

StatCVSという同様のツールがある。使い方もほぼ同じ。

http://statcvs.sourceforge.net/

CVSのログをファイルに出力する

例: YYYY-MM-DD以降のログが欲しい場合

cvs log -d ">YYYY-MM-DD JST" > <ログファイル名>

解析実行

java -jar -mx1280m statcvs.jar cvs.log c:\src\sample -output-dir c:\temp -title "Sample Product" -include "**/*.h;**/*.c;**/*.cpp;**/*.hpp;**/*.sh" -exclude "projects/jogai/**;projects/src/gaibu/**"

ブラウザーのプロキシ設定における例外設定の書き方 (IEとFF)

ループバックIP、プラベートIP、およびLANにしか公開しないサーバーに対してはプロキシを通したくないときの例外設定。
必要に応じて、これに社内から見たときの識別名も追記する。

Firefox

localhost, .local, 127.0.0.1, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16

IE

localhost; *.local; 127.0.0.1; 10.*.*.*; 172.16.*.*; 192.168.*.*