Soumettre la recherche
Mettre en ligne
継続的12章
•
Télécharger en tant que PPTX, PDF
•
1 j'aime
•
806 vues
S
shinjiyoshida
Suivre
Signaler
Partager
Signaler
Partager
1 sur 41
Télécharger maintenant
Recommandé
AWS Startup Use Cases 2015
AWS Startup Use Cases 2015
Eiji Shinohara
Amalgam8 application switch for cloud native services
Amalgam8 application switch for cloud native services
Takehiko Amano
Aws 分散負荷テストツールを使ってapp runnerをスケールさせる(デモ動画削除)
Aws 分散負荷テストツールを使ってapp runnerをスケールさせる(デモ動画削除)
ShinodaYukihiro
負荷試験入門公開資料 201611
負荷試験入門公開資料 201611
樽八 仲川
Spark Streaming + Amazon Kinesis
Spark Streaming + Amazon Kinesis
Yuta Imai
AWS Black Belt Online Seminar 2016 Amazon EC2 Container Service
AWS Black Belt Online Seminar 2016 Amazon EC2 Container Service
Amazon Web Services Japan
AWS Black Belt Tech シリーズ 2015 - AWS Data Pipeline
AWS Black Belt Tech シリーズ 2015 - AWS Data Pipeline
Amazon Web Services Japan
Amazon WorkSpaces Deep Dive
Amazon WorkSpaces Deep Dive
Genta Watanabe
Recommandé
AWS Startup Use Cases 2015
AWS Startup Use Cases 2015
Eiji Shinohara
Amalgam8 application switch for cloud native services
Amalgam8 application switch for cloud native services
Takehiko Amano
Aws 分散負荷テストツールを使ってapp runnerをスケールさせる(デモ動画削除)
Aws 分散負荷テストツールを使ってapp runnerをスケールさせる(デモ動画削除)
ShinodaYukihiro
負荷試験入門公開資料 201611
負荷試験入門公開資料 201611
樽八 仲川
Spark Streaming + Amazon Kinesis
Spark Streaming + Amazon Kinesis
Yuta Imai
AWS Black Belt Online Seminar 2016 Amazon EC2 Container Service
AWS Black Belt Online Seminar 2016 Amazon EC2 Container Service
Amazon Web Services Japan
AWS Black Belt Tech シリーズ 2015 - AWS Data Pipeline
AWS Black Belt Tech シリーズ 2015 - AWS Data Pipeline
Amazon Web Services Japan
Amazon WorkSpaces Deep Dive
Amazon WorkSpaces Deep Dive
Genta Watanabe
Application Deployment on AWS
Application Deployment on AWS
Eiji Shinohara
AWS Black Belt Tech シリーズ 2015 - AWS IoT
AWS Black Belt Tech シリーズ 2015 - AWS IoT
Amazon Web Services Japan
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
Amazon Web Services Japan
TerraformでECS+ECRする話
TerraformでECS+ECRする話
Satoshi Hirayama
Run Spark on EMRってどんな仕組みになってるの?
Run Spark on EMRってどんな仕組みになってるの?
Satoshi Noto
AWSのデータベースサービス全体像
AWSのデータベースサービス全体像
Amazon Web Services Japan
DBワークロードのAWS化とデータベースサービス関連最新情報
DBワークロードのAWS化とデータベースサービス関連最新情報
Amazon Web Services Japan
AWS Black Belt Techシリーズ AWS Data Pipeline
AWS Black Belt Techシリーズ AWS Data Pipeline
Amazon Web Services Japan
CTO Night & Day Morning Session "Auto Scaling & Spot Instances Deep Dive"
CTO Night & Day Morning Session "Auto Scaling & Spot Instances Deep Dive"
akitsukada
Windows 開発者のための Dev&Ops on AWS
Windows 開発者のための Dev&Ops on AWS
Amazon Web Services Japan
SAP on AWS紹介資料 - Dec, 2014
SAP on AWS紹介資料 - Dec, 2014
Matsumoto Hiroki
商用RDBMSのAWSへの移行
商用RDBMSのAWSへの移行
Amazon Web Services Japan
20151207 AWS re:invent 2015 ReCap
20151207 AWS re:invent 2015 ReCap
Kiyonori Kitasako
AWS Black Belt Online Seminar 2017 Deployment on AWS
AWS Black Belt Online Seminar 2017 Deployment on AWS
Amazon Web Services Japan
オンプレミスRDBMSをAWSへ移行する手法
オンプレミスRDBMSをAWSへ移行する手法
Amazon Web Services Japan
Amazon Aurora
Amazon Aurora
Shinpei Ohtani
AWSでDockerを扱うためのベストプラクティス
AWSでDockerを扱うためのベストプラクティス
Amazon Web Services Japan
AWS Black Belt Techシリーズ Amazon Workspaces
AWS Black Belt Techシリーズ Amazon Workspaces
Amazon Web Services Japan
20190122 AWS Black Belt Online Seminar Amazon Redshift Update
20190122 AWS Black Belt Online Seminar Amazon Redshift Update
Amazon Web Services Japan
AWS Black Belt Online Seminar 2016 Amazon Kinesis
AWS Black Belt Online Seminar 2016 Amazon Kinesis
Amazon Web Services Japan
(PlayScala(0.9.1) until Play(2.0))
(PlayScala(0.9.1) until Play(2.0))
Takuma SHIRAISHI
継続的デリバリー第11章.Ppt
継続的デリバリー第11章.Ppt
Yusuke HIDESHIMA
Contenu connexe
Tendances
Application Deployment on AWS
Application Deployment on AWS
Eiji Shinohara
AWS Black Belt Tech シリーズ 2015 - AWS IoT
AWS Black Belt Tech シリーズ 2015 - AWS IoT
Amazon Web Services Japan
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
Amazon Web Services Japan
TerraformでECS+ECRする話
TerraformでECS+ECRする話
Satoshi Hirayama
Run Spark on EMRってどんな仕組みになってるの?
Run Spark on EMRってどんな仕組みになってるの?
Satoshi Noto
AWSのデータベースサービス全体像
AWSのデータベースサービス全体像
Amazon Web Services Japan
DBワークロードのAWS化とデータベースサービス関連最新情報
DBワークロードのAWS化とデータベースサービス関連最新情報
Amazon Web Services Japan
AWS Black Belt Techシリーズ AWS Data Pipeline
AWS Black Belt Techシリーズ AWS Data Pipeline
Amazon Web Services Japan
CTO Night & Day Morning Session "Auto Scaling & Spot Instances Deep Dive"
CTO Night & Day Morning Session "Auto Scaling & Spot Instances Deep Dive"
akitsukada
Windows 開発者のための Dev&Ops on AWS
Windows 開発者のための Dev&Ops on AWS
Amazon Web Services Japan
SAP on AWS紹介資料 - Dec, 2014
SAP on AWS紹介資料 - Dec, 2014
Matsumoto Hiroki
商用RDBMSのAWSへの移行
商用RDBMSのAWSへの移行
Amazon Web Services Japan
20151207 AWS re:invent 2015 ReCap
20151207 AWS re:invent 2015 ReCap
Kiyonori Kitasako
AWS Black Belt Online Seminar 2017 Deployment on AWS
AWS Black Belt Online Seminar 2017 Deployment on AWS
Amazon Web Services Japan
オンプレミスRDBMSをAWSへ移行する手法
オンプレミスRDBMSをAWSへ移行する手法
Amazon Web Services Japan
Amazon Aurora
Amazon Aurora
Shinpei Ohtani
AWSでDockerを扱うためのベストプラクティス
AWSでDockerを扱うためのベストプラクティス
Amazon Web Services Japan
AWS Black Belt Techシリーズ Amazon Workspaces
AWS Black Belt Techシリーズ Amazon Workspaces
Amazon Web Services Japan
20190122 AWS Black Belt Online Seminar Amazon Redshift Update
20190122 AWS Black Belt Online Seminar Amazon Redshift Update
Amazon Web Services Japan
AWS Black Belt Online Seminar 2016 Amazon Kinesis
AWS Black Belt Online Seminar 2016 Amazon Kinesis
Amazon Web Services Japan
Tendances
(20)
Application Deployment on AWS
Application Deployment on AWS
AWS Black Belt Tech シリーズ 2015 - AWS IoT
AWS Black Belt Tech シリーズ 2015 - AWS IoT
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
TerraformでECS+ECRする話
TerraformでECS+ECRする話
Run Spark on EMRってどんな仕組みになってるの?
Run Spark on EMRってどんな仕組みになってるの?
AWSのデータベースサービス全体像
AWSのデータベースサービス全体像
DBワークロードのAWS化とデータベースサービス関連最新情報
DBワークロードのAWS化とデータベースサービス関連最新情報
AWS Black Belt Techシリーズ AWS Data Pipeline
AWS Black Belt Techシリーズ AWS Data Pipeline
CTO Night & Day Morning Session "Auto Scaling & Spot Instances Deep Dive"
CTO Night & Day Morning Session "Auto Scaling & Spot Instances Deep Dive"
Windows 開発者のための Dev&Ops on AWS
Windows 開発者のための Dev&Ops on AWS
SAP on AWS紹介資料 - Dec, 2014
SAP on AWS紹介資料 - Dec, 2014
商用RDBMSのAWSへの移行
商用RDBMSのAWSへの移行
20151207 AWS re:invent 2015 ReCap
20151207 AWS re:invent 2015 ReCap
AWS Black Belt Online Seminar 2017 Deployment on AWS
AWS Black Belt Online Seminar 2017 Deployment on AWS
オンプレミスRDBMSをAWSへ移行する手法
オンプレミスRDBMSをAWSへ移行する手法
Amazon Aurora
Amazon Aurora
AWSでDockerを扱うためのベストプラクティス
AWSでDockerを扱うためのベストプラクティス
AWS Black Belt Techシリーズ Amazon Workspaces
AWS Black Belt Techシリーズ Amazon Workspaces
20190122 AWS Black Belt Online Seminar Amazon Redshift Update
20190122 AWS Black Belt Online Seminar Amazon Redshift Update
AWS Black Belt Online Seminar 2016 Amazon Kinesis
AWS Black Belt Online Seminar 2016 Amazon Kinesis
En vedette
(PlayScala(0.9.1) until Play(2.0))
(PlayScala(0.9.1) until Play(2.0))
Takuma SHIRAISHI
継続的デリバリー第11章.Ppt
継続的デリバリー第11章.Ppt
Yusuke HIDESHIMA
大崎的デリバリー第2章
大崎的デリバリー第2章
Koji Takahara
「継続的デリバリー」読書会 第3章 継続的デリバリー
「継続的デリバリー」読書会 第3章 継続的デリバリー
Norikazu Hiraki
継続的デリバリー読書会 14章
継続的デリバリー読書会 14章
Yusuke HIDESHIMA
継続的8章
継続的8章
shinjiyoshida
継続的デリバリー読書会 第 7 章 コミットステージ
継続的デリバリー読書会 第 7 章 コミットステージ
Yasutomo Arai
継続的デリバリー読書会 第 5 章 デプロイメントパイプラインの解剖学
継続的デリバリー読書会 第 5 章 デプロイメントパイプラインの解剖学
Takuma SHIRAISHI
Netty 入門 - 「Netty ベース」の何かに着手する前に
Netty 入門 - 「Netty ベース」の何かに着手する前に
Takuma SHIRAISHI
深層学習生き地獄
深層学習生き地獄
Yusuke HIDESHIMA
jenkinsのすゝめ - 継続的インテグレーションと継続的デリバリー
jenkinsのすゝめ - 継続的インテグレーションと継続的デリバリー
Junya Suzuki
En vedette
(11)
(PlayScala(0.9.1) until Play(2.0))
(PlayScala(0.9.1) until Play(2.0))
継続的デリバリー第11章.Ppt
継続的デリバリー第11章.Ppt
大崎的デリバリー第2章
大崎的デリバリー第2章
「継続的デリバリー」読書会 第3章 継続的デリバリー
「継続的デリバリー」読書会 第3章 継続的デリバリー
継続的デリバリー読書会 14章
継続的デリバリー読書会 14章
継続的8章
継続的8章
継続的デリバリー読書会 第 7 章 コミットステージ
継続的デリバリー読書会 第 7 章 コミットステージ
継続的デリバリー読書会 第 5 章 デプロイメントパイプラインの解剖学
継続的デリバリー読書会 第 5 章 デプロイメントパイプラインの解剖学
Netty 入門 - 「Netty ベース」の何かに着手する前に
Netty 入門 - 「Netty ベース」の何かに着手する前に
深層学習生き地獄
深層学習生き地獄
jenkinsのすゝめ - 継続的インテグレーションと継続的デリバリー
jenkinsのすゝめ - 継続的インテグレーションと継続的デリバリー
Similaire à 継続的12章
PostgreSQLの連携!クラウド移行!負荷分散!バックアップ!DBMotoで一挙解決!
PostgreSQLの連携!クラウド移行!負荷分散!バックアップ!DBMotoで一挙解決!
株式会社クライム
Data Center As A Computer 2章前半
Data Center As A Computer 2章前半
Akinori YOSHIDA
Continuous delivery 6
Continuous delivery 6
ShinyaOzawa
継続的デリバリー読書会資料 #1
継続的デリバリー読書会資料 #1
Yusuke HIDESHIMA
Continuous delivery chapter4
Continuous delivery chapter4
favril1
Data replication and synchronization ガイダンス
Data replication and synchronization ガイダンス
Kazuhiro Taguchi
Data consistency 入門 data partitioning ガイダンス
Data consistency 入門 data partitioning ガイダンス
Masayuki Ozawa
BigData Architecture for Azure
BigData Architecture for Azure
Ryoma Nagata
システムパフォーマンス勉強会#1
システムパフォーマンス勉強会#1
shingo suzuki
経済学のための実践的データ分析 4.SQL ことはじめ
経済学のための実践的データ分析 4.SQL ことはじめ
Yasushi Hara
第2章アーキテクチャ
第2章アーキテクチャ
Kenta Hattori
xDB Replication ブローシャー
xDB Replication ブローシャー
Yuji Fujita
SQL Server 2008/2008 R2/ 2012(/ 2014) 新機能
SQL Server 2008/2008 R2/ 2012(/ 2014) 新機能
Koichiro Sasaki
Oracle Database 12c Release 1 PSR 12.1.0.2 のご紹介
Oracle Database 12c Release 1 PSR 12.1.0.2 のご紹介
オラクルエンジニア通信
Oracle GoldenGate入門
Oracle GoldenGate入門
オラクルエンジニア通信
Okuyama説明資料 20120119 ss
Okuyama説明資料 20120119 ss
Takahiro Iwase
Monitoring Intelligence
Monitoring Intelligence
netopscoding
Snowflake Architecture and Performance
Snowflake Architecture and Performance
Mineaki Motohashi
Evolution of Impala #hcj2014
Evolution of Impala #hcj2014
Cloudera Japan
ビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラム
Recruit Technologies
Similaire à 継続的12章
(20)
PostgreSQLの連携!クラウド移行!負荷分散!バックアップ!DBMotoで一挙解決!
PostgreSQLの連携!クラウド移行!負荷分散!バックアップ!DBMotoで一挙解決!
Data Center As A Computer 2章前半
Data Center As A Computer 2章前半
Continuous delivery 6
Continuous delivery 6
継続的デリバリー読書会資料 #1
継続的デリバリー読書会資料 #1
Continuous delivery chapter4
Continuous delivery chapter4
Data replication and synchronization ガイダンス
Data replication and synchronization ガイダンス
Data consistency 入門 data partitioning ガイダンス
Data consistency 入門 data partitioning ガイダンス
BigData Architecture for Azure
BigData Architecture for Azure
システムパフォーマンス勉強会#1
システムパフォーマンス勉強会#1
経済学のための実践的データ分析 4.SQL ことはじめ
経済学のための実践的データ分析 4.SQL ことはじめ
第2章アーキテクチャ
第2章アーキテクチャ
xDB Replication ブローシャー
xDB Replication ブローシャー
SQL Server 2008/2008 R2/ 2012(/ 2014) 新機能
SQL Server 2008/2008 R2/ 2012(/ 2014) 新機能
Oracle Database 12c Release 1 PSR 12.1.0.2 のご紹介
Oracle Database 12c Release 1 PSR 12.1.0.2 のご紹介
Oracle GoldenGate入門
Oracle GoldenGate入門
Okuyama説明資料 20120119 ss
Okuyama説明資料 20120119 ss
Monitoring Intelligence
Monitoring Intelligence
Snowflake Architecture and Performance
Snowflake Architecture and Performance
Evolution of Impala #hcj2014
Evolution of Impala #hcj2014
ビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラム
継続的12章
1.
継続的12章 データを管理する
2.
12.1 導入 • アプリケーションのデータは長く保持しなけ
ればならない • システムの中で一番重要なのはデータだ • データは移行しなければならない • データの構造や内容を変更する仕組みが必要 • データベースの移行プロセスを自動化するこ と • 本番のダンプをテストデータとして用いるの は問題なので代替案をあとで提示する
3.
12.2 データベースのスクリプト処
理 • DB のあらゆる変更は自動化されなければ ならない • アプリケーションの特定のバージョンに 合わせたDBスキーマに設定できるよう管 理しなければならない • ユニットテストはDBなしでも動作しなけ ればならない • 受け入れテストの準備プロセスでDBス キーマとデータを設定できなければなら ない
4.
12.2.1 データベースを初期化す
る • データベースをデプロイする最もシンプ ルな手順: 1. 以前にあったものを削除する 2. データベースの構造、インスタンス、ス キーマなどを作る 3. データを読み込む • ほとんどのプロジェクトでは、デプロイ メントプロセスで既存データの移行が必 要となる
5.
12.3 インクリメンタルな変更 • 変更を加えた後もアプリケーションが動
作し続けなければならない • 既存のデータを保持し続けなければなら ない • ロールバックの手段も用意しなければな らない
6.
12.3.1 データベースのバージョンを
管理する • テーブルにバージョン番号を含める • 変更を加えるたびに2つのスクリプトを 作る – ロールフォワード(バージョンを上げる) – ロールバック(バージョンを下げる) • アプリケーションに動作するDBのバー ジョン情報を与える • Ruby on Rails がこの方式 – Java, .Netの場合、DbDeploy, Tarantino, DbDiff, Dbmigrateがある
7.
12.3.1 続き • 構造を追加する変更は簡単
– ロールバックスクリプトは削除するだけ • 構造を変更する場合、データを削除する ことがある – ロールフォワードで一時テーブルを作り、削 除するデータをコピーして、ロールバックで きるようにする
8.
12.3.1 続き2 • データベーススキーマの変更は難しくな
りがち – 追加は概ねうまくいく • 追加する制約に既存のデータが違反していたり、 デフォルト値なしで追加する場合は難しくなる – 削除する場合は難しい
9.
12.3.2 続き3 • DBの変更を管理するテクニックにより、
– アプリケーションのデプロイで、デプロイ先 の環境のDBの状態を心配する必要がなくなる – DB変更によるアプリケーションへの影響を吸 収する • アプリケーションが要求するDBのバージョンを更 新するまでDBの変更が適用されない
10.
12.3.2 オーケストレイトされた変更
を管理する • すべてのアプリケーションを一つのDBに統合 するのはおすすめしないが、しようがない場 合もある • DB変更のテストはDBを共有するアプリケー ションもそろえた環境で行うこと – この環境をシステムインテグレーション環境ある いはステージング環境と呼ぶことがある • 他のアプリケーションを保守するチームと話 し合って変更すること • アプリケーションを複数のバージョンで動く ようにすると良い
11.
12.4 データベースのロールバック
と ゼロダウンタイムリリース • 本番環境へのデプロイ次の制約 – アップグレードの取り消し時にアップグレー ド後のトランザクションを失わないこと – アプリケーションを利用可能なままにしてお くこと • ホットデプロイ、あるいはゼロダウンタイムリ リース
12.
12.4.1 データを失わずに
ロールバックする • 単にロールバックするわけには行かない 場合 – 一時テーブルからデータを書き戻す場合、 アップグレード以降に追加されたレコードが 一貫性制約に違反することがある – ロールバック時に新たなトランザクションか らのデータを削除するが、システム上はその データを失うことが許されない
13.
12.4.1 続き • 解決策
– アップグレード後のトランザクションを キャッシュする • しっかりした設計とテストが必要 – ブルーグリーンデプロイメント • 片方のDBにロールバック前のデータがあるのでそ れを元に復元 • 上記の方法では、データが大量にあると、 ダウンタイムを避けられないこともある
14.
12.4.2 アプリケーションのデプロイを データベースのマイグレーションから分離
する • DBのマイグレーションとアプリケーショ ンのデプロイを切り離す – ブルーグリーンデプロイメントやカナリアリ リースにも使える
15.
12.4.2 続き • 後方互換
– 新しいバージョンのアプリケーションを古い バージョンのDBでも動くようにする – 新しいアプリケーションを古いバージョンの DBで動かす – 様子を見てロールバックの必要がないと判断 したらDBのバージョンを上げる
16.
12.4.2 続き2 • 前方互換
– 古いバージョンのアプリケーションを新しい バージョンのDBでも動くようにする – 新しく追加されたフィールドは無視する – 万能ではないが通常の変更の場合には有用
17.
12.4.2 続き3 • 抽象化レイヤ
– ストアドプロシージャやビュー – データベースオブジェクトを変更しても、ア プリケーション向けのインターフェースであ るビューなどはそのままに保てる
18.
12.5 テストデータを管理する • パフォーマンス
– ユニットテスト • DBを使わない、あるいはインメモリのDB – その他のテスト • 一部の例外を除き本番DBのデータを使わない • テストの分離 – テストの実行に関するデータが永続的に保持 されうる
19.
12.5.1 仮のデータベースでの
ユニットテスト • DBとやり取りするサービスの代わりにテスト ダブルを使う • DBにアクセスするコードをテストダブルで置 き換える – リポジトリパターン • DBアクセスの抽象化レイヤ – DBアクセス用コードがひとまとめになり保守しやすい • DBのフェイクを使う – インメモリDB • H2, SQLite, JavaDB
20.
12.5.2 テストとデータのつながりを
管理する • テストの状態を管理する方法 – テストの分離 • 各テスト用のデータはそのテストからしか見えない – 順応型テスト • 各テストがデータ環境を調べ、データに合わせて振る 舞いを変える – テストの順序付け • 実行順序を決め、各テストが一つ前のテストの出力を 使う • 通常はテストの分離を使うべき – 並列化も可能になる
21.
12.5.3 テストの分離 • 個々のテストがアトミック
– 他のテストに影響を与えず、影響を受けない • 方法 – テスト終了時にDBをテスト実行前の状態に戻 す • トランザクションを利用してロールバックする – データの機能分割 • 受け入れテストでも有効 • 命名規則を定めてそれに従い、各テストがそのテ スト用のデータだけを見る
22.
12.5.4 準備と後始末 • 開始位置を確立し、テスト終了時に状態
を復元する • 順応型テストでは、準備段階で環境を評 価して、既知の開始位置を確立する
23.
12.5.5 一貫したテストシナリオ • 一貫したストーリーを作ってテストした
くなることがある – データの準備と後始末が簡単になる – 個々のテストがシンプルになる – 実行速度が早くなる(データの生成と破棄が 減るため)
24.
12.5.5 続き • 個人的には良くないと考えている
– 各テストが密結合する • テストの設計が難しくなる • 1つのテストの失敗により、依存するテストすべ てが失敗する • 業務のシナリオや技術的実装の変化によりテスト スイート全体の見直しが発生する • 各ステップでのテストを網羅できない
25.
12.6 データの管理と デプロイメントパイプライン •
我々がテストしたかったのは一体何か? – 我々が望む振る舞いと一致しているか • ユニットテスト – 不注意による破壊を防げる • 受け入れテスト – 価値をお届けできることを確かめる • キャパシティテスト – キャパシティ要件を満たすことを確かめる • インテグレーションテスト – 他のサービスと正しくやり取りすることを確かめる • これらのテストで必要になるテストデータは どのようなものか、どのように管理するべき か
26.
12.6.1 コミットステージでの
テストにおけるデータ • 実行速度が最重要 • 実装の詳細とテストを密結合させない – リファクタリングの妨げとなる – 本来はリファクタリングを安全に行う助けと なるべき – 密結合はテストデータに凝り過ぎた結果であ ることが多い
27.
12.6.1 続き • よくできたコミットステージは、手の込
んだデータを用意せずに済む • 最小限のテストデータを使う – それほどデータ駆動ではない – テストヘルパーやフィクスチャを使う • データ構造の変化の影響を軽減できる
28.
12.6.2 受け入れテストにおけるデー
タ • システムをテストする – テストデータは複雑となる • テストケースの作成を再利用できるよう にすること • 各テストのテストデータに対する依存を 減らす
29.
12.6.2 続き • データの区分を意識すると良い
– テスト固有のデータ • テスト対象を動かす • テストするケースの詳細を表す – テストが参照するデータ • テストに関係する • テスト対象の振る舞いにはあまり影響しない – アプリケーションが参照するデータ • テスト対象に無関係 • アプリケーション立ち上げのために必要
30.
12.6.2 続き2 • テスト固有のデータ
– 一意でなければならない – テスト分離のための手段 • テストが参照するデータ – 事前に用意した初期データで管理可能 – 再利用する • アプリケーションが参照するデータ – どんな値でも、 null でも良い – テストの結果に影響しなければ良い
31.
12.6.2 続き3 • アプリケーションが参照するデータ、う
まくすればテストが参照するデータも、 データベースからのダンプの形式で保持 しておける – それをバージョン管理し、マイグレーション を組み込む – DBの自動マイグレーション自体のテストとし ても有効
32.
12.6.2 続き4 • アプリケーションの内部コードやDBダン
プを使って初期状態に持っていくのはお すすめしない • アプリケーションのAPIを使うべき – 受け入れテストの間に矛盾した状態に陥らな い – DBやアプリケーションのリファクタリングが、 受け入れテストに影響しなくなる – 受け入れテストがアプリケーションのAPIテス トとしても機能する
33.
テストデータの形式:その一例 • 金融取引:ユーザーのポジションが正しく更新された
かのテスト • テスト固有のデータ – アカウント、ポジション • テストの準備としてアカウントの登録と資金を提供 • テストが参照するデータ – 金融商品 • 他のテストが再利用しても、「ポジションのテスト」には影響 しない • アプリケーションが参照するデータ – アカウント作成のオプション • ポジションの算出に無関係ならばテストに無関係 • 任意のデフォルト値を使う
34.
12.6.3 キャパシティテストにおける
データ • 大量のデータの生成を自動化することを勧める • 入力データもマスタデータも、インタラクション テンプレートのような仕組みを使う(p.299) • 受け入れテストをシステムとのインタラクション を記録したものとして捉える – 記録した内容はそれ以降のステージでの開始地点と して利用 – 受け入れテストを選択して関連するデータをツール を用いて膨らませ、様々なインタラクションを行え るようにする? – 受け入れテストとキャパシティテスト両方で使える でしょ?
35.
12.6.4 その他の テストステージにおけるデータ •
自動化した受け入れテストを以降のすべ てのテストの開始地点として使う • WEB アプリケーションでは互換性テスト も用意する – 受け入れテストを全ての主要ブラウザで行う
36.
12.6.4 続き • 手動テストでのデータの扱い
– 最小限のデータで、空っぽの初期状態で開始 する – 大きめのデータ群を使い、実環境を想定した 操作シナリオを実行する – 本番データベースのダンプを使う • おすすめしない • 巨大で扱いにくい • 本番DBのマイグレーションのテストなどでは有効
37.
12.6.4 続き2 • これらのデータ群は開発者が開発環境で
も使えなければならない • 開発者の開発環境では、本番データベー スのデータを使ってはならない
38.
12.7 まとめ • データ管理の基本原則
– 完全に自動化したプロセスでDB作成やマイグ レーションを行えるようにすること – なんどでも繰り返せて信頼できること – どんな場合も同じ手順に従うこと
39.
12.7 続き • 本番DBのダンプをなるべく使わない
– テスト自身に状態を作らせる – 各テストが独立して実行できる – テスターは目的に合わせてデータを用意し管 理する
40.
12.7 続き2 • DBをバージョン管理し、ツールでマイグレーショ
ンを自動化する • スキーマ変更の際に前方互換性と後方互換性を維 持し、データのデプロイメントとマイグレーショ ンの問題をアプリケーションのデプロイメントの 問題と分離する • テストデータの作成はテストの準備段階に含める • テストで共有するデータの準備処理に、アプリ ケーション立ち上げのための必要最小限のデータ を含め、それ以外に含めるのは一般的に使われる マスターデータだけにする
41.
12.7 続き3 • テストに必要な状態を準備するときは、
可能な限りアプリケーションの公開APIを 用いる • 例外を除いて本番データベースのダンプ をテスト用に使わない – 本番データから注意して取り出した小さめの データか、受け入れテストやキャパシティテ ストを実行した結果のデータを使う
Télécharger maintenant