SlideShare a Scribd company logo
1 of 43
自動 Test  と CruiseControl.NET Kuniaki IGARASHI 2006.8.21 http://igarashikuniaki.net/
目次 ,[object Object],[object Object],[object Object],[object Object],[object Object],目標 みなさんが自動テストを始める際の最初の一歩をお手伝い
ところで、 テストを行う理由はなんでしょうか? 不具合を可及的速やかに発見したいから。 (たぶん)
バグ早期発見のメリット ,[object Object],[object Object],[object Object],[object Object],[object Object],ゼロ欠陥法 ( 某 M$ 社 ) 「いかなる場合でも新しいコードを書く前に バグを取り除くことを最優先とする」 ->  バグを発見する手段の 1 つが テスト である。
テストいろいろ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],テストには様々な種類がある 特徴を理解して 適材適所 のテストを行うと効果大
UnitTest メソッドを実行し、 戻り値、副作用が妥当であることを確認するテスト ツール : CppUnit, JUnit, NUnit  など CAddition cadd; //  引数の和を返し、メンバ変数 m_lastResult に結果を格納するクラス int result = cadd.arg2(2,3);  //  テスト対象のメソッドを実行して CPPUNIT_ASSERT_EQUAL((int) 5, result);  //  結果を確認 CPPUNIT_ASSERT_EQUAL((int) 5, cadd.m_lastResult);  //  結果を確認 UnitTest の Code 例 閾値に関する UnitTest をしっかり書けば、 バグの出やすい閾値付近でのバグ発生率減少 リファクタリング時には UnitTest は必須
UnitTest –  テスト駆動開発 ,[object Object],[object Object],[object Object],[object Object],テスト駆動開発 実装する前にテストを書く
定期自動テスト ,[object Object],[object Object],[object Object],[object Object],定期的にビルドを行い、 あらかじめ記述したテストスケジュールを実行する
常時結合 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],定期的にテストを行うためには、 常時 、 自動 でビルド ( 結合 ) する必要があります。
定期自動テストのメリット ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
デイリーテストってばすげー! ここまでのお話で、 デイリーテストをやってみようかなと、ちょっと思ったり。 デイリーテストを導入したいですか? Yes :   これから具体的な方法を説明します。 No :   大人の対応をお願いします。
CruiseControl.NET 概要 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],CruiseControl.NET(CC.NET)   常時結合ツールの 1 つ
CruiseControl.NET で できること ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
CruiseControl.NET を使う 6 つの理由 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
スクリーンショット Mail でのビルド結果レポート Web でのビルド結果レポート
動作環境 ,[object Object],[object Object],[object Object],[object Object],[object Object]
対応ソース管理システム VSS, CVS, Subversion  他
インストール - IIS ContorolPanel -> プログラムの追加と削除 -> Windows コンポーネントの追加と削除 より インターネットインフォメーションサービス (IIS) をインストールします。 http でアクセスできるように設定してください。 ファイアーウォールの設定にも注意。
インストール - CC.NET http://sourceforge.net/projects/ccnet/ から Download してインストールしてください。 注意点: Web レポート機能を使う場合は、 IIS を先にインストールした方が設定が楽です。
インストール – IIS の設定 管理ツールのインターネットインフォメーションサービスで CC.NET web dashbord  が加えられていることを確認してください。 また、 asp.net(aspnet_client) も必要です。 入っていない場合は以下のコマンドを実行してインストールしてください。 > %windir%icrosoft.NETramework1.1.xxxxspnet_regiis.exe -i xxxx にはインストールされたバージョンが入ります。
Windowsサービス設定 ■ Windows サービスの起動設定 ・デフォルトでは手動起動の設定となっているので、自動起動に変更 ・ログオンの項目で適切なユーザーを指定しないと、認証ができず CVS の実行で失敗します。 ・ CC.NET サービスが起動していると、コマンドラインからは実行できないので注意。 ( CC.NET は 1 つしか起動できない。) ■ コマンドラインから手動で起動する場合 > [CruiseControl.NET Path]ervercnet.exe -config:ccnet.config ■ CVS 認証 ・サービスで指定したユーザーで、 CVS login  コマンドを実行して認証をしておきます。 > cvs.exe -d :pserver:[user]:[repository] login
CC.NET 設定ファイル ビルドの指示は以下の xml ファイルに記述します。 C:rogram FilesruiseControl.NETervercnet.config ---  例 ( 概略 )--- <5 分ごとに CVS 監視 > < 変更があれば以下のタスクを実行 > < ソースディレクトリを削除 > <CVS CheckOut> <Build> <Mail  送信 > Examples フォルダ以下に設定ファイルの例が置いてあります。
CC.NET  設定ファイル <project name=&quot;BuildProject&quot;> <name> BuildProject </name> <workingDirectory>D:ruiseControlWorkrc</workingDirectory> <artifactDirectory>D:ruiseControlWorkrc</artifactDirectory> <modificationDelaySeconds>60</modificationDelaySeconds> <publishExceptions>true</publishExceptions> workingDirectory :  ソースをチェックアウトするパス artifactDirectory :  ビルドログを格納するパス modificationDelaySeconds :  最後のチェックインから x 秒間はビルドを開始しない publishExceptions :  CVS などが応答しない場合の Exception エラーを通知
CC.NET 設定ファイル トリガー各種 Interval Trigger <intervalTrigger name=&quot;continuous&quot; seconds=&quot;30&quot; buildCondition=&quot;IfModificationExists&quot;/> 30 秒ごとにソースリポジトリを監視、変更があればタスク実行  Schedule Trigger <scheduleTrigger time=&quot;23:30&quot; buildCondition=&quot;ForceBuild“/> 決まった時間にタスク実行  Url Trigger <urlTrigger url=&quot;http://server/page.html&quot; seconds=&quot;30&quot; buildCondition=&quot;IfModificationExists&quot;/>  URL で指定したファイルを監視、変更があればタスク実行 Project Trigger <projectTrigger serverUri=&quot;tcp://server:21234/CruiseManager.rem&quot; project=&quot;Server“/> 他の CC.NET プロジェクトの状態を監視、条件にあえばタスク実行
CC.NET 設定ファイル Visual Studio Task  ー  VS でビルド実行 (Release, Debug  など指定可 ) Build Publisher  ー ビルド生成物をコピー NAnt Task  – NAnt を実行 Executable Task  ー 実行ファイルを実行 ForceBuildPublisher  ー 他の CC.NET プロジェクトを実行 NUnit Task  ー ユニットテスト実行 Email Publisher  – mail  送信 タスク各種
CC.NET を使った分散ビルド Project Trigger <projectTrigger serverUri=&quot;tcp://server:21234/CruiseManager.rem&quot; project=&quot;Server“/> 他の CC.NET プロジェクトの状態を監視、条件にあえばタスク実行 ForceBuildPublisher <publishers> <forcebuild> <project>AcceptanceTestProject</project> <serverUri>tcp://buildserver2:21234/CruiseManager.rem</serverUri> </forcebuild> </publishers>  他の CC.NET プロジェクトを実行 CC.NET マシンが他の CC.NET マシンを統率または監視してタスクを指示できる。 監視 指示
CC.NET からの通知 メール Web CCTray( ローカルアプリケーションに通知 ) ユーザーのタスクトレイにテスト結果通知
CruiseControl.NET で できないこと、困ること ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
常時結合 ,[object Object],[object Object],[object Object],[object Object]
次に定期テストをやってみましょう。 例えばこんなテストはどうでしょう。
テストの基本はお手本との差分 ,[object Object],[object Object],[object Object],[object Object],では、具体的にどんなテストができるか見ていきましょう。 テスト出力結果 正しい出力結果 ソース変更後、意図しない差分がないか調べる
出力比較テスト Output Reference テスト対象 ソースコード 差分比較 Input 以前に出力して問題がないと確信が持てるものを Reference として使用
ログ比較テスト ソースコードの要点にログ書き出しを仕込んで置く。 変数 Dump や、 関数の In/Out など。 変数の内容や処理経路が異なる場合に発見できる。 下回りのライブラリが置き換えられた場合も、 自分たちのコード上を通る経路が 変わる場合は違いに気づける。 Output テスト対象 ソースコード Log お手本 Log 差分比較 Input
出力適格判断テスト Output テスト対象 ソースコード 出力が規格に適合しているか調べる 規格 Checker 規格適合性 チェックツールを 入手または作成 結果 Reference 差分比較 Input
APIテスト 仮想上位モジュール Output テスト対象 ソースコード Log Reference 差分比較 Input メソッド呼び出し ( 引数 ) 戻り値
パフォーマンス測定 パフォーマンスを定期的に測ることで パフォーマンス悪化を早期発見、原因把握 Output テスト対象 ソースコード 出力にかかる時間を測定 グラフ化 -> コード履歴をみれば悪化の原因を絞り込める Input
マルチプラットホームテスト ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
他のテスト ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
デイリーテスト事例 デイリーテストカレンダー テスト名 ● NG ● 予告 NG ● AllOK 平穏な日々 不穏な時期 リリース その日の結果
参考文献 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
キーワード ,[object Object],[object Object],[object Object],[object Object],調べる時間がなかったけど、面白そうなものたち
技 ,[object Object],[object Object],調べる時間がなかったけど、面白そうなものたち
NAnt  とは何が違うの? レイヤーが違います。 CC.NET は統合ツール Mail 機能、 web ページ作成機能などがあります。 NAnt はビルドツール CC.NET でも NAnt の豊富な機能を利用してビルドなどの作業を行うことができます。 CC.NET でも簡単なビルド指示は出すことができます。

