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
Foundation Level シラバス1章まとめ
Search
リリカル
October 13, 2018
Technology
0
130
Foundation Level シラバス1章まとめ
Foundation Level シラバス1章のまとめです。
リリカル
October 13, 2018
Tweet
Share
More Decks by リリカル
See All by リリカル
テスト設計、逆から読むとおもしろい──仕様にない“望ましさ”の逆設計
mhlyc
0
130
SQuBOK_Chap3
mhlyc
0
87
Other Decks in Technology
See All in Technology
Next.jsと状態管理のプラクティス
uhyo
6
2.4k
ソフトウェアテスト 最初の一歩 〜テスト設計技法をワークで体験しながら学ぶ〜 #JaSSTTokyo / SoftwareTestingFirstStep
nihonbuson
PRO
4
290
非同期処理でも分散トレーシングしたい!- OpenTelemetry × Pub/Sub -
phaya72
1
100
問 1:以下のコンパイラを証明せよ(予告編) #kernelvm / Kernel VM Study Kansai 11th
ytaka23
3
640
MagicPodが描くAIエージェント戦略とソフトウェアテストの未来
magicpod
0
300
dbtとリバースETLでデータ連携の複雑さに立ち向かう
morookacube
0
1.4k
SONiCにて使用されているSAIの実際
sonic
0
270
Google Cloud Next 2025 Recap マーケティング施策の運用及び開発を支援するAIの活用 / Use of AI to support operation and development of marketing campaign
atsushiyoshikawa
0
380
Sleep-time Compute: LLM推論コスト削減のための事前推論
sergicalsix
1
150
分解し、導き、託す ログラスにおける“技術でリードする” 実践の記録
hryushm
1
520
Vibe Coding Tools
ijin
1
290
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
3
720
Featured
See All Featured
Designing Experiences People Love
moore
142
24k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.4k
Optimising Largest Contentful Paint
csswizardry
37
3.2k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
The Invisible Side of Design
smashingmag
299
50k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.8k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Being A Developer After 40
akosma
91
590k
Documentation Writing (for coders)
carmenintech
71
4.8k
Six Lessons from altMBA
skipperchong
28
3.8k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.5k
Stop Working from a Prison Cell
hatefulcrawdad
268
20k
Transcript
テスト技術者資格制度 Foundation Level シラバス 1章まとめ 藤沢 耕助
はじめに 1章の⽬的: テストの基礎を理解する
スタート 1 2 3 6 5 4 テストの基礎 を理解する 1.1.
テストの必要性 1.2. テストとは何か? 1.1. テストの必要性
1.1. テストの必要性 1.1.1. ソフトウェアシステムの状況 • ソフトウェアシステムは、いまや社会を構成する 要素として必須 • 要するにテストは⼤事になってきてるということ
1.1.2. ソフトウェアの⽋陥の原因 • エラー、⽋陥、故障について、JSTQBの定義を 把握しておきましょう 1.1. テストの必要性
• エラー、⽋陥、故障について • ⼈間はエラー(誤り)を起こす • そのエラーがソースコードの⽋陥(フォールト、 バグ)となる • ソースコードの⽋陥が実⾏されると、システムは 正しく実⾏されない→故障が起こる
1.1. テストの必要性
1.1.3. ソフトウェアの開発、保守、運⽤におけるテストの役 割 • システムの稼働前に⽋陥を摘出、修正することで、問題 が発⽣するリスクを低減できる • 契約上や法律上の適格要件、各業界の標準に合致してい ることを証明するためにソフトウェアのテストを必要と することもある
• ⾶⾏機とか、⾦融とか… 1.1. テストの必要性
1.1.4. テストと品質 • テストにより、摘出した⽋陥をもとにソフトウェアの機能/⾮ 機能要件や、品質特性の観点からソフトウェアの品質を計測で きる • テストを実施して、⽋陥がほとんど⾒つからなかった場合や、 ⽋陥がゼロの場合、対象のソフトウェアの品質に⾃信が持てる •
適切に設計したテストに合格すると、システムが抱えるリスク 全般の度合いを下げることができる 1.1. テストの必要性
1.1.4. テストと品質 • テストで⽋陥が⾒つかった場合、その⽋陥を修正すれば、シ ステムの品質は上がる • 他のプロジェクトで⾒つかった⽋陥の根本原因を理解すると、 プロセスを改善でき、同じ原因の⽋陥の作りこみを防げる • この結果、将来開発するシステムの品質を改善できる。
• テストは、(開発標準、教育、⽋陥の分析と並ぶ)活動の⼀ つとして品質保証に組み込む必要がある 1.1. テストの必要性
1.1.5. テストの⼗分性 • どこまでテストをすべきかは、技術や安全性、ビジネス上のリ スクレベルや、予算などのプロジェクトの制限によって決まる • テスト対象のシステムやソフトウェアの次の開発ステップ、顧 客への次回リリースについて意思決定をするために必要な情報 は、テストを通じて取得すべきである •
次のリリースどうする?(予定通り?延期する?) • 次の開発はどう進める?などなど 1.1. テストの必要性
スタート 1 2 3 6 5 4 テストの基礎 を理解する 1.1.
テストの必要性 1.2. テストとは何か? 1.2 テストとは何か?
• ソフトウェアの実⾏はテストの活動の⼀部であり、全部で はない • テストの活動は、テスト実施の前後にも存在する • 計画、コントロール、テスト条件選択、テストケース の設計と実⾏、実⾏結果のチェック、テスト完了基準 の検証… •
テストにはドキュメントレビューや静的解析の実施も含む 1.2 テストとは何か?
• 補⾜(テスト条件とは) • テスト条件:コンポーネントやシステムのアイテム やイベントで、テストケースにより検証できるもの (要するに、テストする対象のこと) 1.2 テストとは何か?
• 動的テストと静的テスト • ⽅法は違っても同じような⽬的のために使える • テスト対象のシステムだけではなく、開発やテス トのプロセス改善のための情報提供もできる 1.2 テストとは何か?
• テストの⽬的 • ⽋陥を摘出する • 対象ソフトウェアの品質レベルが⼗分であること を確認する • 意思決定のための情報を⽰す •
⽋陥の作り込みを防ぐ 1.2 テストとは何か?
• テスト設計を通してテストベースを検証することは、 コードに⽋陥が潜り込まないようにする効果がある • ドキュメントのレビュー、問題の認識と解決もコー ドに⽋陥が⼊るのを防ぐ 1.2 テストとは何か?
• テストの視点が異なると、⽬的も異なる • 開発でのテストの⽬的 • なるべく多くの故障をたたきだし、⽋陥を特定して修正する • 受け⼊れテストの⽬的 • システムが期待通りに動作し、要件に合致することの確認
• その他、保守テスト、運⽤テストなどにおいても違ったテスト の⽬的を持つ 1.2 テストとは何か?
• デバッグとテストは同じではない • 動的テスト • ⽋陥から発⽣する故障を⾒つけること • デバッグ • 故障の原因を突き⽌め、解析し、取り除く⼀連の開発の活動
• 通常、テスト担当者はテストに責任を持ち、開発担当者はデバッ グに責任を持つことになる 1.2 テストとは何か?
スタート 1 2 3 6 5 4 1.3. テストの7原則 1.4.
基本的な テストプロセス テストの基礎 を理解する 1.3 テストの7原則
1. テストは⽋陥があることしか⽰せない 2. 全数テストは不可能 3. 初期テスト 4. ⽋陥の偏在 5. 殺⾍剤のパラドックス
6. テストは条件次第 7. 「バグゼロ」の落とし⽳ 1.3 テストの7原則
1. テストは⽋陥があることしか⽰せない •テストにより、⽋陥があることはわかるが、⽋陥 がないことは⽰せない(悪魔の証明) •テストにより、ソフトウェアに残る未摘出⽋陥の 数を減らせるが、⽋陥が摘出できない状態でも正 しさの証明にはならない 1.3 テストの7原則
2. 全数テストは不可能 • すべてをテストすること(⼊⼒条件の全組合せ) は、ごく単純なソフトウェア以外では⾮現実的 • 全数テストの代わりに、リスクや優先順位により テストの焦点を絞る • 「全数やれ」と⾔われても実際は全数のことを
指してないことの⽅が多い 1.3 テストの7原則
3. 初期テスト • 早く⽋陥を⾒つけるために、テストはライフサイク ルのなるべく早い時期に開始すべき 1.3 テストの7原則
4. ⽋陥の偏在 •テストは、モジュールごとの⽋陥密度の予測や直 近の観察結果に⽐例してテストの焦点を絞らなけ ればならない •リリース前のテストで⾒つかる⽋陥や運⽤時の故 障の⼤部分は、ある特定の少数モジュールに集中 する 1.3 テストの7原則
5. 殺⾍剤のパラドックス • 同じテストを何度も繰り返すと、最終的にはそのテスト では新しい⽋陥を⾒つけられなくなる • テストケースは定期的に⾒直して、改定する必要がある • ソフトウェアやシステムのいろいろな部分に対しテスト を実⾏して多数の⽋陥を摘出するには、これまでと違う
テストケースが必要になる 1.3 テストの7原則
6. テストは条件次第 •条件が異なれば、テストの⽅法も変わる •例:⾼信頼性の要求される医療システムの テストは、ECサイトのテストとは異なる 1.3 テストの7原則
7. 「バグゼロ」の落とし⽳ •⽋陥を修正しても、構築したシステムが使えなかっ たり、ユーザの要件や期待を満⾜したりしなければ 役に⽴たない 1.3 テストの7原則
スタート 1 2 3 6 5 4 1.3. テストの7原則 1.4.
基本的な テストプロセス テストの基礎 を理解する 1.4 基本的なテストプロセス
•テストでは、テスト実⾏が⼀番⽬につく •しかし、効率よく有効にテストを進めるには、テス ト計画の⽴案、テストケースの設計、実⾏の前準備、 結果の評価に時間を費やせるようテストを計画すべ き 1.4 基本的なテストプロセス
•基本的なテストプロセス •計画とコントロール •分析と設計 •実装と実⾏ •終了基準の評価とレポート •終了作業 •通常、システムやプロジェクトの状況に合わせてこれらの活動を調整す る必要がある 1.4 基本的なテストプロセス
1.4.1. テスト計画作業とコントロール •テスト計画作業 •テストの⽬的を定義し、そのテストの使命や ⽬的に合致するようテストの仕様を決めるこ と 1.4 基本的なテストプロセス
1.4.1. テスト計画作業とコントロール •テストコントロール •実際の進捗と計画を⽐較し、計画からの乖離などの状況をレポートする継続 的な活動 •テストコントロールには、プロジェクトの⽬的や使命に合致させるために取 る対策も含む •今やっているテストは本当に当初の⽬的に沿っているか? •テストの活動は、プロジェクトを通じてモニタする必要がある •テスト計画には、モニタリングとコントロールの結果をフィードバック
する 1.4 基本的なテストプロセス
1.4.2. テストの分析と設計 •テストの分析と設計により、抽象度の⾼いテスト の⽬的を具体的なテスト条件やテスト設計に変換 する 1.4 基本的なテストプロセス
1.4.2. テストの分析と設計 •テストの分析、および設計では以下を実施する(1) •テストベースのレビュー •テストベースやテスト対象のテスト容易性を評価 •テストアイテム、仕様、動作、ソフトウェアの構造 などの分析に基づいて、テスト条件を識別し優先順 位を付ける 1.4 基本的なテストプロセス
1.4.2. テストの分析と設計 •テストの分析、および設計では以下を実施する(2) •⾼位レベルテストケース* を設計し、優先順位を付ける •テスト条件やテストケースをサポートする上で必要なテストデー タを識別する •テスト環境を設計し、必要となるインフラやツール類を識別する •テストベースとテストケースの間で双⽅向のトレーサビリティを 作成する
1.4 基本的なテストプロセス
補⾜ ⾼位レベルテストケース(high level test case): 具体的 な(実⾏レベルの)⼊⼒値や予測結果を使わないテストケー ス。論理演算⼦は使⽤するが、値のインスタンスは未定義や 使⽤不可であるといった状態にある 低位レベルテストケース(low
level test case): ⼊⼒ データと期待結果が具体的(実装レベル)なテストケース。 ⾼位レベルのテストケースからの論理演算⼦は、論理演算⼦ に相当する実際の値に置きかえられる 1.4 基本的なテストプロセス
1.4.3. テストの実装と実⾏ •テスト実装とテスト実⾏ •必要なテストケースを実⾏順に組み合わせ、その 他の情報を含めてテスト⼿順、またはスクリプト として仕様化する活動 •また、テスト環境のセットアップとテストを実⾏ する活動 1.4 基本的なテストプロセス
1.4.3. テストの実装と実⾏ •テスト実装とテスト実⾏では、以下を実施する(1) •テストケースを決定し、実装し、優先順位を付ける(テスト データの識別も含まれる) •テスト⼿順を開発し、優先順位をつけ、テストデータを作成 する •場合によってはテストハーネス* を準備し、テストの⾃動実 ⾏スクリプトを書く
1.4 基本的なテストプロセス
補⾜ テストハーネス:テスト実⾏に必要なスタブや ドライバのこと 1.4 基本的なテストプロセス
1.4.3. テストの実装と実⾏ •テスト実装とテスト実⾏では、以下を実施する(2) •効率よくテストを実⾏するため、テスト⼿順をベース にしてテストスイート* をつくる •テスト環境を正しくセットアップしたことを確認する •テストベースとテストケースの間で双⽅向のトレーサ ビリティを確認し更新する 1.4
基本的なテストプロセス
補⾜ テストスイート:関連するテストケースのまとまり 1.4 基本的なテストプロセス
1.4.3. テストの実装と実⾏ •テスト実装とテスト実⾏では、以下を実施する(3) •計画した順番に従い、テスト⼿順を⼈⼒、もしく はテストツールで実⾏する •テストの実⾏結果の記録をとり、テスト対象のソ フトウェア* 、テストツール、テストウェアのID とバージョンを記録する 1.4
基本的なテストプロセス
補⾜ テストウェア:テスト活動の中で作成した成果物 1.4 基本的なテストプロセス
1.4.3. テストの実装と実⾏ •テスト実装とテスト実⾏では、以下を実施する(4) •実⾏結果と期待する結果を⽐較する •両者が⼀致しない場合、インシデントとして報告 •原因を解明するために、インシデントを分析する •実⾏結果と期待する結果が⼀致しないケースごとに、テスト活動を繰り返 す •例えば、修正されたことを確認するために前回不⼀致となったケース を再実⾏したり、回帰テストを⾏ったり・・・
1.4 基本的なテストプロセス
1.4.3. テストの実装と実⾏ •テスト実装とテスト実⾏では、以下を実施する(4) •実⾏結果と期待する結果を⽐較する •両者が⼀致しない場合、インシデントとして報告 •原因を解明するために、インシデントを分析する •実⾏結果と期待する結果が⼀致しないケースごとに、テスト活動を繰り返 す •例えば、修正されたことを確認するために前回不⼀致となったケース を再実⾏したり、回帰テスト*
を⾏ったり・・・ 1.4 基本的なテストプロセス
補⾜ 回帰テスト(regression testing): 変更によ り、ソフトウェアの未変更部分に⽋陥が新たに⼊り 込んだり、発現したりしないことを確認するため、 変更実施後、すでにテスト済みのプログラムに対し て実⾏するテスト。ソフトウェアや、実⾏環境が変 わる度に実施する 1.4
基本的なテストプロセス
1.4.4. 終了基準の評価とレポート •終了基準の評価 •定義した⽬的に対し、テストの実⾏が⼗分か をチェックする活動 •このチェックは、各テストのレベル* で実施 する必要がある 1.4 基本的なテストプロセス
補⾜:テストレベルの例 テストレベルの例には、コンポーネントテスト、 統合テスト、システムテスト、受け⼊れテストが ある 1.4 基本的なテストプロセス
1.4.4. 終了基準の評価とレポート •終了基準の評価の作業 •テスト結果をテスト計画作業で定義した終了基準と ⽐較する •追加テストが必要か、あるいは定義した終了基準を 変更するべきか判断する •ステークホルダにテストサマリレポートを提出する 1.4 基本的なテストプロセス
1.4.5. 終了作業 •終了作業 •終了したテストの全活動のデータを集め、プロジェクトか ら得たこと、テストウェア、実績と数字を集約する •プロジェクトの状況が次のようなとき実施する •システムがリリースされたとき、テストプロジェクト が完了(または打ち切り)したとき、マイルストンに 到達したとき…など 1.4
基本的なテストプロセス
1.4.5. 終了作業 •終了作業の主なものは以下のとおり(1) •計画にある成果物がリリースされたかをチェックする •インシデントレポートを終了させるか、もしくは未対策の⽋ 陥を変更記録に載せる •システムを受け⼊れるための⽂書を作成する •次回も使えるようにテストウェア、テスト環境、テストのイ ンフラをまとめ、⽂書に記録する 1.4
基本的なテストプロセス
1.4.5. 終了作業 •終了作業の主なものは以下のとおり(2) •テストウェアを保守部⾨に引き渡す •次回のリリースやプロジェクトのために教訓とすべ きものをまとめる •その情報をテストの成熟度を改善するために利⽤す る 1.4 基本的なテストプロセス
スタート 1 2 3 6 5 4 1.5. テストの⼼理学 1.6.
⾏動規範 テストの基礎 を理解する はじめに
•テストやレビューのためのマインドセットは、ソフトウェア開発 の場合と異なる •適切なマインドセットを持っていれば、開発担当者が⾃分の作っ たコードをテストすることも可能だが、テストを切り出してテス ト担当者に割り当てるほうが効率的 •教育を受けたプロのテスト担当者による、開発から独⽴した視点 でのテストといった付加的な利点が期待できる •独⽴性を確保したテストは、あらゆるレベルのテストで実施可能 1.5 テストの⼼理学
•独⽴性が⾼い→作者のバイアスを排除、⽋陥や故障 を摘出する効果を⾼くできる •ただし、熟知に取って代わるものではない 1.5 テストの⼼理学
•独⽴性の度合いの例 •作成した本⼈がテストする •開発者とは別の⼈がテストを設計する •別の部署の⼈、またはテストの専⾨家がテストを 設計する •開発者とは別の会社の⼈がテストを設計する 1.5 テストの⼼理学
•参考:IV&V 1.5 テストの⼼理学
•プロジェクトメンバの作業は⽬的次第 •⽬的に沿って⾃分の作業の計画を⽴てる傾向がある •よって、テストの⽬的を明確に定めることは⾮常 に重要である 1.5 テストの⼼理学
•テストで故障を⾒つけることは、対象ソフトウェアやそれ を作成した開発者に対する⾮難と解釈されることがある •テストはプロダクトリスクのマネジメントという点では前 向きで建設的作業だが、破壊的な活動と⾒ることも多い •⾒つけたエラー、⽋陥、故障を建設的に扱えれば、テスト 担当者と設計者、開発担当者との間の敵対感情を避けられ る 1.5 テストの⼼理学
•システムの故障を⾒つけるには、好奇⼼、プロとし ての悲観的な考え、批判的な視点、細部まで⾒逃さ ない注意⼒、開発担当者との良好なコミュニケーショ ン、エラーを嗅ぎ出す経験が必要 •テスト担当者やテストリーダは、テストの進捗、リ スクの情報をやり取りする場合に建設的に作業が進 むよう調整するスキルが必要 1.5 テストの⼼理学
• テストで⽋陥を⾒つけて修正するとリリース後に検 出して修正するより時間とお⾦の節約になり、リスク も減る •⽋陥の情報はソフトウェアやドキュメントの作成者の スキルを⾼めることにつながる •テスト担当者が「悪いニュースを伝える使者」との扱 いを受けると、コミュニケーションの問題が起きる 1.5 テストの⼼理学
•テスト担当者とその他の⼈の関係を改善する⽅法 •対決ではなく、協調姿勢で開始する。全員のゴールは⾼品質 のシステムである •プロダクトに対する指摘は、中⽴で、事実を中⼼にして実施 する •他⼈の気持ちや反応を理解するよう努⼒する •⾃分が⾔ったことを他⼈が理解し、他⼈が⾔ったことを⾃分 が理解していることを確認する 1.5 テストの⼼理学
スタート 1 2 3 6 5 4 1.5. テストの⼼理学 1.6.
⾏動規範 テストの基礎 を理解する はじめに
•エンジニアのための⾏動規範(1) •常に公⼈として⾏動しつつ、顧客や雇⽤主に最⼤限の利益をもたらさなけれ ばならない。 •公⼈(こうじん)とは、公務員や議員などのように公務についている⼈ を指す⾔葉である。 対義語は私⼈。 •公⼈ - Wikipedia •成果物は、プロフェッショナルとして⾼いレベルのものでなければならない
•プロフェッショナルとしての判断は誠実なものであり、かつ⾃⾝でなしたも のでなければならない 1.6 ⾏動規範
•エンジニアのための⾏動規範(2) •認定されたマネージャおよびリーダは、ソフトウェアテストのマネジメ ントに対する倫理的なアプローチに同意した上で、これを推進する → 参考:倫理とは、技術者倫理 •公共の利益に寄与することで、専⾨職としての地位向上に努めなければ ならない •同僚に対し公正かつ協⼒的でなければならず、ソフトウェア開発者と協 調しなければならない •⽣涯その専⾨性を磨くための学習を続けるとともに、実践の場でも倫理 的なアプローチを広めなければならない
1.6 ⾏動規範