Slide 1

Slide 1 text

1 / 53 テストを学んでみたい開発者のための ソフトウェアテスト読書マップ Feb. 9th, 2023 Developers Summit 2023 鈴木 一裕 @ kz_suzuki Image: "First sunset | Emmet's Adventures" by chris.alcoran is licensed under CC BY-NC-ND 2.0.

Slide 2

Slide 2 text

2 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI ◼ 参加書籍 自己紹介 ◼ 鈴木 一裕(*1) ◼ 職業: QAエンジニア ◼ Twitter: @kz_suzuki ◼ ブログ: ソフトウェアの品質を学びまくる(*2) ◼ コミュニティ ⚫ ISO/IEC/IEEE JTC1/SC7/WG26(*3)委員 など ◼ 最近の社外発表 ⚫ 2022年3月 @JaSST’22 Tokyo(*4) - 『実践ソフトウェアエンジニアリング』 第3部 超概説 ⚫ 2022年8月 @JaSST nano vol.15 - 殺虫剤のパラドックスの真実 ⚫ 2022年12月 @JaSST nano vol.19 - AIシステムのブラックボックステスト (*1) デブサミに向けてこの「ろくろアイコン」を作るためにひっそり自撮り100枚くらい撮ったので称えてください。 (*2) 実際のところ、そんなに学びまくっていない。 (*3) ソフトウェアテストに関する規格などを作っている (*4) JaSST: ソフトウェアテストシンポジウム(Japan Symposium on Software Testing) システムテスト自動化標準ガイド 翔泳社・2014年 監訳・共訳 (1章分だけ) ソフトウェア品質知識体系ガイド(第3版) オーム社・2020年 共著 (超一部) 実践ソフトウェアエンジニアリング(第9版) オーム社・2021年 共訳 (3章分だけ) テスト・QA界隈にのみ出没 周りの人の力で成果をレバレッジ

Slide 3

Slide 3 text

3 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI 目的とおことわり ◼ この発表が終わる頃どうなっていたいか ⚫ 「ソフトウェアテストの知識って、何がうれしいのか」がわかる。 ⚫ 「ソフトウェアテストを、どこから勉強すればいいのか」がわかる。 ◼ おことわり ⚫ 主観がめっちゃ入ってます。 ⚫ いわゆる「QAテスト」と呼ばれる範囲が中心になります。 ⚫ ツイートは歓迎です。怖くないやつでお願いします。#devsumiB

Slide 4

Slide 4 text

4 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI 話の流れ 1. はじめに 2. テストの勉強は役に立つのか? 3. テストいろいろありすぎ問題 4. ソフトウェアテスト読書マップって何? 5. テストプロセスとテスト設計 6. おわりに

Slide 5

Slide 5 text

5 / 53 テストの勉強は 役に立つのか? Image: "I'm studying" by rabbitneverlies is licensed under CC BY-SA 2.0.

Slide 6

Slide 6 text

6 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI ソフトウェアテストに興味をもつ 開発者が増えている との噂がある。

Slide 7

Slide 7 text

7 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI 一方で、テストについての言葉や概念が 無数にあって、よくわからんとも言われる。

Slide 8

Slide 8 text

8 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI QAエンジニアでなくても、テストを学んでおくといい理由 ◼ QAエンジニアの活動に対する解像度が上がる ⚫ テストに関する概念は雑多にみえるが、ある程度体系的に整理されている。 ⚫ テストの用語や考え方を知るだけで、テストや品質についての視界がクリアになることがある。 ◼ テストで用いる思考を、開発の早期から取り入れられる ⚫ QAは日ごろ、プロダクトの情報を整理したりモデル化したりを繰り返している。 これは、設計の段階から一緒にやっていくと効率がいい。 ⚫ QAのエキスパートには、尖った部分を生かしてもらうのがハッピー。 - プラクティスの導入経験、バグの知識、「こうしたらどうなる?」の発想力、異常に対する嗅覚、「神の手」、・・・ 1 2

Slide 9

Slide 9 text

9 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI しかし、何から手をつける?

Slide 10

Slide 10 text

10 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI プログラミング初学者に 「プログラミングやりたいんだけど、 どの言語がいい?」 と聞かれたらら、みなさん何と答えますか?

Slide 11

Slide 11 text

11 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI 「どんなことしたいの?」 「何を作りたいの?」 と聞くと思います。

