DevOps戦略での
自動テスト活用法について
小井土 亨
2021.5.6版
自己紹介
❖ 仕事
❑ プログラマー(1984年から)
❑ 業務パッケージシステムを開発(1984年から)
❖ 具体的な作業内容
❑ 開発のガイドラインを作る
❑ 開発プロセスを設計する
❑ 開発プロセスを支える環境を構築し、運用する
◼ 各種ツールの選択
◼ 自動化や支援ツールの開発
◼ ビルド環境の整備、各種管理ツールの整備
❑ ソフトウェア・アーキテクチャを決定する
◼ 基盤フレームワークの設計と実装
◼ 基盤の共通ライブラリの設計と実装
❑ 開発上のいろいろな相談を受ける
❖ コミュニティ
❑ テスト自動化研究会(STAR)、SQiP(日科技連)、XPJUG
2
3
アジェンダ
❖ DevOps戦略とテスト
❖ 自動テストのアーキテクチャ
❖ システムテストの自動化とアーキテクチャ
DevOps戦略とテスト
1.DevOpsで発生する問題について
2.3つの自動テスト
3.キーワード駆動テストとは
DevOpsとは
❖ 目的
❑ 高い品質を確保して、システムへの変更を高い頻繁で行う
❑ 機能拡張の決定から開発、運用までを短時間で行う
❖ 特徴
❑ 繰り返し機能拡張を行う
◼ 一つの機能拡張を短いサイクルで行う
❑ 品質を維持する
◼ 品質が低下する無駄な作業が発生し作業が遅くなる
❑ 作業の流れをスムーズにする
◼ 様々なソフトウェア(ツール)を使って、効率的に進める
5
戦略・戦術・戦法(手法)
❖ 戦略
❑ 最重要な課題について、方向性や実現についての総合的・長期的な計
画
❖ 戦術
❑ 戦略を達成するための具体的な方法・手段
❖ 戦法(手法)
❑ 戦術を特定の現場で実現する手法
6
戦略 ファミリー層を獲得する
戦術 ファミリー向けのエリア(XX)を新築する
戦法 ファミリーパスポートを用意する
例 目標:テーマパークで年間集客数を100万人規模にする
期間を短くする戦術
❖ 速度を上げる
❑ システムを導入して
効率化する
❖ 同期から非同期にする
❑ 並列化することで、期間を短くする
7
24時間稼働
順番に走る
同時に走る
DevOpsの発生する問題
❖ システムテストに関する問題
❑ テストコストが増大する
◼ 頻繁なリリースが行われるために、同じテストを行うことが多くなっ
てコストが増大する
❑ テストの期間が短くなる
◼ 頻繁なリリースが行われるために、相対的にテストの期間は短くな
る
❖ 品質低下に関する問題
❑ 品質低下(バグ)によって、作業が停滞する
◼ 特定の検査ができなくなる
❑ 品質低下(バグ)によって、無駄な作業発生する
◼ バクを関するための作業が発生する
◼ 修正後に、確認作業を行う
8
9
品質低下への対応策
❖ 開発プロセスに合わせて、3つの自動テストを導入
❑ テストのピラミッド(構造化された自動テスト)
単体
結合
システム
フィードバッグ
ユーザー
視点
遅い
速い
近い
遠い
できるだけ
早い段階で対応
10
3つの自動テスト
❖ システムテストとは
❑ システムが全体として正しく動作することを確認するテスト
❑ 自動化のするためのツールが必要
❖ 結合テストとは
❑ 複数の部品(モジュール)がつながって正しく動作すること
を確認するテスト
❑ 変更されやすいUIの影響を受けないテスト
❑ ユニットテストフレームワークなどで自動テスト化する
❖ 単位テストとは
❑ コードレベルの動作を確認するテスト(ユニットテスト)
❑ コンパイラなどでは確認できない内容を限定的に動作させ
て確認するテスト
❑ ユニットテストフレームワークで自動テスト化する
11
要求定義
コーディング
システム
テスト
受け入れ
テスト
システム
仕様化
システム
設計
要求のテスト
仕様のテスト
システムの
構築
システムの
導入
単体テスト
開発プロセスと3つの自動テスト
開発プロセス内のテストの位置づけ
統合
テスト
設計のテスト
ソフトウェアの
構築
③
②
①
12
システムテストのコスト増大への対応策
❖ 対応すべきシステムテスト
❑ リリースごとに繰り返されるテスト
◼ 前回までのリリースで提供した機能について、同じように動作する
ことを確認するテスト
❖ 回帰テスト(リグレッションテスト)
❑ 今回のリリースと前回のリリースで同じことを確認する
❖ 構成テスト
❑ さまざま構成で同じテストを実行し、同じ品質であることを
確認する
システムテストを自動化する
13
システムと自動テスト
❖ システムと自動テストは兄弟の関係(写像)
❑ システムと合わせて自動テスト設計する
❑ システムに合った自動テストを行う
❖ 開発プロジェクトごとに、自動テストは異なる
❑ プロジェクトに合わせて自動テスト環境を構築する
❑ プロジェクトごとに自動テストの目的を明確にする
システム 自動テスト
システムテストを実装の束縛から解放する
❖ 開発プロセス内のシステムテストの位置づけ
❖ システムテストを非同期化する
❑ 自動テストのテストケースを実装前に開始する
❑ 実装に依存しない、論理的な言葉でテストケースを記述
❑ 実装とルールを決める必要がある
◼ 例:操作対象のID
14
仕様 設計 実装 構築 テスト
リレーのアンカー
責任は重いけど、先頭でゴールするには
出番が遅すぎることも
キーワード駆動システムテスト
キーワード駆動テストとは
❖ キーワード駆動テスト
❑ 論理的なキーワードを用いて記述されたテストケースをツ
ールが解釈し、テスト対象を操作するテスト
❑ 操作として、値の設定以外に、状態や値の取得を提供する
15
検査対象のシステム キーワード駆動による操作システム
操作手順を再現する
キーワードによる操作手順
(テストケース)
キーワード駆動テストによる対応策
❖ キーワード駆動によって、実装と切り離す
❑ 論理的なキーワードによってテストケースを記述する
❑ 実装される前にテストケースを記述する
❑ 様々なメンバーがテストケースを記述できる
❖ キーワード駆動テストケースの例
16
単価
個数
計算
金額
対象 値 操作
単価 200 入力
個数 5 入力
計算 実行
金額 1,000 確認
まとめ
❖ DevOps戦略のテスト活用法
❑ DevOpsで実現するための戦略を立てる
❑ 実現するときに発生する問題に注目する
◼問題の解決策(戦術)を立てる
❖ 解決策
❑ 3階層のテストを自動化する
❑ 3階層のテストを必要に応じて使い分ける
❑ システムテストにキーワード駆動を導入する
17
システム開発に、システムを導入して効率化する
(自動テストは、具体例の一つ)
自動化(作業)は
目的ではない
システムテストの自動化とアーキテクチャ
1.システムテスト
2.システムテストの自動化について
3.システム自動テストのアーキテクチャ
19
システムテストとは
❖ システムテストとは
❑ システムが全体として正しく動作することをテストする
❑ 様々な視点でのテストが必要、特に利用ユーザー視点
❖ システムテストの例
❑ 運用テスト
◼ 実運用に近い環境で、実際に運用するテスト
❑ 操作性テスト
◼ 利用ユーザー視点で、操作を行うテスト
❑ 構成テスト
◼ 様々な構成パターンでのテスト
❑ マニュアルテスト
◼ マニュアル通りに操作して問題なく動作することを確認するテスト
19
20
テスティングと自動テスト
❖ テスティング活動
識別
設計
実装
実行
比較
どのようなテストができて、何をテストするか決める
どうやってテストするか決める
テストケースを作る
(データ、スクリプトなど)
テストケースを実行する
テストケース成功失敗を判定する
(出力結果と期待結果を比較)
自動化作業
手動/自動
共通作業
自動テストされたシステムテストとは
❖ 自動テストはシステム
❑ 自動テストは、検査を実行するシステム
❖ 自動化されたシステムテストとは
❑ システムをテストするという目的を持ったシステム
21
検査対象のシステム システムを検査するためのシステム
検査という
明確な目的と機能
システムテスト自動化の問題
❖ テストするシステムやプロジェクトによって、自動化の
要求は異なる
❖ 自動化はゴールではない
22
掃除を自動化する
自動化度は高い 結果品質は高い
自動化がゴールではない
ルールと指針を決めて、目的にあった自動化
❖ ルール
❑ 判断するための具体的なルールを用意する
❖ 指針(品質特性)
❑ 複数のルール間で整合性を取るためには、指針が必要
23
指針
1.品質
2.効率
ルール1
確実にきれいにする
ために人が行う
システム自動テストのアーキテクチャとは
❖ 品質特性
❑ 自動化されたシステムテストとして統一された品質を達成
するために、自動化されたシステムテストに求められる品
質特性と対象(ステークホルダー)を決める
❖ ルール(仕組み)
❑ 複数のメンバー間で統一された品質を達成するために、具
体的なルールを用意する
❑ 品質特性を強制する仕組みを作る
24
目標
自動テストのシステム構成
❖ 自動テストのシステム構成
❑ 二つのシステム
◼テスト対象システム
◼自動テストシステム
❑ 自動テストシステムのサブシステム
◼テストスクリプトの作成
◼テストスクリプトの実行
◼自動テストの運用
25
自動テストの運用
自動テストシステム
テスト対象システム テストスクリプトの実行
テストスクリプトの作成
システムごとに異なった関心事
❖ 自動テストの観点からの関心事
❑ テスト対象システム
◼テストしやすいシステムであること
❑ テストスクリプトの作成
◼効率よく作成できること
❑ テストスクリプトの実行
◼確実に実行できること
❑ 自動テストの運用
◼上手にテストの運用を行うこと
❖ 各システムと品質特性
❑ システムごとに異なった品質特性がある
26
テスト対象システムに要求される品質特性
❖ 操作性(実行性)
❑ 自動テストのプログラムから対象のプログラムを実行し、制
御できること
❖ 確認性
❑ 対象のプログラムを実行した結果が正確に確認できること
❖ 再現性
❑ テストを行う特定の状況を再現できること
27
自動化されることを
最初から盛り込む
「テストスクリプトの作成」に関する品質特性
❖ 理解性
❑ テストスクリプトが読みやすく理解しやすいこと
❑ テストスクリプトを容易に作成することができること
❑ テストスクリプトができるだけ多くのメンバーが作成できること
❖ 効率性
❑ 多様で効果的なテストスクリプトを適切なコストで作成できること
❖ 保守性
❑ テストスクリプトはテスト対象の変更に素早く対応する必要がある
❑ テストスクリプトの変更が容易であること
❖ 拡張性
❑ テストスクリプトの機能を必要に応じて拡張できること
28
自動テストシステムに要求される品質特性
❖ 安定性
❑ テストスクリプトを安定して実行できること
❑ 同じテストスクリプトを何度でも安定して実行できること
❖ 信頼性
❑ テスト結果の判定が信頼できること
❖ 移植性
❑ 異なった環境でテストを実行できること
29
データ駆動型
キーワード駆動型など
「自動テストの運用」に関する品質特性
❖ 効率性
❑ 必要な自動テストを効率的に運用することができること
❖ 柔軟性
❑ 状況に合わせて、柔軟な運用ができること
❖ 障害許容性
❑ 対象のプログラムで予測しないエラーが発生しても、他のテ
ストスクリプトが継続的に実行できること
❖ 並列性
❑ 複数の環境で効率的にテストを並列して実行できること
30
各サブシステムの担当者
❖ テスト対象システム
❑ 開発者
❖ 自動テストシステム
❑ 開発者
❖ テストスクリプトの作成
❖ テストの運用
31
テスト対象システムを理解しているメンバーが開発する
必要ならテスト対象システムを修正する
プロジェクトメンバー全員
CI/CD担当者
まとめ
❖ 目的を明確にする
❑ テストしたいシステムやプロジェクトによって目的は
異なる
❖ ルールと指針(品質特性)を決める
❑ ルールと指針によって、的確な自動化が行える
❖ システムテストのアーキテクチャを構築する
❑ 対象システム、自動テストシステムは異なった指針
が必要
❖ チーム全体で、自動化を行う
32
33
参考文献
❖ システムテスト自動化 標準ガイド
❖ 初めての自動テスト Jonathan Rasmusson
❖ テスト駆動開発 ケント・ベッグ
❖ アーキテクトの審美眼 萩原正義
❖ 実践ソフトウェアエンジニアリング ロジャー S・プレスマン
❖ 森口 繁一編『ソフトウェア品質管理ガイドブック』日本規格協会(1990)
❖ アジャイルソフトウェア開発の奥義 ロバート・C・マーチン

