$30 off During Our Annual Pro Sale. View Details »

現実的な課題に対してテスト技法を作る/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

nihonbuson

June 12, 2021
Tweet

More Decks by nihonbuson

Other Decks in Technology

Transcript

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

    View Slide

  2. 自己紹介
    ● 風間裕也(ブロッコリー)
    ● @nihobuson
    ● WACATEの参加歴
    ○ WACATE 2015 夏 初参加
    ○ WACATE 2018 夏 BPP賞
    ○ WACATE 2019 夏 からWACATE実行委員
    ● その他、社外活動
    ○ JaSST Review 実行委員長
    ○ 書籍『Agile Testing Condensed』翻訳
    ● 猫派

    View Slide

  3. 前のセッションまでのおさらい
    https://www.slideshare.net/kauji0522/wacate2021-249331371/14

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  7. 今回のお題

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  12. テスト実行結果(正常な例)
    テストケース
    結果画面

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  21. お題
    ● 行ってみたい都道府県アンケートの取り込み機能
    ● 47都道府県のON/OFFの項目がある
    ● CSVインポートを用いて、それらの項目の
    取り違えがないことをテストしたい
    ● 例えば、北海道をOFF、秋田県をONにして
    インポートした時に、CSVに書かれた秋田県(ON)を
    誤って北海道の値として取り込んだ結果、
    北海道がONとして取り込んでしまった
    …という不具合が発生していないことを確認したい
    ● できるだけ少ないケース数で確認するには?

    View Slide

  22. 個人ワーク
    10分
    https://jp.freeimages.com/photo/student-1528001

    View Slide

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

    View Slide

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

    View Slide

  25. 回答例

    View Slide

  26. 回答例

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  42. テストプロセス(JSTQBより)
    テスト
    分析
    テスト
    設計
    テスト
    実装
    テスト
    実行
    何をテスト
    するか
    (テスト対象
    への
    アプローチ)
    それをどう
    テストするか
    (テストケース
    創出の
    アプローチ)
    テストの実行に
    必要なもの
    すべてを
    準備したか
    テストスイート
    を実行する
    参考:ISTQBテスト技術者資格制度 Foundation Level シラバス 日本語版 Version 2018V3.1.J02

    View Slide

  43. テスト分析とテスト設計を区別して考える
    今回の回答例その1
    ● テスト分析(テスト対象へのアプローチ)
    ○ 取り違いのバグが発生していないか確認したい
    ● テスト設計(テストケース創出のアプローチ)
    ○ ONとOFFの交互を、1個ずつ、2個ずつ、4個ずつ、
    8個ずつ、16個ずつ、32個ずつにしてみた。
    ■ ケース1からケース6の部分
    ○ 全都道府県で同じパターンが発生しなかった。

    View Slide

  44. テスト分析とテスト設計を区別して考える
    今回の回答例その2
    ● テスト分析(テスト対象へのアプローチ)
    ○ 「CSVデータがONでもOFFでも結果画面でONになる」
    というバグが発生していないか確認したい
    ● テスト設計(テストケース創出のアプローチ)
    ○ 全てOFFのケースを作成した。
    ■ ケース7の部分

    View Slide

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

    View Slide

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

    View Slide

  47. テスト分析とテスト設計を区別して考える
    ● テストケースを考えると、
    「こういうテストケースも必要では?」と発想できる
    ● 発想を他人に伝えるときは、テスト分析の部分となる
    「なぜそのテストケースを追加したいのか?」も
    合わせて伝えると良い
    ○ 理由としてのNGパターン
    ■ こんなテストケースが思いついたから
    ■ 既にあるテスト設計技法が使えそうだから

    View Slide

  48. まとめ

    View Slide

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

    View Slide

  50. おしまい

    View Slide