Slide 12

Slide 12 text

12 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI テストも、何がしたいか、 何に悩んでいるかによって、 勉強のしどころが違ってきます。 広くて深い分野なんです。

Slide 13

Slide 13 text

13 / 53 テストいろいろ ありすぎ問題 Image: "A Messy Milkshake Recipe" by echo0101 is licensed under CC BY-NC-SA 2.0.

Slide 14

Slide 14 text

14 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI 「テスト」と名の付く言葉たち システムテスト ユニットテスト E2Eテスト 組み合わせ テスト 状態遷移 テスト ユーケース テスト テスト計画 テスト実装 テスト実行 機能テスト 性能テスト セキュリティ テスト ユーザビリティ テスト 自動テスト 探索的テスト スモークテスト テスト分析 ビッグバン テスト デシジョン テーブルテスト リグレッション テスト フレイキー テスト A/Bテスト キーワード 駆動テスト 同値分割 テスト ペネトレーショ ンテスト 結合テスト モンキーテスト

Slide 15

Slide 15 text

15 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI 「テスト」からイメージするものにもいろいろある ◼ 機能のテストなのか、性能テストなのか、セキュリティテストなのか、・・・ ⚫ テストの種類。「テストタイプ」という言葉で表される。 ◼ Webサービスなのか、組込ソフトウェアなのか、ゲームなのか、・・・ ⚫ テスト対象の分野。 「ドメイン」という言葉で表される。 ◼ テストの管理なのか、分析・設計なのか、実行なのか、・・・ ⚫ テストの活動。 「テストプロセス」という言葉で表される。 ◼ ユニットテストなのか、システムテストなのか、・・・ ⚫ テストの粒度。 「テストレベル」 (*1)という言葉で表される。 いろいろな「テスト」用語があり、切り口がそれぞれ違う。 ごちゃ混ぜで、どう勉強していいのやら・・・。 (*1) あらためて「テストピラミッド」を見てみると、一番下のユニットテスト以外はばらつきがあります。最上位はUIだったりシステムテストだったり。

Slide 16

Slide 16 text

16 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI ある技術分野を勉強し始める場合に直面する困難 ◼ その技術分野の全体像がわからない ◼ 全体のうち、どの部分から手を付けていいかわからない ◼ 何を参照すれば、どの部分のどのレベルを学べるかわからない → はインターネッツ集合知で解決できるのでは? 1 2 3 3

Slide 17

Slide 17 text

17 / 53 ソフトウェアテスト 読書マップって何? Image: "Stack of books" by EverydayTrish is licensed under CC BY-NC 2.0.

Slide 18

Slide 18 text

18 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI テストの本は、たくさん出版されている。 それだけに、 「どの本に何が書かれているのか」が わかりづらい状況になっている。

Slide 19

Slide 19 text

19 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI 技術書は安くない。 各書籍がカバーしている範囲を 俯瞰できるような情報がほしい! そこから必要な本の目星をつけたい!

Slide 20

Slide 20 text

20 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI Twitterでの適当な 呼びかけに対し、 ヤバい素晴らしい人たち、 集まる。

Slide 21

Slide 21 text

21 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI 想定 とりあえず10冊。 2か月くらいでがんばって公開!? 現実 70冊をカバー、 1週間くらいで公開・・・ これがアジリティか・・・ わたしは1冊しか担当していないが・・・

Slide 22

Slide 22 text

22 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI ◼ 読書マップの目的 ソフトウェアテストを学ぶ人が、「どの本に何が書いてあるか」をざっくりつかめるようにすること。 ソフトウェアテスト読書マップってこんな感じ 書籍の一般情報 レベル・一言メモ テスト各エリアのカバー範囲 書籍 レベルの凡例 ■入門: 一般の人への概念の導入。 ■初級: テストの知識や経験が少しあれば読むことができる ■中級: ある程度テストの知識・経験を踏まえて読むのが望ましい ■上級: テストのベテラン向け テストのエリア テスト計画、分析、設計、実装、実行など、JSTQBの定義を 参考に分類 カバー範囲の凡例 ■: 具体例ふくめ、詳細な記載がある ●: 考え方や概要の記載がある ▲: 用語程度の記載がある ー: 記載なし 「どの本が、どのくらいの濃さで、 どの範囲をカバーしているのか」 を見える化

Slide 23

