---
title: より早い段階からのテスト
tags: 
author: [yujin3i](https://www.docswell.com/user/yujin3i)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/V8ED52RKEG.jpg?width=480
description: 2022年5月24日 「QAエンジニア勉強会～各社の取り組みや課題から学ぶ会～」での資料です。
published: May 24, 22
canonical: https://www.docswell.com/s/yujin3i/KEJX1Z-2022-05-24-214516
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/V8ED52RKEG.jpg)

より早い段階からのテスト
シフトレフトからその先を目指した考え方
クラスメソッド株式会社
prismatix事業部 長友優治


# Page. 2

![Page Image](https://bcdn.docswell.com/page/4V7PG1W378.jpg)

資料の構成
1. テストに関する状況
2. テストの一考察
3. テストに期待される
こと
4. シフトレフトの先へ


# Page. 3

![Page Image](https://bcdn.docswell.com/page/L2JV6Y8NEQ.jpg)

テストに対する認識の現状
◇開発者の皆さんもソフトウェアテストの重要性を認識
○テストコードを書くことも普通に行われるように
⇒フィードバックを得る
⇒セーフティーネット
体系的なテスト手法を適用してバグの探索


# Page. 4

![Page Image](https://bcdn.docswell.com/page/Z5EGN9557L.jpg)

アジャイル開発でのテスト
◇アジャイルでソフトウェア開発を進めているところも増えている状況
○テストの変化
⇒テスト自動化が進む
⇒最後にテストするよりもずっとテストし続ける


# Page. 5

![Page Image](https://bcdn.docswell.com/page/V4JQQWZLJP.jpg)

シフトレフト
◇テスト活動をソフトウェア開発ライフサイクルの最初の方にシフトすること
○品質確認を計画段階から、継続的に実施
⇒バグの予防
⇒バグの早期発見
要件定義
設計
実装
テスト
リリース


# Page. 6

![Page Image](https://bcdn.docswell.com/page/DK74NK35E1.jpg)

資料の構成
1. テストに関する状況
2. テストの一考察
3. テストに期待される
こと
4. シフトレフトの先へ


# Page. 7

![Page Image](https://bcdn.docswell.com/page/PLJ15X12EG.jpg)

テストは難しい
◇システムを十分にテストしたいとしたら、十分にテスト
ができるまで行わなければならない
○「テストは欠陥があることは示せるが、
欠陥がないことは示せない」（テストの7原則の1）、
- 「全数テストは不可能」（テストの7原則の2）
⇒効果的なテストをするためには、とても頭を使い考える必要がある
⇒実用的なテストとして、最初に考えることの１つにコードをどのレベルで
テストするかを考える


# Page. 8

![Page Image](https://bcdn.docswell.com/page/8GJW5N8272.jpg)

テストレベル
◇系統的にまとめ、マネジメントしていくテストの
活動グループ
○ユニットテスト、統合テスト、システムテストなどのテストレベルがある
⇒各テストレベルでメリット・デメリットがある
⇒例えば、ユニットテストでは
・メリット：高速、コントロールしやすい、簡単に書ける
・デメリット：現実味がない、見つけられないバグがある


# Page. 9

![Page Image](https://bcdn.docswell.com/page/W4EZN384E3.jpg)

テストピラミッド
◇実用的なテスト：コードをどのレベルでテストするかを
決めること
○システムの各部分に対して、テストの効果を最大化することが目標
⇒異なるテストレベルでメリット・デメリットがある
⇒どれをユニットテストで、どれをシステムテストで
すべきかを決める
⇒その参考になるものがテストピラミッド
システム
テスト
統合テスト
ユニットテスト


# Page. 10

![Page Image](https://bcdn.docswell.com/page/KY768XPGEV.jpg)

テストピラミッド
◇テストレベルとしては、ユニットテストをより多くする
○ユニットテストの品質への貢献度が増してきている
⇒ユニットテストのメリットは開発者の仕事のやり方によく合っている
⇒ただし、ユニットテストだけではカバーしきれない部分については
統合テストやシステムテストを使って確認。
システム
テスト
統合テスト
ユニットテスト


# Page. 11

![Page Image](https://bcdn.docswell.com/page/5G759XKXJ4.jpg)

参考
◇ Googleでは
○ユニットテスト： 80%、統合テスト ： 15%、システムテスト：5%
⇒Googleでは、小、中、大というテスト規模を使っている
⇒小：単一プロセスで実行できるテスト
中：単一マシンで実行できるテスト
大：任意の好きな場所で実行できるテスト
（さらに、テストでどれだけの量のコードが検証されるかを示す
テスト範囲も重視している）


# Page. 12

![Page Image](https://bcdn.docswell.com/page/V9J22XWQJR.jpg)

資料の構成
1. テストに関する状況
2. テストの一考察
3. テストに期待される
こと
4. シフトレフトの先へ


# Page. 13

![Page Image](https://bcdn.docswell.com/page/5DEYY8LYEM.jpg)

テストに期待されること（効果的）
◇テストに期待されることは効果的で体系的であること
○効果的であるとは
⇒小さな労力で、発見できるバグの数を多くすること
⇒テストにはいろんなトレードオフがある
⇒何をテストすべきかを知ることで、正しいテストが作れる
ただし、これによってバグがなくなるということではなないです。
（参考）「テストは欠陥があることは示せるが、欠陥がないことは示せない」


# Page. 14

![Page Image](https://bcdn.docswell.com/page/2VJNPQ4R78.jpg)

テストに期待されること（体系的）
◇テストに期待されることは効果的で体系的であること
○体系的であるとは
⇒あるコードに対して、同じテストスイートを考え出せること


# Page. 15

![Page Image](https://bcdn.docswell.com/page/GYE93DQZE3.jpg)

効果的で体系的なテストを作るには
◇開発者とテストエンジニアが一緒になってテストを作っていく
○よりレフト側のプロセスの中にもテストエンジニアが加わっていく
⇒各所でバグの探索が進む
⇒開発者とテストエンジニアの間でテストの知見が交流し合う


# Page. 16

![Page Image](https://bcdn.docswell.com/page/5GE8M3QYED.jpg)

資料の構成
1. テストに関する状況
2. テストへの一考察
3. テストに期待される
こと
4. シフトレフトの先へ


# Page. 17

![Page Image](https://bcdn.docswell.com/page/MLEL3VX9JR.jpg)

シフトレフトが進むと
◇ソフトウェアのデリバリーサイクルの早い段階でテストを組み込んでいくと
いう考えは、機能のテストに限ったものではない
○パフォーマンステストなど、一般的なテストの全部にあてはまります
⇒「品質はチームの責任である」という意識を持つ


# Page. 18

![Page Image](https://bcdn.docswell.com/page/54JMDGLVJW.jpg)

シフトレフトの先にあるもの
◇ソフトウェア開発サイクルでずっとテストをし続けることになる
○それには異なるチームメンバーが関わる
⇒チーム内のすべての役割の方々に対して、さまざまな品質確認を行うため
の適切なテストの知見を身につけることが不可欠
⇒高品質のソフトウェアをスピード感を持って提供できる


# Page. 19

![Page Image](https://bcdn.docswell.com/page/ZPJR4ZKWJ9.jpg)

今後ますますダイナミックな世界へ
◇テストも十数年の間にすごく進化してきている。そして今後も新しい進化が
○ダイナミックなテストの世界を歩いていく中で大事になってくること
⇒テストの原理に立ち返る
☆欠陥の検出よりも欠陥の防止
☆エンドユーザーの利益を念頭に


# Page. 20

![Page Image](https://bcdn.docswell.com/page/NPEX29LV7X.jpg)

品質のキーとなるスキル
◇チーム内のすべての役割の間で一貫したコラボレーションと良好なコミュニ
ケーションが必要
○全体の品質を達成するために
☆良好な協力関係を築くことを目指す
☆適切な方法とタイミングを選んだ効果的なコミュニケーション
⇒ソフトスキルも大切


# Page. 21

![Page Image](https://bcdn.docswell.com/page/63EKMPL5JD.jpg)

prismatix(プリズマティクス)事業
prismatix
部のことがよくわかるWebページや
ブログエントリn選
https://dev.classmethod.jp/artic
les/this-is-prismatix-team-style
/


# Page. 22

![Page Image](https://bcdn.docswell.com/page/4L73YX31E5.jpg)

参考資料
・Googleのソフトウェアエンジニアリング
https://www.oreilly.co.jp/books/9784873119656/
・QA to AQ：アジャイル品質パターンによる、伝統的な品質保証からアジャイル品質への変革
https://codezine.jp/article/corner/813
・Agile Testing Condensed Japanese Edition
https://leanpub.com/agiletesting-condensed-japanese-edition
・JSTQB FLシラバス
https://jstqb.jp/syllabus.html#syllabus_foundation_
・ソフトウェア品質を高める開発者テスト 改訂版
https://www.seshop.com/product/detail/25183