More Related Content

What's hot

第1回concrete5初心者向け勉強会 環境構築
第1回concrete5初心者向け勉強会 環境構築 第1回concrete5初心者向け勉強会 環境構築
第1回concrete5初心者向け勉強会 環境構築 武彦 大山
 
How to manage Cakephp @CakePHP_Fukuoka_2
How to manage Cakephp @CakePHP_Fukuoka_2 How to manage Cakephp @CakePHP_Fukuoka_2
How to manage Cakephp @CakePHP_Fukuoka_2 ichikaway
 
Nc3開発環境(vagrant)構築(Windows編)
Nc3開発環境(vagrant)構築(Windows編)Nc3開発環境(vagrant)構築(Windows編)
Nc3開発環境(vagrant)構築(Windows編)snakajima
 
Engine Yardで作る NetCommons3のクラウド環境
Engine Yardで作る NetCommons3のクラウド環境Engine Yardで作る NetCommons3のクラウド環境
Engine Yardで作る NetCommons3のクラウド環境Yusuke Ando
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejsTakayoshi Tanaka
 
JenkinsとjMeterで負荷テストの自動化
JenkinsとjMeterで負荷テストの自動化JenkinsとjMeterで負荷テストの自動化
JenkinsとjMeterで負荷テストの自動化Satoshi Akama
 
