テスト自動化に取り組む方に向けた講座
このチュートリアルのコンセプトについて、氏は以下のように語っていました。
自動車を運転するためには、車にはタイヤがあり、ハンドルがあり……という知識のみでなく、運転自体のレッスンも必要です。同様に、テストを自動化していくのも、コード化できるだけが素晴らしいTest Automatorというわけではありません。
よって自動車の運転免許と同じように、このチュートリアルでは「Automatorのライセンス」取得に向けて、自動テストに関する事例やディスカッションを通して演習しながら学んでいきます。受講者は70名程で、テスト自動化の経験が二年以上ある方が大半でした。
Exercise 1:給紙ロボットを設計する
最初のExerciseでは「あるテーブルにあるフォーク、ナイフ、皿、カップをお客様のテーブルにセットしていくロボット」を想定して、ロボットを動かすためのコマンドと、その仕組みを考えます。
ポイントは「ロボットはどうやってスプーンやフォークを識別するのか」と「どうやってすべてのお客に1セットずつ配るのか」です。このお題に与えられた時間は15分です。
筆者がペアで組んだ方と作ったコマンドは以下のようになりました。
- スプーンやフォークが置かれているテーブルへと向かい、画像検索を使って並んでいるアイテムをチェックする
- スプーンがみつかったら、それをお客様Aのテーブルに届ける
- テーブルに届けたら「スプーンを届けたフラグ」を立てる
- お客様Aのデータベース情報をチェックし、まだ届けていないアイテムがあればそのアイテムを取りに行く
- 必要なアイテムが見つかったら、再度、お客様Aのテーブルにアイテムを届ける
戦略としては、スプーンやフォークの識別には画像判定を用いて、事前に登録しておいたスプーンの写真と比較し、一致度の高いアイテムを選定していく方法を考えました。「すべてのお客に1セットずつ配布」する部分は、データベースにお客ごとのフラグを用いることとしました。
その後、ペアのどちらかがロボットを演じながら、そのロボットが思考することなくそのコマンドに従って動いた場合に、期待通りの挙動になるかどうかを確認しました。実際にロボットになりきって動いてみると、途中で停止してしまうケースがたくさん見つかりました。