SlideShare ist ein Scribd-Unternehmen logo
1 von 27
Downloaden Sie, um offline zu lesen
テスト自動化入門
2022/2/21 Saito Norihiko@Graat勉強会
テスト自動化とは?
“ソフトウェアを使って、テストマネジメ
ント、テスト設計、テスト実行、結果
チェックなどのテスト活動の実行や支
援をすること。”
ソフトウェアテスト標準用語集(日本語版)
Version 2.3.J02
テスト自動化が重要になった背景
プロジェクトからプロダクトへのシフト
大竹 章裕(他). ソフトウェアデザイン 2022年3月号. 技術評論社. 2022
“プロジェクトからプロダクトへのシフト
があり、ソフトウェアは完成させるもの
ではなく継続的な変更と改善を続ける
ものになりました。(強調筆者)”
なぜテスト自動化が必要か?
● 背景
○ ソフトウェアは継続的に変更と改善がされる
● 品質面
○ 変更毎に、既存のソースコード、システム、機能が破壊さ
れていないかを確認する必要がある
● 開発面
○ 既存の機能がテストされていることで、安全かつ効率的に
変更できる
→(特に機能が増加したソフトウェアで)変更毎の手動による回帰
テストはコスト的に非現実的であり、自動化が必要
なぜテスト自動化が必要か?
“テスト自動化の理由としてコストメリットを挙げる方
が多いですが、コストだけに目を向けると本質を見誤
ります。
(中略)したがって、現代において、変化に適応し続
け、競争力のあるソフトウェアとチームを作るために
は、自動テストは必須であると言えるでしょう。(強調
筆者)”
大竹 章裕(他). ソフトウェアデザイン 2022年3月号. 技術評論社. 2022
手動テストは継続できない
「アジャイル開発において、技術と品質の重要性は不可欠だ(後編)。Agile Japan 2013 」
https://www.publickey1.jp/blog/13/agile_japan_2013_1.html
スクラムガイド
「スクラムガイド」 https://scrumguides.org/docs/scrumguide/v2020/2020-Scrum-Guide-Japanese.pdf
“すべてのインクリメントが連携して機能すること
を保証するために、徹底的に検証する必要があ
る。”
すべてのテストを自動化すれば良いか?
導入は慎重に
テスト自動化の導入には様々なリスクがある
リスクを考慮しながら導入する
リスクの例
○ テストツールの効果を過大に期待する
○ テストツールを初めて導入する場合に要する時間、コスト、工数を過
小評価する
○ 大きな効果を継続的に上げるために必要な時間や工数を過小評価す
る
「テスト技術者資格制度Foundation LevelシラバスVersion 2018V3.1.J03」
http://jstqb.jp/dl/JSTQB-SyllabusFoundation_Version2018V31.J03.pdf
テストの分類と位置付け
テストの一般的な分類
● 代表的なテスト
○ UI(エンドツーエンド)テスト
○ 結合テスト
○ ユニットテスト
● その他のテスト
○ Behavioral Testing
○ Visual Regression Testing
○ Exploratory Testing(探索的テスト)
大竹 章裕(他). ソフトウェアデザイン 2022年3月号. 技術評論社. 2022
ユニットテスト
● ⭕超高速
● ⭕多目的に利用できる
● ❌結合部分の確認に弱い
Jonathan Rasmusson. 初めての自動テスト ―Webシステムのための自動テスト基礎. オライリージャパン. 2017
結合テスト
● ⭕つながりを見れる
● ❌詳細さに欠ける
Jonathan Rasmusson. 初めての自動テスト ―Webシステムのための自動テスト基礎. オライリージャパン. 2017
UI(エンドツーエンド)テスト
● ⭕エンドツーエンドで動く
● ⭕ユーザー視点で対象を見る
● ❌高コストで遅い
● ❌UIは比較的変化しやすく、テストが壊れやすい
Jonathan Rasmusson. 初めての自動テスト ―Webシステムのための自動テスト基礎. オライリージャパン. 2017
テスト分類ごとのコスト配分
テストピラミッド
「テストの基礎」 https://developer.android.com/training/testing/fundamentals?hl=ja
“一般的には、小規模テスト 70%、中規模テス
ト 20%、大規模テスト 10% の割合でテストを
作成することをおすすめします。”
テスティングトロフィー(Kent C. Dodds氏提唱)
「Learn the smart, efficient way to test any JavaScript application.」 https://testingjavascript.com/
UI(エンドツーエンド)テストの導入
UI(エンドツーエンド)テストの導入
「テスト自動化とは?9割が失敗するといわれるテスト自動化。成功に導くたった2つの鍵」 https://service.shiftinc.jp/column/4634/
● プロダクト/プロジェクトの状況やフェーズで変わる
● コストパフォーマンスに優れた「スモーク」や「マネーパス」が
導入ハードルが低い
テスト駆動開発(TDD)とは?
「テスト駆動開発」 https://ja.wikipedia.org/wiki/%E3%83%86%E3%82%B9%E3%83%88%E9%A7%86%E5%8B%95%E9%96%8B%E7%99%BA
“テスト駆動開発 (てすとくどうかいはつ、英:
test-driven development; TDD) とは、プログラム
開発手法の一種で、プログラムに必要な各機能に
ついて、最初にテストを書き(これをテストファースト
と言う)、そのテストが動作する必要最低限な実装を
とりあえず行なった後、コードを洗練させる、という短
い工程を繰り返すスタイルである。”
「レッド・グリーン・リファクタリング」サイクル
1. レッド:動作しない、おそらく最初のうちはコンパイルも通らないテストを1つ書く。
2. グリーン:そのテストを迅速に動作させる。このステップでは罪を犯してもよい。
3. リファクタリング:テストを通すために発生した重複をすべて除去する。
Kent Beck (著), 和田 卓人 (翻訳). テスト駆動開発. オーム社. 2017
テスト駆動開発(TDD)をめぐる議論
● TDD is dead. Long live testing. (DHH)
○ https://dhh.dk/2014/tdd-is-dead-long-live-testing.html
● TDDはアーキテクチャに悪影響を与えるか?
○ https://www.infoq.com/jp/news/2017/04/does-tdd-harm
-architecture/
まとめ
まとめ
● テスト自動化
○ コストメリットもあるが、継続的に変更および改善するソフト
ウェアを維持するためには必須の技術
○ とはいえ様々なリスクがあるため、闇雲な導入はNG
○ テスト分類毎にコスト配分を意識する

