読書録
Continuous Delivery vs Continuous Deployment - Continuous Delivery 継続的デリバリ vs 継続的デプロイ | Ryuzee.com 本番環境に対しての自動デリバリーについてテスターが何よりもまずやるべきことは、受け入れテストが本当にシステムのふるまいを検証し…
コミットステージのステップ ・コードをコンパイルする ・コミットテストを実行する ・後のステージで使うバイナリを生成する ・コードの健全性をチェックするために解析を実行する ・テストデータベースのような成果物を生成する役に立つメトリクス ・テス…
・バイナリをビルドするのは1回限りとせよ →コードをコンパイルするたびに何らかの差分が紛れ込むリスクがある。 ・あらゆる環境に対して同じやり方でデプロイせよ →僕のマシンではうまくいくんだけどな症候群を防ぐ ・デプロイメントをスモークテストせよ →…
・コミットステージ → システムが動くことを技術レベルで検証する ・自動受け入れテストステージ → システムが動くことを機能及び非機能レベルで検証する ・手動テストステージ → システムが使いやすいか、あるいは要件を満たしているか検証し、自動テストで…
インテグレーションテスト →アプリケーション内の独立した各部分が、依存しているサービスとうまく連携できることを保証するテスト外部システムを統合することはリスクが追加される ・使えるテストサービスはあるか、性能は十分か? ・サービスプロバイダー…
実際に起こりえる状況と戦略 ・新規プロジェクト ・テクノロジープラットフォームとテストツールを選択する。 ・シンプルな自動ビルドを準備する ・INVEST原則に従ったストーリーを受け入れ基準と合わせて導き出す ・顧客、アナリスト、テスターが受け入れ基…
ジェームズ・バッハ 「テスターはテストを実施する際にテストの設計を積極的にコントロールし、そこで得られた情報を使ってよりよいテストを新しく設計する」テストダブル ・ダミーオブジェクトは渡されるが、実際に使われることはない。 ・フェイクオブジェ…
受け入れテスト Given-When-ThenモデルCucumver・JBehave・Twist → 機能テスト自動化ツールブライアン・マリックの論文「テストはいつ自動化するべきか」 http://www.exampler.com/testing-com/writings/automate.pdf
分散バージョン管理システム ・分散バージョン管理でも継続的インテグレーションを行うことができるが、しっかりとしたルールを定めなければ難しくなる。マーチン・ファウラー → 無差別的なインテグレーションCIシステムを確立する基盤 ・巨大なディスプレイ…
やったほうがよいプラクティス ・エクストリームプログラミングの開発プラクティス ・アーキテクチャ上の違反事項があった場合にビルドを失敗させる ・テストが遅い場合にビルドを失敗させる ・警告やコードスタイルの違反があった時にビルドを失敗させる分…
継続的インテグレーションの基礎的なプラクティス ・ビルドが壊れているときにはチェックインしない ・コミットする前に、常にローカルでコミットテストを実行せよ。あるいは代わりにCIサーバーにやってもらえ ・次の作業を始める前に、コミットテストが通る…
継続的インテグレーションを始めるのに必要なもの ・バージョン管理 ・自動ビルド ・チームの合意継続的インテグレーションはプラクティスであって、ツールではない。James Shore: Continuous Integration on a Dollar a Day継続的インテグレーションの前提…
環境を管理する 継続的デリバリーを行う時のサードパーティのアプリケーションを選ぶ際の質問 ・デプロイできるか? ・設定のバージョンを効率的に変えられるか? ・我々の自動デプロイメント戦略と整合するか?適切にデプロイされた状態にある環境→ベースラ…
ソフトウェア設定を管理する ・アプリケーションの設定を管理する →設定情報をどのように表現するか →デプロイメントスクリプトからどのようにアクセスするか →環境やアプリケーション、あるいはアプリケーションのバージョンによってどのように変更されるの…
依存関係の管理 ・外部ライブラリを管理する →外部ライブラリのコピーをローカルに保存しておくことが推奨 →ただし、バージョン管理は肥大化する。 ・コンポーネントを感知する。ソフトウェア設定を管理する ・設定と柔軟性 →ソースコードを変更するのも、設…
構成管理とはプロジェクトに関するあらゆる成果物とそれらの間にある関係性が、保存され、検索され、一意に特定され、修正されるプロセスのことである。バージョン管理の基礎 ・ソフトウェアの特定のバージョンを構成しているものは何か? 本番環境にかつて…
ソフトウェアデリバリーの原則 ・ソフトウェアをリリースするための、反復可能で信頼できるプロセスを作り上げよ ・ほとんどすべてを自動化せよ ・すべてバージョン管理に入れよ ・痛みを伴うものはこまめに実施し、痛い思いは早めにしておけ ・品質を作り込…
【12月に買った本まとめ】 MongoDB イン・アクション Business Model You アジャイルな見積もりと計画づくり【12月に読んだ本まとめ】 Joel on Software MongoDBは気になっていたので買ってみた一冊。 今までDBを触る事をあまりしてきていないので、一度しっ…
デプロイ面とパイプライン アプリケーションのビルド・デプロイ・テストりりーすといったプロセスを自動化する実装目的 ・すべてのプロセスのあらゆる部分が関係者全員から見えるようにして、共同作業をやりやすくする ・プロセスにおいて出来る限り早い時期…
【11月に買った本まとめ】 UNIXカーネルの設計 プログラミングテクニック―UNIXコマンドのソースコードにみる実践プログラミング手法 (UNIX MAGAZINE COLLECTION) Ruby de XML―Rubyで始めるXML! BSDカーネルの設計と実装―FreeBSD詳解 Rubyを256倍使うための本…