14

ここ数日、自動化された受け入れテストについて調査し、BDD と JBehave、FitNesse と Slim、Selenium と WebDriver などについて学びました。

Robert C. Martin によるこのビデオを見たところです。彼は、FitNesse を使用してこのようなテストを作成および維持する方法を示しています。最後に、これらのテストが UI にヒットしたかどうかを尋ねる人がいます。Martin 氏はさらに、UI の変更は頻繁に行われるため、受け入れテストを UI に結合するとコストがかかる可能性があると説明しています。また、そのようなテストは、UI が開発された後にのみ作成できると推測できます。これは、定義上、テスターをスケジュールより遅れさせることになります。

私は尋ねなければなりません:代替手段は何ですか?マーティンは、アプリケーションのビジネス レイヤーを操作する隠しレイヤーにテストがヒットする必要があることをほのめかしているようです。私の理解では、これには追加の作業が必要であり、運用環境で一度保護する必要がある新しい API が公開されることは言うまでもありません。

アプリケーション サービスを介してビジネス層に到達するだけで十分でしょうか?

あなたの経験は何ですか?

共有してくれてありがとう!

4

6 に答える 6

14

UI を介したテストまたはビジネス レイヤーに直接アクセスするテストは、長所と短所が異なる 2 つの異なるタイプのテストと見なすことができます。

UI を直接テストしている場合は、ユーザーに表示されるものをテストしていることになり、テストできるようにするためにコードを変更する必要はありません。ただし、まれなケース、またはシステムが例外的な条件 (例外など) にどのように反応するかをテストすることは非常に困難になります。ロバート・マーティンが言うように、もろいのです。インターフェイスが変更された場合は、テストを変更する必要があります。したがって、UI を使用したテストは、UI の成熟度によって異なります。プロジェクトの後半では、UI はより安定しているため、UI を介してテストすることはより理にかなっています。また、UI を介していくつかのものをテストすることは、困難または複雑です。

ビジネス層をテストしている場合は、コーナー条件をより簡単にテストでき、UI の変更の影響を受けにくくなります。ただし、おっしゃる通り、この種のテストができるようにソフトウェアを作成する必要があります。それを許可するために新しいインターフェースを公開する必要があるかもしれませんが、それを維持する必要があります。私の経験では、開発者にこの種のインターフェースをサポートしてもらうのは非常に難しい場合があります。実際のインターフェースほど重要ではないと考えられています。しかし、それは常に可能です。この種のインターフェースは開発者からの同意が必要です。そうしないと、時間の経過とともに「サポートされなくなる」リスクがあります。

外部インターフェイスがない場合は、それを求めてみてください。それが良い考えだと彼らを説得できるかもしれません。プロジェクトの開始時の方が簡単です。

外部インターフェイスがある場合は、それを使用してビジネス ロジックをテストします。

それ以外の場合は、UI を使用してこれらをテストする必要があります。1 つの方法として、UI を使用してスモーク テストを行い、次の質問に答えることができます。このソフトウェアはテスト可能ですか? 開発者からビルドを取得するたびにテストする必要がある一般的なことを考えてください。ログインできますか、ログアウトできますか、メインページは表示されますか、簡単な注文はできますか? これらのうち 5 つまたは 6 つを選択し、これらをテストするための自動テスト スイートを構築します。これらのテストは、UI を介して実際にテストできる機能の量と、その有用性に関するガイドとして使用してください。

その後、開発者のところに行って外部インターフェースを要求するときに、これを引数として使用できます。

于 2011-07-26T10:39:47.157 に答える
9

残念ながら、両方が必要です。一般に、フィットネスなどを使用してビジネス層のテストを自動化する必要があります。基本的に UI を回避すると、定義されたビジネス ルールが常に機能することが保証されます。UI による自動化には、さらに多くのメンテナンスが必要になる場合があります。ただし、UI の多くはプラットフォーム (例: c#/Winforms) によって提供されるメカニズムを使用するため、プラス面としては、UI テストの大部分は、他のタイプのテスト (ビジネス層など) で十分にカバーされている場合に変更が加えられた場合にのみ実行できます。 . 自動化されたテストは維持および更新する必要がありますが、UI テストはより多くのメンテナンスが必要になる傾向があり、時間の経過とともに信頼性が低下することがよくあります。

于 2011-07-26T03:53:04.243 に答える
3

UI テスト、Q&A スタイルについてのみ話すことができます。

A) 私たちの UI はすでに安定していますか、それともかなり変更される可能性がありますか?

安定- 自動化により付加価値がもたらされる

変更される可能性があります- 自動化しないでください。これらのテストの維持 (やり直し) により多くの時間を費やすことになります。


B) UI は安定していますが、可能な限り自動化する必要がありますか?

いいえ!

1) すべてのテスト スクリプト (たとえば、100) を用意します。

2) 自動化できるものを決定する (80)

3) 優先順位 (ブロッカー、クリティカル、マイナー) で並べ替えます

4) ブロッカーとクリティカルなものを最初に自動化します (たとえば、20/80)

それがどのように機能するかを確認し、必要に応じてさらに自動化してください。


C) UI を自動化する場合、他にどのような要素を考慮する必要がありますか?

すべてを以下に示します (テスト ピラミッドは、Mike Cohn によって開発された概念です)。

ここに画像の説明を入力

于 2016-06-25T12:23:40.293 に答える
1

テスト用のインターフェイスを作成することは「テスターの夢」ですが、それを有効または無効にすることは、デプロイにとっては悪夢です。異なるスモーク テストを使用した「テスト ビルド」と「デプロイ ビルド」が必要になる場合があります。しかし、u limit UI がテストを自動化する限り、どんな妥協も有効です。

于 2011-08-01T16:34:37.757 に答える