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

現実的な課題に対してテスト技法を作る/Create test techniques for realistic tasks

現実的な課題に対してテスト技法を作る/Create test techniques for realistic tasks

WACATE 2021 夏の発表資料です。
https://wacate.jp/workshops/2021summer/

本発表スライドを読む前に、下記の2つのスライドを読むことをオススメします。

・テスト技法の背景を考察する
https://www.slideshare.net/kauji0522/wacate2021-249331371

・テスト技法作成のアプローチを考える
https://speakerdeck.com/imtnd/tesutoji-fa-zuo-cheng-falseapurotiwokao-eru

【発表資料中のURL】
P42 ISTQBテスト技術者資格制度 Foundation Level シラバス 日本語版 Version 2018V3.1.J03
http://jstqb.jp/dl/JSTQB-SyllabusFoundation_Version2018V31.J03.pdf

706ff501573a736401aa4de5adc88e05?s=128

nihonbuson

June 12, 2021
Tweet

Transcript

  1. 現実的な課題に対して テスト技法を作る ブロッコリー (@nihonbuson)

  2. 自己紹介 • 風間裕也(ブロッコリー) • @nihobuson • WACATEの参加歴 ◦ WACATE 2015

    夏 初参加 ◦ WACATE 2018 夏 BPP賞 ◦ WACATE 2019 夏 からWACATE実行委員 • その他、社外活動 ◦ JaSST Review 実行委員長 ◦ 書籍『Agile Testing Condensed』翻訳 • 猫派
  3. 前のセッションまでのおさらい https://www.slideshare.net/kauji0522/wacate2021-249331371/14

  4. 前のセッションまでのおさらい https://speakerdeck.com/imtnd/tesutoji-fa-zuo-cheng-falseapurotiwokao-eru

  5. 本セッションで行うこと • 現実に遭遇しそうな、テストに関する課題に対して、 どのように工夫してテストできるのか考えてみる

  6. アジェンダ • お題説明(5分) • 個人ワーク(10分) • グループワーク(10分) • 回答例説明(10分)

  7. 今回のお題

  8. お題 • 行ってみたい都道府県アンケートの取り込み機能 • 47都道府県のON/OFFの項目がある • CSVインポートを用いて、 アンケート結果を取り込むことができる。

  9. CSVインポートと結果の画面例 北海道,青森,岩手,宮城,秋田,山形,福島,…,鹿児島,沖縄 ON,OFF,OFF,ON,OFF,OFF,OFF,…,OFF,ON CSVファイル 結果画面

  10. お題 • CSVインポートを用いて、それらの項目の 取り違えがないことをテストしたい • 例えば、北海道をOFF、秋田県をONにして インポートした時に、CSVに書かれた秋田県(ON)を 誤って北海道の値として取り込んだ結果、 北海道がONとして取り込んでしまった …という不具合が発生していないことを確認したい

  11. テストケースの表現方法 北海道,青森,岩手,宮城,秋田,山形,福島,… ON,OFF,OFF,OFF,OFF,OFF,OFF,… OFF,OFF,OFF,OFF,ON,OFF,OFF,… CSVファイルの例 テストケースとしての表現方法 CSVの表現だと どの都道府県の 値をONで設定 しているか

    分かりづらい… 表形式で 表現することで、 どの都道府県を ONで設定するか 分かりやすくする
  12. テスト実行結果(正常な例) テストケース 結果画面

  13. テスト実行結果(不具合を検出した例) テストケース 北海道がONに ならない不具合 結果画面

  14. テスト実行結果(不具合を検出した例) テストケース 秋田をONにすると 連動して 北海道がONになる 不具合 結果画面

  15. テスト実行結果(不具合を検出した例) テストケース 秋田をONにすると 連動して 北海道がONになる 不具合 結果画面

  16. テスト設計例(パターンが多い…) 1ケースに1つずつ ONにして確認する (全47ケース)

  17. お題 • ただし、1行のCSVインポートの取り込みから確認まで 1時間かかってしまう。 • できるだけ時間をかけずに 取り違いが発生していないことを 確認するにはどうすれば良いか?

  18. テスト設計例2(少し工夫してみた) • 2つずつONにしてみた • 半分の24ケースになった

  19. こんな不具合があった場合… テストケース 宮城をONにすると 連動して 岩手がONになる 不具合が存在 結果画面

  20. テスト実行結果(不具合を検出できない例) テストケース 正常動作なのか 宮城のONに連動して 岩手がONになる 不具合なのか判断できない 結果画面

  21. お題 • 行ってみたい都道府県アンケートの取り込み機能 • 47都道府県のON/OFFの項目がある • CSVインポートを用いて、それらの項目の 取り違えがないことをテストしたい • 例えば、北海道をOFF、秋田県をONにして

    インポートした時に、CSVに書かれた秋田県(ON)を 誤って北海道の値として取り込んだ結果、 北海道がONとして取り込んでしまった …という不具合が発生していないことを確認したい • できるだけ少ないケース数で確認するには?
  22. 個人ワーク 10分 https://jp.freeimages.com/photo/student-1528001

  23. グループワーク 10分 https://jp.freeimages.com/photo/workshop-4-1455028

  24. グループワーク時に意識してほしいこと • ケース数が多い人から順に話そう • 自分が工夫した点を話そう ◦ どのように考えることで、 ケース数を減らすことができたのか発表しよう 大切なのは、作成したケース数の少なさではなく、 工夫点を言語化して伝えること

  25. 回答例

  26. 回答例

  27. 工夫の仕方を考える • ONとOFFを交互にする ◦ 奇数番目と偶数番目の誤りは見つけられる ◦ 奇数番目同士、偶数番目同士の誤りを 見つけることはできない ▪ ケース数を増やすことで、誤りを見つける

  28. テスト実行結果(不具合を検出できない例) テストケース 結果画面 正常動作なのか 宮城のONに連動して 岩手がONになる 不具合なのか判断できない 正常動作なのか 北海道のONに連動して 岩手がONになる

    不具合なのか判断できない
  29. 工夫の仕方を考える • 1つおき、2つおき、3つおき、4つおきにONにしてみる • 奇数番目同士でも違うパターンになった

  30. テスト実行結果(不具合を検出できた例) テストケース 結果画面 正常動作なのか 宮城のONに連動して 岩手がONになる 不具合なのか判断できない 正常動作なのか 北海道のONに連動して 岩手がONになる

    不具合なのか判断できない
  31. テスト実行結果(不具合を検出できた例) テストケース 結果画面 正常動作なのか 宮城のONに連動して 岩手がONになる 不具合なのか判断できない 岩手がOFFのケースなので 他の都道府県のONに 連動して

    岩手がONになっている ことが分かる
  32. 工夫の仕方を考える • 1つおき、2つおき、3つおき、4つおきにONにしてみる • 奇数番目同士でも違うパターンになった

  33. 工夫の仕方を考える • 1つおき、2つおき、3つおき、4つおきにONにしてみる ◦ 2番目と8番目、4番目と10番目、5番目と9番目が 同じパターンになってしまった… ◦ もっと効率的に別々となるパターンは無いか?

  34. 工夫の仕方を考える • ONとOFFの交互を、1個ずつ、2個ずつ、 4個ずつ、8個ずつにしてみた。 ◦ 10番目までで同じパターンが発生しなかった。

  35. 回答例 • ONとOFFの交互を、1個ずつ、2個ずつ、4個ずつ、 8個ずつ、16個ずつ、32個ずつにしてみた。 ◦ 全都道府県で同じパターンが発生しなかった。

  36. 回答例 • 北海道が全てONの場合になっているのが気になる。 ◦ どんな場合でも「ON」で取り込んで しまっている不具合があると気付けない。

  37. 回答例 • 1番目の値が全てONの場合になっているのが気になる。 ◦ どんな場合でも「ON」で取り込んで しまっている不具合があると気付けない。 ◦ 7つ目のケースとして、全てOFFのケースを作成。

  38. 回答例 • 自分なりに工夫することでケース数を 40ケース→7ケースにまで減らすことができた • 既知のテスト技法は活用していない

  39. ワーク実施後に 出てきた意見

  40. 出てきた意見 意見1. 全てONにした場合のパターンが無いのはどうなの か? • アンケートという性質上、 全てON(行きたい都道府県が全て)という回答を 受け付けない仕組みになっているかもしれない 意見2. 全てON→全てOFF→全てONのパターンを

    やった方が良いのではないか? • 1つ前で取り込んだ値をそのまま引き継いでしまう 不具合があるかもしれない
  41. 出てきた意見 意見1. 全てONにした場合のパターンが無いのはどうなの か? • アンケートという性質上、 全てON(行きたい都道府県が全て)という回答を 受け付けない仕組みになっているかもしれない 意見2. 全てON→全てOFF→全てONのパターンを

    やった方が良いのではないか? • 1つ前で取り込んだ値をそのまま引き継いでしまう 不具合があるかもしれない このような意見が出てくるのはOK! 意見を出す際には テストプロセスを意識して考えよう
  42. テストプロセス(JSTQBより) テスト 分析 テスト 設計 テスト 実装 テスト 実行 何をテスト

    するか (テスト対象 への アプローチ) それをどう テストするか (テストケース 創出の アプローチ) テストの実行に 必要なもの すべてを 準備したか テストスイート を実行する 参考:ISTQBテスト技術者資格制度 Foundation Level シラバス 日本語版 Version 2018V3.1.J02
  43. テスト分析とテスト設計を区別して考える 今回の回答例その1 • テスト分析(テスト対象へのアプローチ) ◦ 取り違いのバグが発生していないか確認したい • テスト設計(テストケース創出のアプローチ) ◦ ONとOFFの交互を、1個ずつ、2個ずつ、4個ずつ、

    8個ずつ、16個ずつ、32個ずつにしてみた。 ▪ ケース1からケース6の部分 ◦ 全都道府県で同じパターンが発生しなかった。
  44. テスト分析とテスト設計を区別して考える 今回の回答例その2 • テスト分析(テスト対象へのアプローチ) ◦ 「CSVデータがONでもOFFでも結果画面でONになる」 というバグが発生していないか確認したい • テスト設計(テストケース創出のアプローチ) ◦

    全てOFFのケースを作成した。 ▪ ケース7の部分
  45. テスト分析とテスト設計を区別して考える 出てきた意見1 • テスト分析(テスト対象へのアプローチ) ◦ 全てON(行きたい都道府県が全て)という回答を 受け付けない仕組みになっていないか確認したい • テスト設計(テストケース創出のアプローチ) ◦

    全てONのケースを作成する。
  46. テスト分析とテスト設計を区別して考える 出てきた意見2 • テスト分析(テスト対象へのアプローチ) ◦ 1つ前で取り込んだ値をそのまま引き継いでしまう バグが発生していないか確認したい • テスト設計(テストケース創出のアプローチ) ◦

    全てONのケース →全てOFFのケース →全てONのケース を作成する。
  47. テスト分析とテスト設計を区別して考える • テストケースを考えると、 「こういうテストケースも必要では?」と発想できる • 発想を他人に伝えるときは、テスト分析の部分となる 「なぜそのテストケースを追加したいのか?」も 合わせて伝えると良い ◦ 理由としてのNGパターン

    ▪ こんなテストケースが思いついたから ▪ 既にあるテスト設計技法が使えそうだから
  48. まとめ

  49. まとめ • 既知のテスト技法に頼るだけでなく、 自分なりの工夫をすることでテストケースを 減らすことができる • 他の人にどのように工夫したのか伝えることが大切

  50. おしまい