Slide 23 text

23 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI ソフトウェアテスト読書マップの使い方 ◼ まず、横軸を見る ⚫ 一言に「テスト」といっても、いろいろなトピックがあることが、あらためてわかる。 ⚫ たとえば「テストチーム構築」と「テスト設計」は、まったく違う知識・経験が求められる。 ◼ 本の傾向を理解する ⚫ 「たくさんのセルが緑で塗られている」本は、広く浅くをカバーする辞書的なモノ。 →テストの概観を学ぶのに合っている。 ⚫ 「少な目のセルが赤で塗られている」本は、テーマを絞って深く説明したモノ。 →特定のトピックの専門性を深めるのに合っている。 ⚫ 「たくさんのセルが赤で塗られている」本は、鈍器。 ◼ 読む順番を考える ⚫ 特定のトピックの理解を深めるため、「色合いが似ていてレベルが違う本」を読んでいく、など。 1 2 3

Slide 24

Slide 24 text

24 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI お得情報: 読書マップに見るQAエンジニアあるある ◼ 散らばった情報があると、テーブルで整理しだす。 ◼ カバレッジを高めたがる。 ◼ マトリクスを書くと、縦軸と横軸の要素の妥当性について議論しだす。 ◼ 「定義」にうるさい。 1 2 3 4 自分だけじゃなかった・・・!

Slide 25

Slide 25 text

25 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI これですべての問題が解決した! - 第3部・完(*1) - (*1) 往年の少年ジャンプの漫画のネタは、若者に対するハラスメントになりうるので注意が必要です。

Slide 26

Slide 26 text

26 / 53 顧客が本当に ほしかったもの・・・? Image: "Tree Swing in Winter" by dbnunley is licensed under CC BY-NC-SA 2.0.

Slide 27

Slide 27 text

27 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI ある技術分野を勉強し始める場合に直面する困難 (再掲) ◼ その技術分野の全体像がわからない ✅ ◼ 全体のうち、どの部分から手を付けていいかわからない ◼ どの本が、どの部分のどのレベルをカバーしているかわからない ✅ → が解決できていない。 1 2 3 2

Slide 28

Slide 28 text

28 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI (*1) Rashem Panditさんのチャートの日本語版より引用。Visual guide to best books on Product Managementのリンク集 (*2) ProductZineの記事『「プロダクトマネージャーこそ、戦略的に読書せよ!」──最短で成果を出すための読書地図』より引用 顧客が本当にほしいもの、これでは? 蜂須賀 大貴さん作 「プロダクトマネージャーのための読書地図」(*2) 「最初の1冊」から始まって、 しだいに領域が広がっていく。 しだいに発展的な内容に なっていく。 Rashem Panditさん作・渡辺 悟史さん訳 「Visual guide to best books on Product Management」(*1) ”世の中にあるあまたの書籍の中から「今の自分には何が必要なのか」。 そして、「必要な知識が得られる書籍はどれなのか」を見極めるには、コツが 要ります。少なくとも、表紙や目次を見て想像できるくらいのテーマに対する 理解度は必要でしょう。 しかし、初めての領域を学ぶには、これはハードルが高すぎるのです。”

Slide 29

Slide 29 text

29 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI 「最初、何に手を付けるか」 がわかるようにしてみた。

Slide 30

Slide 30 text

30 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI テスト計画・管理エリア テスト自動化エリア モダンなテスト文化エリア スルメエリア テスト設計エリア 全体概要エリア (*) 書影はすべて、Amazonから引用。各書籍の情報はこのあとのスライドで一覧にします。 ホワイトボックステストも カバーしたい場合 もっと詳しく具体的な 内容を知りたい場合 コスパのよい テストを求めて 演習+勉強会 で強くなる! テストの作り方はわかった ので、自動化するぜ! アジャイルにおけるテス トの位置づけや、先進 企業のテストを学ぶ マネージャーなどがソフトウェア テストの全体をより深く押さえる 名著・古典。ちゃんと 読めてない・・・ ツールやドメインに あまり依存しない 一般論を学ぶ テストマネージャとしての一歩 目を学ぶための良書 ソフトウェアテスト全般について 比較的平易に書かれた入門書 テスト設計技法とツール、テスト 分析について平易に説明 Webシステムに対する自動テス トについてStep by Stepで説明 アジャイルテスト全般の解説と事 例紹介 テストを何周か経験し、悩んだ後に 読むと得るものが大きい実践書 ソフトウェアテスト読書マップ Another View Feb. 9th, 2023 @kz_suzuki ⚫ このマップは、鈴木が好きな本を中心に並べたものに対し、マップ作成チーム にいただいたコメントを取り込んだものです。 ⚫ ここにない本に対する否定的な意図はなく、おそらく単にわたしが読めずにい るだけです。不勉強でスミマセン。 ⚫ 開発者テストやテスト分析への言及も薄いです、これも不勉強です・・・。 「暗黒大陸」へ 「新世界」へ