Weitere ähnliche Inhalte

Was ist angesagt?

テスト分析入門 -「ゆもつよメソッド」を例に- #wacate
テスト分析入門 -「ゆもつよメソッド」を例に- #wacateテスト分析入門 -「ゆもつよメソッド」を例に- #wacate
テスト分析入門 -「ゆもつよメソッド」を例に- #wacate
Kinji Akemine
 

Was ist angesagt? (20)

初学者のためのプロンプトエンジニアリング実践.pptx
初学者のためのプロンプトエンジニアリング実践.pptx初学者のためのプロンプトエンジニアリング実践.pptx
初学者のためのプロンプトエンジニアリング実践.pptx
 
User storymapping in 10 minutes
User storymapping in 10 minutesUser storymapping in 10 minutes
User storymapping in 10 minutes
 
Data-Centric AI開発における データ生成の取り組み
Data-Centric AI開発における データ生成の取り組みData-Centric AI開発における データ生成の取り組み
Data-Centric AI開発における データ生成の取り組み
 
アジャイルメトリクス実践ガイド
アジャイルメトリクス実践ガイドアジャイルメトリクス実践ガイド
アジャイルメトリクス実践ガイド
 
Digitaltransformation Journey
Digitaltransformation JourneyDigitaltransformation Journey
Digitaltransformation Journey
 
ウォーターフォールとアジャイルのフェアな比較
ウォーターフォールとアジャイルのフェアな比較ウォーターフォールとアジャイルのフェアな比較
ウォーターフォールとアジャイルのフェアな比較
 
アプリ開発へのOdc分析導入の取り組み
アプリ開発へのOdc分析導入の取り組みアプリ開発へのOdc分析導入の取り組み
アプリ開発へのOdc分析導入の取り組み
 
アジャイル開発はWhyから始まる
アジャイル開発はWhyから始まるアジャイル開発はWhyから始まる
アジャイル開発はWhyから始まる
 
品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)
品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)
品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)
 
アーキテクチャのレビューについて - JaSST Review '18
アーキテクチャのレビューについて - JaSST Review '18アーキテクチャのレビューについて - JaSST Review '18
アーキテクチャのレビューについて - JaSST Review '18
 
「PdMと考えるQAとプロダクトマネジメント」
「PdMと考えるQAとプロダクトマネジメント」「PdMと考えるQAとプロダクトマネジメント」
「PdMと考えるQAとプロダクトマネジメント」
 
テスト分析入門 -「ゆもつよメソッド」を例に- #wacate
テスト分析入門 -「ゆもつよメソッド」を例に- #wacateテスト分析入門 -「ゆもつよメソッド」を例に- #wacate
テスト分析入門 -「ゆもつよメソッド」を例に- #wacate
 
modern software qa - draft 1
modern software qa - draft 1modern software qa - draft 1
modern software qa - draft 1
 
楽天トラベルの開発プロセスに関して
楽天トラベルの開発プロセスに関して楽天トラベルの開発プロセスに関して
楽天トラベルの開発プロセスに関して
 
ChatGPTは思ったほど賢くない
ChatGPTは思ったほど賢くないChatGPTは思ったほど賢くない
ChatGPTは思ったほど賢くない
 