20210515 of4 wi&amp;paraview 5.9.0_motorbike
20210515 of4 wi&amp;paraview 5.9.0_motorbike20210515 of4 wi&amp;paraview 5.9.0_motorbike
20210515 of4 wi&amp;paraview 5.9.0_motorbikeYohichiShiina
 
大規模な負荷でもドキドキしない為のJava EE
大規模な負荷でもドキドキしない為のJava EE大規模な負荷でもドキドキしない為のJava EE
大規模な負荷でもドキドキしない為のJava EETaiichilow Nagase
 
バージョン管理#01 -Subversion編-
バージョン管理#01 -Subversion編-バージョン管理#01 -Subversion編-
バージョン管理#01 -Subversion編-hakoika-itwg
 
ビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテストビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテストTsutomu Chikuba
 
TypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめTypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめYu Nobuoka
 
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
脆弱性もバグ、だからテストしよう PHPカンファンレス2015脆弱性もバグ、だからテストしよう PHPカンファンレス2015
脆弱性もバグ、だからテストしよう PHPカンファンレス2015ichikaway
 
Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術finoue
 
20210515 cae linux_install_vb
20210515 cae linux_install_vb20210515 cae linux_install_vb
20210515 cae linux_install_vbYohichiShiina
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入Yu Nobuoka
 
gulp + sass で目指せ倍速コーディング(東区フロントエンド勉強会 2015年 第1回) 環境準備編
gulp + sass で目指せ倍速コーディング(東区フロントエンド勉強会 2015年 第1回) 環境準備編gulp + sass で目指せ倍速コーディング(東区フロントエンド勉強会 2015年 第1回) 環境準備編
gulp + sass で目指せ倍速コーディング(東区フロントエンド勉強会 2015年 第1回) 環境準備編Toshimichi Suekane
 
1分で分かるdeveloperWorks Premium
1分で分かるdeveloperWorks Premium1分で分かるdeveloperWorks Premium
1分で分かるdeveloperWorks PremiumYUSUKE MORIZUMI
 
自動化を支えるCI/CDツールの私の選択 ~何をするためにCI/CDツールを選ぶか~
自動化を支えるCI/CDツールの私の選択 ~何をするためにCI/CDツールを選ぶか~自動化を支えるCI/CDツールの私の選択 ~何をするためにCI/CDツールを選ぶか~
自動化を支えるCI/CDツールの私の選択 ~何をするためにCI/CDツールを選ぶか~aha_oretama
 

What's hot (20)

第1回concrete5初心者向け勉強会 環境構築
第1回concrete5初心者向け勉強会 環境構築 第1回concrete5初心者向け勉強会 環境構築
第1回concrete5初心者向け勉強会 環境構築
 
How to manage Cakephp @CakePHP_Fukuoka_2
How to manage Cakephp @CakePHP_Fukuoka_2 How to manage Cakephp @CakePHP_Fukuoka_2
How to manage Cakephp @CakePHP_Fukuoka_2
 
Nc3開発環境(vagrant)構築(Windows編)
Nc3開発環境(vagrant)構築(Windows編)Nc3開発環境(vagrant)構築(Windows編)
Nc3開発環境(vagrant)構築(Windows編)
 