More Related Content

PPTX
設計品質とアーキテクチャ
PPTX
テスト分析入門 -「ゆもつよメソッド」を例に- #wacate
PDF
Jstqb test analyst-chap1
PPTX
「マインドマップから始めるソフトウェアテスト」まとめ
PPTX
自動テストの品質とテストパターン
PPTX
テスト自動化とアーキテクチャ
PDF
テストを分類してみよう!
PDF
アジャイルテスト -高品質を追求するアジャイルチームにおけるテストの視点-
設計品質とアーキテクチャ
テスト分析入門 -「ゆもつよメソッド」を例に- #wacate
Jstqb test analyst-chap1
「マインドマップから始めるソフトウェアテスト」まとめ
自動テストの品質とテストパターン
テスト自動化とアーキテクチャ
テストを分類してみよう!
アジャイルテスト -高品質を追求するアジャイルチームにおけるテストの視点-

What's hot (16)

PDF
【Agile Conference tokyo 2011】 継続的フィードバック
PDF
アジャイル×テスト開発を考える
PDF
ソフトウェアテストことはじめ2016年ver
PPTX
【楽天テックカンファ前夜祭2014】誰がテスト自動化をするべきか #rakutentech
PDF
Wacate2015summer_report
PDF
テスト分析・設計を体感しよう ~マインドマップを活用してテスト観点を発想しよう
PPTX
60分でわかった気になるISO29119 #wacate
PPTX
SQuBOK読破会活動紹介とSQuBOKにおける派生開発
PDF
REBOKを社内展開する際の障壁
PDF
ソフトウェア開発工程とテスト入門
PDF
【SQiP 2014】継続的システムテストについての理解を深めるための 開発とバグのメトリクスの分析 #SQiP #SQuBOK
PDF
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
PDF
JaSSTよいテストプロセスの作り方
PDF
WACATE2019冬 ソフトウェアテスト業界でのステップアップを考えよう #wacate
PDF
テストアプローチにデータ分析を使おう
PDF
Agileツール適合化分科会(テスト自動化ツール)
【Agile Conference tokyo 2011】 継続的フィードバック
アジャイル×テスト開発を考える
ソフトウェアテストことはじめ2016年ver
【楽天テックカンファ前夜祭2014】誰がテスト自動化をするべきか #rakutentech
Wacate2015summer_report
テスト分析・設計を体感しよう ~マインドマップを活用してテスト観点を発想しよう
60分でわかった気になるISO29119 #wacate
SQuBOK読破会活動紹介とSQuBOKにおける派生開発
REBOKを社内展開する際の障壁
ソフトウェア開発工程とテスト入門
【SQiP 2014】継続的システムテストについての理解を深めるための 開発とバグのメトリクスの分析 #SQiP #SQuBOK
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
JaSSTよいテストプロセスの作り方
WACATE2019冬 ソフトウェアテスト業界でのステップアップを考えよう #wacate
テストアプローチにデータ分析を使おう
Agileツール適合化分科会(テスト自動化ツール)
Ad

