]価格:3,990円(税込、送料込)ようやく導入と第1部を読み終えたところなのですが、既に諸々目からうろこのことが書かれていました。行きませんが、すこしずつ自分たちのプロダクトに取り入れて行きたいことばかりです。私のモチベーションは、「とにかくメンドクサイことはしたくない」です。・色んなパターンを(手動で)テストする・自分のブランチでやったテストを、マージ後もう一度(手動で)やる・開発環境でやったテストを本番環境でもう一度(手動で)やる・前回のリリースでしたテストを、次のバージョンのリリース後にもう一度(手動で)やる・数台のサーバに対して同じリリース作業を(手動で)やる・リリースのたびに同じような手順書を書いたり、同じような準備をしたり(手動で)するこういうのが全部嫌いなので、やらなくて済む方法を絶賛探しております。以下、第1部を読んでいて、気になった点を抜き出しました。どれかが変更されたらそのせいでアプリケーションの振る舞いが変化する可能性があるので、この4つのコンポーネントを管理下におき、どれか一つでも変更があった場合にはそれを確かめるようにしなくてはならない。システム設定も「自動でテスト」されなければならないまだまだウチのプロダクトはコードのテストが整備されている、レベルです。設定ファイルやマスターデータも自動で継続的にテストされなければならない、という発想が今までありませんでした。設定ファイルの自動テストでは、以下の様な事が必要のようです。テスト1:設定にある外部サービスへの参照が適切であることを保証する。少なくともpingを打つことはできるはず。テスト2:アプリケーションがインストールされた後で実際にスモークテストを実行し、期待通りに作動することを確認する。これには、設定が正しいかどうかに依存する機能を含める必要がある理想的には、これらの結果が期待値通りでなければ、インストールやデプロイを失敗させる。fileの管理は、バージョン管理から怪しいので、ぜひトライしたいところです。CIで実行すべきテストは3つ。ユニットテスト、コンポーネントテスト、受け入れテスト。ユニットテスト:メソッドや関数単位。通常はDBやファイルシステムはスタブ化されていて実行しない。全てのテストが10分以内に終わるべきコンポーネントテスト:アプリケーション内にあるいくつかのコンポーネントの振る舞いをテストする。DBやファイルシステム、他のシステムをコールする。受け入れテスト:ビジネスによって定められた受け入れ基準をアプリケーションが満たしていることをテストする。機能以外に、キャパシティや可用性、セキュリティが受け入れ基準に含まれることがある。いう分け方で捉えていなかったので参考になりました。今まで自分の中では、「単体テスト(ユニットテスト)」と「結合テスト」しかなかったのですが、コンポーネントテストと受け入れテストを分けることでそれぞれでテストすべきものがスッキリしました。受け入れテストには、単に機能要件だけでなく、キャパシティや可用性、セキュリティなどの事項も含まれ、これらも自動でテストされる必要があると。この辺、手動ですらきちんとはできていないので、今後要検討です。複数のpublicなメソッドをまたがるようなユニットテストがあったりする(中で呼ばれているメソッドをモックにしてしまうとテストにならないから)、これはユニットテストとコンポーネントテストを明確に分けることでうまく整理されそう。10分以上かかっている総ユニットテストの速度アップも図れそうです。理想的には、プロジェクトが始まった時から、テスターが開発者やユーザーと協力して自動テストを書く。これに近いアイディアは以前にチーム内から出ていたこともあったのですが、なかなか明確に試せていなかったことの一つ。自動テストになっていれば、マージ後や、本番でのリリース時の確認にもそのまま使えます。モヤモヤとそれっぽいことは考えていたのですが、本に書かれていたことで自身になりました。これはぜひ試そうと思います。読者になる検索リンクはてなブログブログをはじめる週刊はてなブログはてなブログPro最新記事awkで特定の列を除外して出力するWindows10にOracleをインストールしようとしたらありがちな罠にハマった古いプログラムからも学ぶことがある...と思う。#rtechconf月別アーカイブ参加グループプログラミングインターネットテクノロジーはてなブログをはじめよう!taichiwさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。