Slide 31

Slide 31 text

31 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI ⚫ 「一冊目」として外せない、さすがのベストセラー。 ⚫ ソフトウェアテストの役割、手法、計画のやり方など、テスト 全体について広くカバーしている。 ⚫ 軽妙な語り口で飽きさせない。硬い本からのスタートが苦 手な人にもありがたい。逆に、粗さを感じる部分もある。 ⚫ ソフトウェアエンジニアとして押さえておくべき基本的なテスト 設計技法をわかりやすく解説している。 ⚫ わたしが初めてちゃんと読んだテスト本であり、エンジニア人 生を変えてくれた書籍なので、思い入れが強すぎる。 ⚫ なのに改訂版を積んでいる、申し訳ありません・・・。 知識ゼロから学ぶソフトウェアテスト 著者: 高橋 寿一 出版社: 翔泳社 出版年: 2012年 Amazonリンク 構成 1. はじめに 2. ソフトウェアテストの基本 3. エンジニアがもっともよく使う手法 4. 探索的テスト 5. 非機能要求のテスト 6. ソフトウェアテスト運用の基本 7. ソフトウェア品質管理の基本 8. テストの自動化 9. それでもテストがうまくいかない人へ ソフトウェアテスト技法ドリル 著者: 秋山 浩一 出版社: 日科技連 出版社 出版年: 2022年 Amazonリンク 構成 1. 点に注意を向ける 2. 線を意識する 同値分割、境界値分析、・・ 3. 面で逃さない ドメイン分析テスト、デシジョンテーブル、 クラシフィケーションツリー、CFD法、・・ 4. 立体で捉える HAYST法、ペアワイズ、・・ 5. 時間を網羅する 状態遷移テスト、並列処理テスト、・・ 6. 多次元の品質 シナリオテスト、受け入れテスト、・・

Slide 32

Slide 32 text

32 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI 紹介書籍一覧(*1) (*1) 著者の一部や訳者が、一部省略されております。なお、リンクにアフィリエイトはつけていません! 一部の本は電子書籍のみ、あるいは残念ながら絶版となっております・・・。 著者: 大西 建児、佐々木 方規他 出版社: 翔泳社 Amazonリンク ソフトウェアテスト教科書 JSTQB Foundation 第4版 シラバス2018対応 ソフトウェアテスト入門 押さえておきたい <<要点・重点>> 著者: ソフトウェア・テストPRESS編 集部 出版社: 技術評論社 Amazonリンク 現場の仕事がバリバリ進む ソフトウェアテスト手法 著者: 高橋 寿一、湯本 剛 出版社: 技術評論社 Amazonリンク 著者: Rick Craig、Stefan P Jaskiel 出版社: 日経BP出版センター Amazonリンク 体系的ソフトウェアテスト入門 はじめて学ぶソフトウェアのテスト技法 著者: リー コープランド 出版社: 日経BP Amazonリンク ソフトウェアテスト技法練習帳 ~知識を経験に変える40問~ 著者: 梅津 正洋、竹内 亜未他 出版社: 技術評論社 Amazonリンク 著者: Jonathan Rasmusson 出版社: オライリージャパン Amazonリンク 初めての自動テスト ―Webシステムのための自動テスト基礎 システムテスト自動化 標準ガイド 著者: Mark Fewster、Dorothy Graham 出版社: 翔泳社 Amazonリンク Agile Testing Condensed 著者: Janet Gregory、Lisa Crispin 出版社: - Leanpubリンク 著者: ジェームズ A ウィテカー、 ジェーソン アーボン、ジェフ キャロー ロ 出版社: 日経BP Amazonリンク テストから見えてくる グーグルのソフトウェア開発 ソフトウェアテスト293の鉄則 著者: セム ケイナー, ジャームズ バッ ク他 出版社: 日経BP Amazonリンク ソフトウェアテストをカイゼンする 50のアイデア 著者: Gojko Adzic, David Evans 他 出版社: 翔泳社 Amazonリンク

