/note/tech

DMM.comの大規模レコメンド・検索システム改善の舞台裏

ログベーステストの流れなんですが、全体像としてこのようになっていて、初めにユーザからログインか検索システムが呼ばれたときにコールされたメソッドやその引数、あとはそのメソッドによって変数がどう変わったかをすべてロギングしておきます。

それをビッグデータ基盤に蓄積して、ログデータをテストケースに変換するスクリプトを作って、テストケースを作りました。それによってその挙動がテストケースによって担保されるので、振る舞いを変えることなくリファクタリングを実施しました。

このログベーステストのメリットなんですが、自動生成した大量のケースにより網羅性の高いテストを実施できるというメリットと、ユーザの利用が多いコードがテストできることです。ユーザがよく使っているということは重要なコードなので、そういった部分がたくさんテストできます。

あとはこれも大きなメリットなのですが、仕様がわからないコードをテストできます。先ほど紹介した通り、かなり巨大で複雑なライブラリになっていたので、仕様をすべて厳密には把握できない状態でもユーザの挙動から、あるべき姿をコードとして落とし込むことでテストが実施できます。