Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ソフトウェアテストと品質(発表資料)/Software test and quality study (Presentation)_20180925

706ff501573a736401aa4de5adc88e05?s=47 nihonbuson
September 27, 2018

ソフトウェアテストと品質(発表資料)/Software test and quality study (Presentation)_20180925

D3:グルメなテスト テスト設計 - レビュースペシャル - での発表資料です。
https://d-cube.connpass.com/event/101281/

706ff501573a736401aa4de5adc88e05?s=128

nihonbuson

September 27, 2018
Tweet

Transcript

  1. ソフトウェアテストと品質 (発表資料) D3:グルメなテスト テスト設計 - レビュースペシャル - @nihonbuson P1

  2. Agenda • はじめに • テストの7原則 • テストの立ち位置とは • 何をテストすべきか •

    どうやってテストケースを作るのか • どうやってテストを実施すべきか • おわりに P2
  3. はじめに P3

  4. 今回のスライドについて • 今回のスライドを読んだだけでは 伝えたいことの20%も書いていません。 • ぜひ、スライドを共有するだけでなく、 参加した人の言葉で社内に伝達を! • もしも伝えるのが難しければ、 私を呼んでください!

    – Twitterで連絡を! • https://twitter.com/nihonbuson
  5. おことわり • 今日の発表は一個人のお話です。 • 所属する会社や団体とは一切関係ありません。 • ただの野菜が喋っているだけです。

  6. 今日話す内容は… 評価チームはどうしていくべきか

  7. 今日話す内容は… 評価チームはどうしていくべきか ↓ 開発者はどんなことをすべきか

  8. いきなりですが質問です 品質とは何でしょうか? テストの目的は何でしょうか? P4

  9. 品質とは何か?

  10. 品質とは何か? 「本来備わっている特性の集まりが 要求事項を満たす程度。」 (ISO9000) 「品物またはサービスが、 使用目的を満たしているかどうかを 決定するための評価の対象となる 固有の性質・性能の全体」 (JIS Z

    8101:1981, 1999年に廃止)
  11. 品質とは何か? 東京海上日動システムズ顧問 横塚 裕志氏 の講演内容より 【具体例2】 デジタルニュースの普及により、 ニュースは、確実な推敲・校正よりも、 「早く伝える」「修正」へ 【具体例1】

    トラブルは0でも、 国民の5.8%にしか使われない住基ネットカード。 「ソフトウェアの品質(=存在意義)としては失格」 ※ソフトウェア品質シンポジウム 2014の基調講演にて http://www.publickey1.jp/blog/14/_2014.html P5
  12. テストの目的は何か?

  13. テストの目的は何か? 以下のような目的があります。 • 欠陥の検出 • 対象ソフトウェアの品質レベルが十分であることの確認 • 意思決定のための情報の提示 • 欠陥の作りこみの防止

    JSTQBシラバスより http://jstqb.jp/dl/JSTQB-SyllabusFoundation_Version2011.J02.pdf#page=14 実装前に行うこともある テストの7原則①テストは「欠陥がある」ことしか示せない P6
  14. テストの7原則 P7

  15. テストの7原則 1. テストは「欠陥がある」ことしか示せない 2. 全数テストは不可能 3. 初期テスト 4. 欠陥の偏在 5.

    殺虫剤のパラドックス 6. テストは条件次第 7. 「バグゼロ」の落とし穴 http://jstqb.jp/dl/JSTQB-SyllabusFoundation_Version2011.J02.pdf#page=15 P8
  16. テストの7原則 1. テストは「欠陥がある」ことしか示せない – テストによって「この製品はバグが無い」 とは証明できない。 2. 全数テストは不可能 – すべてのパターン数は膨大なのでテスト不可能。

    3. 初期テスト – いかに早く欠陥に気付けるかが重要 – 「テストは後で」とか考えないこと! 後で詳しく! 後で詳しく!
  17. テストの7原則 4. 欠陥の偏在 – 欠陥は満遍なく存在はせず、局所的に発生する 5. 殺虫剤のパラドックス – 同じ殺虫剤を使い続けると虫も耐性を持ち、 だんだん効かなくなる

    – 同様に、同じテストを繰り返すと だんだん新しい欠陥を発見できなくなる 後で詳しく! 後で詳しく!
  18. テストの7原則 6. テストは条件次第 – ソフトウェアの種類によって、テストしたい内容や テストにかけるコストが変わる。 – 例えば、人命に関わる製品とゲーム製品は 同じ品質やテストの工数にはならない 7.

    「バグゼロ」の落とし穴 – 必ずしも「欠陥が無い=素晴らしい」ではない。 – 例:バグは0だけど、システムの起動に5時間かかる
  19. 全体の開発サイクルの中での テストの立ち位置とは P9

  20. Vモデル(一般的なSIの場合) 要求定義 要件定義 基本設計 詳細設計 コーディング 単体テスト 結合テスト システムテスト 受け入れテスト

    http://jasst.jp/symposium/jasst12tokyo/pdf/D4-1.pdf P10
  21. 各段階(テストレベル)のテスト例 • 単体テスト(モジュールテスト) – 商品の個数欄にマイナスの数値を入力できない。 • 結合テスト – カートに3個入っていて、2個追加したら、 確認ページで5個になった。

    • システムテスト – 会員登録→商品購入→商品キャンセル→退会の 一連の流れ。 P11
  22. Wモデル 要求定義 要件定義 基本設計 詳細設計 レビュー&受け入れ テストの設計 レビュー&システム テストの設計 レビュー&

    結合テストの設計 レビュー& 単体テストの設計 受け入れテストの 実施 システムテストの 実施 結合テストの 実施 単体テストの 実施 コーディング デバッグ デバッグ デバッグ デバッグ P12
  23. なぜ早期のテスト・レビューをするのか http://www.jaspic.org/event/2009/SPIJapan/keynote/SJ9keynote.pdf#page=31 P13

  24. 何をテストすべきか P14

  25. 次の仕様に対してどんなテストをすれば良いか。 • パスワードは4文字以上12文字以下の 英数字のみを許容する • パスワードを3分以内に4回以上間違って入力すると アカウントを5分間ロックする http://www.slideshare.net/takashiyamasaki378/ss-55384920 例題

  26. ステップ1 • 例題について考えてみてください。 • あなたが考えたテスト条件を15ページに 書いてください。

  27. ステップ2 • 隣の人と2人組を作ってください。 • お互いに何を書いたのか 説明してください。

  28. パスワードは4文字以上12文字以下の 英数字のみを許容する パスワードを3分以内に4回以上間違って入力すると アカウントを5分間 ロックする 文字列長 文字種 誤入力 期間管理 誤入力 回数管理

    ロック保持期間 状態遷移 P16
  29. パスワードは4文字以上12文字以下の 英数字のみを許容する パスワードを3分以内に4回以上間違って入力すると アカウントを5分間 ロックする 文字列長 文字種 誤入力 期間管理 誤入力 回数管理

    ロック保持期間 状態遷移 許容しないとどうなる? (ボタン制御orエラー画面) 5回目の入力はどうなる? P16
  30. Aさん 設計・開発時点 Bさんはエラー画面を 作ってくれるだろう。 Aさんはエラーを ボタン制御でやるだろう。 Bさん

  31. テスト時点 なんでエラー画面を 作っていないの? 私はボタン制御で エラー管理をしていると 思っていたよ! Aさん Bさん

  32. Mr.A Bさん テスト時点 なんでエラー画面を 作っていないの? 私はボタン制御で エラー管理をしていると 思っていたよ! 追加コストが発生!

  33. パスワードは4文字以上12文字以下の 英数字のみを許容する パスワードを3分以内に4回以上間違って入力すると アカウントを5分間 ロックする 文字列長 文字種 誤入力 期間管理 誤入力 回数管理

    ロック保持期間 状態遷移 許容しないとどうなる? (ボタン制御orエラー画面) 5回目の入力はどうなる? P16
  34. 2つの伝えたいこと • 隣の人はあなたが気付かなかったことを知って いませんでしたか? – お互いにテスト内容についても議論しましょう。 •

  35. 2つの伝えたいこと • 隣の人はあなたが気付かなかったことを知ってい ませんでしたか? – お互いにテスト内容についても議論しましょう。 • この例では何もプログラムを書いていません。 – 実装前にテストすることができる例です。

    – もしもこの時点で指摘できれば、 総コストは削減できるでしょう。
  36. もしもドキュメントが無かったら… パスワードは4文字以上12文字以下の 英数字のみを許容する パスワードを3分以内に4回以上間違って入力すると アカウントを5分間ロックする どのようなテストを行えば良いか分からなくなります

  37. テストすべき内容(テスト観点)の見つけ方 http://jasst.jp/symposium/jasst13niigata/pdf/S2.pdf P17

  38. 視座 誰が使うのか、物事を見る立場 P18

  39. 視野 物事を考えたり判断したりする範囲 P19

  40. 視点 着目するところ、物事を考える観点 P20

  41. (参考)品質特性 http://www.atmarkit.co.jp/ait/articles/0905/13/news124_3.html P21

  42. 使用性の例

  43. 使用性の例 面白いデザインだ! 採用! デザイナー どこに何があるのか 分からない! 利用者

  44. 使用性の例 並び変えるだけでも分かりやすくなる https://note.openvista.jp/2011/redesigning-shinjuku-building-sign

  45. どうやって テストケースを作るのか P22

  46. テストケースはいくつ? パスワードは4文字以上12文字以下 1文字、2文字、3文字…100文字 膨大な数の テストケース テストの7原則②全数テストは不可能 P23

  47. テストケースはいくつ? • テストケースは時間とあれば無限にできます。 • サンプリング方法としてテスト設計技法があります。 – テストケースを合理的に少なくするための技法 • 同値分割法、 All Pair法

    – 多くの欠陥が見つかるようにするための技法 • 境界値分析、 エラー推測、 探索的テスト – テスト対象を(ある観点で)漏れなくテストするための技法 • カバレッジ、デシジョンテーブル、状態遷移、ユースケーステスト http://aster.or.jp/business/seminar_text.html
  48. テストケース作成者「◦◦◦のテストをします!」 司会者「ほぉ~、それはどうしてだい?」 テストケース作成者「【理由を一言】」 テストケース作成の心得 P24

  49. テスト設計技法 ~境界値分析~ テストの7原則④欠陥の偏在 12 4 有効 無効 無効 3 13 パスワードは4文字以上12文字以下

    P25
  50. テスト設計技法 ~境界値分析~ • 「パスワードが4文字以上12文字以下」で なぜ3,4,12,13をテストするのか? if( x < 3 ){ return

    “入力したパスワードが短いです”; }
  51. テスト設計技法 ~境界値分析~ • 「パスワードが4文字以上12文字以下」で なぜ3,4,12,13をテストするのか? if( x < 3 ){ return

    “入力したパスワードが短いです”; } • 上記の例で、不等号のミスによる不具合を 発見できるのは、3の時だけ!
  52. テスト設計技法 ~境界値分析~ テストの7原則④欠陥の偏在 12 4 有効 無効 無効 3 13 パスワードは4文字以上12文字以下

    P25
  53. テスト設計技法 ~境界値分析~ テストの7原則④欠陥の偏在 12 4 有効 無効 無効 3 13 パスワードは4文字以上12文字以下

    P25 0
  54. テスト設計技法 ~状態遷移テスト~ スタート/ストップ リセット

  55. テスト設計技法 ~状態遷移テスト~ 待機中 計測中 一時停止中 スタート/ストップ リセット スタート/ ストップ スタート/ ストップ

    P26
  56. テスト設計技法 ~状態遷移テスト~ 待機中 計測中 一時停止中 スタート/ストップ リセット スタート/ ストップ スタート/ ストップ

    P26 計測中
  57. テスト設計技法 ~状態遷移テスト~ P26 待機中 計測中 一時停止中 スタート/ストップ リセット スタート/ ストップ スタート/

    ストップ
  58. テスト設計技法 ~状態遷移テスト~ P26 待機中 計測中 一時停止中 スタート/ストップ リセット スタート/ ストップ スタート/

    ストップ
  59. テスト設計技法 ~状態遷移テスト~ P26 待機中 計測中 一時停止中 スタート/ストップ リセット スタート/ ストップ スタート/

    ストップ リセット リセット
  60. テスト設計技法 ~状態遷移テスト~ P26 待機中 計測中 一時停止中 スタート/ストップ リセット スタート/ ストップ スタート/

    ストップ リセット リセット 開発者は上記の矢印6か所を 最低限実施する必要がある。
  61. テスト設計技法 ~状態遷移テスト~ 計測中にリセットボタンを押したら 計測中状態から変わらないなんて、 問題文(仕様)に書いてない! 待機中に変わると思ってた!

  62. テスト設計技法 ~状態遷移テスト~ 今回は私なりに答えを定めました。 実務では、動作が不明な時点で開発者に確認すべき。 仕様に書いていない→抜け漏れの可能性大→バグの可能性大

  63. どうやって テストを実施するのか P27

  64. テストは実施して終わりではない パスワードを「123」にして ログインしようとしたら、 ログインできなかった P28

  65. テストは実施して終わりではない パスワードを「123」にして ログインしようとしたら、 ログインできなかった 何を確認したくて 「123」にしたのか? 「ログインできない」とは どのような状態なのか? 期待通りの 結果なのか?

    P28
  66. テストレポート例 テスト目的 再現手順 期待値 OK or NG 実際の結果 パスワードが 3桁以下の時

    ログイン失敗 ページに 遷移すること パスワード欄に「123」 と入力する。 ログインボタンを 押す。 ログイン 失敗画面に 遷移する NG ログイン画面 から遷移せず、 「ログイン失敗」と表 示される 他の人や1年後の自分が見ても分かるように書く P29
  67. まとめ P30

  68. まとめ • テストの目的は欠陥の検出以外に欠陥の未然防止がある • テストには開発開始前に行う活動もある • 早期にテストやレビューをすることでコストを削減できる • テストすべき内容には、仕様書から見つけられる内容以外にも、 過去の経験から得られることや品質特性などがある

    • 全てを闇雲にテストすると膨大なケース数と時間が発生するが、 その数を削減できる手法がある • テストを実施したときは、他の人が分かるように結果を書く P31
  69. おまけ (講座中にあった質問)

  70. 評価チームは何をするの? これだけテストが充実できれば 評価チームは必要ないのでは?

  71. 評価チームは何をするの? これだけテストが充実できれば 評価チームは必要ないのでは? ⇒まだまだ必要なことが多いです。 テストエンジニアは 1. システムテストレベルを確認したい! 2. CheckingではなくTestingを行いたい

  72. P11 1. 評価チームは システムテストレベルを見たい! • 単体テスト(モジュールテスト) – 商品の個数欄にマイナスの数値を入力できない。 • 結合テスト

    – カートに3個入っていて、2個追加したら、 確認ページで5個になった。 • システムテスト – 会員登録→商品購入→商品キャンセル→退会の 一連の流れ。 評価チームは ここをやりたい!
  73. P11 1. 評価チームは システムテストレベルを見たい! • 単体テスト(モジュールテスト) – 商品の個数欄にマイナスの数値を入力できない。 • 結合テスト

    – カートに3個入っていて、2個追加したら、 確認ページで5個になった。 • システムテスト – 会員登録→商品購入→商品キャンセル→退会の 一連の流れ。 開発者は ここをやりきれ!
  74. 2. 評価チームはTestingをしたい! https://www.infoq.com/jp/news/2009/12/testing-or-checking

  75. 2. 評価チームはTestingをしたい! https://www.infoq.com/jp/news/2009/12/testing-or-checking Checking 意図通り動くか確認する作業 Testing なんとかして製品を破壊する作業

  76. 2. 評価チームはTestingをしたい! 【参考】アジャイルテストの4象限 Checking Testing

  77. 2. 評価チームはTestingをしたい! http://www.jasst.jp/symposium/jasst17tokyo/pdf/A7.pdf#page=29

  78. テストの勉強方法を知りたい どうやってテストの勉強を すれば良いの? テストの勉強ができる オススメの書籍が知りたい!

  79. テストの勉強でオススメの書籍 (入門者向け) https://www.amazon.co.jp/dp/4822282511 https://www.amazon.co.jp/dp/4817193603

  80. テストの勉強でオススメの書籍 (自動テスト、入門者向け) https://www.amazon.co.jp/dp/4873118166/ 画面上の自動テストの開発に関わらない人も、 第1章と第8章を読むべき

  81. テストの勉強でオススメの書籍 (入門から一歩先行く初心者向け) https://www.amazon.co.jp/dp/4798124699 テストとはどうあるべきかが分かる本 資格勉強用の本だが、資格を取らなくても勉強になる

  82. 品質を高めるための一冊 https://www.amazon.co.jp/dp/4873115655 テストは品質を測るための道具であり、品質は上がらない。 品質を上げるためにはコードを綺麗に書こう。

  83. おしまい…?

  84. この講座で 伝えたかったこと (裏の目的)

  85. 社外イベントからの引用が多い

  86. 社外イベントからの引用が多い

  87. テストの勉強は「習うより慣れよ」 • 1泊2日のワークショップ形式のイベント • 半年に1度開催(6月と12月)。 • 次回は12月15日、16日 • 10周年を迎えました! •

    新卒1年目の開発やQAも多く参加 • 参加費は24000円(35歳以上は27000円) • ほとんどが宿泊費・経費で利益は無し http://wacate.jp
  88. 最新のテスト事情を知るには JaSSTがオススメ • 日本最大級のテストのイベント • 年に8回、各地で実施 • 次回は11月22日に長崎で開催 • 東京では毎年2月~3月に2日間開催

    • 次回は2019年3月27日・28日 http://www.jasst.jp/
  89. 【宣伝】JaSST Review開催決定! • レビューのシンポジウムを開催します! • 日程:12月14日 • 場所:赤坂 http://www.jasst.jp/symposium/jasstreview18.html

  90. もっとテスト設計を学ぶなら テスト設計コンテストチュートリアル • テスト設計コンテストとは – 指定された共通の製品に対してテスト設計を行い、 その優劣を競うイベント • テスト設計コンテストチュートリアル –

    U-30クラス(10月2日開催) • http://aster.or.jp/business/contest/tutorialu30.html – OPENクラス(10月5日開催) • http://aster.or.jp/business/contest/tutorial.html
  91. http://www.jasst.jp/symposium/jasst17tohoku/pdf/S1.pdf#page=56

  92. (本当に)おしまい