Slide 33

Slide 33 text

33 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI なぜ、概要の次に、テスト設計なのか。 というか 「テストプロセス」「テスト設計」とは?

Slide 34

Slide 34 text

34 / 53 テストプロセスと テスト設計 Image: "Architecture #1" by Andrew Dupont is licensed under CC BY-SA 2.0.

Slide 35

Slide 35 text

35 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI 「テストプロセス」という言葉の定義 ◼ テストプロセス(*1) ⚫ 相互に関連する活動のセット。 ⚫ テスト計画作業、テストモニタリングとコントロール、テスト分析、テスト設計、テスト実装、 テスト実行、テスト完了といった活動から構成される。 ◼ 「テスト開発」という考え方 ⚫ テストの分析・設計・実装という言葉からもわかるように、テスト自体もマクロからミクロへ、 論理的な順を追って実現されていく「開発物」であると考える。 - いきなり「テストケース1,000件レビューしてください」と言われても困りますよね。 - まず「何を実現したいの?」から始める。 (*1) ISTQB Glossaryから引用。

Slide 36

Slide 36 text

36 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI テストプロセス(*1)が整えられていく例(*2) 本当にアドホックな世界 ・・・ (*1) アジャイル開発をしている人たちの前で「プロセス」という言葉を使うことに、恐怖感を覚えている自分がいます。 (*2) この順番に必ずプロセスが追加されていくというものではないです。 (*3) 「学習」という観点では、これが必ずしも悪いわけではないです。これだけだとつらいですが。 テスト 実行 できたソフトウェアを、とにかく叩いてみる!(*3) テスト 実行 テスト 実装 実行する内容が不明だと、再現性がない・・・。 テストケースをちゃんと具体化して書き下そう。 テスト 実行 テスト 実装 テスト 計画 テスト 完了 見積もりとか計画とか、報告・情報整理・次の 開発へのフィードバックは必要だよね。 モニタリングとコントロール テスト 実行 テスト 実装 テスト 計画 テスト 完了 進捗・品質状況を定量的に把握して、必要に応じた アクションを取れるようにしよう。 モニタリングとコントロール テスト 分析 テスト 実行 テスト 実装 テスト 計画 テスト 完了 テスト観点が足りていない。テストケースをいきなり 作り始めるのではなく、まず観点を列挙・整理しよう。 モニタリングとコントロール テスト 設計 テスト 実行 テスト 実装 テスト 計画 テスト 完了 ある観点に対して、テストが冗長だったり不足してた りする。テストケースをロジカルに導出できない? テスト 分析

Slide 37

Slide 37 text

37 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI 象をテストする場合のテストプロセス ◼ この人たちは、「現実の象がいかなるものか」を、 いろんな「観点」できっちり見ている。 ⚫ 胴体、しっぽ、牙、・・・ 、特徴ある箇所を確認。 ⚫ 象のユーザビリティという非機能要件もカバーしている。 ◼ 象に関する情報を事前に調査したうえで、 では実際に出てきた象のどこをチェックするかと いう観点を特定するのが、テスト分析。 ◼ それぞれの観点を効果的・効率的にチェック する方法を決めるのが、テスト設計。 ◼ 設計したものを実際に書き下したり、行う 順番を決めたりするのが、テスト実装。 ◼ 実際の象チェックを行うのが、テスト実行。 ◼ 目隠しを外すのは、スクラムマスターの仕事? The Blind Men and the Elephant: A Metaphor to Illuminate the Role of Researchers and Reviewers in Social Science - Scientific Figure on ResearchGate. Available from: https://www.researchgate.net/figure/The-Blind-Men-and-the-Elephant_fig1_290127733 [accessed 14 Jan, 2023] 有名なこの The Blind Men and the Elephant 「部分しか見ておらず、全体が見えてない」という メタファーで使われがちだけど・・・。

Slide 38

Slide 38 text

