
10年前といまではソフトウェアテスト自動化の認識が変わってきている
ソフトウェア開発で欠かせないのがソフトウェアテストだ。10年前は、まず手動テストをつくり、それをいかに自動化するのかがソフトウェアテストの自動化だと考えられていた。浅黄氏が10年前に抱いていた自動テストのイメージも「人間の手で操作しているテストを自動化する」というものだった。しかし現在ではまったく違い、自動テストを作ることが普通になっている。つまり、手動テストをもとに自動化するのではなく、テストそのものが自動で行われるものと、意識が変わっている。実際、ヒューマンクレストでも「開発会社の方とテストを行うときに、そもそも自動テストしか行っていないというお客様が非常に増えてきています」と浅黄氏は語った。
なぜこのような変化が起こったのかというと、「この10年でテストへのアプローチがものすごく変わった」からだと浅黄氏は言う。要因はソフトウェア開発における環境の激しい変化だ。アーキテクチャや開発プロセス、インフラ、デバイスなどが変化し、ビジネスのスピードが大幅にアップした。これにより、テストのスコープとスピードが変わり、テストの自動化が進んだのである。

スコープの対象と範囲もこの10年間で大きく変わった。かつてはUIテストを自動化することが非常に多かったが、いまではそれもAPIに変わっている。ほかにもWebからモバイル、オンプレミスからクラウドなどテストの対象が変わったものは少なくない。受け入れテストではシステム全体をテストするのが一般的だったが、いまはフロントエンドとバックエンドで分けてテストを行うのがスタンダードだ。
テストの範囲も大きく行っていたものを小さく、広く行っていたものをより狭くしていくことが増えている。モノリスからマイクロサービス、要件から機能へといった周りの変化が激しいので、テストのスコープもそれに合わせて変わっていったのである。
テストのスピードも大きく変わってきている。まずテストを行うタイミングが10年前とは違う。かつてはプロジェクトの中で自動テストを3回実施したらもとが取れるなどという考え方もあったが、いまでは数回しか自動テストを行わないなんてことはあり得ない。毎日テストを行うのは当たり前で、マージごと、プルリクエストごとに自動テストが行われるのも珍しくはない。
さらに自動テストの実行時間も、かつてはUIのテストを自動化すると数時間かかっていたものが、いまでは数分、数秒で終わる。テストの並列実行が主流になってきているのも、実行時間短縮の要因のひとつである。そしてテストのフィードバックも可視化されて、テスト結果を誰でも見られる環境が整ってきているのも影響として小さくない。
ソフトウェア開発のスピードとスコープを変えた「ピラミッド」と「4象限」
浅黄氏は、「スピードやスコープが変わってきた一番の要因は、ソフトウェア開発やソフトウェアテストに関する概念が日本に多く入ってきたのが要因だと考えています」と指摘した。
浅黄氏がまとめたソフトウェアテストの概念に関する年表を次のスライドに示す。

テスト駆動開発(TDD)などに関する翻訳書が出版されたことで、開発者がそれをもとにテストを行ったり、QAやテスターがUIのテストを自動化したりといったことが増えていった。そういった背景がある中で浅黄氏はもっとも大きな影響を与えたのが、「テストピラミッド」と「アジャイルテストの4象限」の図だと指摘する。

テストピラミッドとは、ユニット、サービス、UIで三角形のピラミッド型になり、その頂点にマニュアルテストがあるという構造である。このピラミッドは望ましい自動テストの量を示している。ユニットテストはテストの高速化や分離性の向上によって早く実行できるようにしていき、上位にあるUIテストはスコープを拡大することによって全体が正常に動作するという自信につながっていく。

アンチパターンとして、アイスクリームコーン型というものがある。ユニットテストをやっていない中でテストの自動化を進めていくと、GUIのテストがたくさんあり、マニュアルテストも多くある、という状態だ。手動テストしかないときに、テストを自動化すると、UIの自動テストにしかならず、アイスクリームコーン型になってしまう。
そして「アジャイルテストの4象限」はイテレーションごとに、都度、どんなテストを行うべきか、皆で考えるためのツールである。

開発者であれば、左下にあるユニットテストなどで自動テストを行っている。このあたりは技術面でチームをサポートするテストとなる。縦軸の上の方はビジネス面からのテスト、製品を批評するテストは右側で行われている。主に開発側が左下を担当し、右上をQAが担当するのが、大まかなイメージである。