News

機械学習はソフトウェアテストの未来を変えています

ソフトウェア開発チームの大多数は、テストがうまくいかないと信じています。彼らは、品質欠陥の影響が大きいことを理解しており、品質保証に多額の投資を行っていますが、それでも期待する結果が得られていません。これは才能や努力の不足によるものではありません。ソフトウェアテストをサポートするテクノロジーは単に効果的ではありません。業界は十分なサービスを受けていません。

ソフトウェアが適切かつ徹底的にテストされるまで、リリースを成功させることはできません。テストは、作業を正しく行うために必要な時間と人的労力を考慮すると、かなりのリソースを必要とする場合があります。このギャップのあるニーズは、満たされ始めたばかりです。

非常に多くの業界を混乱させ、改善してきた機械学習(ML)は、ソフトウェアテストへの道を歩み始めたばかりです。頭が回転している、そして正当な理由で:業界は二度と同じになることはないだろう。機械学習がまだ成長し進化している一方で、ソフトウェア業界はそれをますます採用しており、その影響により、テクノロジーが向上するにつれてソフトウェアテストの実行方法が大幅に変化し始めています。

ソフトウェアテストの現状を掘り下げ、機械学習がどのように発展したかを確認してから、ML技術がソフトウェアテスト業界を根本的に変えている方法を探りましょう。

ソフトウェアテストの背景

ソフトウェアテストは、ソフトウェアが設計どおりに機能するかどうかを調べるプロセスです。機能品質保証(QA)テストは、根本的に破損していないことを確認するテストの形式であり、ユニット、API、およびエンドツーエンドのテストの3つの方法で実行されます。

単体テストは、コードのブロックが各入力に正しい出力を提供することを確認するプロセスです。APIテストは、コードモジュール間のインターフェイスを呼び出して、それらが通信できることを確認します。これらのテストは小さく、離散的であり、非常に決定論的なコードの機能を保証することを目的としています。

エンドツーエンド(E2E)テストでは、アプリケーション全体がすべてまとめられ、実際に動作しているときに、アプリケーション全体が機能することを確認します。E2Eテストでは、すべてのコードがどのように連携し、アプリケーションが1つの製品としてどのように機能するかをテストします。テスターは、コアテスト(繰り返し行われることをテストする)とエッジテスト(予期しない相互作用をテストする)を通じて、コンシューマーが行うようにプログラムと対話します。これらのテストは、アプリケーションが顧客の希望どおりに応答しない場合を検出し、開発者が修復できるようにします。

従来のE2Eテストは、手動または自動で行うことができます。手動テストでは、テストするたびに人間がアプリケーションをクリックする必要があります。それは時間がかかり、エラーが発生しやすいです。テストの自動化には、人間を置き換えるスクリプトの作成が含まれますが、これらのスクリプトは一貫性のない機能を示す傾向があり、アプリケーションの進化に伴い、メンテナンスに多大な時間を費やす必要があります。どちらの方法も費用がかかり、成功するには人間の直感に大きく依存します。E2Eテストスペース全体が十分に機能不全に陥っているため、AI / ML技術による混乱が発生する可能性があります。

機械学習とは何ですか?

機械学習はAIと同義語として使用されることがよくありますが、厳密には同じものではありません。機械学習はアルゴリズムを使用して意思決定を行い、人間の入力からのフィードバックを使用してそれらのアルゴリズムを更新します。

良い例はマシンビジョンです。マシンビジョンアプリケーションは、実際には犬であるにもかかわらず、何かを猫として識別する場合があります。人間はそれを修正し(「いいえ、これは犬です」と言うことで)、このフィードバックに基づいて、何かが猫か犬かを判断する一連のアルゴリズムを更新します。機械学習は、テスターとユーザーからのこの継続的なフィードバックに基づいて、時間の経過とともにより良い意思決定を行うように設計されています。

