問題タブ [integration-testing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
unit-testing - 統合テストを作成する際に直面した課題は何ですか?
統合テストを作成する際に直面した課題は何ですか? 単体テストを書くことは統合テストを書くのに役立ちますか?
unit-testing - 統合テストに必要なデータベース データ。API呼び出しまたはインポートされたデータを使用して作成されましたか?
この質問は、多かれ少なかれプログラミング言語に依存しません。しかし、私は最近 Java に夢中になっているので、そこから例を引き出します。OOP のケースについても考えているので、メソッドをテストする場合は、そのメソッド クラスのインスタンスが必要です。
単体テストのコア ルールは、自律的であるべきであり、依存関係からクラスを分離することで達成できるということです。それにはいくつかの方法があり、 IoCを使用して依存関係を注入するかどうか(Java の世界では、注入機能を提供する Spring、EJB3 およびその他のフレームワーク/プラットフォームがあります) および/またはオブジェクトをモックするかどうか (Java の場合は、JMockおよびEasyMock ) を使用して、テスト対象のクラスをその依存関係から分離します。
異なるクラス*でメソッドのグループをテストする必要があり、それらが適切に統合されていることを確認する必要がある場合は、統合テストを作成します。そして、ここに私の質問があります!
- 少なくとも Web アプリケーションでは、多くの場合、状態はデータベースに永続化されます。単体テストと同じツールを使用して、データベースからの独立性を実現できます。しかし、私の謙虚な意見では、統合テストにデータベースを使用しないことがあまりにも嘲笑されている場合があると思います (ただし、異議を唱えることは自由です。データベースをまったく使用しないことは、質問を無関係にするため、有効な答えでもあります)。 )。
- 統合テストにデータベースを使用する場合、そのデータベースにどのようにデータを入力しますか? 私は2つのアプローチを見ることができます:
- 統合テスト用のデータベース コンテンツを保存し、テストを開始する前にロードします。それが SQL ダンプ、データベース ファイル、XML などとして保存されている場合、興味深い情報が得られます。
- API 呼び出しによって必要なデータベース構造を作成します。これらの呼び出しは、おそらくテスト コード内でいくつかのメソッドに分割され、これらのメソッドのそれぞれが失敗する可能性があります。統合テストが他のテストに依存していると見なされる可能性があります。
テストに必要なデータベース データが必要なときに確実に存在するようにするにはどうすればよいですか? また、なぜその方法を選んだのですか?
興味深い部分は動機にあるので、動機とともに答えてください。「それがベストプラクティスです!」と言っているだけであることを忘れないでください。本当の動機ではなく、読んだり誰かから聞いたりしたことを繰り返しているだけです。その場合、それがベストプラクティスである理由を説明してください。
*技術的に正しくない可能性がありますが、単体テストの定義に、同じクラスの (同じまたは他の) インスタンスで他のメソッドを呼び出す 1 つのメソッドを含めています。お気軽に訂正してください。
continuous-integration - 統合テストを自動化するには?
何か知りたいのですが、テストを簡単にするために、単体テスト中にモックを使用して、外部依存関係なしで必要なコンポーネントのみをテストする必要があることを知っています。しかし、ある時点で、データベース、ファイル、ネットワークなどとやり取りするクラスを徹底的にテストする必要があります。
私の主な質問は、これらのクラスをテストするために何をしますか?
CI サーバーにデータベースをインストールするのは良い方法だとは思いませんが、他に選択肢はありますか?
すべての外部依存関係を使用して、他の CI ツールを使用して別のサーバーを作成する必要がありますか?
単体テストと同じくらい頻繁に CI で統合テストを実行する必要がありますか?
これらのコンポーネントを手動でテストするには、フルタイムの担当者が担当する必要があるのではないでしょうか? (または、アプリケーションの構成ファイルの編集など、テスト環境を作成し、クラスと外部依存関係の間の相互作用を構成する責任があります)
現実世界でどう過ごしているのか知りたいです。
eclipse - Eclipse 機能統合テストのベスト プラクティス
Equinox Declarative Services (DS) を使用して実行時にプラグインを結び付け、いくつかの Eclipse プラグインで構成される Eclipse 機能を開発しています。分点構成を検証するための統合テストを追加したいと思います。
特に確認したいのは、
- サービス コンポーネントは期待どおりに結合します
- バンドルがアクティブ化されます
プラグインは期待どおりに情報を共有します(編集 2を参照)
さらに、この統合テストを、Eclipse PDE ヘッドレス ビルドを使用した継続的統合プロセスの一部にしたいと考えています (こことここで説明されているように)。
私の質問は次のとおりです。私が特定した制約内でこのタイプの統合テストを容易にするフレームワーク、ツール、またはプラクティスをお勧めできますか?
これまでに 2 つのリードを見つけました。
- Spring Dynamic Modulesには、OSGi 統合テスト用のフレームワークが含まれています。ただし、簡単な Spring DM テストを Eclipse 内で実行することはできませんでした。「プラットフォームは既に実行されています」と不平を言います。
- Pax Exam (以前の Pax Drone) は、もう 1 つの OSGi 統合テスト フレームワークです。
編集:明確にするために、各プラグインには、コンポーネント定義xmlファイルで構成されたOSGiサービスコンポーネントがあります。これらの構成ファイルの 1 つに誤りがあっても、プラグインの依存関係が壊れることはなく、実行時まで簡単に気付かれない可能性があります。このような障害を検出するには、統合テストが必要です。
編集 2 : これまでのところ、マルチプラグイン Eclipse 機能は機能/製品レベルで統合テストされていないという Uri の主張 (以下を参照) を確認するために、私が見たものはすべて確認しているようです。サービス コンポーネントが正しくバインドされていることを少なくとも自動的に確認できるのであれば、包括的な統合テストを実行しなくてもかまいません。
私のアプローチ(まだ機能していません):
Eclipse Plug-in Test 起動構成を使用してコードを実行し、Eclipse 製品を「実行するプログラム」として起動しています。テストを実行すると、バンドルがアクティブであることを確認できますが、サービス コンポーネントはアクティブにならず、getServicesInUse メソッドと getRegisteredServices メソッドは null を返します。遅延アクティベーションの問題である場合に備えて、各バンドルからクラスをロードしましたが、それは役に立ちませんでした。また、すべてのサービス コンポーネントが「即時」コンポーネントであることも確認したため、バンドルがアクティブ化されたらすぐにアクティブ化する必要があります。 Equinox DS がその魔法を発揮しないのはなぜですか?
unit-testing - すでに機能テストを行っている場合、単体テストと統合テストを行う必要がありますか?
私の会社の人々は、単体テストを多くの余分な作業と見なしており、既存の機能テストよりもメリットが少ないと考えています。単体テストと統合テストは価値がありますか? テストを念頭に置いて設計されていない大規模な既存のコードベースに注意してください。
unit-testing - どのような種類の単体テストがビジネス価値で最も効果を発揮しますか?
私の質問は、ある種の単体テストは価値があると人々がすでに信じており、実際にそれらを現在のプロジェクトに書き込んでいることを前提としています。また、コードの一部の単体テストは、些細な機能をテストしているため、書く価値がないと仮定しましょう。例としては、ゲッター/セッター、および/またはコンパイラー/インタープリターがすぐにキャッチするものがあります。反対の仮定は、「興味深い」コードはテストする価値があるということです。
ruby-on-rails - Shoulda: コントローラ フィルタのテスト
そこで、Rails のテスト状況を調査することにしました。ここでいくつかの受け入れられた回答を読んだ後、Railsのテストドキュメントがいかにひどいものであるかについて話しているので、私は同意し始めています。これまでのところ、私はどうやら Rails のテストを理解している人ではないようです。フレームワークについては十分に理解しているのですが、そう思っていました。
Shoulda は使用するのに適したプラグインであると読んだので、使用しています。私の最初のテスト:「メソッドに ID パラメーターが必要であることを確認する」...うーん、これは理にかなっていると確信しています。コントローラーの before_filter :validate_id が実際に機能することを確認したいと思います。これは、インデックスの GET が想定どおりに機能することをテストするために必要な 3 つのステップのうちの 1 つです。不合格!明らかに、テスト環境は通常の Rails スタックとは異なる方法で実行されます。
ActionController::TestCase が get {} を使用している場合、フィルターを含めることに関する情報はほとんど得られません。これを理解するには、どこで「Rails テスターのクラブ」に参加すればよいですか?
ruby-on-rails - マルチサイトアプリでの統合テストの長さのためにサブドメインを設定する方法は?
統合テスト中にサブドメインを変更する最良の方法は何ですか?
jamis buck は、ホストの使用を提案しました! ここ: http://weblog.jamisbuck.org/2006/3/9/integration-testing-in-rails-1-1#12
ただし、Rails API によると、ホスト! 次の単一のリクエストのホストのみを変更します。機能テストで @request.host のようなものを探しています。これにより、テスト全体でサブドメインを使用できます。
java - EJB 3.0 コンポーネントのテスト
JUnit を使用した EJB 3.0 コンポーネントの統合テストに関していくつか質問があります。
JUnit テストでは、セッション Bean リソース ローカル エンティティ マネージャーに注入して、ejb コンテナーを「シミュレート」できます。しかし、もし...
ejb メソッドのトランザクション属性が適切に処理されているかどうかをテストする必要がある場合はどうすればよいでしょうか? これはコンテナの外で行うことができますか?そうでない場合、コンテナ内でテストする最も簡単な方法は何ですか?
各テストの前に、db にいくつかのテスト レコードがあることを確認する必要がある場合はどうすればよいでしょうか? テストの実行後 (失敗した場合でも) db からテスト データが消去されることをどのように保証しますか?
asp.net - 単体テスト ユーザーのログイン/ログアウト
私は単体テストの概念全体に非常に慣れていないので、「単体テスト」という言葉が間違っている場合は申し訳ありません。それは実際には「統合テスト」かもしれないと思いますか?
とにかく、ログイン、ログアウト、パスワードの変更などにasp.netのメンバーシップフレームワークを使用しています。ただし、認証チケットの更新、登録時の別のテーブルへのエントリの追加、パスワード変更時の認証チケットの更新など、いくつかの追加作業を行いますなど
このような場合のテストを作成する最善の方法は何ですか?