Engine Yardで作る NetCommons3のクラウド環境
Engine Yardで作る NetCommons3のクラウド環境Engine Yardで作る NetCommons3のクラウド環境
Engine Yardで作る NetCommons3のクラウド環境
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
 
JenkinsとjMeterで負荷テストの自動化
JenkinsとjMeterで負荷テストの自動化JenkinsとjMeterで負荷テストの自動化
JenkinsとjMeterで負荷テストの自動化
 
jenkinsで遊ぶ
jenkinsで遊ぶjenkinsで遊ぶ
jenkinsで遊ぶ
 
20210515 of4 wi&amp;paraview 5.9.0_motorbike
20210515 of4 wi&amp;paraview 5.9.0_motorbike20210515 of4 wi&amp;paraview 5.9.0_motorbike
20210515 of4 wi&amp;paraview 5.9.0_motorbike
 
Vagrant+Chef
Vagrant+ChefVagrant+Chef
Vagrant+Chef
 
大規模な負荷でもドキドキしない為のJava EE
大規模な負荷でもドキドキしない為のJava EE大規模な負荷でもドキドキしない為のJava EE
大規模な負荷でもドキドキしない為のJava EE
 
バージョン管理#01 -Subversion編-
バージョン管理#01 -Subversion編-バージョン管理#01 -Subversion編-
バージョン管理#01 -Subversion編-
 
ビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテストビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテスト
 
TypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめTypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめ
 
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
脆弱性もバグ、だからテストしよう PHPカンファンレス2015脆弱性もバグ、だからテストしよう PHPカンファンレス2015
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
 
Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術
 
20210515 cae linux_install_vb
20210515 cae linux_install_vb20210515 cae linux_install_vb
20210515 cae linux_install_vb
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 
gulp + sass で目指せ倍速コーディング(東区フロントエンド勉強会 2015年 第1回) 環境準備編
gulp + sass で目指せ倍速コーディング(東区フロントエンド勉強会 2015年 第1回) 環境準備編gulp + sass で目指せ倍速コーディング(東区フロントエンド勉強会 2015年 第1回) 環境準備編
gulp + sass で目指せ倍速コーディング(東区フロントエンド勉強会 2015年 第1回) 環境準備編
 
1分で分かるdeveloperWorks Premium
1分で分かるdeveloperWorks Premium1分で分かるdeveloperWorks Premium
1分で分かるdeveloperWorks Premium
 
自動化を支えるCI/CDツールの私の選択 ~何をするためにCI/CDツールを選ぶか~
自動化を支えるCI/CDツールの私の選択 ~何をするためにCI/CDツールを選ぶか~自動化を支えるCI/CDツールの私の選択 ~何をするためにCI/CDツールを選ぶか~
自動化を支えるCI/CDツールの私の選択 ~何をするためにCI/CDツールを選ぶか~
 

Similar to CruiseControl.NET設置

第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめ第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめhakoika-itwg
 
はこだてIKA 第4回勉強会 単体テスト
はこだてIKA 第4回勉強会 単体テストはこだてIKA 第4回勉強会 単体テスト
はこだてIKA 第4回勉強会 単体テストSeiji KOMATSU
 
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~normalian
 
AnsibleおよびDockerで始めるInfrastructure as a Code
AnsibleおよびDockerで始めるInfrastructure as a CodeAnsibleおよびDockerで始めるInfrastructure as a Code
AnsibleおよびDockerで始めるInfrastructure as a CodeSatoru Yoshida
 
Webアプリの動的部分に着目したグレーボックス統合テストとテンプレート変数カバレッジの提案
Webアプリの動的部分に着目したグレーボックス統合テストとテンプレート変数カバレッジの提案Webアプリの動的部分に着目したグレーボックス統合テストとテンプレート変数カバレッジの提案
Webアプリの動的部分に着目したグレーボックス統合テストとテンプレート変数カバレッジの提案Kazunori Sakamoto
 
WordCamp Kansai 2015 CI ハンズオン
WordCamp Kansai 2015 CI ハンズオンWordCamp Kansai 2015 CI ハンズオン
WordCamp Kansai 2015 CI ハンズオンタカシ キタジマ
 
Chrome DevTools.next
Chrome DevTools.nextChrome DevTools.next
Chrome DevTools.nextyoshikawa_t
 
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上Tatsuya Ishikawa
 
テストしなイカ? Seleniumで自動ブラウザテスト
テストしなイカ? Seleniumで自動ブラウザテストテストしなイカ? Seleniumで自動ブラウザテスト
テストしなイカ? Seleniumで自動ブラウザテストOhishi Mikage
 
