グーグルのクラウドを支えるテクノロジー > 第86回 GoogleにおけるMutation Testの実践(パート1)
私が編集支援しているCTC教育サービスのコラム「グーグルのクラウドを支えるテクノロジー > 第86回 GoogleにおけるMutation Testの実践(パート1)」が公開されました。興味がある方はご覧ください。
###
はじめに
今回からは、2018年に公開された論文「State of Mutation Testing at Google」を元にして、「Mutation Test(ミューテーション・テスト)」と呼ばれる、少し変わったソフトウェアのテスト方法について、Googleにおける取り組みと、その有効性の分析結果を紹介します。
Mutation Testの目的
Googleにおけるソフトウェア開発では、一般に「テスト駆動開発」と呼ばれる手法を採用しており、ある機能を実装するコードを作成する際は、その機能が正しく動作することを検証するためのテスト用のコードも同時に作成します。将来、該当のコード、あるいはこのコードが依存するライブラリーなどに変更があった際は、このテストを再実行することで、本来の機能が満たされなくなるといった想定外の問題が起きていないことを確認します。この時、テスト用のコードそのものに問題があると困ります。正しく機能しているのにテストが失敗する「偽陽性」のケースであれば、開発者自身がテストに問題があると気づくことができますが、本当は正しく機能していないのにテストが成功するという「偽陰性」の場合、ソフトウェアの問題が気づかれないまま放置される危険性があります。そこで、元のコードに対して、それが正しく機能しなくなるような変更をわざと加えて、対応するテストが正しく「失敗」することを確認しようというのがMuattion Testの考え方です。
Mutation Testを行う際は、通常、次のような自動化を行います。まず、一定のルールに基づいて、元のコードをランダムに変更します。具体的には、図1のようなルールがあります。
この続きは以下をご覧ください
https://www.school.ctc-g.co.jp/columns/nakai2/nakai286.html