テスト観点と実装実施時要検討事項

にしさんによる実装実施時要検討事項などの説明まとめ
2

テストの事前条件とテスト観点

Yasuharu NISHI @YasuharuNishi

テスト観点は、それぞれのテストケースにおいてそのテストケースの意図を表すものです。逆に言うと、意図を表さないものはテストケースには入れません。 #テスコン

2018-10-06 16:05:59
Yasuharu NISHI @YasuharuNishi

では事前条件はどうなるでしょう。事前条件とは通常、あるテストケースを実行するために成立していなくてはならない条件(群)です。 #テスコン

2018-10-06 16:09:13
Yasuharu NISHI @YasuharuNishi

確かに事前条件が無いとそのテストケースは実行できません。ではもしその事前条件が成立しなくてもテストケースが実行できたとしたら、その場合でもテストケースの目的は満たされるでしょうか?例えば、見つけたいバグは見つかるでしょうか? #テスコン

2018-10-06 16:10:25
Yasuharu NISHI @YasuharuNishi

もしその事前条件がテストケースの意図を満たすために必要なら、それは事前条件ではなくテストケースそのものに含まれるべきで、それはテスト観点(やテスト値)のはずです。ただ他のテスト観点と違うのは、何らかのトリガによって事前に実行されている可能性が高いということです。 #テスコン

2018-10-06 16:12:04
Yasuharu NISHI @YasuharuNishi

逆に、その事前条件がテストケースの意図を満たすために必要無ければ、それは単なる事前条件であり、テスト観点ではありません。 #テスコン

2018-10-06 16:13:02

実装実施時要検討事項という存在

Yasuharu NISHI @YasuharuNishi

この議論が分かりにくい点は2つあります。一つは、テスト実行時もしくはテスト実装時の話と、テスト(詳細)設計時の話が混ざっているからです。もう一つは、テスト観点じゃない奴に名前がついていないからです。 #テスコン

2018-10-06 16:13:46
Yasuharu NISHI @YasuharuNishi

ではこいつに仮の名前を付けましょう。実装実施時要検討事項です。つまりテストケースを考える時に意外に重要なのは、テストケースに含めようとしているものがテスト観点なのか実装実施時要検討事項なのか、です。これを考えないと、テストケースが不必要に複雑になります。 #テスコン

2018-10-06 16:20:48
Yasuharu NISHI @YasuharuNishi

実装実施時要検討事項は(その名の通り)、本来実装時や実施時に検討し決定する事項です。テスト手順は、テスト観点以外にもたくさんのことを決めないと実行できません。注意すべきなのは、実装実施時要検討事項を決めることは、何となくテスト設計と混同してしまいがちだ、という点です。 #テスコン

2018-10-06 16:23:32
Yasuharu NISHI @YasuharuNishi

例えば「テスト環境」を考えてみましょう。環境を変えることがテストの意図を満たすなら(例えばそういうバグを出したいのなら)、テスト環境はテスト観点です。でもそうでなければ、実装実施時要検討事項です。これは極論すると、値は何でもいいんです、実行できれば。 #テスコン

2018-10-06 16:25:08
Yasuharu NISHI @YasuharuNishi

しかし一般的なテストでは、テスト観点と実装実施時要検討事項を厳密に峻別しません。それによってテスト観点の漏れを防ぐ側面もあるからです。そのため、実装実施時要検討事項なのに境界値を選んだり網羅しようとしたりします。したがって混同してしまいます。 #テスコン

2018-10-06 16:27:49

実装実施時要検討事項とテスト観点を混同してしまうことによる弊害

Yasuharu NISHI @YasuharuNishi

テスト観点と実装実施時要検討事項が峻別できているからこそ、効果的に集約ができます。もし混同されていると、集約することによってテスト観点が変化してしまい、見つかるはずだったバグが出てこなくなってしまいます。 #テスコン

2018-10-06 16:30:28
Yasuharu NISHI @YasuharuNishi

テスト観点として挙がっている、もしくはテストケースとして設計しているのにバグが出ないとなると、再現性の無い不具合だという誤った結論に至りやすくなります。多くの場合、タイミングやメモリの状態といった、コストや時間のかかる再現テストを伴ってしまいます。 #テスコン

2018-10-06 16:32:09
Yasuharu NISHI @YasuharuNishi

でもそれはバグの再現性が低いのではなく、テスト観点と実装実施時要検討事項との混同によって、バグを出すのに必要なテスト値がマスクされてしまっているだけです。きちんとテスト値を指定してテスト手順を実行すれば100%再現します。 #テスコン

2018-10-06 16:33:11

テストケースの前提について

Yasuharu NISHI @YasuharuNishi

さぁこのあたりで「事前条件」という概念の曖昧さと、一般的に意味するテストケースという概念の前提が分かってきましたね。 #テスコン

2018-10-06 16:40:26
Yasuharu NISHI @YasuharuNishi

一般的にテストケースとは、ある操作や機能で一度に実行するなにがしかだという前提を置いています(違うものもあります)。その時テスト条件とは、ある操作や機能で一度に実行する条件である、という前提が付与されます。 #テスコン

2018-10-06 16:41:37
Yasuharu NISHI @YasuharuNishi

そしてその時、事前条件とは、テストケースが一度に実行されたタイミングよりも前に実行されたり成立されているなにがしか、という意味しかありません。テスト条件と事前条件のように並列で語られるので誤解されやすいのですが、二つの「条件」という単語は異なる意味を持っています。 #テスコン

2018-10-06 16:43:16
Yasuharu NISHI @YasuharuNishi

ですからテスコンチュートリアルの「テストケース」は、暗黙の「一度に実行される」という前提を外しています。それによって、含まれるテスト観点が実行されたり成立されるタイミングはまちまちになります。 #テスコン

2018-10-06 16:44:56
Yasuharu NISHI @YasuharuNishi

その代わり、テストケースに含まれるテスト観点は全て、テストの意図を満たす(例えばあるバグを見つける)ために必要ななにがしかになります。それ以外は考える必要がありません。 #テスコン

2018-10-06 16:45:38
Yasuharu NISHI @YasuharuNishi

このように考えておかないと、テストケースの意図を満たすために必要ななにがしかが、テスト開発のあらゆるところで様々な概念として出てきてしまうため、収集がつかなくなってしまいます。だから、そのように考えるのです。 #テスコン

2018-10-06 16:46:56

テスト開発における考え方

Yasuharu NISHI @YasuharuNishi

テスト開発ではないテスト準備は、テスト実行に主眼を置いています。したがって「一度に実行されるなにがしか」を特定することがとても重要になります。そうしないとテストケースが実行できませんから。しかしトレードオフとして、テストケースの意図は満たしにくくなります。 #テスコン

2018-10-06 16:49:01