BDD Frameworkで回帰テストの自動実行を実現する方法
BDD Frameworkで回帰テストの自動実行を実現する方法BDD Frameworkで回帰テストの自動実行を実現する方法
BDD Frameworkで回帰テストの自動実行を実現する方法潤司 渡部
 
ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014Koji Hasegawa
 
Introduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGoodIntroduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGoodAtsuhiro Kubo
 
MakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発をMakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発をAtsuhiro Kubo
 
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発Akira Inoue
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発Yuta Matsumura
 
継続的デリバリー読書会 第 5 章 デプロイメントパイプラインの解剖学
継続的デリバリー読書会 第 5 章 デプロイメントパイプラインの解剖学継続的デリバリー読書会 第 5 章 デプロイメントパイプラインの解剖学
継続的デリバリー読書会 第 5 章 デプロイメントパイプラインの解剖学Takuma SHIRAISHI
 

Similar to CruiseControl.NET設置 (20)

第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめ第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめ
 
はこだてIKA 第4回勉強会 単体テスト
はこだてIKA 第4回勉強会 単体テストはこだてIKA 第4回勉強会 単体テスト
はこだてIKA 第4回勉強会 単体テスト
 
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
 
AnsibleおよびDockerで始めるInfrastructure as a Code
AnsibleおよびDockerで始めるInfrastructure as a CodeAnsibleおよびDockerで始めるInfrastructure as a Code
AnsibleおよびDockerで始めるInfrastructure as a Code
 
Webアプリの動的部分に着目したグレーボックス統合テストとテンプレート変数カバレッジの提案
Webアプリの動的部分に着目したグレーボックス統合テストとテンプレート変数カバレッジの提案Webアプリの動的部分に着目したグレーボックス統合テストとテンプレート変数カバレッジの提案
Webアプリの動的部分に着目したグレーボックス統合テストとテンプレート変数カバレッジの提案
 
WordCamp Kansai 2015 CI ハンズオン
WordCamp Kansai 2015 CI ハンズオンWordCamp Kansai 2015 CI ハンズオン
WordCamp Kansai 2015 CI ハンズオン
 
Chrome DevTools.next
Chrome DevTools.nextChrome DevTools.next
Chrome DevTools.next
 
CLRH_120414_WFTDD
CLRH_120414_WFTDDCLRH_120414_WFTDD
CLRH_120414_WFTDD
 
Gamedevenvstudy1
Gamedevenvstudy1Gamedevenvstudy1
Gamedevenvstudy1
 
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
 
テストしなイカ? Seleniumで自動ブラウザテスト
テストしなイカ? Seleniumで自動ブラウザテストテストしなイカ? Seleniumで自動ブラウザテスト
テストしなイカ? Seleniumで自動ブラウザテスト
 
BDD Frameworkで回帰テストの自動実行を実現する方法
BDD Frameworkで回帰テストの自動実行を実現する方法BDD Frameworkで回帰テストの自動実行を実現する方法
BDD Frameworkで回帰テストの自動実行を実現する方法
 
ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014
 
継続的8章
継続的8章継続的8章
継続的8章
 
Introduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGoodIntroduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGood
 
MakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発をMakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発を
 
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
 
Devtools.next
Devtools.nextDevtools.next
Devtools.next
 
継続的デリバリー読書会 第 5 章 デプロイメントパイプラインの解剖学
継続的デリバリー読書会 第 5 章 デプロイメントパイプラインの解剖学継続的デリバリー読書会 第 5 章 デプロイメントパイプラインの解剖学
継続的デリバリー読書会 第 5 章 デプロイメントパイプラインの解剖学
 

More from Kuniaki Igarashi

my_everyday_life_with_ruby
my_everyday_life_with_rubymy_everyday_life_with_ruby
my_everyday_life_with_rubyKuniaki Igarashi
 
EM高専カンファレンス 編集後記とまえがき
EM高専カンファレンス 編集後記とまえがきEM高専カンファレンス 編集後記とまえがき
EM高専カンファレンス 編集後記とまえがきKuniaki Igarashi
 
世界のどこかで楽しくRubyでお仕事するために
世界のどこかで楽しくRubyでお仕事するために世界のどこかで楽しくRubyでお仕事するために
世界のどこかで楽しくRubyでお仕事するためにKuniaki Igarashi
 
「学生さんと一緒に Rubyイベントを つくっている←イマココ 」
「学生さんと一緒に Rubyイベントを つくっている←イマココ 」「学生さんと一緒に Rubyイベントを つくっている←イマココ 」
「学生さんと一緒に Rubyイベントを つくっている←イマココ 」Kuniaki Igarashi
 
高専カンファレンスカンファレンス
高専カンファレンスカンファレンス高専カンファレンスカンファレンス
高専カンファレンスカンファレンスKuniaki Igarashi
 