Jasst'21 niigata_事例紹介_インプロセスQAをした時のtips
Jasst'21 niigata_事例紹介_インプロセスQAをした時のtipsJasst'21 niigata_事例紹介_インプロセスQAをした時のtips
Jasst'21 niigata_事例紹介_インプロセスQAをした時のtips
 
Agile Quality アジャイル品質パターン (QA2AQ)
Agile Quality アジャイル品質パターン (QA2AQ)Agile Quality アジャイル品質パターン (QA2AQ)
Agile Quality アジャイル品質パターン (QA2AQ)
 
品質とは何か.pdf
品質とは何か.pdf品質とは何か.pdf
品質とは何か.pdf
 
QAアーキテクチャの設計による 説明責任の高いテスト・品質保証
QAアーキテクチャの設計による説明責任の高いテスト・品質保証QAアーキテクチャの設計による説明責任の高いテスト・品質保証
QAアーキテクチャの設計による 説明責任の高いテスト・品質保証
 
パターン QA to AQ: 伝統的品質保証(Quality Assurance)からアジャイル品質(Agile Quality)へ
パターン QA to AQ: 伝統的品質保証(Quality Assurance)からアジャイル品質(Agile Quality)へパターン QA to AQ: 伝統的品質保証(Quality Assurance)からアジャイル品質(Agile Quality)へ
パターン QA to AQ: 伝統的品質保証(Quality Assurance)からアジャイル品質(Agile Quality)へ
 

Ähnlich wie テスト自動化入門@Graat勉強会

Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめJenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
atsushi_tmx
 
アジャイル×テスト開発を考える
アジャイル×テスト開発を考えるアジャイル×テスト開発を考える
アジャイル×テスト開発を考える
yasuohosotani
 
アジャイルテスト -高品質を追求するアジャイルチームにおけるテストの視点-
アジャイルテスト  -高品質を追求するアジャイルチームにおけるテストの視点-アジャイルテスト  -高品質を追求するアジャイルチームにおけるテストの視点-
アジャイルテスト -高品質を追求するアジャイルチームにおけるテストの視点-
Satoshi Masuda
 

Ähnlich wie テスト自動化入門@Graat勉強会 (20)

Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】 Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
 
隣の業界、のぞいてみませんか?
隣の業界、のぞいてみませんか?隣の業界、のぞいてみませんか?
隣の業界、のぞいてみませんか?
 
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめJenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
 
設計品質とアーキテクチャ
設計品質とアーキテクチャ設計品質とアーキテクチャ
設計品質とアーキテクチャ
 
Gui自動テストツール基本
Gui自動テストツール基本Gui自動テストツール基本
Gui自動テストツール基本
 
アジャイル×テスト開発を考える
アジャイル×テスト開発を考えるアジャイル×テスト開発を考える
アジャイル×テスト開発を考える
 
測定によるソフトウェア品質への挑戦 公開用
測定によるソフトウェア品質への挑戦 公開用測定によるソフトウェア品質への挑戦 公開用
測定によるソフトウェア品質への挑戦 公開用
 
高信頼性を確保するソフトウェア開発手法と実践 -組込み製品の潜在的価値を今以上に高めるために-
高信頼性を確保するソフトウェア開発手法と実践-組込み製品の潜在的価値を今以上に高めるために-高信頼性を確保するソフトウェア開発手法と実践-組込み製品の潜在的価値を今以上に高めるために-
高信頼性を確保するソフトウェア開発手法と実践 -組込み製品の潜在的価値を今以上に高めるために-
 
ワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeployワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeploy
 
【システムテスト自動化カンファレンス2015】 楽天の品質改善を加速する継続的システムテストパターン #stac2015
【システムテスト自動化カンファレンス2015】 楽天の品質改善を加速する継続的システムテストパターン #stac2015【システムテスト自動化カンファレンス2015】 楽天の品質改善を加速する継続的システムテストパターン #stac2015
【システムテスト自動化カンファレンス2015】 楽天の品質改善を加速する継続的システムテストパターン #stac2015
 
【JaSST'11 Tokyo】 テスト イノベーション
【JaSST'11 Tokyo】 テスト イノベーション【JaSST'11 Tokyo】 テスト イノベーション
【JaSST'11 Tokyo】 テスト イノベーション
 
ぼくのかんがえた iOSテスト戦略
ぼくのかんがえた iOSテスト戦略ぼくのかんがえた iOSテスト戦略
ぼくのかんがえた iOSテスト戦略
 
Ignite ui 2012 最新情報 jQuery UI 編
Ignite ui 2012 最新情報 jQuery UI 編Ignite ui 2012 最新情報 jQuery UI 編
Ignite ui 2012 最新情報 jQuery UI 編
 