38 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI テストプロセスで、テストの課題を仕分けしてみると・・・ ◼ テストなんて考えてもみなかったところで本番障害が。。。 ⚫ テストの「分析」するプロセスの改善が必要かもしれません。 ◼ AIベースのソフトウェアってどうやってテストすればいいのだろう? ⚫ ドメイン特有のテストの「設計」をするための「技法」を学ぶ必要があります。 ◼ 手動のテストに時間がかかりすぎるので、自動化したい・・・ ⚫ テストの「実装」というプロセスです(*1)。自動テストツールも関係してきます。 ◼ アジャイルで人気のある「探索的テスト」をやりたい! ⚫ テストの「実行」というプロセス(*2)であり、実行のスタイルを学ぶことになります。 ◼ 手動テストと自動テストが混在して、進捗が全然わからん。 ⚫ テストの「管理」というプロセスで、ツール導入も 含めて考える必要があります。 (*1) テスト自動化は実装のみが関係するわけではありません。テスト設計など実装以前の活動もとても重要です。また実行も、そのための計画ももちろん大事です。 (*2) 探索的テストは、テストの実行・学習・設計を短時間で反復・継続していくスタイルなので、「実行」のみではありません。 このうち、 なぜテスト設計をオススメするのか?

Slide 39

Slide 39 text

39 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI 「テスト設計」とは何か ◼ テスト設計とは ⚫ テスト分析において「テストするぞ」と特定した対象を、テストケースに落とし込む作業。 - これ以外にも、テスト環境の設計やテストデータの検討も、テスト設計プロセスに含まれる。 ⚫ この作業において使うのが、「テスト技法」。 ◼ テスト技法とは ⚫ テスト条件の定義、テストケースの設計、およびテストデータの明確化をするための手続き。(*1) ⚫ 最適なテストケースを導出するために、以下の3つの手段と、対応する技法がある。(*2) 1. テストケースを合理的に少なくする - 同値分割法、組み合わせテスト 2. 多くの欠陥が見つかるようにする - 境界値分析、エラー推測、探索的テスト 3. テスト対象を漏れなくテストする - 制御フローテスト、データフローテスト、デシジョンテーブルテスト、状態遷移テスト、ユースケーステスト (*1) ISTQB Glossaryから引用。 (*2) 『ASTERセミナー標準テキスト』参照。

Slide 40

Slide 40 text

40 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI 「テスト設計」がオススメな理由 ◼ 効果的と考えられるテストケースをロジカルに導出できるので、気分が良い。 ◼ テスト設計において利用するモデルは、ソフトウェア設計段階で使える。 ◼ 最初のプロセスの「計画」の詳細を先に学ぼうとすると、たぶん面白くない。 ⚫ テスト計画の重要性は、テストを何周か経験してからじゃないと身に沁みない。 ⚫ テンプレの定義された各種ドキュメントも、ただの儀式文書に思えてしまってやる気を失う。 1 2 3

Slide 41

Slide 41 text

41 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI テスト設計の具体例

Slide 42

Slide 42 text

42 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI SNSでこんな機能があったとする ◼ 仕様: グループへの参加手順① 1. ユーザは、そのグループのポータル画面で、「参加を 希望する」ボタンを押す。 2. グループの管理者に承認依頼が通知される。 3. 管理者はそれを「承認」または「却下」する。 ◼ 仕様の検討: 状態遷移のにおいがする ⚫ 状態遷移テストでは、状態遷移モデルを描くことに なっている。状態遷移図を描いて(*1)みよう! ⚫ モデルから、状態遷移表を生成できる。 ⚫ 状態遷移テストでは最低限、状態遷移表のすべて のセルを網羅することになっているが・・・空欄だらけ。 仕様が定まっていない可能性があることに気づく。 (*1) 状態遷移図・状態遷移表は、ベリサーブ社のサービス「GIHOZ」を利用して描いています。 状態遷移図 状態遷移表 ユーザが一度「参加希望ボタン」を押した後、 承認の前にもう一度ボタンを押したらどうなる? 何も変わらないという動作なのか? そもそも押せない作りにするのか? 自動生成

Slide 43

Slide 43 text