高専カンファレンス014Tokyo 前説
高専カンファレンス014Tokyo 前説高専カンファレンス014Tokyo 前説
高専カンファレンス014Tokyo 前説Kuniaki Igarashi
 
高専カンファレンス014tokyo 実行委員長挨拶
高専カンファレンス014tokyo 実行委員長挨拶高専カンファレンス014tokyo 実行委員長挨拶
高専カンファレンス014tokyo 実行委員長挨拶Kuniaki Igarashi
 
雷は落ちるのか昇るのか
雷は落ちるのか昇るのか雷は落ちるのか昇るのか
雷は落ちるのか昇るのかKuniaki Igarashi
 
World Wide Ruby Conferences
World Wide Ruby ConferencesWorld Wide Ruby Conferences
World Wide Ruby ConferencesKuniaki Igarashi
 
高専カンファレンス 014東京 予告編
高専カンファレンス 014東京 予告編高専カンファレンス 014東京 予告編
高専カンファレンス 014東京 予告編Kuniaki Igarashi
 
高専カンファレンス2010秋 予告編
高専カンファレンス2010秋 予告編高専カンファレンス2010秋 予告編
高専カンファレンス2010秋 予告編Kuniaki Igarashi
 
高専カンファレンスについて @kosenconf-012hachinohe
高専カンファレンスについて @kosenconf-012hachinohe高専カンファレンスについて @kosenconf-012hachinohe
高専カンファレンスについて @kosenconf-012hachinoheKuniaki Igarashi
 
高専カンファレンス2009秋in東京 実行委員長挨拶
高専カンファレンス2009秋in東京 実行委員長挨拶高専カンファレンス2009秋in東京 実行委員長挨拶
高専カンファレンス2009秋in東京 実行委員長挨拶Kuniaki Igarashi
 
高専カンファレンス2009秋in東京 予告編
高専カンファレンス2009秋in東京 予告編高専カンファレンス2009秋in東京 予告編
高専カンファレンス2009秋in東京 予告編Kuniaki Igarashi
 
RubyKaigi Lightning Talks TwYM episode2
RubyKaigi Lightning Talks TwYM episode2RubyKaigi Lightning Talks TwYM episode2
RubyKaigi Lightning Talks TwYM episode2Kuniaki Igarashi
 
RubyKaigi Lightning Talks TwYM episode1
RubyKaigi Lightning Talks TwYM episode1RubyKaigi Lightning Talks TwYM episode1
RubyKaigi Lightning Talks TwYM episode1Kuniaki Igarashi
 
197x Timer with Your Messages
197x Timer with Your Messages197x Timer with Your Messages
197x Timer with Your MessagesKuniaki Igarashi
 

More from Kuniaki Igarashi (20)

my_everyday_life_with_ruby
my_everyday_life_with_rubymy_everyday_life_with_ruby
my_everyday_life_with_ruby
 
EM高専カンファレンス 編集後記とまえがき
EM高専カンファレンス 編集後記とまえがきEM高専カンファレンス 編集後記とまえがき
EM高専カンファレンス 編集後記とまえがき
 
世界のどこかで楽しくRubyでお仕事するために
世界のどこかで楽しくRubyでお仕事するために世界のどこかで楽しくRubyでお仕事するために
世界のどこかで楽しくRubyでお仕事するために
 
「学生さんと一緒に Rubyイベントを つくっている←イマココ 」
「学生さんと一緒に Rubyイベントを つくっている←イマココ 」「学生さんと一緒に Rubyイベントを つくっている←イマココ 」
「学生さんと一緒に Rubyイベントを つくっている←イマココ 」
 
高専カンファレンスカンファレンス
高専カンファレンスカンファレンス高専カンファレンスカンファレンス
高専カンファレンスカンファレンス
 
高専カンファレンス014Tokyo 前説
高専カンファレンス014Tokyo 前説高専カンファレンス014Tokyo 前説
高専カンファレンス014Tokyo 前説
 
高専カンファレンス014tokyo 実行委員長挨拶
高専カンファレンス014tokyo 実行委員長挨拶高専カンファレンス014tokyo 実行委員長挨拶
高専カンファレンス014tokyo 実行委員長挨拶
 
雷は落ちるのか昇るのか
雷は落ちるのか昇るのか雷は落ちるのか昇るのか
雷は落ちるのか昇るのか
 
World Wide Ruby Conferences
World Wide Ruby ConferencesWorld Wide Ruby Conferences
World Wide Ruby Conferences
 
高専カンファレンス 014東京 予告編
高専カンファレンス 014東京 予告編高専カンファレンス 014東京 予告編
高専カンファレンス 014東京 予告編
 
高専カンファレンス2010秋 予告編
高専カンファレンス2010秋 予告編高専カンファレンス2010秋 予告編
高専カンファレンス2010秋 予告編
 
