ソフトウェア開発における大規模化や複雑化、短納期化が進み、併せてIT人材の不足も深刻化するなか、リソース不足を課題とする現場も多いのではないでしょうか。そんなお悩みの解決策の一つとなるのが、テスト自動化です。テスト自動化とは、専用ツールを用いてソフトウェアテストを自動で実行するもので、大量の反復的なテストを自動化することにより、リソースを節約することが期待できます。本記事では、テスト自動化による効果や運用上の課題、テスト自動化を対応するエンジニアのタイプ別メリット・デメリットや、効率的なテスト自動化に向けて知っておくべきことをご紹介します。
テスト自動化がもたらす効果
先ほども少々触れましたが、テスト自動化がもたらす主な効果は、「工数・コストの削減」です。繰り返し同じテストを実行する場合や、多岐にわたるデータを同じテストシナリオに投入してテスト実行する場合に、高い効果を発揮します。
また、もう一つの効果として「正確性の向上」も挙げられます。人間がテストを実行する場合は、どうしてもヒューマンエラーが発生してしまう可能性があります。しかし、ツールを利用してテスト自動化を行う場合は、膨大な手間と時間がかかるようなテストでも、テストシナリオに沿って正確に実行できます。
テスト自動化を行う上での課題
テスト自動化を行うにあたり、課題も存在します。一番多く挙げられる課題は「自動化スクリプトの作成」です。テスト自動化を行うためにはスクリプトの作成が必要で、これにはいくつかのはハードルがあります。一つひとつ見ていきましょう。
自動化スクリプトの作成工数が発生
当然のことですが、自動化スクリプトの作成にかかる工数が発生します。必要な工数は、利用するテスト自動化ツールによって異なりますが、テスト自動化を行わずに手動でテストを実行する工数よりも、多くなる場合がほとんどです。また、スクリプト作成後は、その動作確認も必要になります。
継続的なメンテナンスが必要
自動化スクリプトには、継続的なメンテナンスも必要です。テスト対象のソフトウェアでアップデートなどが行われると、既存の自動化スクリプトではテスト自動化を実行できなくなることが発生します。アップデートなどでテスト対象に変更が加わった場合は、自動化スクリプトも併せてメンテナンスしていかなければなりません。
プログラミングスキルが必要
多くのテスト自動化ツールでは、自動化スクリプトの作成にプログラミングスキルを必要とします。ツールによっては、プログラミングスキルがなくてもローコードで作成できるものもありますが、それらはフリーツールでなく、初期費用や月額費用が発生する有料ツールである場合がほとんどです。
テスト自動化を「テスト自動化エンジニア」が行う場合
続いて、テスト自動化を対応するエンジニアが、「テスト自動化エンジニア」「開発エンジニア」「テストエンジニア」のいずれかの場合における、それぞれのメリット・デメリットを解説します。まずは、テスト自動化エンジニアが対応する場合について紹介します。
テスト自動化エンジニアが対応するメリット
テスト自動化エンジニアがテスト自動化を対応するメリットは、その高い専門性を生かせるところです。テスト自動化エンジニアにとっても、専業であるテスト自動化業務に高いモチベーションで取り組めることが考えられます。自己学習を行う際もその興味はテスト自動化に向くと考えられるため、専門性の高いスキルの向上に期待できます。
また、テスト自動化を専業で行うため、組織内のテスト自動化全般について把握しやすく、スクリプトの継続的なメンテナンスについてもそのエンジニアに集約されることで効率的な運用が期待できます。
テスト自動化エンジニアが対応するデメリット
組織にとってのデメリットというよりも制約に近いことといえますが、テスト自動化専任のエンジニアをたてるということは、定常的にテスト自動化のニーズが組織内にあることが前提となります。また、テスト自動化ツールによってはプログラミングなど開発寄りの作業も発生するため、プログラミングなどに関して定期的に学ぶ必要があります。
想定されるツールの選択肢
テスト自動化エンジニアの得手不得手などにもよりますが、選択肢としてはフリーツールである「Selenium」などから、有料のツールまで選択肢は幅広くあることが考えられます。
テスト自動化を「開発エンジニア」が行う場合
テスト自動化を、開発エンジニアや開発者が中心に行う場合について紹介します。
開発エンジニアが対応するメリット
開発エンジニアがテスト自動化を行う最も大きなメリットは、プログラミングスキルの高さを生かせるところです。「Selenium」のようなプログラミングスキルが必要なフリーツールでも、自動化スクリプトを作成できるスキルを十分持っている可能性が高いといえます。ほかのタイプのエンジニアよりも、比較的短い工数でスクリプトを作成することが期待できます。
開発エンジニアが対応するデメリット
デメリットとしては、テストエンジニアに比べて、ソフトウェアテストに関する専門スキルが不足している場合も考えられるところです。自動化スクリプトを作成する前には、テストの要件定義や仕様書作成などの手順を通じて、テストの内容を検討する必要がありますが、専門のスキルが不足している場合に、効果的・効率的なテストシナリオを作成されない可能性も想定されます
想定されるツールの選択肢
開発エンジニアがテスト自動化を対応する場合は、プログラミングスキルの高さから、フリーツールを状況に応じて使い分けできることが考えられます。もちろん、有料のツールでもカスタマイズが可能なツールは多いため、その中でプログラミングスキルを発揮し、より効率的なツール活用も可能といえます。
テスト自動化を「テストエンジニア」が行う場合
最後に、テスト自動化をテストエンジニアが対応する場合について紹介します。
テストエンジニアが対応するメリット
テストエンジニアがテスト自動化を行う最大のメリットは、テストに関する専門スキルを生かせるところです。日頃からテストシナリオの作成や管理に慣れ親しんでいるため、無駄な自動化スクリプトの作成を避けたり、効率的なシナリオを作成したりすることが期待できます。また、システムテストや受け入れテストを担当しているテストエンジニアは、システム全体への理解度が高いことが期待でき、システム全体に最適化した自動化スクリプトの作成に期待がもてます。
テストエンジニアが対応するデメリット
一般的にはテストエンジニアは、開発エンジニアと比較するとプログラミングスキルが低い傾向にあります。そのため、プログラミングスキルを必要とするツールを選択することが難しくなってしまいます。また、ローコードで作成できるような有料のツールでも、テストの内容によっては、プログラミングスキルが必要な場合があります。その場合を踏まえ、開発エンジニアからのサポートを受けられる体制が必要となります。
想定されるツールの選択肢
プログラミングスキルが必要なフリーツールよりも、使い勝手が良く、導入のハードルが低い有料ツールの利用が考えられます。初期費用や月額費用などはかかるものの、トータルの費用対効果で考えた場合、有料ツールの方が上回る場合もあります。
効率的なテスト自動化に向けて知っておくべきこと
多くの企業において、「テスト自動化を導入したいが、どう始めればいいかわからない」といった状況から、現在は「テスト自動化を導入しているが、もっと効率的に運用できないか」「一部のチームでテスト自動化に成功したので、社内に横展開したい」というように、テスト自動化を行うことは当たり前の時代へと変化しています。テスト自動化によって効果を得ている組織が増えたことにより、効率的に運用するための知見が公開されることも多くなりました。加えて、テスト自動化ツールの利便性も向上してきています。ここではそれらの一部をご紹介します。
「ISTQB テスト自動化エンジニア」シラバス
ソフトウェアテストの国際認定試験を行う団体・ISTQB(国際ソフトウェアテスト資格認定委員会)は、テスト自動化エンジニアの認定資格に関するシラバスが公開しています。現在は英語版しかないものの、「テスト自動化の準備について」や「テスト自動化システムのアーキテクチャ」など、テスト自動化を円滑にスタートさせ、なるべく失敗を避けて運用するための知見が豊富に掲載されています。
AI自動テストツール
テスト自動化ツールが充実してきているなか、今注目を集めているのがAIを活用したツールです。例えば、テスト対象の画面構成が変わった場合には、自動テストのシナリオなどは人の手で改修しなければなりませんが、AI自動テストツールであれば、テスト対象の変更に合わせてAIが自動で改修します。メンテナンスにかかる人間の手間と運用コストを削減でき、今後は導入が増えていくかもしれません。
SETロール
SETロールとは、開発環境やQA環境の整備・運用、開発やテストの生産性向上などさまざまな取り組みを担当する、組織内での役割のことを指します。現在、このSETロールを設置する組織が増えてきているほか、さまざまな組織でSETロールとしての人材募集や、自社のSETロールに関する情報を公開しているところが増えてきています。テストエンジニアとして活躍していく上で、SETロールについて知っておくことは重要といえます。
企業が公開するツールや知見
テスト自動化に関するツールや知見を、企業が公開しているケースもあります。例えば、株式会社LIFULLは、Webブラウザのテストを自動化する「Bucky」や、画像差分を検出する「Gazo-san」という自社開発の自動テストツールを運用すると共に、オープンソースソフトウェアとして公開しています。同社では、これらツールを公開することでフィードバックを受け、さらに使いやすいツールへと進化させることを目的としています。このように、自社開発のツールを公開して、ブラッシュアップするという取り組みを行う企業は増えてきており、そこで公開されている情報はテスト自動化を行う上で有益なものとなるかもしれません。
まとめ
いかがだったでしょうか。テスト自動化による効果や運用上の課題、テスト自動化を対応するエンジニアのタイプ別メリット・デメリットや、効率的なテスト自動化に向けて知っておくべきことをご紹介しました。
IT人材の不足が叫ばれるなか、さまざまな組織でリソースの捻出に向けた取り組みが検討・実施されています。テスト自動化もその取り組みの一つといえ、テスト自動化によって工数削減が実現し、ほかのコア業務へとリソースを集中させることが期待できます。
また、テスト自動化の導入がひと昔前に比べて当たり前となっている昨今、テスト自動化エンジニアの価値は高くなるといえるかもしれません。「広いIT業界でも価値の高いエンジニアになりたい」「AIや自動化に関する仕事に就いてみたい」などの目標がある方は、テスト自動化エンジニアを目指してみてはいかがでしょうか。
テスト自動化エンジニアとしてスキルアップするならSky株式会社
Sky株式会社では、テスト自動化の導入を検討されているお客様に向けたコンサルティング業務や、自社商品としてのテスト自動化ツールの開発業務などを行う、テスト自動化の分野で活躍するエンジニアが多数在籍しています。テスト自動化エンジニアとしてスキルアップにご興味がありましたら、ぜひ以下をご覧ください。
【募集職種】テスト自動化コンサルタント
【募集職種】テスト自動化ツール開発エンジニア(SKYATT)
Sky株式会社のテスト自動化エンジニアの募集要項について、詳しくはこちらをご覧ください。