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
2019-06 ソフトウェアテスト/2019-06 Software testing
Search
Cybozu
PRO
May 31, 2019
Technology
4
170k
2019-06 ソフトウェアテスト/2019-06 Software testing
Cybozu
PRO
May 31, 2019
Tweet
Share
More Decks by Cybozu
See All by Cybozu
PSIRTでAIテストを実施するまでの道のり
cybozuinsideout
PRO
0
91
無理なく続けるサイボウズの社内勉強会
cybozuinsideout
PRO
1
1.2k
分散システムにおける 無兆候データ破損の影響について
cybozuinsideout
PRO
1
63
タンパク質構造のシミュレーションソフトウェア試行錯誤
cybozuinsideout
PRO
1
51
読みやすいアセンブリ言語
cybozuinsideout
PRO
1
45
Wasmで拡張できる軽量マークアップ⾔語Brack(後編)
cybozuinsideout
PRO
1
39
Wasmで拡張できる軽量マークアップ⾔語Brack(前編)
cybozuinsideout
PRO
1
39
kintone開発組織のAWSエンジニアの紹介
cybozuinsideout
PRO
0
250
kintone開発組織のサービスプラットフォームチームの紹介
cybozuinsideout
PRO
0
140
Other Decks in Technology
See All in Technology
Beyond Kaniko: Navigating Unprivileged Container Image Creation
f30
0
110
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
3
940
AWS認定を取る中で感じたこと
siromi
1
110
AWS Organizations 新機能!マルチパーティ承認の紹介
yhana
1
230
Lambda Web Adapterについて自分なりに理解してみた
smt7174
5
140
生成AI活用の組織格差を解消する 〜ビジネス職のCursor導入が開発効率に与えた好循環〜 / Closing the Organizational Gap in AI Adoption
upamune
6
4.7k
ネットワーク保護はどう変わるのか?re:Inforce 2025最新アップデート解説
tokushun
0
150
Node-RED × MCP 勉強会 vol.1
1ftseabass
PRO
0
180
mrubyと micro-ROSが繋ぐロボットの世界
kishima
3
390
解析の定理証明実践@Lean 4
dec9ue
1
210
ビギナーであり続ける/beginning
ikuodanaka
3
470
5min GuardDuty Extended Threat Detection EKS
takakuni
0
180
Featured
See All Featured
Designing for humans not robots
tammielis
253
25k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
5
240
Raft: Consensus for Rubyists
vanstee
140
7k
YesSQL, Process and Tooling at Scale
rocio
173
14k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
500
Practical Orchestrator
shlominoach
188
11k
Six Lessons from altMBA
skipperchong
28
3.9k
Thoughts on Productivity
jonyablonski
69
4.7k
Docker and Python
trallard
44
3.5k
BBQ
matthewcrist
89
9.7k
The Straight Up "How To Draw Better" Workshop
denniskardys
234
140k
Transcript
ソフトウェアテスト 2019-05-31 Cybozu 1
目次 ▌テストの必要性 ▌テストに対するよくある誤解 ⚫ (1) テスト = 仕様の検証? ⚫ (2)
テスト = テスト実行? ▌スクラムチームの中でのテスト 2
テストの必要性 3
テストの必要性 ▌BtoB から BtoC まで、社会を構成する要素として必須 ▌ソフトウェアが期待通りに動かないと? ⚫ 経済的な損失 ⚫ 時間の浪費
⚫ 信用の失墜 ⚫ 傷害や死亡事故 ▌ソフトウェアテストは、ソフトウェアの品質を評価し、運用環境でのソフト ウェアの故障が発生するリスクを低減する1つの手段 4 JSTQB FL 1.1 ISTQB 著、JSTQB 訳 「テスト技術者資格制度 Foundation Level シラバス (2018年度版)」、2019年 http://jstqb.jp/dl/JSTQB-SyllabusFoundation_Version2018.J03.pdf [JSTQB FL]
テストに対するよくある誤解 5
テストに対するよくある誤解 ▌(1) テスト = 仕様の検証 ▌(2) テスト = テスト実行 6
(1) テスト = 仕様の検証? 7
(1) テストとは仕様の検証のこと? ▌テストは指定されている要件をシステムが満たすかどうかを確認することに 加えて、妥当性確認も行う ⚫ 正しく作っているか?(検証) ⚫ 正しいものを作っているか?(妥当性確認) ▌さらに、これらを通じてステークホルダーへの情報提供も行う 8
JSTQB FL 1.1
テストと品質 ▌Gerald M. Weinberg ⚫ 「品質は誰かにとっての価値である」 ⚫ ソフトウェアを1日8時間使うユーザーにとっては使い勝手の良さが高品質 ⚫ 故障のたびに批判されるシステム管理者にとってはゼロ故障が高品質
⚫ 厳しい予算の制約下にあるプロジェクト管理者にとっては、開発費用が少ない ことが高品質 9 G. M. ワインバーグ著、大野徇郎訳『ワインバーグのシステム思考法』共立、1994年
(参考)Testing と Checking ▌Checking ⚫ 「プロダクトのある側面に対して、アルゴリズムに基づく決定ルールを適 用することで、評価を行うプロセスのこと。」 ▌Testing ⚫ 「プロダクトの探索と実験を通じてプロダクトを学習することによってプロ
ダクトを評価するプロセスのこと。問いを立てたり、研究したり、モデル化 したり、観察したり、推論したりすることが含まれる。」 10 James Bach “Testing and Checking Refined”, 2013 https://www.satisfice.com/blog/archives/856
(2) テスト = テスト実行? 11
(2) テストとはテスト実行のこと? ▌テストはさまざまな活動を含む ⚫ 計画、モニタリングとコントロール、分析、設計、実装、実行、完了 ▌実装前に行うテストもある(欠陥の作り込みの防止) ▌順番に行うこともあれば、同時に行ったり組み合わせて行ったりすることも ある ⚫ プロダクトやプロジェクトの状況に合わせる
12 JSTQB FL 1.1, 1.4
テストに関する活動 ▌テストに関する活動を分けると次ページ以降のようになる ▌これらの活動は組み合わせられたり同時に行われたりする(必ずしも シーケンシャルに行われるわけではない) 13
テスト計画 ▌テストの目的と、アプローチを決める 14 JSTQB FL 1.4.2
テストのモニタリングとコントロール ▌テスト計画の内容と実際の進捗を継続的に比較する 15 JSTQB FL 1.4.2
テスト分析 ▌テストベースを分析し、「何をテストするか」を決定する ▌テストベース(例) ⚫ 要件、仕様、ユーザーストーリー、ユースケース…… ⚫ 設計の情報、実装の情報、アーキテクチャ、…… ⚫ 想定されるリスク ▌テスト設計技法を使い見落としを防ぐ
16 JSTQB FL 1.4.2
テスト設計 ▌テスト分析の結果を、ハイレベルのテストケースに落とし込む ▌この際にさまざまなテスト設計技法を使用する ▌ここでも不具合を検出できることも 17 JSTQB FL 1.4.2
(参考)テスト設計技法 ▌振る舞いベースの技法(ブラックボックステスト) ⚫ 同値分割、境界値分析、デシジョンテーブル…… ▌内部構造ベースの技法(ホワイトボックステスト) ⚫ 制御フローテスト、データフローテスト…… ▌経験ベースの技法 ⚫ エラー推測、探索的テスト……
18 JSTQB FL 4.1, 4.2, 4.3, 4.4
テスト実装 ▌テストを実行可能にする ⚫ テスト手順の作成(テストケースの具体化) ⚫ テスト環境の用意 ⚫ テストデータの用意 19 JSTQB
FL 1.4.2
テスト実行 ▌スケジュールにしたがってテスト(スイート)を実行 ⚫ 不具合があれば BTS(Bug Tracking System)に登録 20 JSTQB FL
1.4.2
テスト完了 ▌完了したテスト活動のデータを集め、まとめる ▌テストケースやテスト環境の整理・保管 21 JSTQB FL 1.4.2
スクラムチームの中でのテスト 22
サイボウズでのスクラム導入前後 ▌スクラム導入前 ⚫ 開発フェーズとテストフェーズが明確に分かれている ▌スクラム導入後 ⚫ リリース可能な部分(インクリメント)を作る小さなサイクル(スプリン ト)を繰り返す ⚫ スプリント内で設計からテストまでやる(チームもある)
23
スクラムイベントとテスト ▌スクラムはいくつかのミーティングを定義している ⚫ これを「スクラムイベント」と呼ぶ ▌スクラムイベントの中でどのようにテスト活動を行っていくか? ▌以下で紹介するのは一例です 24 スクラムについてはこちらを参照。Ken Schwaber &
Jeff Sutherland 著、角征典訳 「スクラムガイド 日本語版」、2017年 https://www.scrumguides.org/docs/scrumguide/v2017/2017-Scrum-Guide-Japanese.pdf
リファインメント ▌テストに関する観点からバックログを見る ⚫ ユーザーが実際に行う操作は? ⚫ テストしやすい? ⚫ 異常系や例外は? 25 テスト分析
スプリントプランニング ▌何を作るかの認識を合わせつつ、テスト設計を簡単に行う ⚫ 実装に関する議論を聞きながら、テストすべき箇所やテストしなくてよ い箇所を考える/聞く ⚫ テストの観点を出してみる(何をテストするか) ⚫ テストケースの型を考える(どうテストするか) 26
テスト分析 テスト設計
スプリント内 ▌実装の状況に応じてテスト設計をアップデート ▌テスト設計に基づきテストケースを作成 ▌実装が完了したらテスト開始 ⚫ 不具合が出たらすぐにフィードバック 27 テスト設計 テスト実装 テスト実行