Cafe igaiga
Cafe igaigaCafe igaiga
Cafe igaiga
 
高専カンファレンスについて @kosenconf-012hachinohe
高専カンファレンスについて @kosenconf-012hachinohe高専カンファレンスについて @kosenconf-012hachinohe
高専カンファレンスについて @kosenconf-012hachinohe
 
高専カンファレンス2009秋in東京 実行委員長挨拶
高専カンファレンス2009秋in東京 実行委員長挨拶高専カンファレンス2009秋in東京 実行委員長挨拶
高専カンファレンス2009秋in東京 実行委員長挨拶
 
勉強会でAgileを
勉強会でAgileを勉強会でAgileを
勉強会でAgileを
 
高専カンファレンス2009秋in東京 予告編
高専カンファレンス2009秋in東京 予告編高専カンファレンス2009秋in東京 予告編
高専カンファレンス2009秋in東京 予告編
 
RubyKaigi Lightning Talks TwYM episode2
RubyKaigi Lightning Talks TwYM episode2RubyKaigi Lightning Talks TwYM episode2
RubyKaigi Lightning Talks TwYM episode2
 
RubyKaigi Lightning Talks TwYM episode1
RubyKaigi Lightning Talks TwYM episode1RubyKaigi Lightning Talks TwYM episode1
RubyKaigi Lightning Talks TwYM episode1
 
197x Timer with Your Messages
197x Timer with Your Messages197x Timer with Your Messages
197x Timer with Your Messages
 
TwYM
TwYMTwYM
TwYM
 

