短いスパンで開発されるアプリが増え、テスト自動化への関心は高まるばかりです。しかし期待を抱いて導入したものの、メンテナンスが追い付かずにテストケースが陳腐化してしまったり、作業が増えたのに効果が少なかったり、といった理由から継続できなかったケースも少なくありません。
テスト自動化を成功させるために、気を付けたいのがテスト自動化ツールの選び方です。ツールとの相性が悪ければ、期待する効果は得られません。そこで、ツールを検討する際にどんなことに注意したらよいのか、そしてアプリの種類別によって適したツールは何か、テストエンジニアが解説します。
マイケル・C・フェザーズ著「レガシーコード改善ガイド」には、「テストのないコードはレガシーコード」という有名な言葉があります。コーディングの善し悪しは結局のところテストできる状態にあるかどうかで決まるものであり、テストコードをかけるからこそ、そのコードは品質担保できるという考えは、テストの本質を捉えていると思います。
開発の現場でもテスト自動化への関心は高く、何かしらのテストコードを書く機会は増えています。または単体テスト、機能テストだけでなく、システム全体を通して行うE2E(End to End)テストまで用途が広がっているのも最近の傾向ですが、テスト自動化適応率が増えているとは言い難い状況です。
独立行政法人情報処理推進機構(IPA)が公開している「ソフトウェア開発データ白書2018-2019」によると、テストツールを使用する割合は、約50.9%です。同白書の2016-2017年版では約44.6%、2014-2015年版では42.7%となっているため、少しずつではありますが、増えているように読み取れます。
しかし、全てのテストの中でテスト自動化を適用している割合は、依然として非常に低いです。
そもそもテスト自動化が求められるのは、どのような理由があるのでしょうか。
DXの普及もあり、アプリケーションの仕様も年々複雑になっています。短いスパンで改良が行われることも多く、一部を修正すると他の領域で誤動作が発生する「デグレード」のリスクも高まっています。デグレードを防止するには、修正する部分は少なくても広範囲の領域でテストをしなければなりません。その結果テストケースが膨大になることも多く、コストの増大や開発の遅れを招くというジレンマを抱えています。
製品を市場に投入した後に不具合が発生してしまうと、ブランドイメージの低下にもなりかねません。頻繁に改良が行われ短期間で製品に反映される現在の開発サイクルを考えると、開発期間とテスト作業の労力を削減し、品質を向上させるには、テスト自動化の導入が最適解と言えます。
今、ビジネス環境では予測できないような変化が突然発生しています。このような環境の変化に迅速に対応したいという考えから、ソフトウェア開発手法も伝統的なウォーターフォールから高速に開発するアジャイル開発にシフトしています。アジャイル開発では、2週間ほどの短い期間(スプリント)で開発を行うのが基本です。短期間で繰り返し開発を行うため、既存機能のテストが膨れ上がるのは避けられません。手作業ではテストが逼迫しおろそかになってしまうことから「アジャイル開発であればテスト自動化は必須」という考えが広まっています。
テスト自動化の関心が高まる中、ツールをどうやって選べばいいのか、判断に迷う方も少なくありません。テスト自動化ツールは日々進化しているため、有名なツールが今の時代に合っていると一概には言えません。そこでヴェスがテスト自動化を支援してきた実績をもとに、ツールを選ぶ際の観点をいくつかご紹介します。
ツールによってモバイルアプリに強いもの、Windowsアプリに強いものがあります。モバイルアプリにはスマホアプリとブラウザーの両方に対応しているものもあれば、ブラウザーのみ対応のアプリもあります。
Windowsアプリの中でも、ブラウザーのアプリとデスクトップのアプリではインターフェースが異なります。またアプリによってはセキュリティポリシー上、インターネット接続ができない場合もあります。ブラウザーアプリについては、IEのようなレガシーなブラウザーに対応していないツールもあることに注意しましょう。
「モバイルアプリ」「Webアプリ」「デスクトップアプリ」といったアプリの種類に対応しているか、ツールが強みを持つのはどの種類かを確認するのがポイントです。
ツールによってはテストを実行してみて、正しい結果が返ってこない場合もあります。また動作が重かったり、最悪の場合は動かなくなったりする場合もあります。これはツールが悪いというよりは、テスト内容との相性と言えます。テスト内容がきちんとテストできるのか、事前に検証が必要です。
コーディングが必要なツールは、操作できるプログラミング言語に制約があります。テストコードを書く人が指定のプログラミング言語を習熟していなければならないため、より多くの担当者がコーディングできる言語に対応するツールを選ぶ必要があります。
テスト自動化ツールは、リリースのたびに繰り返し行うテストを自動化できるため、開発期間の短縮とコスト削減が期待できます。不具合をより早い段階で発見でき、リリース後に発見された欠陥を修正するコストを、長期にわたって削減できるのもメリットです。
一方で、ツール本体の価格に加えてテストコードを作りメンテナンスするため、運用コストがかかります。
かかったコスト以上の効果がなければ、ツールを使う意味がありません。コストについては、手動テストの運用コストに対して自動テストの運用コストをどこまで下げられるかを試算する必要があります。さらにテスト自動化ツールは本体の価格に加えて初期開発コストがかかりますから、これらのコストを含めて効果が費用に見合うのかを総合的に判断します。
さらにテスト自動化ツールは課金の方法がプロダクトによって異なるため、アプリの特性によってコストが変わってくる点にも注意が必要です。
ヴェスがこれまで1万2000件以上のプロジェクトを手掛けてきた中で感じているのは、プロジェクトで開発されるアプリは多種多様で、特性に合ったツールを選ぶにはハードルが高いということです。そこでツール選びに困っている方のために、おすすめツールを3つご紹介したいと思います。
MagicPodは、モバイルアプリとWebアプリの両方に対応したクラウドサービスです。モバイルアプリはWebアプリよりもテスト自動化の難易度が高いとされており、MagicPodはモバイルアプリに対応している歴史あるツールのひとつです。
MagicPodでは、画面の部品を選んでドラッグアンドドロップし、テストの判定値を設定していくだけで、スクリプトが自動で生成されます。さらにアプリの画面が変更されるとAIが自動的にスクリプトを修正する機能もあります。
ノーコードでテストスクリプトを作成できるのも、嬉しいポイントです。エンジニアでなくてもテストケースが作成でき、学習コストが削減できます。テストの実施内容や結果がスクリーンショットで記録されるため、振り返りがしやすいのも大きなメリットです。
Windowsデスクトップアプリは、レガシーシステムから最新のテクノロジーを適用したものまで、ソフトウェア技術の幅が広いのが特徴です。Ranorexは、他の製品では認識が難しい技術で作成したオブジェクトも認識が可能なため、Windowsデスクトップアプリに最適なツールとなっています。またクライアント型ツールのため、セキュリティ上インターネット接続ができない開発環境でも使用できます。Windowsデスクトップアプリ、Webアプリ、モバイルアプリがそれぞれ提供されるクロスプラットフォーム環境のテストにもおすすめしたいツールです。
オープンソースになっているツールであれば、無料で利用できます。オープンソースのテスト自動化ツールといえば、Seleniumがその代表格と言えます。2004年に開発されて以降多くの人に利用されてきたツールで、公式サポートも充実しています。
複雑な制御をコーディングできる「WebDriver」やブラウザーの操作を記録して再生できる「IDE」等が用意されています。他のツールとの連携が可能なため、より柔軟な自動テストができます。
その反面、Seleniumに限らずオープンソースのツールに言えることですが、環境構築、またテストスクリプト作成の必要があります。
そのため専門知識がないと使いこなすのが難しいというデメリットがあります。対応する言語に制約があることにも注意しましょう。
他にもJavaScriptでテストコードが書ける「Cypress」やMicrosoftが提供している「Playwright」等があります。
テスト自動化は、デグレ防止による品質向上や開発コストの削減はもちろんのこと、テスト担当者が煩雑なテストケース実行の繰り返しから解放され、よりクリエイティブな仕事ができるというメリットもあります。テスト自動化ツールが進化して導入へのハードルが下がっていることもあり、テスト自動化でさらに品質を高めようという意識が向上している様子もうかがえます。
しかしテスト自動化を軌道に乗せていくのは、現状でも簡単なことではありません。相性のよいツールを選べたとしても、コストを最小に、効果を最大にしていくには、ノウハウが必要です。ヴェスが提供する「テスト自動化サービス」では、これまで手掛けてきた多数のプラットフォーム、多数の案件の経験から、最適なツールをご提案します。また、効果を最大化できるテスト自動化範囲を見極め、自動化が定着するように導く経験も豊富です。ぜひヴェスのテスト自動化のノウハウを吸収し、アプリの品質向上に活用ください。