自動テスト構築の5つの課題

ソフトウェアテストの分野は、過去10年間に多くの進歩を遂げてきました。テストを完全に手動でおこなっていたという状態から、テストをより効率的におこないより迅速にフィードバックを得ることができるように、自動化テストと手動テストを組み合わせて広く適用するという状態に進化しました。

しかし、すべての企業がこの移行の道をたどったわけではありません。新興企業から大企業まで、組織にとって障害となり続けるさまざまな課題があります。

その課題とは?

一般的には、自動テストを構築する際に開発チームが直面する5つの課題があります。これらの重要な要因に注目することで、より速く、より効率的で、より安定した自動テストを構築できます。

1. スキルセット

私たちは、熟練したスキルを持つ要員の数が必要数に満たないことが多い、競争の激しい市場に生きています。企業は、欠陥をより迅速に発見するための強固な自動化フレームワークを構築することを期待して、熟練したテスターを見つけ、面接し、入社させることに多大な時間と労力を費やしています。

そのための資金を持っている企業もありますが、多くの新興企業や中小企業は、熟練したテスターを集めるための十分なリソースを持っていません。結局、既存のビジネス担当者、開発者、または関係者が、アプリケーションを手動でテストすることになります。その結果、テストがボトルネックになり、製品のリリースサイクルが影響を受け、企業は増大する顧客の要求にこたえることができなくなります。

2. オーサリング

テストチームに熟練したテスターが揃ったら、次の課題は自動テストをオーサリングすることです。テスターは、自動化フレームワークの構築に着手し、すぐに複数のテストを作成したいと思うことがよくあります。しかし、その過程で、耐久性のある自動化フレームワークを作成するための重要な側面に注意を払わないことがあります。

再利用可能なコンポーネントを持つこと、データ駆動型およびキーワード駆動型のテストを行うこと、パラメーター化を使用すること、効果的な待機時間を設けることなどです。これらの要因が見過ごされると、ステークホルダーの期待に応えられない、高い結合度低い凝集度の自動化スイートを構築することになります。

3. 初期化

自動テストを構築する際には、アプリケーションの初期状態に注意を払う必要があります。

たとえば、オンラインショッピング サイトの様々なフローを自動化していて、買い物カゴに商品を 1 つ追加する自動テストをテスターが作成するとします。最初にテストを実行したとき、買い物カゴに商品が 1 つ追加されます。もう一度同じテストを実行するとどうなるでしょうか? もし、アプリケーションを初期状態にリセットすることに注意を払わなければ、買い物カゴに別の商品が追加されます。1つではなく 2つの商品が買い物カゴに入っていることになります。同じテストを何度も実行すると、買い物カゴのサイズが大きくなり、予期しない動作が発生します。

このように、アプリケーションの初期状態に注意を払わないと、開発チームに多大な迷惑をかけ、リリーススケジュールにも影響します。

4. メンテナンス

メンテナンスは、過去数十年の間、テスト自動化の最大の課題でした。たとえば、10個のテストを作成し、それらがすべて合格したとします。最初の結果にチームは満足しますが、翌日、テスト環境のダウン、アプリケーションのクラッシュ、開発者によるアプリケーションの変更などの要因により、ほとんどのテストが失敗していることに気づきます。

一般的に、テスターの時間の約30%をテストのメンテナンスに割り当てることが推奨されています。もし、この時間を5%でも短縮できたら、どれだけ生産性が向上するか想像してみてください。テストのメンテナンスの問題に対処するための多くのソリューションやツールが存在します。それらを活用することによって、テスターと企業は時間、コスト、労力を大幅に削減することができます。

5. スケーリング

自動テストスイートのサイズが大きくなると、それを効率的に管理することがより重要になります。テストスイートに何千ものテストがあり、テストを実行してフィードバックを得るのに約4時間かかる場合、200個のテストが失敗したらどうなるでしょうか?これらの失敗をすべて検査し、何が期待されていて、何が期待されていないのかを把握し、安定化させる必要のあるFlakyなテスト (テスト結果が安定しないテスト)を特定する必要があります。これにはかなりの時間がかかり、チームはより優先度の高い作業から離れることになります。

スケールの問題は、ハードウェアリソースにも当てはまります。実行するテストの数が少ない場合は、最小限のハードウェア リソースで済むかもしれませんが、実行するテストの数が何千もある場合はどうなるでしょうか? その場合は、より多くのサーバーとコンピューティングスペースが必要になります。多くの企業がクラウド サービスのサブスクリプションを利用しているのは、ハードウェアリソースの調達にかかるコストと時間を節約するためです。

開発チームは、より多くのテストを並行して実行し、問題をできるだけ早く発見する必要があります。そのためには、必要なハードウェアリソースを用意する必要があります。

これらの課題を克服するために

自動テストの必要性は高まる一方であり、ソフトウェア開発ライフサイクルのどこかの段階で、チームはこれらの課題の少なくとも1つに直面することになります。しかし、自動化フレームワーク構築プロセスの各段階で是正措置を講じれば、これらの問題を最小限に抑えることができます。

まず、チーム間のコミュニケーションとコラボレーションを強化し、テスト自動化フレームワーク構築の目的と目標を全員が理解する必要があります。優先度の高い小さなテスト セットを自動化することから始め、一定期間にわたって安定して実行されることを確認し、既存の安定したテストの上に構築します。フレームワークを他の構想に合わせて拡張したり、より柔軟にしたりして、手戻りの少ない再利用を可能にするための将来像を描きましょう。

作者について:

Raj Subrameyerは、国際的な基調講演者、ライター、およびキャリアコーチであり、技術的なバックグラウンドを豊富に持っています。 彼のBlog(rajsubra.com/blog/)では、読者の生活に役立ち、インスピレーションを与えるニュース、リソースを投稿しています。

(この記事は、開発元 Ranorex 社 Blog 「5 Challenges of Building Automated Tests」2020年4月2日の翻訳記事です。)