gihyo.jp » DEVELOPER STAGE » 特集 » Happy Testing Perl » 第5回 継続的テスト

Happy Testing Perl

第5回 継続的テスト

継続的なテストの重要性について

松野です。こんにちは。

今回は継続的なテストという話題についてお話したいと思います。本稿では,少人数のチームによるWebサイト開発というケースにフォーカスして論じていきます。

本稿で取り上げる継続的テストとは,端的にいえば「自動でテストを定時実行させる」ということです。 make testするのをうっかり忘れたりしていませんか? テストを動かすのを面倒がってテスト動かさずにコミットしていませんか? そして,そのままデプロイしたりしていませんか?

割れ窓理論というのがあります。これは「建物の窓が壊れているのを放置すると,誰も注意を払っていないという象徴になり,やがて他の窓もまもなくすべて壊される」(引用:Wikipedia)という理論です。

これは,テストスィーツにも言えることです。1つのテストがこけていると,make testする気力が失せます。あるいはテストがこけているようなテストスィーツでは,テストをあらたに書いたとしてもすぐに全部のテストが通る状態にならないので,新しいテストを書く気力も失われます。そういうことにならないようにするためには,やはり継続的なテストが欠かせません。 人間は怠惰な生き物ですから,テストを動かすのを億劫がります。ましてや,それが人間の中でも一際怠惰なPerl Mongerという生き物に至ってはいうまでもありません。

チームによる開発においては,1人でもテストを動かさない人がいると,他の人がケツを拭くはめになります。ぜひ自動でやるようにしましょう。

継続的なテストを行う方法

Perlの世界では継続的なテストを支援するツールがいくつかありますので,紹介します。

cron
最もシンプルな方法はcronで定時にmake testするように設定するという方法でしょう。cronのMAILTOを適切なMLに向けておくだけでOKです。Subversionを利用している場合には,hookを使ってmake testを自動で行うのも良いでしょう。
重要なのは「commitする人がmake testを自分で手動で実行しなくても自動で実行される仕組みを構築する」というところにあります。
trunk1本でbranchがないようなプロジェクトの場合にはこれで十分でしょう。実際弊社でもcron+αで運用しています。

buildbot
buildbotは,Pythonで書かれた継続的テストのためのソフトウェアです。IRCとの連携などもあって,使いやすいのではないかと思います。筆者は試したことはないです。
図のように,綺麗なWebページも表示できます。

buildbotの実行例

buildbotの実行例

Pythonで書かれてはいますが,Perlにも対応しているので容易に試すことができます。綺麗な画面が必要な場合には,buildbotを採用するのも1つの選択肢になってくると思います。
Perlでのbuildbotの使い方は,id:dannさんの日記が詳しいですので,そちらをご欄ください。
Test::Chimps
Test::Chimpsというツールは,継続的テストサーバとそのクライアントを提供します。Plaggerの継続的テストで採用されていたので,ご存知の方も多いでしょう。Perlで書かれているのですが,依存モジュールが多いのと,インストールが面倒なのでオススメしません。
そもそも,Test::Chimpsの最新バージョンはテストすら通りません。もし気が向いた方がいらっしゃいましたら,直してください。

モバイルファクトリーでの継続的なテスト

弊社ではYappo氏が開発したClass::Componentを使い,Test Toolsという名前のPluggableな継続テスト環境構築用ソフトウェアを開発し,運用しています(弊社業務に密結合しているため公開されていません)。

社内に配置した継続的テスト用サーバにて,常時ガリガリとテストを動かしています。テストがこけると携帯電話にメールで通知されるようになっているので,テストがこわれるとすぐに気付くようになっています。

もう1つの継続的テスト

継続的なテストという言葉には他にも定義があって,それはgugodさんのTest::Continuousというモジュールでいうところの継続的テストです。 これは,「開発時にプログラムが変更されたタイミングでテストを走らせること」を指す言葉です。本稿で扱っている継続的テストとはまったく関係がありませんが,混乱する方がいらっしゃるといけませんので,念のため補足しておきます。