機械学習は、データとフィードバックが不足しているため、E2Eテストの世界に到達するのに苦労しています。E2Eテストは通常​​、テストすることが重要なもの、または重要またはリスクがあると思われる機能についての人間の直感によって構築されます。新しいアプリケーションは、製品分析データを使用してテストの自動化を通知および改善し、機械学習サイクルへの扉を開いて、テストのメンテナンスと構築を大幅に加速しています。

では、ソフトウェアテストの将来はどうなるのでしょうか。

ソフトウェアテストの未来は、より高速なテスト、より高速な結果、そして最も重要なことに、ユーザーにとって本当に重要なことを学習するテストです。最終的に、すべてのテストは、ユーザーエクスペリエンスが素晴らしいことを確認するように設計されています。ユーザーが気にかけていることをマシンに教えることができれば、これまで以上にテストを行うことができます。

従来、テストは速度と実用性の両方で開発に遅れをとっていました。テストの自動化は、エンジニアリングチームにとってしばしば弱点です。MLはそれを強みにするのに役立ちます。

MLがソフトウェアテストの将来にとって意味するのは自律性です。スマートマシンは、現在のアプリケーションの使用状況と過去のテスト経験からのデータを使用して、人間の入力なしでテストを構築、維持、実行、および解釈できるようになります。

ソフトウェア開発のすべての側面を自動化する必要はない可能性があります。E2Eテストの長い伝統が主に人間の直感と人的資源によって推進されていることを考えると、業界全体として、最初はプロセスをマシンに引き渡すことに抵抗する可能性があります。事実上すべての業界で、内部関係者は、機械が人間の仕事をすることは決してできないと主張しています。MLの台頭に抵抗し、人的労働を倍増させた人々は、しばしば取り残されていることに気づきます。

テストの世界ではおなじみの話が展開されています。ML主導のテスト自動化は今日まだ始まったばかりですが、業界を引き継ぐのはほんの数年先のことでしょう。

自律的なエンドツーエンドテスト

E2Eテストにおける機械学習の主な利点は、非常に複雑な製品分析データを活用して、ユーザーのニーズを特定および予測できることです。ML主導のテストでは、Webアプリケーションでのすべてのユーザー操作を監視し、ユーザーがたどる一般的な(およびエッジの)旅を理解し、これらのユースケースが常に期待どおりに機能することを確認できます。

そのマシンが多くのアプリケーションをテストしている場合、それらのすべてのアプリケーションから学習して、アプリケーションへの新しい変更がユーザーエクスペリエンスにどのように影響するかを予測できます。ML主導のテストは、このデータのおかげで、人間よりも優れた、より意味のあるテストをすでに構築できます。

ML駆動の自動化によって開発されたテストは、人間によって構築されたテスト自動化よりも高速かつはるかに安価に構築および保守されます。このようなテストは、はるかに高速な(そしてより高品質の)展開につながり、VPエンジニアリングの予算に恩恵をもたらします。

テスターはどうですか?

現在これらの仕事をしている人々はどうですか?

品質エンジニアは、ソフトウェア開発において依然として主要な役割を果たしています。ソフトウェアの品質を保証する最も効率的な方法は、コード自体の設計と開発に品質管理を組み込むことです。そのプロセスが不完全であるためテストが存在するだけです。

MLがテストエンジニアからE2Eテストの負担を引き継ぐため、これらのエンジニアはソフトウェアエンジニアと協力して専門知識を活用し、高品質のコードをゼロから構築できます。この問題に関する私たち自身のインタビューから、ほとんどの品質エンジニアは、一日中テストメンテナンスで粉砕するよりもこれをはるかに好むようです。

未来は明るく見える

MLは、より合理化された効果的なソフトウェアテストプロセスを提供します。大量の開発を処理し、必要な特殊なテストを作成するためのより適切なプロセスを確立します。スマートソフトウェアテストとは、データベースのテスト、正確な結果、革新的な業界の発展を意味します。

この記事が、ソフトウェアテストの将来と、機械学習が私たちの世界にもたらす驚くべきことに備えるのに役立つことを願っています。

(Source)

Related Articles

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Back to top button
Close