探索的テストとマインスイーパの共通点
はじめに
こんにちは!株式会社VoicyでWebフロントエンジニアをしているCちゃんです。今回は、探索的テストとマインスイーパについてお話しします。
私は、ソフトウェアテストについて学ぶことを楽しいと感じます。それはどうしてなのか考えているときに、ふと探索的テストとマインスイーパは似ているのではないかという1つの疑問が生まれてきました。
そこで今回、共通点と相違点をそれぞれ列挙してみてまとめてみました。
探索的テストとは?
探索的テストは、計画されていない、非形式的なテスト方法です。このアプローチでは、テスターはアプリケーションを探索しながら同時にテストを行います。ここでのキーは「探索」という言葉です。テスターは未知のバグを探し出し、ソフトウェアの欠陥を明らかにするためにさまざまなシナリオで動作確認をします。
共通点は未知を探るプロセス
マインスイーパは、未知の地雷を見つけ出し、安全なルートを探索するゲームです。探索的テストとの類似点は、この未知を探るプロセスにあります。テスターは、マインスイーパのプレイヤーのように、知識と経験を駆使して、バグや問題が潜んでいる可能性がある領域を慎重に探ります。
現実世界では悪魔の証明がある
ソフトウェアテストの7原則の原則1に、
テストは欠陥があることは示せるが、欠陥がないことは示せない
というものがあります。
マインスイーパでは、地雷がないことを確実に証明できます。しかし、現実の探索的テストでは、ソフトウェアに欠陥が存在しないことを完全に証明することは不可能です。
複雑さと面白さの源泉
この違いは、ゲームの世界と現実世界の複雑さを示しています。
マインスイーパのゲームは、限られたルールと明確な勝利条件を持っています。一方で、現実世界は無限の変数と複雑な相互作用を持ち常に変化しています。そのため、探索的テストを含んだソフトウェアテストの領域では、進化するソフトウェアに対して、常に新しい挑戦をしていく面白さがあります。
ここで私は、複雑すぎて人間には把握しきれない現実世界に対して、人間が飽きることは基本ないと思いました。もし、人間が現実世界に飽きてしまったとしたら、それは制限の多い環境を強いられているときや自らその環境を自分に強いているときなのかなと思います。それはつまりゲームのような環境です。
おわりに
探索的テストとマインスイーパは、未知を探るという共通点があります。ただし、その目的と成果は大きく異なります。ゲームの世界は明確なルールと結果があり、勝敗がわかりやすいです。現実世界では、ゲームの世界よりも新しい挑戦と成長の機会が盛りだくさんだと私は思います。
未知を探るという点で、私は探索的テストもマインスイーパもとても好きです。今回の記事を執筆して、マインスイーパなどの古典的なゲームのテスト設計をやるならどうやるかなと考えたくなりました。