Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
現実的な課題に対して テスト技法を作る ブロッコリー (@nihonbuson)
Slide 2
Slide 2 text
自己紹介 ● 風間裕也(ブロッコリー) ● @nihobuson ● WACATEの参加歴 ○ WACATE 2015 夏 初参加 ○ WACATE 2018 夏 BPP賞 ○ WACATE 2019 夏 からWACATE実行委員 ● その他、社外活動 ○ JaSST Review 実行委員長 ○ 書籍『Agile Testing Condensed』翻訳 ● 猫派
Slide 3
Slide 3 text
前のセッションまでのおさらい https://www.slideshare.net/kauji0522/wacate2021-249331371/14
Slide 4
Slide 4 text
前のセッションまでのおさらい https://speakerdeck.com/imtnd/tesutoji-fa-zuo-cheng-falseapurotiwokao-eru
Slide 5
Slide 5 text
本セッションで行うこと ● 現実に遭遇しそうな、テストに関する課題に対して、 どのように工夫してテストできるのか考えてみる
Slide 6
Slide 6 text
アジェンダ ● お題説明(5分) ● 個人ワーク(10分) ● グループワーク(10分) ● 回答例説明(10分)
Slide 7
Slide 7 text
今回のお題
Slide 8
Slide 8 text
お題 ● 行ってみたい都道府県アンケートの取り込み機能 ● 47都道府県のON/OFFの項目がある ● CSVインポートを用いて、 アンケート結果を取り込むことができる。
Slide 9
Slide 9 text
CSVインポートと結果の画面例 北海道,青森,岩手,宮城,秋田,山形,福島,…,鹿児島,沖縄 ON,OFF,OFF,ON,OFF,OFF,OFF,…,OFF,ON CSVファイル 結果画面
Slide 10
Slide 10 text
お題 ● CSVインポートを用いて、それらの項目の 取り違えがないことをテストしたい ● 例えば、北海道をOFF、秋田県をONにして インポートした時に、CSVに書かれた秋田県(ON)を 誤って北海道の値として取り込んだ結果、 北海道がONとして取り込んでしまった …という不具合が発生していないことを確認したい
Slide 11
Slide 11 text
テストケースの表現方法 北海道,青森,岩手,宮城,秋田,山形,福島,… ON,OFF,OFF,OFF,OFF,OFF,OFF,… OFF,OFF,OFF,OFF,ON,OFF,OFF,… CSVファイルの例 テストケースとしての表現方法 CSVの表現だと どの都道府県の 値をONで設定 しているか 分かりづらい… 表形式で 表現することで、 どの都道府県を ONで設定するか 分かりやすくする
Slide 12
Slide 12 text
テスト実行結果(正常な例) テストケース 結果画面
Slide 13
Slide 13 text
テスト実行結果(不具合を検出した例) テストケース 北海道がONに ならない不具合 結果画面
Slide 14
Slide 14 text
テスト実行結果(不具合を検出した例) テストケース 秋田をONにすると 連動して 北海道がONになる 不具合 結果画面
Slide 15
Slide 15 text
テスト実行結果(不具合を検出した例) テストケース 秋田をONにすると 連動して 北海道がONになる 不具合 結果画面
Slide 16
Slide 16 text
テスト設計例(パターンが多い…) 1ケースに1つずつ ONにして確認する (全47ケース)
Slide 17
Slide 17 text
お題 ● ただし、1行のCSVインポートの取り込みから確認まで 1時間かかってしまう。 ● できるだけ時間をかけずに 取り違いが発生していないことを 確認するにはどうすれば良いか?
Slide 18
Slide 18 text
テスト設計例2(少し工夫してみた) ● 2つずつONにしてみた ● 半分の24ケースになった
Slide 19
Slide 19 text
こんな不具合があった場合… テストケース 宮城をONにすると 連動して 岩手がONになる 不具合が存在 結果画面
Slide 20
Slide 20 text
テスト実行結果(不具合を検出できない例) テストケース 正常動作なのか 宮城のONに連動して 岩手がONになる 不具合なのか判断できない 結果画面
Slide 21
Slide 21 text
お題 ● 行ってみたい都道府県アンケートの取り込み機能 ● 47都道府県のON/OFFの項目がある ● CSVインポートを用いて、それらの項目の 取り違えがないことをテストしたい ● 例えば、北海道をOFF、秋田県をONにして インポートした時に、CSVに書かれた秋田県(ON)を 誤って北海道の値として取り込んだ結果、 北海道がONとして取り込んでしまった …という不具合が発生していないことを確認したい ● できるだけ少ないケース数で確認するには?
Slide 22
Slide 22 text
個人ワーク 10分 https://jp.freeimages.com/photo/student-1528001
Slide 23
Slide 23 text
グループワーク 10分 https://jp.freeimages.com/photo/workshop-4-1455028
Slide 24
Slide 24 text
グループワーク時に意識してほしいこと ● ケース数が多い人から順に話そう ● 自分が工夫した点を話そう ○ どのように考えることで、 ケース数を減らすことができたのか発表しよう 大切なのは、作成したケース数の少なさではなく、 工夫点を言語化して伝えること
Slide 25
Slide 25 text
回答例
Slide 26
Slide 26 text
回答例
Slide 27
Slide 27 text
工夫の仕方を考える ● ONとOFFを交互にする ○ 奇数番目と偶数番目の誤りは見つけられる ○ 奇数番目同士、偶数番目同士の誤りを 見つけることはできない ■ ケース数を増やすことで、誤りを見つける
Slide 28
Slide 28 text
テスト実行結果(不具合を検出できない例) テストケース 結果画面 正常動作なのか 宮城のONに連動して 岩手がONになる 不具合なのか判断できない 正常動作なのか 北海道のONに連動して 岩手がONになる 不具合なのか判断できない
Slide 29
Slide 29 text
工夫の仕方を考える ● 1つおき、2つおき、3つおき、4つおきにONにしてみる ● 奇数番目同士でも違うパターンになった
Slide 30
Slide 30 text
テスト実行結果(不具合を検出できた例) テストケース 結果画面 正常動作なのか 宮城のONに連動して 岩手がONになる 不具合なのか判断できない 正常動作なのか 北海道のONに連動して 岩手がONになる 不具合なのか判断できない
Slide 31
Slide 31 text
テスト実行結果(不具合を検出できた例) テストケース 結果画面 正常動作なのか 宮城のONに連動して 岩手がONになる 不具合なのか判断できない 岩手がOFFのケースなので 他の都道府県のONに 連動して 岩手がONになっている ことが分かる
Slide 32
Slide 32 text
工夫の仕方を考える ● 1つおき、2つおき、3つおき、4つおきにONにしてみる ● 奇数番目同士でも違うパターンになった
Slide 33
Slide 33 text
工夫の仕方を考える ● 1つおき、2つおき、3つおき、4つおきにONにしてみる ○ 2番目と8番目、4番目と10番目、5番目と9番目が 同じパターンになってしまった… ○ もっと効率的に別々となるパターンは無いか?
Slide 34
Slide 34 text
工夫の仕方を考える ● ONとOFFの交互を、1個ずつ、2個ずつ、 4個ずつ、8個ずつにしてみた。 ○ 10番目までで同じパターンが発生しなかった。
Slide 35
Slide 35 text
回答例 ● ONとOFFの交互を、1個ずつ、2個ずつ、4個ずつ、 8個ずつ、16個ずつ、32個ずつにしてみた。 ○ 全都道府県で同じパターンが発生しなかった。
Slide 36
Slide 36 text
回答例 ● 北海道が全てONの場合になっているのが気になる。 ○ どんな場合でも「ON」で取り込んで しまっている不具合があると気付けない。
Slide 37
Slide 37 text
回答例 ● 1番目の値が全てONの場合になっているのが気になる。 ○ どんな場合でも「ON」で取り込んで しまっている不具合があると気付けない。 ○ 7つ目のケースとして、全てOFFのケースを作成。
Slide 38
Slide 38 text
回答例 ● 自分なりに工夫することでケース数を 40ケース→7ケースにまで減らすことができた ● 既知のテスト技法は活用していない
Slide 39
Slide 39 text
ワーク実施後に 出てきた意見
Slide 40
Slide 40 text
出てきた意見 意見1. 全てONにした場合のパターンが無いのはどうなの か? ● アンケートという性質上、 全てON(行きたい都道府県が全て)という回答を 受け付けない仕組みになっているかもしれない 意見2. 全てON→全てOFF→全てONのパターンを やった方が良いのではないか? ● 1つ前で取り込んだ値をそのまま引き継いでしまう 不具合があるかもしれない
Slide 41
Slide 41 text
出てきた意見 意見1. 全てONにした場合のパターンが無いのはどうなの か? ● アンケートという性質上、 全てON(行きたい都道府県が全て)という回答を 受け付けない仕組みになっているかもしれない 意見2. 全てON→全てOFF→全てONのパターンを やった方が良いのではないか? ● 1つ前で取り込んだ値をそのまま引き継いでしまう 不具合があるかもしれない このような意見が出てくるのはOK! 意見を出す際には テストプロセスを意識して考えよう
Slide 42
Slide 42 text
テストプロセス(JSTQBより) テスト 分析 テスト 設計 テスト 実装 テスト 実行 何をテスト するか (テスト対象 への アプローチ) それをどう テストするか (テストケース 創出の アプローチ) テストの実行に 必要なもの すべてを 準備したか テストスイート を実行する 参考:ISTQBテスト技術者資格制度 Foundation Level シラバス 日本語版 Version 2018V3.1.J02
Slide 43
Slide 43 text
テスト分析とテスト設計を区別して考える 今回の回答例その1 ● テスト分析(テスト対象へのアプローチ) ○ 取り違いのバグが発生していないか確認したい ● テスト設計(テストケース創出のアプローチ) ○ ONとOFFの交互を、1個ずつ、2個ずつ、4個ずつ、 8個ずつ、16個ずつ、32個ずつにしてみた。 ■ ケース1からケース6の部分 ○ 全都道府県で同じパターンが発生しなかった。
Slide 44
Slide 44 text
テスト分析とテスト設計を区別して考える 今回の回答例その2 ● テスト分析(テスト対象へのアプローチ) ○ 「CSVデータがONでもOFFでも結果画面でONになる」 というバグが発生していないか確認したい ● テスト設計(テストケース創出のアプローチ) ○ 全てOFFのケースを作成した。 ■ ケース7の部分
Slide 45
Slide 45 text
テスト分析とテスト設計を区別して考える 出てきた意見1 ● テスト分析(テスト対象へのアプローチ) ○ 全てON(行きたい都道府県が全て)という回答を 受け付けない仕組みになっていないか確認したい ● テスト設計(テストケース創出のアプローチ) ○ 全てONのケースを作成する。
Slide 46
Slide 46 text
テスト分析とテスト設計を区別して考える 出てきた意見2 ● テスト分析(テスト対象へのアプローチ) ○ 1つ前で取り込んだ値をそのまま引き継いでしまう バグが発生していないか確認したい ● テスト設計(テストケース創出のアプローチ) ○ 全てONのケース →全てOFFのケース →全てONのケース を作成する。
Slide 47
Slide 47 text
テスト分析とテスト設計を区別して考える ● テストケースを考えると、 「こういうテストケースも必要では?」と発想できる ● 発想を他人に伝えるときは、テスト分析の部分となる 「なぜそのテストケースを追加したいのか?」も 合わせて伝えると良い ○ 理由としてのNGパターン ■ こんなテストケースが思いついたから ■ 既にあるテスト設計技法が使えそうだから
Slide 48
Slide 48 text
まとめ
Slide 49
Slide 49 text
まとめ ● 既知のテスト技法に頼るだけでなく、 自分なりの工夫をすることでテストケースを 減らすことができる ● 他の人にどのように工夫したのか伝えることが大切
Slide 50
Slide 50 text
おしまい