2019年3月 6日

黒帯

テスト自動化の今と今後

  • このエントリーをはてなブックマークに追加
黒帯WEEKの4日目の記事です。カテゴリの一覧はこちら

こんにちは、第6代黒帯 テスト自動化領域の山口です。

私が黒帯を拝命した2016年以降もテスト自動化に関する国内外の状況は変化しており、
もはや自動テストが検討されないソフトウェア開発は国内でも少なくなってきているように感じます。

そのような背景もあり、2019年4月18日、19日にはブラウザの自動テストツールであるSeleniumの国際的なカンファレンスであるSelenium Conferenceが東京で開催されます。

このカンファレンスは国内外のテストやテスト自動化で著名な登壇者による講演やその場でのディスカッションがあり、私も参加を大変楽しみにしています。
ヤフー株式会社は、カンファレンスそのものやテスト自動化領域が国内でも一層盛り上がるようにスポンサーを務めさせておりますし、私自身もヤフーの自動テストを含むCI/CD施策の歴史について講演します。興味がある方はぜひ参加いただき、私とともに楽しみましょう!

本日は、私から見るテスト自動化・自動テストのトレンドや、黒帯拝命前から今まで注力している私によるヤフー内でのテスト自動化の普及についてご紹介します。

テスト自動化・自動テストのトレンド

テスト自動化はテストというさまざまな活動を自動化していくというものであり、広い活動を対象としています。ここ数年盛んになっているのは、テスト実行を自動的におこなう「テスト実行の自動化」です。テスト自動化としては「テスト実行の自動化」以外に、「テスト設計の自動化」などもあります。「テスト設計の自動化」に関しては、テスト対象システムへの機械的網羅実行を機械学習により削減し、現実的なテストケースを作成する研究・プロダクトが出てきています。ここ2,3年で大きく変わるかもしれませんがまだ大きな変化がない状況のように感じます。

一方、テスト実行の自動化に関しては、さまざまなツールが生まれており現在大きく変化している状況だと言えます。単純な機能性や性能性だけでなく信頼性やセキュリティのような特性のテストも、ツールによるテストの自動化として定常的かつ容易に実現できるようになってきています。そのようなツールにより自動テストが増やしやすい背景の上に、ネットワークのソフトウェア化やPaaS・CaaSのような環境の多様化などテスト対象の増加に対応するために、テスト実行の自動化が普及してきていると考えています。

テスト実行の自動化の普及においては、社内に限った話ではなく世の中一般的な傾向として自動テストを作成するプログラマが増えてきたように感じています。マイケル・C・フェザーズの"レガシーコード改善ガイド"で語られている「テストがないコードはレガシーコード」という認識や、プログラマがユニットテストだけでなくさまざまなテストを書くことが当たり前になりつつあるように感じています。

テスト自動化や自動テストの今後としては、「テスト実行の自動化」が多くの品質特性をカバーしつつより大きな自動テストが実行されていくと思います。また、「テスト実行の自動化」はプログラマの1つのスキルとなっていくかと思います。
そのために、プログラマがテストを学んでいくとともに、効果的なテスト実行基盤の開発が進んでいくのだと思います。

ヤフーでの筆者によるテスト自動化の普及

これらの状況を踏まえつつ、私が黒帯を拝命前から進めているヤフーでのテスト自動化の普及について紹介します。本ブログでは、私の視点から紹介します。Selenium Conferenceでは、全社の視点から講演する予定です。

私は、大まかには下記のような流れで普及を進めており、それぞれについて紹介します。

  1. 小さくテスト自動化を始め、成果を出す。
  2. 成果や成果物や広めていくと同時に普及できる人を育成する。
  3. 全社の技術戦略に組み込んでいく。

1. 小さくテスト自動化を始め、成果を出す。

もともと、私自身アジャイル開発の普及を社内でおこなっていたのですが、その中でテストがうまくできておらず開発が効率的になっていないのを見かけ、テスト自動化の普及を始めました。

そのような状況ですので、既存のアジャイル開発の普及をやめてまでテスト自動化の普及をすることが良いか不明でした。そこで、少ないリソースでテスト自動化の普及を始めました。少ないリソースを無駄にしないように、テスト自動化に意欲がありリソースが確保できるチームでテスト自動化を始めました。