43 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI SNSでこんな機能があったとする ◼ 仕様追加: グループへの参加手順② 1. あるグループの管理者は、そのグループの管理画面 でユーザを指定し、「招待する」ボタンを押す。 2. そのユーザに招待が通知される。 3. ユーザはそれを「承認」または「却下」する。 ◼ 仕様の検討: 状態遷移図の更新 ⚫ 管理者とユーザを入れ替えた遷移を追加するだけ? ⚫ 状態遷移表を描くことで、 「ユーザ承認待ち かつ 管理者承認待ち」 という新しい状態が発生しうることに気づく。 ⚫ ここでも、テスト設計のためのモデルを描くことで、 「曖昧な仕様」を早く特定することができる。 状態遷移図 管理者がユーザの承認を待っている状態で、 ユーザが「参加希望」ボタンを押すとどうなる? 「参加状態」にしてしまうか? ??

Slide 44

Slide 44 text

44 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI SNSでこんな機能があったとする ◼ テストの検討(*1) ⚫ 状態遷移表を描くことで、そこから特定の条件の テストケースを生成することができる。 - 0スイッチテストケース: 状態遷移が1度だけ起こるケース。 状態遷移表の各セルを網羅することになる。 - 1スイッチテストケース: 状態遷移が2度起こるケース。 - この機能のハッピーパス(未参加→承認待ち→参加)や、 「却下された後に再度申請」というケースも含まれている。 ⚫ 「状態遷移については、コレコレという条件で網羅性 100%である」と論理的に説明ができる。 - 「いろいろランダムにやってみて、問題ありませんでした!」 だけだと不安ですよね? (*1) ここではあくまでも、機能の状態遷移にのみ着目したテストについて述べています。 状態遷移表 0スイッチ テストケース 1スイッチ テストケース 自動生成

Slide 45

Slide 45 text

45 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI 「テスト設計」がオススメな理由 (再掲) ◼ 効果的と考えられるテストケースをロジカルに導出できるので、気分が良い。 ⚫ 「状態遷移を2回起こすテストは3パターン。3つ実行すればカバレッジ100%」のように 論理的・定量的にテストを実行・評価することができる。 ◼ テスト設計において利用するモデルは、ソフトウェア設計段階で使える。 ⚫ たとえば状態遷移図・表は、そもそもソフトウェア設計で使われる技術である。 ⚫ モデルを描くことで曖昧さが減り、検討漏れに気づきやすくなるうえに、自動生成までできる。 テスト設計は、学習のコストパフォーマンスのよい技術です。 1 2

Slide 46

Slide 46 text

46 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI テスト計画・管理エリア テスト自動化エリア モダンなテスト文化エリア スルメエリア テスト設計エリア 全体概要エリア (*) 書影はすべて、Amazonから引用。各書籍の情報はこのあとのスライドで一覧にします。 ホワイトボックステストも カバーしたい場合 もっと詳しく具体的な 内容を知りたい場合 コスパのよい テストを求めて 演習+勉強会 で強くなる! テストの作り方はわかった ので、自動化するぜ! アジャイルにおけるテス トの位置づけや、先進 企業のテストを学ぶ マネージャーなどがソフトウェア テストの全体をより深く押さえる 名著・古典。ちゃんと 読めてない・・・ ツールやドメインに あまり依存しない 一般論を学ぶ テストマネージャとしての一歩 目を学ぶための良書 ソフトウェアテスト全般について 比較的平易に書かれた入門書 テスト設計技法とツール、テスト 分析について平易に説明 Webシステムに対する自動テス トについてStep by Stepで説明 アジャイルテスト全般の解説と事 例紹介 テストを何周か経験し、悩んだ後に 読むと得るものが大きい実践書 ソフトウェアテスト読書マップ Another View Feb. 9th, 2023 @kz_suzuki ⚫ このマップは、鈴木が好きな本を中心に並べたものに対し、マップ作成チーム にいただいたコメントを取り込んだものです。 ⚫ ここにない本に対する否定的な意図はなく、おそらく単にわたしが読めずにい るだけです。不勉強でスミマセン。 ⚫ 開発者テストやテスト分析への言及も薄いです、これも不勉強です・・・。 「暗黒大陸」へ 「新世界」へ

Slide 47

Slide 47 text

47 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI ところで、 テストの全体像 みたいな話をしましたが・・・

Slide 48

Slide 48 text

