Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
業務でも活用できるソフトウェアテストの7原則/Seven_Testing_Principles
Search
nihonbuson
December 14, 2019
Technology
6
7.4k
業務でも活用できるソフトウェアテストの7原則/Seven_Testing_Principles
in WACATE 2019 Winter
https://wacate.jp/workshops/2019winter/
nihonbuson
December 14, 2019
Tweet
Share
More Decks by nihonbuson
See All by nihonbuson
忠実度という概念と開発手法 / Fidelity
nihonbuson
1
82
WACATE流 勉強会会場の選び方 / WACATE venue
nihonbuson
1
620
継続的テストモデルを実現するためにスリーアミーゴスを用いた10Xでのシフトレフトの事例
nihonbuson
3
1.5k
BDD(Cucumber)コミュニティが無料提供しているコンテンツの紹介と現在起きている危機
nihonbuson
4
4.3k
JSTQB FL 幻のテスト技法「ユースケーステスト」を学ぶ / Use_case_testing
nihonbuson
4
2.5k
テストコードを書き始める前に考えるべきテストの話(2023年版) #cedec2023
nihonbuson
1
3k
テスト対象の内容を忘れるためのテスト対象分析 #qa_test_talk / QA Test Talk Vol.3
nihonbuson
3
5.1k
AI(ChatGPT-4)によるテスト設計作成の現状を評価する #Ques20 / Ques20th
nihonbuson
10
6.8k
テストプロセスを用いて、テストケース作成の思考を整理しよう / test process
nihonbuson
7
4k
Other Decks in Technology
See All in Technology
OCI Network Firewall 概要
oracle4engineer
PRO
0
4.1k
iOSチームとAndroidチームでブランチ運用が違ったので整理してます
sansantech
PRO
0
120
OCI Vault 概要
oracle4engineer
PRO
0
9.7k
10XにおけるData Contractの導入について: Data Contract事例共有会
10xinc
5
560
Lambdaと地方とコミュニティ
miu_crescent
2
370
RubyのWebアプリケーションを50倍速くする方法 / How to Make a Ruby Web Application 50 Times Faster
hogelog
3
940
Amplify Gen2 Deep Dive / バックエンドの型をいかにしてフロントエンドへ伝えるか #TSKaigi #TSKaigiKansai #AWSAmplifyJP
tacck
PRO
0
370
マルチプロダクトな開発組織で 「開発生産性」に向き合うために試みたこと / Improving Multi-Product Dev Productivity
sugamasao
1
300
個人でもIAM Identity Centerを使おう!(アクセス管理編)
ryder472
3
180
Lambda10周年!Lambdaは何をもたらしたか
smt7174
2
110
TypeScript、上達の瞬間
sadnessojisan
46
13k
AWS Lambda のトラブルシュートをしていて思うこと
kazzpapa3
2
170
Featured
See All Featured
Side Projects
sachag
452
42k
Writing Fast Ruby
sferik
627
61k
How GitHub (no longer) Works
holman
310
140k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Why Our Code Smells
bkeepers
PRO
334
57k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
33k
Building Adaptive Systems
keathley
38
2.3k
Building a Scalable Design System with Sketch
lauravandoore
459
33k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
42
9.2k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
109
49k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.9k
Transcript
業務でも活用できる ソフトウェアテストの7原則
自己紹介 • 社会人6年目 • WACATEの参加歴 ◦ WACATE 2015 夏 〜
WACATE 2018 冬 ◦ WACATE 2018 夏 でBPP賞 ◦ WACATE 2019 夏からWACATE実行委員 • その他、社外活動 ◦ JaSST Review 実行委員長 ◦ ASTER正会員 • ネコ派 というより ブロッコリー派 風間 裕也 ↓Twitterアイコン
• JSTQB(ソフトウェアテスト技術者資格) を取得している人? • ソフトウェアテストの7原則を言える人? アンケート
ゴール ソフトウェアテストの7原則を 普段の業務中にも意識できるようになる ソフトウェアテストの7原則を知っている ソフトウェアテストの7原則を 事例を踏まえて理解できる
アジェンダ ソフトウェアテストの7原則の紹介 ソフトウェアテストの7原則を 実際の業務に当てはめてみよう
ソフトウェアテストの7原則 とは何か? https://jp.freeimages.com/photo/sevens-luckily-1222955
ソフトウェアテストの7原則とは
ソフトウェアテストの7原則とは • ISTQB(JSTQB)に記載されている、 あらゆるテストで共通に使える一般的なガイドライン。 ◦ ISTQBテスト技術者資格制度 Foundation Level シラバス 日本語版
Version 2018.J03 ▪ http://jstqb.jp/dl/JSTQB-SyllabusFoundation_Version2018.J03.pdf ※以下、JSTQBシラバスと表記 • JSTQBシラバスでは、全部で1ページ弱しか載っていない。 • テストエンジニアのみならず、 開発者・マネージャなどあらゆるロールの人に知ってほしい原則
ソフトウェアテストの7原則 1. テストは欠陥があることは示せるが、 欠陥がないことは示せない 2. 全数テストは不可能 3. 早期テストで時間とコストを節約 4. 欠陥の偏在
5. 殺虫剤のパラドックスにご用心 6. テストは状況次第 7. 「バグゼロ」の落とし穴
テストは 欠陥があることは示せるが、 欠陥がないことは示せない ソフトウェアテストの7原則①
1.テストは欠陥があることは示せるが、 欠陥がないことは示せない JSTQBシラバスでは… テストにより、欠陥があることは示せるが、 欠陥がないことは証明できない。 ダメな例 「これだけのテストをやったから、もう欠陥は一切ないです!」
1.テストは欠陥があることは示せるが、 欠陥がないことは示せない テストにより、ソフトウェアに残る未検出欠陥の数を減らせるが、 欠陥が見つからないとしても、正しさの証明とはならない。 良い例 「今回示した状態遷移に関するテストの部分では、 欠陥が出ませんでした。」 JSTQBシラバスでは…
全数テストは不可能 https://jp.freeimages.com/photo/code-1-1526538 ソフトウェアテストの7原則②
2.全数テストは不可能 すべてをテストすること(入力と事前条件の全組み合わせ)は、 ごく単純なソフトウェア以外では非現実的である。 例 名字の入力欄のテスト JSTQBシラバスでは…
2.全数テストは不可能 すべてをテストすること(入力と事前条件の全組み合わせ)は、 ごく単純なソフトウェア以外では非現実的である。 例 名字の入力欄のテスト • 日本に存在する漢字を 5文字(日本の名字の最長文字数)入れる 全ての組み合わせ →(2136種類)の5乗
= 約4000兆種類 JSTQBシラバスでは…
2.全数テストは不可能 すべてをテストすること(入力と事前条件の全組み合わせ)は、 ごく単純なソフトウェア以外では非現実的である。 例 名字の入力欄のテスト • 日本に存在する名字のパターン全て →約13万種類 JSTQBシラバスでは…
2.全数テストは不可能 すべてをテストすること(入力と事前条件の全組み合わせ)は、 ごく単純なソフトウェア以外では非現実的である。 例 名字の入力欄のテスト • 日本に存在する名字のパターン全て →約13万種類 さらに、「名字と名前の組み合わせ」まで 考えると大変なことに!
JSTQBシラバスでは…
2.全数テストは不可能 全数テストの代わりに、リスク分析、テスト技法、および優先度により テストにかける労力を集中すべきである。 例 名字の入力欄のテスト • 文字数 … 0,1,5,6文字(境界値分析) •
文字種 … ひらがな、カタカナ、 漢字、絵文字など(同値分割) JSTQBシラバスでは…
早期テストで 時間とコストを節約 https://jp.freeimages.com/photo/watch-1417234 ソフトウェアテストの7原則③
3.早期テストで時間とコストを節約 早い段階で欠陥を見つけるために、静的テスト活動と動的テスト活動の 両方をソフトウェア開発ライフサイクルのなるべく早い時期に開始 すべきである。早期テストは、シフトレフトとも呼ばれる。 静的テスト ソフトウェア開発の成果物 (要件、設計、又は、コードなど)の実 行をせずに実施する成果物のテスト。 たとえば、レビュー、静的解析など。 動的テスト
コンポーネントやシステムの ソフトウェアを実行させて 確認するテスト。 JSTQBシラバスでは… 出典:ソフトウェアテスト標準用語集(日本語版) Version 2.3.J02 http://jstqb.jp/dl/JSTQB-glossary.V2.3.J02.pdf
V字モデル ユーザ要求 システム要件 基本設計 詳細設計 受け入れテスト システムテスト 統合テスト コンポーネントテスト 実装
3.早期テストで時間とコストを節約 早い段階で欠陥を見つけるために、静的テスト活動と動的テスト活動の 両方をソフトウェア開発ライフサイクルのなるべく早い時期に開始 すべきである。早期テストは、シフトレフトとも呼ばれる。 JSTQBシラバスでは…
シフトレフト ユーザ要求 システム要件 基本設計 詳細設計 受け入れテスト システムテスト 統合テスト コンポーネントテスト 実装
3.早期テストで時間とコストを節約 早い段階で欠陥を見つけるために、静的テスト活動と動的テスト活動の 両方をソフトウェア開発ライフサイクルのなるべく早い時期に開始 すべきである。早期テストは、シフトレフトとも呼ばれる。 JSTQBシラバスでは…
シフトレフトの例 ユーザ要求 システム要件 基本設計 詳細設計 受け入れテスト システムテスト 統合テスト コンポーネントテスト 実装
3.早期テストで時間とコストを節約 早い段階で欠陥を見つけるために、静的テスト活動と動的テスト活動の 両方をソフトウェア開発ライフサイクルのなるべく早い時期に開始 すべきである。早期テストは、シフトレフトとも呼ばれる。 テスト設計 JSTQBシラバスでは…
シフトレフトの例 ユーザ要求 システム要件 基本設計 詳細設計 受け入れテスト システムテスト 統合テスト コンポーネントテスト 実装
3.早期テストで時間とコストを節約 早い段階で欠陥を見つけるために、静的テスト活動と動的テスト活動の 両方をソフトウェア開発ライフサイクルのなるべく早い時期に開始 すべきである。早期テストは、シフトレフトとも呼ばれる。 レビュー指摘事項 JSTQBシラバスでは…
ソフトウェア開発ライフサイクルの早い時期に テストを行うことにより、コストを低減または削減できる。 仕様誤りの修正コスト 要求仕様 設計 実装 テスト リリース後 1倍 5倍
10倍 20倍 200倍! 3.早期テストで時間とコストを節約 JSTQBシラバスでは… 出典: Alan M. Davis. ソフトウェア開発 201の鉄則. 日経BP社
欠陥の偏在 https://jp.freeimages.com/photo/ancient-stone-wall-1180286 ソフトウェアテストの7原則④
こんな経験ありませんか? 「機能Aの部分は不具合がたくさん見つかるなぁ…」 4.欠陥の偏在 リリース前のテストで見つかる欠陥や運用時の故障の大部分は、 特定の少数モジュールに集中する。 JSTQBシラバスでは…
4.欠陥の偏在 テストの労力を集中させるために欠陥の偏在を予測し、テストや 運用での実際の観察結果に基づいてリスク分析を行う。 リスク分析の例 「20歳未満の場合『未成年』と判定する」をテストする。 →「19歳」と「20歳」の2パターンをテスト (境界値分析) JSTQBシラバスでは…
4.欠陥の偏在 テストの労力を集中させるために欠陥の偏在を予測し、テストや 運用での実際の観察結果に基づいてリスク分析を行う。 「20歳未満の場合『未成年』と判定する」をテストする。 →「19歳」と「20歳」の2パターンをテスト (境界値分析) if ( x <=
20 ) { return “未成年”; } リスク分析の例 JSTQBシラバスでは…
4.欠陥の偏在 テストの労力を集中させるために欠陥の偏在を予測し、テストや 運用での実際の観察結果に基づいてリスク分析を行う。 「20歳未満の場合『未成年』と判定する」をテストする。 →「19歳」と「20歳」の2パターンをテスト (境界値分析) 理由…不等号のミスが発生しやすいから if ( x
<= 20 ) { return “未成年”; } リスク分析の例 JSTQBシラバスでは…
殺虫剤のパラドックス https://jp.freeimages.com/photo/spray-1-1492322 ソフトウェアテストの7原則⑤
殺虫剤のパラドックスの元ネタ 5.殺虫剤のパラドックス
5.殺虫剤のパラドックス 殺虫剤 耐性あり 殺虫剤のパラドックスの元ネタ
5.殺虫剤のパラドックス 殺虫剤のパラドックスの元ネタ
5.殺虫剤のパラドックス 殺虫剤 殺虫剤のパラドックスの元ネタ
5.殺虫剤のパラドックス 改良した殺虫剤 耐性あり 殺虫剤のパラドックスの元ネタ
5.殺虫剤のパラドックス 殺虫剤のパラドックスの元ネタ
5.殺虫剤のパラドックス 少しでもすり抜けて生き残る害虫がいる限り、 完全には駆除できないし、 残っている害虫には現在の殺虫剤が効かない。 殺虫剤のパラドックスの元ネタ
5.殺虫剤のパラドックス 少しでもすり抜けて生き残る害虫がいる限り、 完全には駆除できないし、 残っている害虫には現在の殺虫剤が効かない。 テストは欠陥があることは示せるが、 欠陥がないことは示せない 殺虫剤のパラドックスの元ネタ
5.殺虫剤のパラドックス 同じテストを何度も繰り返すと、 最終的にはそのテストでは新しい欠陥を見つけられなくなる。 こんな経験ありませんか? 「このテストを毎回のリリース前にやれば大丈夫!」 JSTQBシラバスでは…
5.殺虫剤のパラドックス 「このテストを毎回のリリース前にやれば大丈夫!」 →テストをすり抜けた不具合は残り続けている 可能性があるので、行うべきテストを見直しましょう こんな経験ありませんか? この「殺虫剤のパラドックス」を回避するため、 テストとテストデータを定期的に見直して、 改定したり新規にテストを作成したりする必要がある JSTQBシラバスでは…
5.殺虫剤のパラドックス ただし、自動化されたリグレッションテストの場合は、 同じテストを繰り返すことでリグレッションが低減している という有益な結果を示すことができる。 自動化されたリグレッションテストの目的 • 不具合を新しく見つける(すり抜けた不具合を見つける)ことが 目的ではない • 既に見つけた不具合が再発していないか確認することが目的
JSTQBシラバスでは…
テストは状況次第 https://jp.freeimages.com/photo/chart-1238452 ソフトウェアテストの7原則⑥
6.テストは状況次第 状況が異なれば、テストの方法も変わる。 テスト工数を多くかける必要があるのはどっち? • 正式に売っているわけではないお試し版 • 不具合が発生すると死亡事故になるような医療系の製品 JSTQBシラバスでは…
6.テストは状況次第 アジャイルプロジェクトとシーケンシャルライフサイクルプロジェクト では、テストの実行方法が異なる。 自動化がより効果的なのはどっち? • 1回だけ実行するテスト • 何回も同じことを繰り返し実行するテスト JSTQBシラバスでは…
バグゼロの落とし穴 https://jp.freeimages.com/photo/the-big-hole-1508554 ソフトウェアテストの7原則⑦
7.バグゼロの落とし穴 テスト担当者は可能なテストすべてを実行でき、 可能性のある欠陥すべてを検出できると期待する組織があるが、 原則2と原則1により、これは不可能である。 なぜ不可能なのか? 「全数テストは不可能(原則2)」ですし、 「テストは欠陥があることは示せるが、 欠陥がないことは示せない(原則1)」 ので、全テストがOKだとしても、「バグゼロ」はあり得ません。 JSTQBシラバスでは…
7.バグゼロの落とし穴 大量の欠陥を検出して修正するだけでシステムを正しく構築できると 期待することも誤った思い込みである。 「バグゼロ」に向かうために、直す方が良い? 不具合が1つも見つかっていない状態でリリース前日まで来たが、 このタイミングで新たなバグを発見した。 JSTQBシラバスでは…
7.バグゼロの落とし穴 大量の欠陥を検出して修正するだけでシステムを正しく構築できると 期待することも誤った思い込みである。 「バグゼロ」に向かうために、直す方が良い? 不具合が1つも見つかっていない状態でリリース前日まで来たが、 このタイミングで新たなバグを発見した。 →直すことで、プログラムの変更が発生し、 新たなバグを引き起こす可能性がある JSTQBシラバスでは…
7.バグゼロの落とし穴 例えば、指定された要件すべてを徹底的にテストし、検出した欠陥 すべてを修正しても、使いにくいシステム、ユーザーのニーズや期待を 満たさないシステム、またはその他の競合システムに比べて 劣るシステムが構築されることがある。 住基ネットカードの例 • トラブルがほぼゼロ。 • 全国民への普及が目的だったが、普及率は約5%程度
• 政府はマイナンバーカードを開発・普及させる方針に変更 JSTQBシラバスでは…
ソフトウェアテストの7原則を 実際の業務に当てはめてみよう (※ワーク題材は非公開)
個人ワーク 10分 https://jp.freeimages.com/photo/student-1528001
ワーク内容 意識すべき 原則を探そう
ワーク内容 意識すべき 原則を探そう 原則以外で モヤるところを 探そう
ワーク内容 意識すべき 原則を探そう 原則以外で モヤるところを 探そう どのように 伝えれば良いか 考えよう
グループワーク 10分 https://jp.freeimages.com/photo/workshop-4-1455028
グループワーク時に意識してほしいこと • 意識すべきと考えた原則が人によって違うかも • モヤるところが人によって違うかも →皆の意見をしっかり聞こう 複数の意見から違いを見つける 絶対的な答えがあるわけではない • 「こうすれば良い」といった絶対解はありません
• 自分なりの考えを言葉にしてみましょう
回答例 (※非公開) https://jp.freeimages.com/photo/feedback-form-excellent-1238383
注意点 正しさがすべてではない • 「ソフトウェアテストの7原則に反している」という 正義を振りかざすべきタイミングを見極める ◦ 原則が毒薬になり 「うざったいだけの人」にならないように! • 何らかの事情で原則に反している場合もあり得る
◦ 事情に寄り添い、障壁を排除しよう
ソフトウェアテストの7原則を 意識して より良いテスト・開発を!
参考資料 ISTQBテスト技術者資格制度 Foundation Level シラバス 日本語版 Version 2018.J03 http://jstqb.jp/dl/JSTQB-SyllabusFoundation_Version2018.J03.pdf Kouichi
Akiyamaさんによるnote記事 https://note.com/akiyama924/n/ne92b6ece48a1 https://note.com/akiyama924/n/n01bedac15083 https://note.com/akiyama924/n/n7c464a00c3b4 https://note.com/akiyama924/n/n79b902f69ddf https://note.com/akiyama924/n/nc006015de2d2 https://note.com/akiyama924/n/n9ff13d639627 https://note.com/akiyama924/n/n59a30e23edc7 Professional Google Slides Template(スライドデザイン) https://slidesmash.com/professional-google-slides-template/ Free ICONS Library(アイコン画像) https://icon-library.net/icon/spray-icon-22.html https://icon-library.net/icon/bug-icon-1.html