Gerald Ford 国際空港に、駐車料金計算機があり、 Matt Heusser氏は、それにひどいバグがあるのに気がついた。そこで彼は、世界中のテスターに、 挑戦状 を送った: ParcCalcに存在するバグを見つけて欲しい。ツイッターと氏のブログを使って、アプリケーションをテストし理解するために、何人かが募集された。話の残りを読む前に、自分でいくつバグを見つけられるか、ちょっと考えてみる価値は、ある。
アジャイルのテスティングコーチである、Selena Delesie 氏は、日付と時間のフィールドの境界値を試すことから始めた。
2,3分間それと遊んだら、短期の駐車で1日に、675万ドル課金された。 …
更に試したら、下に見らえるように、終了時刻フィールドに単に限界値を入れただけで、私のコストが$2,500,000,000,000,041.00に増えた。指数の駐車期間が表示されているのに注意して欲しい。変だ。
KC 氏は、フィリピンで働いているソフトウェアテスタで、デフォルト値で計算しようとすると、エラーが置き換えられる前に、PHPエラーメッセージを含んだページが表示されるのに気がついた。この演習の他の参加者は、このエラーは、そのページがロードされる度に、現れ、そのページは、ただ例外を消費し、無視していることを見つけた。
色々な人たちが、駐車料金の最高額がいくらになるかを試し始めた。Matt氏の元々の挑戦に続いているコメントが、共同的に、いっしょに働くことの興味深さを物語っている。どんどん最高額が上がるに連れて、以前コメントした人による発見の上に、根本的な問題への新しい洞察を伴ったコメントが、積み上げられていくのである。
Alain Bohon氏が駐車計算機が、有効な結果を出している思われる、いくつかの面白いケースを見つけた:
- 朝6時について、同じ日の朝3時に出る場合、料金は、ゼロ。
- 気が変わって、4/4の午後27:00に来て、4/13の朝-6:00に出ることに決めた。ワオッ!
- 実際、 12.5555:00に来て、13.00004:00出れるか... できると思う。
Peter Haworth-Langford氏は、メソッドmktime()によって生成された元々の例外に気づいて、このメソッドがとるパラメータを知って、更にバグを見つけるために、新しいテストを作成し始めている。
Dr. Meeta Prakash は、このアプリケーションが境界値を超えるどんな値でも受け取ることに気がついた。
Matt氏が見つけたのは、エコノミー駐車場では、7日目はタダのはずであるが、このプログラムでは、タダより安くなっている: 6日と3時間で60ドル。ところが7日間で、54ドル!6ドル節約するためには、1日余分に駐車すれば良い。
何人かが、日付指定が時々消えることを見つけた、Matt氏が注意するのは:
日付指定のコードは、それをポップアップさせる、もしすでに「アップ」していれば何もしない。アー、しかしUIの問題がある。もし(それを現れるようにするために)ポップアップをクリックし、それからwebフォーム上をクリックすると、この日付指定がブラウザの下に行ってしまう。次にポップアップが現れるようにクリックしても、そのロジックが「なんだよ、ポップアップは、もうアップしているよ」と言い、何もしない。-ユーザには、それが見えないけど。これがずっとそのままである。例え、リフレッシュやそのページを再表示させてもである
何人かがこのことを報告した。大抵は、この現象に気がつくが、再現方法や動作モデルが不完全だった。... もし最高のバグ報告に賞金があったなら、この再現方法がそれに価すると思う。
最後に、Selena 氏がこれまでに気がついたのは:
- 日付と時刻フィールドに入力できるデータに限界がない
- 短期間の駐車に適用される時間の制限がない
- ある状況では、駐車開始日から終了日をどんどん増やしていくと、料金が下がる(他の変数は、同じにしておく)
- 大きな数(だいたい10桁以上)を入れると、日付フィールドより時刻フィールドの値の方が料金に効く
- 日付フィールドと時刻フィールドにマイナスの値を入力でき、料金も計算される
- 日付フィールドと時刻フィールドに文字を入力でき、料金も計算される
- 日付フィールドと時刻フィールドにシンボルを入力でき、料金も計算される
- フィールドにPHPのスクリプトも入力でき、面白いことができそうだ(おそらくセキュリティ問題が?)、しかし最近の私のPHPスキルは、ゼロに等しい
- 日付フィールドと時刻フィールドには、それぞれ一種の境界値がある。(X:X, X/X/X)の各Xで、更に桁を増やすと計算機はエラー表示する。そして更に桁を増やすとエラーを起こす直前よりも料金は小さくなる
- 1日コースで無料駐車できるのは、開始日付 = 終了日付 かつ 開始時刻 > 終了時刻 かつ 開始 <=11:59、終了 >= 0:59 (両方共午前か、午後)
私の最高料金? 5,014,609,699,998,504.00 ドル(期間 2.08942070833E+14 日、14 時間、47.4666666667 分)
学んだ事:
- 共同作業をする と独りでやるよりももっと洞察が深くなる
- 日々の対象とは違うもので自分のスキルを磨くのは、テスタにとってよい訓練になる
- 開発者なら発見された問題について読み、同じような問題が自分のコードにないかを考えてみる