大きく始めるとどうしても期待も大きくなり、大きな成果が得られず頓挫することがありがちですが、小さく始めることでそれらを予防することができると考えています。
また、意欲がありリソースが確保できるところで普及を始めると何事も成功することが多く、失敗の確率を減らすことができるため、小さくテスト自動化を始め、成果を出すようにしました。

2. 成果や成果物や広めていくと同時に普及できる人を育成する。

1.のレベルでテスト自動化を普及させていくと徐々に成果が出る事例やテストコードや自動化のノウハウなどの成果物ができあがっていきます。そこで、それらを社内の公開ドキュメントリポジトリや社内セミナーの開催などを通して伝えていくようにしました。テスト自動化の存在や良さをより広い範囲に伝えていくためにです。

これにより、多くのようにテスト自動化を伝えることができるようになり、テスト自動化が普及できるかと思ったのですが、あまり普及はしませんでした。あとでわかったのですが、テスト自動化に関しては知識や例、サンプルを伝えるだけでは実施できないことが多かったのです。テスト自動化ができるようになるには、ワークショップやペアプロなど一緒に作業することが必要であることが後日わかりました。

とはいえ、このような状況になってくるとテスト自動化の普及そのものにある程度大きめのリソースをかけられるように周囲から見られるのですが、そもそもテスト自動化を普及できる人材がいないという問題が発生します。そこで、この時期あたりから、テスト自動化を普及することと並行してテスト自動化を普及できる人を育成することを始めました。

3. 全社の技術戦略に組み込んでいく。

2.で書いたように、ただ伝えるだけではテスト自動化の普及はあまり起きませんでした。しかし、実際にテスト自動化できるプログラマは社内に存在することはわかっていたので、その方々が動けるようにかつより広い範囲でのテスト自動化の普及に向け、上位の技術マネージャーへの広範囲なテスト自動化の実施の提案をおこなっていきました。

ただし、これは社内や世の中のテスト自動化の状況、テストに関するツールの成熟を見ながらおこなう必要がありました。実際、私が提案したときと実際にトップダウン的な広範囲なテスト自動化の実施がおこなわれるようになったのには時間差があり、これはツールの熟成を待っていたように私は感じています。

このような活動で最終的には全社の技術戦略の中にテスト自動化が入るようになりました。なお、戦略に組み込むだけでなく、それを支える自動テストが動くテスト実行基盤およびツールの整備と技術的なサポート、上位マネージャーによる明確なメッセージングにより、全社的なテスト自動化が普及したと思います。

もちろんテスト自動化は現在および未来のビジネスとのバランスが極めて重要な施策となるため、すべてのプロダクトで等しく実施することや未来において十分なテスト自動化が今の時点でされることはありませんが、テスト自動化をおこなっていくということが定常的におこなわれるようになるのが第一かと考えています。

まとめ

テスト自動化・自動テストのトレンドや、黒帯拝命前から今まで注力していたヤフー内でのテスト自動化の普及の概要についてご紹介しました。

自動テストは今後当たり前になっていくでしょう。そのために、既存のサービス・プロダクトにおいてはテスト自動化が必要ですし、その過程でプログラマがテスト自動化をできるようになっていると思います。そして、そのような状況では、効果的な自動テストやそのテスト実行基盤が競争領域になると考えられ、それらに貢献できるエンジニアを増やしていければ良いなと考えています。

この記事で少しでもテストや自動テストに興味を持ってもらえたら幸いです。

採用情報

Yahoo! JAPANでは学生向けのポテンシャル採用や中途向けのキャリア採用を実施しています。もちろん今後さらに重要性を増すテスト実行基盤やCI/CDパイプラインツールなど開発基盤のエンジニアなどの採用枠も設けています。ご興味のある方はぜひエントリーをしてみてはいかがでしょうか。

Yahoo! JAPANでは情報技術を駆使して人々や社会の課題を一緒に解決していける方を募集しています。詳しくは採用情報をご覧ください。

  • このエントリーをはてなブックマークに追加