CruiseControl.NET設置

  • 1. 自動 Test と CruiseControl.NET Kuniaki IGARASHI 2006.8.21 http://igarashikuniaki.net/
  • 2.
  • 4.
  • 5.
  • 6. UnitTest メソッドを実行し、 戻り値、副作用が妥当であることを確認するテスト ツール : CppUnit, JUnit, NUnit など CAddition cadd; // 引数の和を返し、メンバ変数 m_lastResult に結果を格納するクラス int result = cadd.arg2(2,3); // テスト対象のメソッドを実行して CPPUNIT_ASSERT_EQUAL((int) 5, result); // 結果を確認 CPPUNIT_ASSERT_EQUAL((int) 5, cadd.m_lastResult); // 結果を確認 UnitTest の Code 例 閾値に関する UnitTest をしっかり書けば、 バグの出やすい閾値付近でのバグ発生率減少 リファクタリング時には UnitTest は必須
  • 7.
  • 8.
  • 9.
  • 10.
  • 11. デイリーテストってばすげー! ここまでのお話で、 デイリーテストをやってみようかなと、ちょっと思ったり。 デイリーテストを導入したいですか? Yes : これから具体的な方法を説明します。 No : 大人の対応をお願いします。
  • 12.
  • 13.
  • 14.
  • 16.
  • 18. インストール - IIS ContorolPanel -> プログラムの追加と削除 -> Windows コンポーネントの追加と削除 より インターネットインフォメーションサービス (IIS) をインストールします。 http でアクセスできるように設定してください。 ファイアーウォールの設定にも注意。
  • 19. インストール - CC.NET http://sourceforge.net/projects/ccnet/ から Download してインストールしてください。 注意点: Web レポート機能を使う場合は、 IIS を先にインストールした方が設定が楽です。
  • 20. インストール – IIS の設定 管理ツールのインターネットインフォメーションサービスで CC.NET web dashbord が加えられていることを確認してください。 また、 asp.net(aspnet_client) も必要です。 入っていない場合は以下のコマンドを実行してインストールしてください。 > %windir%icrosoft.NETramework1.1.xxxxspnet_regiis.exe -i xxxx にはインストールされたバージョンが入ります。
  • 21. Windowsサービス設定 ■ Windows サービスの起動設定 ・デフォルトでは手動起動の設定となっているので、自動起動に変更 ・ログオンの項目で適切なユーザーを指定しないと、認証ができず CVS の実行で失敗します。 ・ CC.NET サービスが起動していると、コマンドラインからは実行できないので注意。 ( CC.NET は 1 つしか起動できない。) ■ コマンドラインから手動で起動する場合 > [CruiseControl.NET Path]ervercnet.exe -config:ccnet.config ■ CVS 認証 ・サービスで指定したユーザーで、 CVS login コマンドを実行して認証をしておきます。 > cvs.exe -d :pserver:[user]:[repository] login
  • 22. CC.NET 設定ファイル ビルドの指示は以下の xml ファイルに記述します。 C:rogram FilesruiseControl.NETervercnet.config --- 例 ( 概略 )--- <5 分ごとに CVS 監視 > < 変更があれば以下のタスクを実行 > < ソースディレクトリを削除 > <CVS CheckOut> <Build> <Mail 送信 > Examples フォルダ以下に設定ファイルの例が置いてあります。
  • 23. CC.NET 設定ファイル <project name=&quot;BuildProject&quot;> <name> BuildProject </name> <workingDirectory>D:ruiseControlWorkrc</workingDirectory> <artifactDirectory>D:ruiseControlWorkrc</artifactDirectory> <modificationDelaySeconds>60</modificationDelaySeconds> <publishExceptions>true</publishExceptions> workingDirectory : ソースをチェックアウトするパス artifactDirectory : ビルドログを格納するパス modificationDelaySeconds : 最後のチェックインから x 秒間はビルドを開始しない publishExceptions : CVS などが応答しない場合の Exception エラーを通知
  • 24. CC.NET 設定ファイル トリガー各種 Interval Trigger <intervalTrigger name=&quot;continuous&quot; seconds=&quot;30&quot; buildCondition=&quot;IfModificationExists&quot;/> 30 秒ごとにソースリポジトリを監視、変更があればタスク実行 Schedule Trigger <scheduleTrigger time=&quot;23:30&quot; buildCondition=&quot;ForceBuild“/> 決まった時間にタスク実行 Url Trigger <urlTrigger url=&quot;http://server/page.html&quot; seconds=&quot;30&quot; buildCondition=&quot;IfModificationExists&quot;/> URL で指定したファイルを監視、変更があればタスク実行 Project Trigger <projectTrigger serverUri=&quot;tcp://server:21234/CruiseManager.rem&quot; project=&quot;Server“/> 他の CC.NET プロジェクトの状態を監視、条件にあえばタスク実行
  • 25. CC.NET 設定ファイル Visual Studio Task ー VS でビルド実行 (Release, Debug など指定可 ) Build Publisher ー ビルド生成物をコピー NAnt Task – NAnt を実行 Executable Task ー 実行ファイルを実行 ForceBuildPublisher ー 他の CC.NET プロジェクトを実行 NUnit Task ー ユニットテスト実行 Email Publisher – mail 送信 タスク各種
  • 26. CC.NET を使った分散ビルド Project Trigger <projectTrigger serverUri=&quot;tcp://server:21234/CruiseManager.rem&quot; project=&quot;Server“/> 他の CC.NET プロジェクトの状態を監視、条件にあえばタスク実行 ForceBuildPublisher <publishers> <forcebuild> <project>AcceptanceTestProject</project> <serverUri>tcp://buildserver2:21234/CruiseManager.rem</serverUri> </forcebuild> </publishers> 他の CC.NET プロジェクトを実行 CC.NET マシンが他の CC.NET マシンを統率または監視してタスクを指示できる。 監視 指示
  • 27. CC.NET からの通知 メール Web CCTray( ローカルアプリケーションに通知 ) ユーザーのタスクトレイにテスト結果通知
  • 28.
  • 29.
  • 31.
  • 32. 出力比較テスト Output Reference テスト対象 ソースコード 差分比較 Input 以前に出力して問題がないと確信が持てるものを Reference として使用
  • 33. ログ比較テスト ソースコードの要点にログ書き出しを仕込んで置く。 変数 Dump や、 関数の In/Out など。 変数の内容や処理経路が異なる場合に発見できる。 下回りのライブラリが置き換えられた場合も、 自分たちのコード上を通る経路が 変わる場合は違いに気づける。 Output テスト対象 ソースコード Log お手本 Log 差分比較 Input
  • 34. 出力適格判断テスト Output テスト対象 ソースコード 出力が規格に適合しているか調べる 規格 Checker 規格適合性 チェックツールを 入手または作成 結果 Reference 差分比較 Input
  • 35. APIテスト 仮想上位モジュール Output テスト対象 ソースコード Log Reference 差分比較 Input メソッド呼び出し ( 引数 ) 戻り値
  • 36. パフォーマンス測定 パフォーマンスを定期的に測ることで パフォーマンス悪化を早期発見、原因把握 Output テスト対象 ソースコード 出力にかかる時間を測定 グラフ化 -> コード履歴をみれば悪化の原因を絞り込める Input
  • 37.
  • 38.
  • 39. デイリーテスト事例 デイリーテストカレンダー テスト名 ● NG ● 予告 NG ● AllOK 平穏な日々 不穏な時期 リリース その日の結果
  • 40.
  • 41.
  • 42.
  • 43. NAnt とは何が違うの? レイヤーが違います。 CC.NET は統合ツール Mail 機能、 web ページ作成機能などがあります。 NAnt はビルドツール CC.NET でも NAnt の豊富な機能を利用してビルドなどの作業を行うことができます。 CC.NET でも簡単なビルド指示は出すことができます。