Slide 1

Slide 1 text

状態遷移テスト 完全に理解しよう @dach

Slide 2

Slide 2 text

What speak?

Slide 3

Slide 3 text

Do you know what state transitions this system makes? e.g. ● 本(物理)のレンタルサービス ● 本が存在すればレンタルすることはできる 本 レンタル

Slide 4

Slide 4 text

Today’s goal 「状態遷移テスト」について完全に理解する

Slide 5

Slide 5 text

Who is me? EasyEasy icon チキン南蛮 VRM ID: @dach JOB: Eng / PM Hobby: カイゼン Twitter: i-dach qiita: i-dach

Slide 6

Slide 6 text

Learn Statement Testing

Slide 7

Slide 7 text

● testってそもそも何でしょう? ● テストすると何が嬉しい? ● 欠陥を見つけるため?品質をあげるため? ● テストをすると欠陥が見つかる?品質が上がる? Why do you test?

Slide 8

Slide 8 text

IEEE 610.12-1990 Standard Glossary of Software Engineering Terminology ある特定の条件下でシステムまたはコンポーネントを操作するプロセスであり、その結 果を観察または記録して、システムまたはコンポーネントのある側面を評価すること (和訳引用:ソフトウェアテストの教科書 著:石原一宏|田中英和) 本質的には 「本当はこれってどうあるべきなの?」 を比較するプロセスである

Slide 9

Slide 9 text

What do you need to do? ● どうあるべきか、を確認するのはどうすればいいでしょうか? ● 冒頭のレンタルサービスをベースに考えてみましょう e.g. ● 本(物理)のレンタルサービス ● 本が存在すればレンタルすることはできる 本 レンタル

Slide 10

Slide 10 text

What do you need to do? ● こうしたい、ということはわかりますが、それ以上はどうでしょう? ● なんとなくはイメージが浮かぶかもしれないですが、他の人も同じ考えでしょうか? 本 レンタル レジに持っていく 本 レンタル レンタルボタンを押す

Slide 11

Slide 11 text

What do you need to do? ● どうしたいかの期待値と比較して本当にやりたいことが叶っているかを確認するこ とが重要なのです ● テストは色々あるけれど、今回は状態に着目した状態遷移テストのみに触れていき ます 本 レンタル レンタルボタンを押す

Slide 12

Slide 12 text

Why statement testing? 状態遷移テストがなぜ必要なのか、について理解していきましょう ● 状態には3つの種類があります ○ 部位 ○ 処理 ○ モード ● レンタルサイトで考えてみましょう ○ レンタルサイトを構成している「もの(本)」の状態 ○ レンタルサイトで動いている「処理(レンタル)」の状態 ○ レンタルサイトを全体の「モード(全体として動いているか)」の状態 ● どういうものが浮かびました?

Slide 13

Slide 13 text

Statement testing - State Transition Diagram ● 図をみて全体を把握できるようにしましょう ● まずは簡易版を作ります

Slide 14

Slide 14 text

Statement testing - State Transition Diagram ● いろいろな状態が存在しますが、このような状態を図にすることでイベントと状態の 関連性をわかりやすくします ● 図はわかりやすくすることが大事なので、システム全体を図にして大きくなりすぎる と見づらいので、機能やドメイン単位など、適切な単位に切っておこなうのがおすす めです

Slide 15

Slide 15 text

Statement testing - State Transition Diagram ● ではこれで終わりでしょうか? ● いいえ、そんなことありません ● これだけではテストはできません ● 先程の図をベースにもう少し掘り下げてみましょう

Slide 16

Slide 16 text

Statement testing - State Transition Diagram ● 他にはレンタル中にできるものはないでしょうか? ● また、レンタル中に返品することや、レンタル前にキャンセルすることは? ● こういった状態同士を結びつけるイベントの組み合わせて テストケースを作成することができます 遷移前の状態 発生させるイベント 期待される結果 在庫 レンタルボタン click レンタル中になる レンタル中 レンタルキャンセル 在庫に戻る

Slide 17

Slide 17 text

Statement testing - State Transition Table ● さて、これでやりたいことが叶っているかはわかったからテストは十分でしょう ● なんてことはありません ● できないはずのことの確認ができてないですよね? ● これをテストするために「状態遷移表」というものがあります

Slide 18

Slide 18 text

Statement testing - State Transition Table ● 状態遷移表は「状態」と「イベント」を組み合わせた表です ● ↓は「状態 x イベント」表をサンプルにしてます ● 「ー」でどこにも遷移しないといことを示します ● 「できるはずのこと」と「できないはずのこと」を確認することができます レンタルボタンclick 返却 天日干しする 在庫 レンタル中 ー 清掃 レンタル中 ー 清掃 ー 清掃 ー ー 在庫

Slide 19

Slide 19 text

+@ ドキュメントをどう作ればいいかのPrincipalについては↓Blogにありますので、参考にし ていただければ Belong TechTalk 2021Q2 Greatest Hits

Slide 20

Slide 20 text

Conclusion

Slide 21

Slide 21 text

Conclusion ● テストとは「本当はこれってどうあるべきなの?」を比較するプロセスである ● 状態遷移図は「できてほしいこと」を確認するのに使える ● 状態遷移表は「できないはずのこと」を確認するのに使える

Slide 22

Slide 22 text

Thanks