まとめ

今回は継続的なテストについて解説いたしました。テストを走らせるのが億劫な貴方も,これで安心ですね。

Happy Continuous Testing!

著者プロフィール

松野徳大(まつのとくひろ)

株式会社モバイルファクトリー システム開発部所属。携帯向けアフィリエイトサービスの開発運用,PodCastingサービスの開発運用,ブログ広告システムの開発運用を経て,ワッサーの開発を行った。フレームワーク関連の技術に興味があり,日本で最初にRailsによるオープンソースの掲示板システムイナモデレーダー6を開発公開した。

ブログはhttp://d.hatena.ne.jp/tokuhirom/など。

コメント

コメントの記入

パスサポ

多数の情報処理技術者試験対策書籍の発行実績を誇る技術評論社がお届けする,資格試験合格サイト「めざせ! 情報処理試験 パスサポ」が開設されました。

ピックアップ

サクセスストーリーに続く,快適サーバー運用管理のヒント!

データの増大,煩雑な管理,システムダウン,セキュリティなど,迫りくる課題からシステム管理者の負担を軽くするポイントを解説します。

gihyo.jp インフラエンジニア情報局

ネットワークやITにかかわるあらゆる業種で必要とされるインフラエンジニアに向けた技術情報や心構え,その魅力について多角的に紹介。

テストエンジニア ステーション

いま,ITに関わるあらゆる開発業務で注目されつつあるテスト系エンジニアをターゲットにしたコンテンツサイトを展開します。

一行クイックアンケート

gihyo.jpで取り上げてほしいネタは?

※検索はページ右上の検索ボックスをご利用ください。

その他の連載

2010年版SEO体得講座

本連載では,いまや企業サイトの戦略の1つとして欠かすことのできないSEOについて,最新トレンドからすぐに使えるTipsまでを紹介します。

小型Linuxサーバの最高峰 OpenBlockS 600活用指南

搭載メモリの増加,CPUクロックの向上など,あらゆる面が強化された期待の新モデルOpenBlockS 600。この記事ではOpenBlockS 600の紹介から,活用するためのさまざまなノウハウを紹介していきます。

はじめMath! Javaでコンピュータ数学

プログラミング言語入門者向けに,知っていると役立つ数学的トピックスを紹介します。簡単な演習問題と解説で,即活用できる知識を目指します。

教科書には載っていない ネットワークエンジニアの実践技術

ネットワークエンジニア,インフラエンジニアのトラブル対応には,時には「教科書通りにいかない」テクニックが必要となります。資格試験では得られないこうした実践的な技術について,実例を元に紹介します。

Googleケータイ,世に現る

2008年9月,Googleが中心となって開発されている「Android」を採用した携帯電話「T-Mobile G1」が発表されました。本連載ではT-Mobile G1を中心にGoogleケータイに迫ります。

モバゲーオープンプラットフォームに挑戦!――面白法人カヤック流モバゲーオープンプラットフォーム企画と開発のイロハ

2010年1月にリリースとなったモバゲーオープンプラットフォーム。その制作企業であるカヤックが,アイデアを企画に落とし込み,開発までのノウハウを紹介します。

プロトタイピングツールSketchFlowを用いた,Silverlightアプリ開発

SketchFlowプロトタイプ作成からアプリケーション開発までをExpression Blend 3を使って実践的に解説します。

Ubuntu Weekly Recipe

Ubuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。

連載一覧

gihyo.jp

  • DEVELOPER STAGE
  • ADMINISTRATOR STAGE
  • WEB+DESIGN STAGE
  • LIFESTYLE STAGE
  • SCIENCE STAGE
  • NEWS & REPORT

書籍案内

  • 新刊書籍
  • 書籍ジャンル一覧
  • 書籍シリーズ一覧
  • 新刊ピックアップ
  • ロングセラー
  • 電脳会議

定期刊行物一覧

  • Software Design
  • WEB+DB PRESS
  • Web Site Expert
  • 組込みプレス

最近のコメント