ここ数年ですっかり定着した「テスト自動化」「自動テスト」
「テスト自動化」「自動テスト」調べるとテスト自動化、自動テストが大きな成果を上げていると書かれている記事が多くあります。
ただ華々しい成功の裏には泥臭い失敗も数多く存在します。
今回はそんなテスト自動化を開発プロセスに根付かせる上で、
私個人が大切だと思うポイント全4項目について記事にしたいと思います。
注意
・特に記述がない場合は、E2Eテストのテスト自動化について指しています。
ポイント1:自動化の目的が明確になっているのか
テスト自動化をするとなった目的は何でしょうか?
・流行っているから
・上司に言われたから
・テストがいけてないから
・他社の成功例を聞いてやってみたくなったから
・品質を上げたい
・ヒト、カネを節約したいから
・コスト削減したいから
テスト自動化をやることが目的になっていないでしょうか?
なぜテスト自動化をやるのかの目的を明確にしておかないと、ダメなテスト自動化となることがザラです。
テスト自動化で成し遂げたい目的を明確にしないと、それは失敗に終わるでしょう。
ポイント2:テスト自動化でテストすることが明確になっているか
今まで手動でやっていて効果が低かったテストを自動化しても、それはあまり意味がありません。
・そのテストケースで、何を確認したいのかが分からない
・テスト実施者によって結果が異なる
・テスト設計やテストケース作成がちゃんと出来ていない
上記のような場合、むしろコストが高くなる場合もあります。
テスト自動化研究会が発表している「テスト自動化の8原則」というものがあります。
これについては、別記事にまとめていますので興味のある方がいましたらご一読いただけると幸いです。
テスト自動化の8原則について
■ テスト自動化の8原則(抜粋)
1. 手動テストはなくならない
2. 手動でおこなって効果のないテストを自動化しても無駄である
3. 自動テストは書いたことしかテストしない
ポイント3:自動化要員を設けている
テスト自動化 を行うにあたり、世の中には多くのツール・ライブラリが存在します。
有名なところだとMFE社のUFT、Seleniumなどがあります。
これらの特徴として、コーディング、プログラミングすることが必要となります。
手動テストしかやったことのないテスターさんには、ここがテスト自動化の大きなハードルとなるかと思います。
逆にコードを書いている開発メンバーですと、コードは書けますがテスト知識が不足していて良いテストコードが書けない場合があります。
テストの知識を持っていて、かつプログラミングスキルを持つ人がテスト自動化を継続するのには大切になります。
このようなバランスの取れたスキルセットを持つ人は多くありません。
だからこそ専門の要員を立てる必要があります。
開発者が隙間時間に自動テストを導入しても、それは多忙になると放置されることが多々あり、メンテナンスがされず
「自動化?やったんだけど~、使っていないんだ。」ってことになります。
ポイント4:プロセスに組み込む
テスト自動化を導入する場合、既存のテストフェーズへ自動テストを組み込もうとする組織が多く存在するかと思います。
ですが、自動テストは手動テストとは違い開発に近いプロセスで動いていきます。
そのため、既存のテストフェーズに組み込むと多くの場合自動テストに割ける時間が少なくなり、
自動化を担当するメンバーの負担が大きくなってきます。
そうなると結果的に「自動化する暇があったら手動でやった方が早い」という心理になりがちです。
こういったことを回避するために、自動テストは自動テストで新たにプロセスに組み込むことが必要となってきます。
プロセスに埋め込むことで、自動テストが独立したプロセスと認識ができ、
プロジェクト終了時の評価などで「自動テストのプロセスが完了していないけど」など多くのことが見えるようになってきます。
組織の上の人たちは目に見える形の進捗が大好きです。その上の人たちに「自動テストは独立したプロセス」と認知してもらうことで、
より自動テストに集中して取り組むことが可能となってくるのだと私は思っています。
おわりに
テスト自動化を根付かせるために大切だと思うポイントを4つ記載してきました。
ここであげたこと以外にも自動化文化を根付かせることが数多くあります。
このポイント1でもそうですが、大前提としてなぜ自動テストをやるのか。これが一番重要になってくるのかと思います。
・自動テストが流行っているから自動テストをやれ
・テストの回数を増やして品質を上げたい。だから自動化をやりたい
前者と後者のような組織があった場合、どちらの組織が自動化に失敗するかを考えた場合、結果は明白です。
自動化が目的となっている組織、自動化はあくまでも目的を達成するための手段の1つ
このことを念頭に入れて自動化活動をするかしないか。
それだけで自動化が上手くいくかが見えてきます。