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

おしまい