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
ソフトウェアテスト2020 / Software_Test_2020
Search
Cybozu
PRO
August 19, 2020
Technology
61k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ソフトウェアテスト2020 / Software_Test_2020
Cybozu
PRO
August 19, 2020
More Decks by Cybozu
See All by Cybozu
新卒1年目QAが リリース基準の"なぜ"をたどってみた
cybozuinsideout
PRO
1
390
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
10
83k
kintone リサーチ副部/UXリサーチャー 業務紹介
cybozuinsideout
PRO
0
100
私たちが『JaSST協賛』から『外部コネクト』チームになった理由
cybozuinsideout
PRO
0
390
LLMでもいつものテスト技術〜意外と半分はこれまでのテストでした〜
cybozuinsideout
PRO
1
960
kintone開発のプラットフォームエンジニアの紹介
cybozuinsideout
PRO
0
1.4k
LLMアプリの品質保証
cybozuinsideout
PRO
1
690
技術広報チームに丸投げしない!「一緒につくる」スポンサー活動
cybozuinsideout
PRO
0
260
テクニカルライター (グループウェア) について
cybozuinsideout
PRO
0
230
Other Decks in Technology
See All in Technology
ゼロをイチにする仕事が終わったあと
smasato
0
330
プロダクトだけじゃない、社内プロセスにおける自動化・省力化ノススメ
kakehashi
PRO
1
3.3k
実装だけじゃない! CCA-F取得エンジニアが教えるClaude Code開発プロセス活用術
diggymo
2
500
NDIAS CTF 2026 問題解説会資料
bata_24
0
180
Empower GenAI with Agile - あなたのアジャイルが生成AIのバフになる仕組み
hageyahhoo
1
160
生成AIの活用/high_school2026
okana2ki
0
120
生成AI活用によるODC欠陥分析の分類高速化の実践と導入効果 / 20260703 Suguru Ishii
shift_evolve
PRO
2
120
Terraform共通モジュールをチーム横断で“変えられる”運用へ ― リリースと適用の分離
kekke_n
1
2.4k
Kotlin 開発のツラミを爆破した話! / Explode the difficulty of Kotlin dev!
eller86
0
160
Zoom2Youtube.Claude
kawaguti
PRO
3
480
DMM.com 購入改善推進チーム におけるCodeRabbitを用いた レビューフロー改善の一例
ysknsid25
2
570
CIで使うClaude
iwatatomoya
0
210
Featured
See All Featured
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
220
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.6k
GraphQLとの向き合い方2022年版
quramy
50
15k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
420
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.1k
Facilitating Awesome Meetings
lara
57
7k
We Have a Design System, Now What?
morganepeng
55
8.2k
Chasing Engaging Ingredients in Design
codingconduct
0
230
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
490
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
560
Transcript
ソフトウェアテスト 2020-05-08 ⼩⼭ 晃久(Garoon・⽣産性向上) 1
⽬次 ▌テストの必要性 ▌テストに対するよくある誤解 l (1) テスト = 仕様の検証︖ l (2)
テスト = テスト実⾏︖ ▌スクラムチームの中でのテスト 2
テストの必要性 3
テストの必要性(JSTQB FL 1.1) ▌BtoB から BtoC まで、社会を構成する要素として必須 ▌ソフトウェアが期待通りに動かないと︖ l 経済的な損失
l 時間の浪費 l 信⽤の失墜 l 傷害や死亡事故 ▌ソフトウェアテストは、ソフトウェアの品質を評価し、運⽤環境でのソフト ウェアの故障が発⽣するリスクを低減する1つの⼿段 ISTQB 著、JSTQB 訳 「テスト技術者資格制度 Foundation Level シラバス (2018年度版)」、2019年 http://jstqb.jp/dl/JSTQB-SyllabusFoundation_Version2018.J03.pdf [JSTQB FL] 4
テストに対するよくある誤解 5
テストに対するよくある誤解(⼀部) ▌(1) テスト = 仕様の検証 ▌(2) テスト = テスト実⾏ 6
(1) テスト = 仕様の検証? 7
(1) テストとは仕様の検証のこと︖(JSTQB FL 1.1) ▌テストは指定されている要件をシステムが満たすかどうかを確認することに 加えて、妥当性確認も⾏う l 正しく作っているか︖(検証) l 正しいものを作っているか︖(妥当性確認)
▌さらに、これらを通じてステークホルダーへの情報提供も⾏う 8
テストと品質 ▌Gerald M. Weinberg l 「品質は誰かにとっての価値である」 l ソフトウェアを1⽇8時間使うユーザーにとっては使い勝⼿の良さが⾼品質 l 故障のたびに批判されるシステム管理者にとってはゼロ故障が⾼品質
l 厳しい予算の制約下にあるプロジェクト管理者にとっては、開発費⽤が少ない ことが⾼品質 G. M. ワインバーグ著、⼤野徇郎訳『ワインバーグのシステム思考法』共⽴、1994年、p.7 9
(参考)Testing と Checking ▌Checking l 「プロダクトのある側⾯に対して、アルゴリズムに基づく決定ルールを適 ⽤することで、評価を⾏うプロセスのこと。」 ▌Testing l 「プロダクトの探索と実験を通じてプロダクトを学習することによってプロ
ダクトを評価するプロセスのこと。問いを⽴てたり、研究したり、モデル化 したり、観察したり、推論したりすることが含まれる。」 James Bach “Testing and Checking Refined”, 2013 https://www.satisfice.com/blog/archives/856 10
(2) テスト = テスト実⾏? 11
(2) テストとはテスト実⾏のこと︖(JSTQB FL 1.1, 1.4) ▌テストはさまざまな活動を含む l 計画、モニタリングとコントロール、分析、設計、実装、実⾏、完了 ▌実装前に⾏うテストもある(⽋陥の作り込みの防⽌) ▌順番に⾏うこともあれば、同時に⾏ったり組み合わせて⾏ったりすることも
ある l プロダクトやプロジェクトの状況に合わせる 12
テストに関する活動 ▌テストに関する活動を分けると次ページ以降のようになる ▌これらの活動は組み合わせられたり同時に⾏われたりする(必ずしも シーケンシャルに⾏われるわけではない) 13
テスト計画(JSTQB FL 1.4.2) ▌テストの⽬的と、アプローチを決める 14
テストのモニタリングとコントロール(JSTQB FL 1.4.2) ▌テスト計画の内容と実際の進捗を継続的に⽐較する 15
テスト分析(JSTQB FL 1.4.2) ▌テストベースを分析し、「何をテストするか」を決定する ▌テストベース(例) l 要件、仕様、ユーザーストーリー、ユースケース…… l 設計の情報、実装の情報、アーキテクチャ、…… l
想定されるリスク ▌テスト設計技法を使い⾒落としを防ぐ 16
テスト設計(JSTQB FL 1.4.2) ▌テスト分析の結果を、ハイレベルのテストケースに落とし込む ▌この際にさまざまなテスト設計技法を使⽤する ▌ここでも不具合を検出できることも 17
(参考)マイヤーズの三⾓形問題 ▌以下のプログラムをテストするのに⼗分なテストケースを考えてく ださい。 lこのプログラムは、⼊⼒ダイアログから3つの整数を読む。 lこれらの3つの値は、三⾓形の3つの辺を表す。 lこのプログラムは、⼊⼒された三⾓形が正三⾓形か、⼆等辺 三⾓形か、不等辺三⾓形かを⽰すメッセージを表⽰する。 Glenford J. Myers、Tom
Dadgett、Todd M. Thomas、Corey Sandler 著、⻑尾真、松尾正信訳 『ソフトウェア・テストの技法 第2版』近代科学社、2006、p.2 ソフトウェアテスト技術振興協会(ASTER)著、「テスト設計チュートリアル U-30クラス向け 2020年度版」、 2020 http://aster.or.jp/business/contest/doc/2020_U-30_V1.0.0.pdf 18
(参考)マイヤーズの三⾓形問題(図) 19 正三⾓形 ⼆等辺三⾓形 不等辺三⾓形
(参考)マイヤーズの三⾓形問題(元ネタ本の回答) 1. 有効な不等辺三⾓形 2. 有効な正三⾓形 3. 有効な⼆等辺三⾓形 4. 有効な⼆等辺三⾓形の辺の組み合わせ (e.g.
(5, 5, 6), (5, 6, 5), (6, 5, 5) ) 5. ⼀辺がゼロ 6. ⼀辺が負の数 7. ⼆辺の合計が、もう⼀辺と同じ (e.g. (1, 2 ,3) 8. ケース7の組み合わせ (e.g. (1, 2, 3), (1, 3, 2), (3, 1, 2) ) 9. ⼆辺の合計が、もう⼀辺より⼩さい (e.g. (1, 2, 4) ) 10. ケース9の組み合わせ (e.g. (1, 2, 4), (1, 4, 2), (4, 1, 2) ) 11. 全ての辺がゼロ 12. 整数以外の値 20 前掲 Glenford J. Myers ほか『ソフトウェア・テストの技法 第2版』、p.3
(参考)マイヤーズの三⾓形問題(その他の回答例) ▌OS・ブラウザの組み合わせ ▌レスポンス秒数 ▌ダイアログのアクセシビリティ ▌ログの形式 ▌不正な⼊⼒値 ▌エラーハンドリング ▌エラーの表⽰⽅法 ▌API 経由での⼊⼒
▌XSS ▌認証・アクセス権 ▌ローカライズ ▌など…… 21 前掲 ソフトウェアテスト技術振興協会(ASTER)著、 「テスト設計チュートリアル U-30クラス向け 2020年度版」 p.8 と、サイボウズでのテストの実例を参考にした。
(参考)テスト設計技法(JSTQB FL 4.1, 4.2, 4.3, 4.4) ▌振る舞いベースの技法(ブラックボックステスト) l 同値分割、境界値分析、デシジョンテーブル…… ▌内部構造ベースの技法(ホワイトボックステスト)
l 制御フローテスト、データフローテスト…… ▌経験ベースの技法 l エラー推測、探索的テスト…… 22
テスト実装(JSTQB FL 1.4.2) ▌テストを実⾏可能にする l テスト⼿順の作成(テストケースの具体化) l テスト環境の⽤意 l テストデータの⽤意
23
テスト実⾏(JSTQB FL 1.4.2) ▌スケジュールにしたがってテスト(スイート)を実⾏ l 不具合があれば BTS(Bug Tracking System)に登録 24
テスト完了(JSTQB FL 1.4.2) ▌完了したテスト活動のデータを集め、まとめる ▌テストケースやテスト環境の整理・保管 25
スクラムチームの中でのテスト 26
サイボウズでのスクラム導⼊前後 ▌スクラム導⼊前 l 開発フェーズとテストフェーズが明確に分かれている ▌スクラム導⼊後 l リリース可能な部分(インクリメント)を作る⼩さなサイクル(スプリン ト)を繰り返す l スプリント内で設計からテストまでやる(チームもある)
27
スクラムイベントとテスト ▌スクラムはいくつかのミーティングを定義している l これを「スクラムイベント」と呼ぶ ▌スクラムイベントの中でどのようにテスト活動を⾏っていくか︖ ▌以下で紹介するのは⼀例です スクラム⾃体についてはこちらを参照。Ken Schwaber & Jeff
Sutherland 著、⾓征典訳 「スクラムガイド ⽇本語版」、2017年 https://www.scrumguides.org/docs/scrumguide/v2017/2017-Scrum-Guide-Japanese.pdf 28
リファインメント ▌テストに関する観点からバックログを⾒る(テスト分析) l ユーザーが実際に⾏う操作は︖ l テストしやすい︖ l 異常系や例外は︖ 29
スプリントプランニング ▌何を作るかの認識を合わせつつ、テスト設計を簡単に⾏う(テスト分析、 テスト設計) l 実装に関する議論を聞きながら、テストすべき箇所やテストしなくてよ い箇所を考える/聞く l テストの観点を出してみる(何をテストするか) l テストケースの型を考える(どうテストするか)
30
スプリント内 ▌実装の状況に応じてテスト設計をアップデート(テスト設計) ▌テスト設計に基づきテストケースを作成(テスト実装) ▌実装が完了したらテスト開始(テスト実⾏) l 不具合が出たらすぐにフィードバック 31