Similar to Automated testingindevopsstrategy.20210506 (13)

PDF
20170710 hifive-test-meetup
PDF
WACATE2012WinterBPPsession
PDF
Automation test.ssf alpha
PPTX
自動テストで開発効率を上げるには
PPTX
今さら聞けない人のためのDevOps超入門
PPTX
テストスキルを測ってみよう
PPTX
今さら聞けない人のためのDevOps超入門
PDF
自動テストの誤解とアンチパターン in 楽天 Tech Talk
PDF
異業種でのテスト自動化の実際
PDF
Automationtestssf beta
PPTX
今さら聞けない人のためのDevOps超入門 ODC2023編
PPTX
今さら聞けない人のためのDevOps超入門
PDF
機能テストの"自働化"
20170710 hifive-test-meetup
WACATE2012WinterBPPsession
Automation test.ssf alpha
自動テストで開発効率を上げるには
今さら聞けない人のためのDevOps超入門
テストスキルを測ってみよう
今さら聞けない人のためのDevOps超入門
自動テストの誤解とアンチパターン in 楽天 Tech Talk
異業種でのテスト自動化の実際
Automationtestssf beta
今さら聞けない人のためのDevOps超入門 ODC2023編
今さら聞けない人のためのDevOps超入門
機能テストの"自働化"
Ad

More from Toru Koido (12)

PPTX
XPJUGの運営について、2022年のAWS DEV DAYで発表した内容です。
PDF
Keyword driventestexercisetext.20210506
PDF
Keyword test
PDF
Keyword System Test
PDF
キーワード駆動テストチュートリアルハンズアウト.03.06
PPTX
キーワード駆動によるシステムテストの自動化について 2015
PPTX
Xp2 2014版
PPT
Xp2 2013版
PDF
アジャイル開発におけるシステムテストの自動化
PPTX
オブジェクト指向設計の原則
PDF
PPTX
XPJUGの運営について、2022年のAWS DEV DAYで発表した内容です。
Keyword driventestexercisetext.20210506
Keyword test
Keyword System Test
キーワード駆動テストチュートリアルハンズアウト.03.06
キーワード駆動によるシステムテストの自動化について 2015
Xp2 2014版
Xp2 2013版
アジャイル開発におけるシステムテストの自動化
オブジェクト指向設計の原則

Automated testingindevopsstrategy.20210506