MIRACLE
メールサービス申込 ユーザー登録 パートナー情報
お問い合わせ FAQ サイトマップ
MIRACLE LINUXの特長 製品紹介 サービス案内 購入 サポート 技術フォーラム

プロフィール

吉岡 弘隆 - よしおか ひろたか

日本OSS推進フォーラム ステアリングコミッティ委員
OSDL Board of Directorsを歴任
カーネル読書会主宰

2000年6月、ミラクル・リナックスの創業に参加。
95年~98年、米国OracleにてOracle RDBMSの開発をおこなっていた。
98年にNetscapeのソースコード公開(Mozilla)に衝撃をうけ、オープンソースの世界に飛びこみ、ついには会社も立ち上げてしまう。
2008年6月取締役CTOを退任し一プログラマとなった。

ミラクル関連リンク

なかのひと

サイト検索

2009年12月

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

« シリコンバレー精神 | メイン | 日本語文字コードのお話 »

大規模ソフトウェアの効率的な理解(その6)、リグレッションテスト

この「大規模ソフトウェアの効率的な理解(その4)」で巨視的理解、微視的理解という視点を紹介した。前者はソフトウェアをマクロから見ていわば俯瞰する。いわば鳥から見た図だ。後者は細部から全体像を把握する。いわば蟻の目である。地面にはいつくばっている。そのどちらの視点も忘れてはならない。Google Earthみたいに、自由に宇宙から眺めた視点からぐんぐんズームアップしていって、一つ一つのビルまではっきりくっきり見えるミクロの視点まで自在に動きまわらなければならない。

また、「大規模ソフトウェアの効率的な理解(その5)」で動的理解、静的理解という視点を紹介した。デバッガで1ステップ1ステップ実行するのは、微視的な動的理解であり、ソースコードを一行一行読むのは微視的な静的理解である。

リグレッションテストというのは、自動化テストの一種で、あらかじめ予想される出力結果を準備して、ソフトウェアを実行し、その実行結果と、予想した出力を比較し、予想どおりならOKそうでないならNGというように報告するものである。

最近ではテスト駆動型開発などのように最初にテストを準備して、その後に実装にはいるというベストプラクティスが広く実用化しているが、継続的な開発の場合、前バージョンで利用したテストがそのままリグレッションテストになる。

リグレッションテストは、巨視的な動的理解と言える。実装の詳細にたちいらないで(ブラックボックスとして)、入力と出力の組でソフトウェアの挙動を理解するという立場である。

大規模ソフトウェアの場合、ソフトウェアの隅々まで詳細に把握しているということは通常ない。大規模ソフトウェアのある機能を変更、追加する場合、自分の意図しない挙動を発生させることがある。いわばバグを作りこんでしまうことがある。リグレッションテストが整備されていれば、それを早期に自動的に発見できるので、大胆にソフトウェアを修正することが可能になる。リグレッションテストが整備されていないと、影響範囲を特定する事が困難なので変更量は可能な限り局所化最小化しなければならない。

リグレッションテストを整備しておけば、自分のソフトウェアの対する理解を仮想的に極大化できるのである。

OSSの実装も単にソースコードやドキュメントを整備するだけではなく、リグレッションテストをどれだけ充実するかという視点で議論、評価される時が来ているように感じる。よりOSSが大規模になり、修正が頻繁に求められるようになるとリグレッションテストが整備されているかいないかで、その変化に対する対応力が全然かわってくるのである。

Test Early Test Offten

トラックバック

このページのトラックバックURL:
http://www.typepad.jp/t/trackback/4447/6497873

このページへのトラックバック一覧 大規模ソフトウェアの効率的な理解(その6)、リグレッションテスト:

» http://blog.miraclelinux.com/yume/2006/09/post_fa59.html トラックバック ユメのチカラ
「大規模ソフトウェアの効率的な理解(その1、2、3、4、5、6)」などという大袈 [続きを読む]

» リグレッションテスト トラックバック ユメのチカラ
プログラムを変更した際、予想外の影響があらわれる事があり、それをリグレッションあ [続きを読む]

» ソースコードの読み方 トラックバック ユメのチカラ
ソフトウェア工学の標準的なカリキュラムにソースコードの読み方というのがあるのかな [続きを読む]

コメント

リグレッションテストという言葉の意味が間違っていませんか?

http://e-words.jp/w/E383AAE382B0E383ACE38383E382B7E383A7E383B3E38386E382B9E38388.html

コメントありがとうございます。

わたしの説明だと、リグレッションテストの目的「プログラムを変更した際に、その変更によって予想外の影響が現れていないかどうか確認するテスト」というのが明確に伝わらないですね。

リグレッションテストというのは、プログラムを変更した際に、その変更によって予想外の影響が現れていないかどうか確認するテストである。あらかじめ予想される出力結果を準備して、ソフトウェアを実行し、その実行結果と、予想した出力を比較し、予想どおりならOKそうでないならNGというように報告するものである。

という感じですかね。

僕の場合リグレッションテストというより
リグレッション環境という言葉をよく耳にします.

要はたくさんのデータをプログラムに流して
自動的に期待値と照合していく環境なんですが,
e-wordsの解説だけだとその一部の役割しか
書かれていないようにも思えます.
(プログラム開発の初期段階でも
たくさんのデータでテストするときは
リグレッション環境を構築するので)

でも元の目的は変更の副作用を
見つけるためだけのものだったのでしょうか.
ちょっとわかりません.

コメントを投稿

会社情報 採用情報 個人情報保護方針 商標等取り扱い事項 English
Copyright(c)2000-2006 MIRACLE LINUX CORPORATION. All Rights Reserved.