自動JavaユニットテストツールDiffblueの無料コミュニティエディションが登場

オックスフォード大学からスピンアウトしたDiffblue(ディフブルー)は、機械学習を使用して、開発者がJavaコード用ユニットテストを自動的作成することを支援する。コードが期待どおりに機能することを確認するために、喜んで単体テストを書く開発者は少ないので、自動化を推進することは、開発者を真に価値のあるコードを書くことに集中させるだけでなく、バグの少ないコードにもつながる。現在Diffblueを使っている顧客は、Goldman SachsやAWSなどだ。

これまでのDiffblueは、有料(そして高額)のサブスクリプションを通じてのみ、サービスが提供されていた。だが米国時間9月8日、同社は無料のコミュニティエディションであるDiffblue Cover: Community Editionの提供を開始した。これには有料版に含まれるすべてのエンタープライズ向け機能は含まれていないが、IntelliJ(インテリJ)プラグインと、AIが生成する有料版と同様のユニットテストは含まれている。

同社はまた、Diffblue Cover向けの新しい低コストの「個人向け」プランを、月額120ドル(約1万2800円)から開始する予定だ。このプランは、サポートならびにその他の高度な機能へのアクセスも提供する。

基本的に、Diffblueは教師なし学習を使用して単体テストを構成する。「私たちがやっている手法は、かつて使われていた静的分析ツールを使うという意味でユニークです」と説明するのは、約1年前に入社したDiffblueのCEOであるMathew Loge(マシュー・ロウジ)氏だ。「そうしたツールはプログラムを分析して、基本的にはプログラムの実行パスを理解した上で、そのパスから逆算を行おうとします。つまり、パスがこの地点に到達するなら、そのためにプログラムに入力する必要があるのはどのようなものか?を逆算するのです」。だが、そうしたアプローチには限界がある。Diffblueの強化学習法が目指すのはその限界の回避である。

単純に実行すれば、Diffblueは開発者が読みやすいテストを提供する。これは重要な点だ、とロウジ氏は強調した。なぜならもし生成したテストが失敗して開発者が何が起きたのかが理解できなければ、問題修正は事実上不可能だからだ。これはチームが辛い経験を通して学んだことだ。初期バージョンのDiffblueは(ユニットテストの主要な指標である)優れたテストカバレッジを提供する、非常に意欲的なアルゴリズムを使用していたため、結果的に開発者が何が起こっているのかを理解するのが非常に難しくなってしまった。

コミュニティエディションでは、Diffblueの有料版にあるコマンドラインインターフェイス(CLI)は提供されないものの、開発者はこれまで同様にIntelliJでコードを記述し、ボタンをクリックするだけで、Diffblueにそのコードのテストを記述させることができる。

「コミュニティエディションは非常に使いやすいように設計されています。文字通りIDEの中でワンクリックするだけで、テストが生み出されます。CLIのバージョンはさらに洗練されていて、より多くのテストケースをカバーし、組織内のチームや大規模なデプロイメントを解決します」とロウジ氏は説明した。

同社は今後、Python、JavaScript、C#などの他の言語のサポートを追加していく予定だが、ロウジ氏自身も指摘するように、長い間ビジネスの世界の主力だったJavaを最初にサポートするのが一番良いと チームは考えたのだ。

Diffblueは長くはないが実際に利用されてきた。同社は2017年に、Goldman Sachsが率いたシリーズAラウンドで2200万ドル(約23億4000万円、未訳記事) を調達した。このラウンドにはOxford Sciences Innovation、Oxford Technology、Innovations Fundも参加した。Javaコードの単体テストのみに焦点を当てるために、そんな金額を調達しないことは明らかだ。より多くの言語のサポートも大切だが、ユニットテストそのものは、AIの助けを借りてプログラミングプロセスをさらに自動化するという同社の全体目標の、最初のステップにすぎない。

「私たちがまずテストに手を付けたのは、それが特にDevOpsならびにより迅速なソフトウェアサイクルへの採用に対して影響を与える、重要かつ緊急の問題だったからです」とロウジ氏は語る。次の明らかなステップは、同様のアプローチを使い、コード内のバグ(特にセキュリティバグ)を自動的に修正することだ。

「マシンにさらに多くのコードを書かせるための、こうした足がかりがもっとあると考えています」と彼はいう。「また率直にいって、これは開発者に慣れてもらうための手段なのです。開発者に受け入れてもらえることが、成功させるための重要な要素だからです」。

関連記事:Diffblue, a University of Oxford spin-out, raises $22M Series A to bring AI to software development(未訳記事)

カテゴリー:ソフトウェア

タグ:Diffblue 資金調達

画像クレジット:Fernando Trabanco Fotografía / Getty Images

原文へ
(翻訳:sako)