なぜテストを自動化したいのですか?

なぜテストを自動化するのですか?テスト自動化でどのようなメリットがありますか?

人々が自動テストに参加するとき、彼らの主な焦点は、優れたテストの設計から、自動コードが実際にテストを実行および実行できることを確認することに移ります。

チームメンバーが限られた時間枠でストーリーを配信するようにプレッシャーをかけられているスプリントの間、新しい機能をテストするための自動テストスクリプトを作成することは言うまでもなく、通常、計画されたすべてのシナリオをテストするのに十分な時間はありません。


作業、コーディング、レビュー、実行の詳細に行き詰まり、主な理由を忘れることがあります なぜ 私たちは実際にテストを自動化します!



なぜテストを自動化するのですか?

これは、テスト自動化の役割の候補者に面接するときに私が尋ねる質問の1つです。驚いたことに、多くの候補者は、テストを自動化する主な最も重要な理由を見逃しているようです。私が候補者から得た答えのいくつかは非常に信頼できますが、それでも私が探している答えではありません。上記の質問に対する答えのいくつかは次のとおりです。


テストカバレッジを増やす

この答えは非常に有効ですが、カバレッジをどのように定義しますか? 100個のテストがある場合、カバレッジのパーセンテージをどのように測定できますか?

成熟したテスト自動化の実践があれば、比較的短時間で何百ものテストを実行できます。

このため、より多くのテストケース、より多くのテストシナリオを作成し、特定の機能に対してより多くの入力データを使用してテストすることができ、システムが期待どおりに機能しているという確信を得ることができます。

ただし、テスト、特にテストの自動化では、テストが増えても、品質が向上したり、バグが見つかる可能性が高くなったりするわけではありません。


マーティンファウラーによる投稿で、彼は議論します テストカバレッジ 、彼は言及します

一定レベルのカバレッジを目標にすると、人々はそれを達成しようとします。問題は、低品質のテストでは高いカバレッジ数に到達するのが簡単すぎることです。あなたが持っている最もばかげたレベルで AssertionFreeTesting 。しかし、それがなくても、めったに失敗しないものを探す多くのテストが行​​われ、本当に重要なもののテストから気が散ってしまいます。

時間を節約する

自動テストの実行中に興味深い探索的テストを行うために貴重な時間を費やすことができるため、この答えも当てはまります。ただし、開発されたまったく新しい機能の場合、最初の瞬間に機能を手動でテストするよりも、自動化されたスクリプトを作成する方が実際には時間がかかる可能性があります。

そのため、自動テストの時間を節約するには、自動テストのスクリプトを作成し、コードレビューが行われていることを確認するための初期の労力を増やす必要があり、自動テストの実行に問題がないことに注意することが重要です。


その他のバグを探す

自動化によって手動/探索的テストよりも多くのバグが見つかったことを示唆するメトリックを見たことがないので、この回答は時々私を心配します。自動テストは通常​​、新しいコードが実装された後、システムのリグレッションをチェックします。

既存の機能よりも新しい機能のバグを見つける可能性は常に高くなります。さらに、他の理由があります 自動テストで欠陥を見つけられない理由

手動テスターを交換してください

これは、テストを自動化する理由に関して私が聞いた中でおそらく最悪の答えです。手動テスターが行うことと自動テストがチェックすることには明確な違いがあります。自動テストはテストではなく、事実のチェックです。

テストを自動化できるようにするには、期待される結果を把握して、有効または無効な結果を確認できるようにする必要があります。これは、私たちに真または偽、正または負、合格または不合格を与えるものです。


一方、テストは調査演習であり、テストの設計と実行を同時に行います。観察力のある人間のテスターだけが気付くことができるところでは、多くのことが異なった振る舞いをする可能性があります。

考え方やシステムに疑問を投げかける能力が異なるため、優れた手動テスターが常に必要になります。



品質を向上させる

自動テストでは、迅速なフィードバックを提供し、アプリケーションの状態について警告することができるため、システムを破壊したコードの変更を元に戻すことができますが、自動テストだけでは品質は向上しません。成熟したテスト自動化が実施されているからといって、バグが本番環境に漏れないことを保証するものではありません。

開発サイクルの最初から最後まで正しい慣行に従うことで、品質を向上させることができます。品質は後付けではありません。最初から焼き上げる必要があります。製品の品質を把握するために自動テストに頼るだけでは十分ではありません。




では、テストを自動化する主な理由は何ですか?

簡単な答えは 再現性 。同じテストを何度も実行する必要があるため、テストを自動化します。テストを一度だけ実行して忘れてしまう場合は、テストを自動化しますか?もちろん違います!テストの自動化に費やす時間と労力は、手動で実行できたはずです。

現在、定義上、頻繁に実行する必要のある反復可能なテスト、つまり回帰テストを自動化しています。

では、次回、テストを自動化したいときは、一歩下がって、このテストを実行する可能性がどのくらいあるかを考えてください。テストを自動化することは本当に価値がありますか?