アジャイルテスト -高品質を追求するアジャイルチームにおけるテストの視点-
アジャイルテスト  -高品質を追求するアジャイルチームにおけるテストの視点-アジャイルテスト  -高品質を追求するアジャイルチームにおけるテストの視点-
アジャイルテスト -高品質を追求するアジャイルチームにおけるテストの視点-
 
単体テストをやってみた~既存サービスに単体テストを追加するチャレンジ~
単体テストをやってみた~既存サービスに単体テストを追加するチャレンジ~単体テストをやってみた~既存サービスに単体テストを追加するチャレンジ~
単体テストをやってみた~既存サービスに単体テストを追加するチャレンジ~
 
Automation test.ssf alpha
Automation test.ssf alphaAutomation test.ssf alpha
Automation test.ssf alpha
 
JaSST16tokyo tm_koyama
JaSST16tokyo tm_koyamaJaSST16tokyo tm_koyama
JaSST16tokyo tm_koyama
 
【Agile Conference tokyo 2011】 継続的フィードバック
【Agile Conference tokyo 2011】 継続的フィードバック【Agile Conference tokyo 2011】 継続的フィードバック
【Agile Conference tokyo 2011】 継続的フィードバック
 
Ignite UI 2012 最新情報 jQuery Mobile 編
Ignite UI 2012 最新情報 jQuery Mobile 編Ignite UI 2012 最新情報 jQuery Mobile 編
Ignite UI 2012 最新情報 jQuery Mobile 編
 
車載ソフトウェアの品質保証のこれから
車載ソフトウェアの品質保証のこれから車載ソフトウェアの品質保証のこれから
車載ソフトウェアの品質保証のこれから
 

Mehr von Graat(グラーツ)

Mehr von Graat(グラーツ) (9)

「組織内調整」を「アジャイルな合意形成」にする3つの手法 - アジャイル経営カンファレンス2024
「組織内調整」を「アジャイルな合意形成」にする3つの手法 - アジャイル経営カンファレンス2024「組織内調整」を「アジャイルな合意形成」にする3つの手法 - アジャイル経営カンファレンス2024
「組織内調整」を「アジャイルな合意形成」にする3つの手法 - アジャイル経営カンファレンス2024
 
ビジネスとITをリンクさせるアジャイルな組織のつくり方 - アジャイル経営カンファレンス2023
ビジネスとITをリンクさせるアジャイルな組織のつくり方 - アジャイル経営カンファレンス2023ビジネスとITをリンクさせるアジャイルな組織のつくり方 - アジャイル経営カンファレンス2023
ビジネスとITをリンクさせるアジャイルな組織のつくり方 - アジャイル経営カンファレンス2023
 
エンタープライズアジャイルを阻む組織やプロセスと、その処方
エンタープライズアジャイルを阻む組織やプロセスと、その処方エンタープライズアジャイルを阻む組織やプロセスと、その処方
エンタープライズアジャイルを阻む組織やプロセスと、その処方
 
サービスブループリント導入ガイド A Guide to Service Blueprinting Japanese Edition
サービスブループリント導入ガイド A Guide to Service Blueprinting Japanese Editionサービスブループリント導入ガイド A Guide to Service Blueprinting Japanese Edition
サービスブループリント導入ガイド A Guide to Service Blueprinting Japanese Edition
 
大企業のアジャイル導入で本質的に変えるべきこと - Agile Japan2021
大企業のアジャイル導入で本質的に変えるべきこと - Agile Japan2021大企業のアジャイル導入で本質的に変えるべきこと - Agile Japan2021
大企業のアジャイル導入で本質的に変えるべきこと - Agile Japan2021
 
あなたと仲間で組織を変える - KDDI Scrum Fest
あなたと仲間で組織を変える - KDDI Scrum Festあなたと仲間で組織を変える - KDDI Scrum Fest
あなたと仲間で組織を変える - KDDI Scrum Fest
 
Jira/Confluence Atlassian Cloudへの移行ポイント
Jira/Confluence Atlassian Cloudへの移行ポイントJira/Confluence Atlassian Cloudへの移行ポイント
Jira/Confluence Atlassian Cloudへの移行ポイント
 
アジャイルチームの成果指標設計、進め方と注意点 -開発チームの事業貢献を見える化するには
アジャイルチームの成果指標設計、進め方と注意点 -開発チームの事業貢献を見える化するにはアジャイルチームの成果指標設計、進め方と注意点 -開発チームの事業貢献を見える化するには
アジャイルチームの成果指標設計、進め方と注意点 -開発チームの事業貢献を見える化するには
 
アジャイルコーチになって3ヶ月で学んだこと
アジャイルコーチになって3ヶ月で学んだことアジャイルコーチになって3ヶ月で学んだこと
アジャイルコーチになって3ヶ月で学んだこと
 

テスト自動化入門@Graat勉強会