48 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI ソフトウェア品質知識体系 ◼ テストは「品質保証」という技術の一部 ◼ 『ソフトウェア品質知識体系ガイド』の 第3版では、こんな構成になっている。 テストは、ごくごく一部・・・ ◼ 品質という 広大な「暗黒大陸」(1)が・・・! (*1) 往年の少年ジャンプの漫画のネタは、若者に対するハラスメントになりうるので注意が必要です。 SQuBOK V3の構造 (樹形図) 1. ソフトウェア品質の 基本概念 2. ソフトウェア品質マネジメント 3. ソフトウェア品質技 術 5. ソフトウェアの応用 領域 1.1 品質の概念 1.2 品質マネジメント の概念 1.3 ソフトウェアの品質 マネジメントの特徴 組織レベル 2.1 ソフトウェア品質マ ネジメントシステムの構 築と運用 2.2 ライフサイクルプロ セスのマネジメント 2.3 ソフトウェアプロセス 評価と改善のマネジメ ント 2.4 検査のマネジメン ト 2.5 監査のマネジメン ト 2.6 教育・育成のマネ ジメント 2.7 法的権利および 法的責任のマネジメン ト プロジェクトレベル (共通) 2.8 意思決定のマネジ メント プロジェクトレベル (個別) 2.13 品質計画のマネ ジメント 2.14 要求分析のマネ ジメント 2.15 設計のマネジメン ト 2.16 実装のマネジメン ト 2.17 レビューのマネジ メント 2.18 テストのマネジメ ント 2.19 品質分析および 評価のマネジメント 2.20 リリース可否判 定 2.21 運用および保守 のマネジメント 4. 専門的なソフトウェ ア品質の概念と技術 工程に共通な技術 3.1 メトリクス 3.2 モデル化の技法 3.3 形式手法 工程に個別な技術 3.4 要求分析の技法 3.5 設計の技法 3.6 実装の技法 3.7 レビューの技法 3.8 テストの技法 3.9 品質分析および 評価の技法 3.10 運用および保守 の技法 4.1 ユーザビリティ 4.2 セーフティ 4.3 セキュリティ 4.4 プライバシー 5.1 人工知能システム における品質 5.2 IoTシステムにおけ る品質 5.3 アジャイル開発と DevOpsにおける品質 5.4 クラウドサービスに おける品質 5.5 オープンソースソフ トウェア利活用における 品質 2.9 調達のマネジメン ト 2.10 リスクマネジメント 2.11 構成管理 2.12 プロジェクトマネ ジメント

Slide 49

Slide 49 text

49 / 53 まとめ Image: "goal!" by dannipenguin is licensed under CC BY-NC-SA 2.0.

Slide 50

Slide 50 text

50 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI まとめ ◼ 「ソフトウェアテストの知識って何がうれしいのか」がわかる。 → ソフトウェア設計に生かせたり、QAの活動に対する解像度が上がります。 ◼ 「ソフトウェアテストを、どこから勉強すればいいのか」がわかる。 → 「テスト設計」は、コスパの高い技術でオススメです。 書籍を選ぶ際には、「ソフトウェアテスト読書マップ」も参考にしてください。 → 「テスト、実は面白いのでは?」となったら、QAの世界にきてください!

Slide 51

Slide 51 text

51 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI テスト・QAイベントや勉強会 ◼ JaSST (ソフトウェアテストシンポジウム) ⚫ 長年続いている「各地開催版」の他、オンライン開催を主導したJaSST Online、 テストでなくレビューを対象としたJaSST Review、敷居を極限まで下げたJaSST nanoと、 スピンオフがたくさんある。 ⚫ JaSST ’23 Tokyoは、2023年3月9日~10日開催です! わたしもしゃべります。 ◼ WACATE (Workshop for Accelerating CApable Testing Engineers) ⚫ 年2回、1泊2日の合宿形式で、セッションやワークショップを通じてテストを学ぶ勉強会。 ◼ 企業主催のイベント ⚫ Ques: ヒューマンクレスト主催。ソフトウェアQAエンジニアの活性化を目的とする。 ⚫ QA Tech Night: AIQVE ONE主催。ゲームのテストなどを中心に、QAについて語る。 ⚫ ベリサーブ: テスト技法、管理ツールなどをテーマにしたイベント。 ⚫ Forkwell Community: grooves主催。TEST Studyというテーマの回がある。

Slide 52

Slide 52 text

52 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI One more thing … キミだけの最強の読書マップを作ってみないか!? 各技術分野のマップが充実していると、みんな嬉しい!

Slide 53

Slide 53 text

53 / 53 Developers Summit 2023 Copyright 2023, Kazuhiro SUZUKI Happy Testing!!