問題タブ [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 - どこでモッキングを行いますか-直接の依存関係、または境界を拡大します...?
したがって、私は C# と .NET での単体テストとモックの両方についてかなりの初心者です。私はそれぞれ xUnit.net と Rhino Mocks を使用しています。私は改宗者であり、純粋な TDD ではなく、動作仕様の作成に専念していると思います。ああ、セマンティクス。本質的に、自動化されたセーフティネットが上記で機能することを望みます。
しかし、ある考えが私を襲った。私はインターフェイスに対してプログラミングを行いますが、依存関係を切り離すという利点はそこにあります。売却。ただし、私の動作検証スイート (別名ユニット テスト ;-)) では、一度に 1 つのインターフェイスの動作をアサートしています。のように、一度に 1 つのインターフェースの実装で、その依存関係がすべてモックアウトされ、期待値が設定されます。
このアプローチは、クラスが連携する依存関係に対して適切に動作することを検証し、さらに連携する依存関係のそれぞれに依存して同じ品質契約に署名することを検証する場合、私たちは成功しているようです。十分に合理的に思えます。
しかし、考えに戻ります。一緒に配線された具体的な実装のユニットに対してテストフィクスチャがアサートし、モックされた依存関係に対してその内部動作をテストしている半統合テストに価値はありますか? 読み直したところ、おそらくもっとうまく表現できたはずだと思います。明らかに、ある程度の「まあ、それがあなたにとって価値があるなら、それを続けてください」と思うでしょう-しかし、他の誰かがそれを行うことを考え、コストを上回る利益を得ましたか?
automated-tests - 統合テストに関する良い本やその他のリソースはありますか?
単体テストの方法に関する本は十分にあります。
統合テストに関する優れた本 (またはその他の優れたリソース) を知っていますか?
私が特に興味を持っているのは、
- スコープを定義する (単体テスト < 統合テスト < 自動機能テスト)
- 良い統合テストと悪い統合テストとは
- データアクセス
- サービス層
- 構成
- 統合テスト用の Spring またはその他の DI コンテナー
- ...
?
unit-testing - TDD と ADO.NET エンティティ フレームワーク
最近、ADO.NET Entity Framework で遊んでいますが、開発中のプロジェクトのニーズに合っていることがわかりました。また、その非侵襲的な性質もクールだと思います。
既存のデータベースからデータ モデルを生成した後、生成されたモデルとビジネス ロジックを統合するタスクに直面します。より具体的には、DAL インターフェイスのモック/スタブを介してデータ ストアと対話するクラスの統合テストに慣れています。問題は、ADO.NET Entity Framework を使用してこれを行うことができないことです。ADO.NET Entity Framework が生成するエンティティはインターフェイスのない単純なクラスだからです。
問題は、ADO.NET Entity Framework を使用するアプリケーションの開発にTDD アプローチを適用するにはどうすればよいかということです。これは可能ですか、それとも別の DAL 生成ツールセットに移行する必要がありますか?
unit-testing - 基本的に永続化を行う単体テスト コード - 気にする必要がありますか?
データベースとやり取りするAPIを使用しています。この API には、要素を照会、ロード、およびデータベースに保存するためのメソッドがあります。新しいインスタンスの作成などを行う統合テストを作成し、そのインスタンスに対してクエリを実行すると、正しいインスタンスが見つかることを確認しました。これで問題ありません。
このコードの単体テストをより高速に実行したいと考えていますが、単体テストの有用性と、実際に何かが得られるかどうか疑問に思っています。たとえば、API を介してある要素を保存するためのクラスがあるとします。これは疑似コードですが、私が使用している API がどのように機能するかを理解してください。
m_api メンバーをモックする単体テストを書く価値はありますか? さまざまな呼び出しのいずれかが失敗した場合に false が返されること、およびさまざまな呼び出しがすべて成功した場合に true が返されることをテストできるようです。さまざまなメソッドが期待されるパラメーターで呼び出されるという期待を設定できますが、これは便利ですか?このコードをリファクタリングして、API のいくつかのわずかに異なるメソッドを使用しても同じ結果が得られるようにすると、テストが中断され、テストを変更する必要があります。このもろさはあまり役に立たないようです。
このようなコードの単体テストを気にするべきですか、それとも私が持っている統合テストに固執するべきですか?
c - C でネットワーク アプリケーションの統合テストを行う方法
ネットワークコードに関しては、単体テストから統合テストにうまく移行したことはありません。
だから私の質問は:単純なシングルスレッドのクライアント/サーバーベースのネットワークアプリケーションが与えられた場合、クライアントとサーバーの両方を現在お気に入りのテストスイートに統合するにはどうすればよいですか (私は現在checkを使用しています)。
もちろん、目標を達成するために単体テスト スイートを変更しても構わないと思っています。
編集:答えには感謝していますが、統合テストを単体テストフレームワークに統合する魔法の方法をもっと探していました(可能であれば)。fork () などを適用しても、あまり副作用が発生しない場合のように。
unit-testing - UnitTestsとIntegrationテストを同じプロジェクトに混在させる必要がありますか?
私はNUnitを使用してC#コードをテストしており、これまでユニットテスト(高速実行テスト)と統合テスト(長時間実行)を別々に、別々のプロジェクトファイルに保存してきました。単体テストと統合テストの両方を行うためにNUnitを使用します。テストを分類できるように、NUnitが提供するcategory属性に気づきました。これは疑問を投げかけます、私はそれらを一緒に混ぜて、それらを区別するために単にcategory属性を使うべきですか?
asp.net - ユニット/統合テスト、どれくらい細かくする必要がありますか?
NUnit/Watin を使用して、ASP.Net Web フォーム アプリの UI をテストしています。TDD、単体テスト、統合テストなどに関する高レベルの概念は理解していますが、これまでそれらを使用する機会はあまりありませんでした。
したがって、データ入力フォームで検証ロジックをテストする場合、各検証エラー (つまり、フィールド x が必要) をトリガーするテストを 1 つ作成するか、スローされる検証エラーごとに個別のテストを作成する必要があります。フォームによって。これは単にスタイルの問題ですか、それとも、検証ロジックのすべての可能な組み合わせにヒットするテストではなく、いくつかのテストを作成する正当な理由がありますか?
疑似コード:
対。
java - Maven でのテスト用に JPA を構成する方法
デプロイに使用される通常のファイルの代わりにテストに使用されるように、Maven プロジェクトに 2 番目の persistence.xml ファイルをセットアップする方法はありますか?
私はpersistence.xmlをsrc/test/resources/META-INFに入れてみました。これはtarget/test-classes/META-INFにコピーされますが、target/classes/META-INFのようです(src/mainからのコピー/resources) が優先mvn -X test
されますが、クラスパス エントリが正しい順序でリストされています。
JPA 構成のデプロイメント バージョンを変更する必要なく、理想的にはプロジェクト チェックアウトの直後に、ローカルでの微調整を必要とせずに、単純な hsqldb 構成に対してテストを実行できるようにしたいと考えています。
unit-testing - RSpec vs Cucumber (RSpec ストーリー)
Rails アプリケーションと Cucumber (以前の rspec-stories) の仕様はいつ使用する必要がありますか? もちろん、スペックの仕組みと積極的な使用方法の両方を知っています。しかし、Cucumber を使用するのはまだ奇妙に感じます。これに関する私の現在の見解は、クライアント用のアプリケーションを実装していて、システム全体がどのように機能するのかまだ理解していない場合、Cucumber を使用すると便利だということです。
しかし、自分のプロジェクトを行っている場合はどうなりますか? ほとんどの場合、システムの各部分がどのように相互作用するかを知っています。私がする必要があるのは、一連の単体テストを作成することだけです。キュウリが必要な場合、どのような状況が考えられますか?
そして、対応する 2 番目の質問として、Cucumber のストーリーを書く場合、仕様を書かなければなりませんか? 同じことの二重検査ではないでしょうか?
testing - あなたの会社/仕事/プロジェクトで統合テストはどのように実行されますか?
私が働いている場所で統合テストの方法を改善したいと思っています。また、このプロセスが他の場所でどのように行われているかを知りたいです。
次のようなこと:
- テスト計画の作成が開始
される時期 - テスター、開発者、およびテストされるもの (アプリケーション全体または変更) の間の割合 -
統合テストに使用される方法の種類。
実際、私は Web アプリケーションをテストしており、テスト計画は Test Link で管理されています。見つかったバグは Bugzilla で報告されます。Selenium RC でテストを自動化しようとしていますが、Selenium で実行する計画とコードを書くのに時間がかかります。私は 3 つ以上のアプリケーションをテストしているので、時間はありません。
私の問題のほとんどは、テスト環境と本番環境の違いが原因です。しかし、テストの開始には時間がかかりすぎます。誰かが今日修正を完了した場合、私がテストを開始するまでに約 3 週間かかります。そして、テスト プロセス キューは増え続けています。
誰かがテストプロセスを改善する何かを提案してくれたら本当に良いでしょう (より多くの人がテストするなど)。しかし、ほとんどの場合、テストプロセスが他の場所でどのように機能するかを聞きたいです。
ありがとう。