問題タブ [database-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.

0 投票する
6 に答える
1600 参照

tdd - データベース統合テスト

データ アクセス レイヤーのみ、またはアプリケーション スタックの大部分を使用して統合テストを行っている場合。複数のテストが同じデータベースで実行されている場合、それらが互いに衝突するのを防ぐ最善の方法は何ですか?

0 投票する
2 に答える
2756 参照

nhibernate - NHibernate セッションをフラッシュして、トランザクションをコミットせずに新しいセッションを取得できますか?

永続化のためにCastle ActiveRecordを使用しています。次のことを行う永続化テストの基本クラスを作成しようとしています:

  • テスト ケースごとにトランザクションを開き、テスト ケースの最後にロールバックして、テスト ケースごとにスキーマを再構築しなくても、テスト ケースごとにクリーンな DB を取得できるようにします。
  • NHibernate セッションをフラッシュし、テストの途中で新しいセッションを取得する機能を提供して、永続化操作が NHibernate セッションだけでなく DB に実際にヒットしたことを確認できるようにします。

基本クラス ( ) が機能していることを証明するためにARTestBase、次のサンプル テストを作成しました。

これが基本クラスでの私の最善の努力です。を正しく実装Flush()しているため、3 番目のテスト ケースはパスします。ただし、トランザクションはロールバックされないため、2 番目のテストは失敗します。

インメモリ データベースでカスタム SQLite プロバイダーを使用していることに注意してください。このブログ投稿から引用した私のカスタム プロバイダーは、スキーマを維持するために常に接続を開いたままにします。これを削除して通常の SQL Server データベースを使用しても、動作は変わりません。

必要な動作を実現する方法はありますか?

0 投票する
3 に答える
721 参照

unit-testing - DbUnitで複数のテストが同時に実行されるのを防ぐ方法は?

私はプロジェクトのテスト環境に取り組んでおり、DbUnit.NET を使用して多くのデータベース相互作用テストを行うことを検討しています。ただし、非常に大きな質問が 1 つあります。

私たちは Oracle に対して実行しており、開発者ごとに個別のテスト DB インスタンスを設定することは実際には現実的ではありません (特に、すでに時間に縛られている DBA が 1 人しかいないため)。これは、すべての開発者と継続的インテグレーション サーバーがすべて同じ DB スキーマを使用する必要があることを意味します。

では、質問に移ります: 複数の人が同時にテストするのを防ぐ良い方法はありますか? テストが実行されていることを示すレコードを db テーブルに入れ、テストが終了したら削除するのは簡単ですが、NUnit にはテスト セッションの開始時と終了時に何かを実行する方法がありません。

他の考えはありますか?それはかなり一般的な問題のようです...または、テストを実行する可能性のある開発者/テスターごとに、実際には誰もが個別のDBインスタンスを実行していますか?

0 投票する
3 に答える
236 参照

sql - データベースユニットテストを行う良い方法は何ですか

私たちはデータベースモデリングにPowerDesignerを使用しており、モデルで何かが変更されるたびに(列名、データ型など)、依存するすべてのストアドプロシージャをテストし、それに応じて修正します。

データベースの単体テストを行うための最良のツールは何でしょうか。

ありがとう

0 投票する
3 に答える
162 参照

php - データベースのテストを行う最良の方法は何ですか (MYSQL 固有)

現在、データベースで何かをテストしています。ワードプレスのデータベースです。書き込み、削除、およびその他の操作を行う必要があります。ご存知のように、すべての新しい投稿が常に次に高い ID を継承するようにするインデックス作成メカニズムがあります。

このデータベースは、使用されているデータベースのコピーであると考えてください。それは以前に書かれています。したがって、テストが終了したときに同じになることを確認する必要があります

今のところ、私の唯一の解決策はバックアップを作成することです。したがって、計画されたテストの一部が終了した場合は、それをバックアップして、別のコピーで次のテストを開始します。

幸いなことに、データベースのサイズはごくわずかです。削除してコピーしてバックアップするのは簡単です。しかし、このデータベース テストの方法は部分的な解決策にすぎないことはわかっています。あまりにも多くのバックアップ コピーを作成する必要があります。データベースのサイズが大きい場合、どうすればよいかわかりません。非常に長いテストの悪夢になるでしょう。

ロールバックと同じように機能するソリューションがあるのだろうか。したがって、データベースをロックし、新しいエントリをある種のキャッシュとして配置するだけです。消去するか、データベースに書き込むことができます。

私は mysql と phpmyadmin を使用し、それを使用してカスタム ソリューションを開発しました。

編集 ::: PHP ソリューションを開発するときに、データベースで効果的にテストを行う方法は?

0 投票する
6 に答える
3016 参照

unit-testing - NHibernate ですべてのデータベース データを削除するには?

NHibernate を使用してデータベース内のすべてのデータを削除することは可能ですか。各単体テストを開始する前にそれを行いたいです。現在、データベースを削除して再度作成していますが、これは私にとって受け入れられる解決策ではありません。

================================================== ========

わかりました、これが結果です。これをデータベース (Postgre) でテストしています。CreateSchema(1)、DanP ソリューション(2)、apollodude217 ソリューション(3)をテストします。各メソッドでテストを 5 回実行し、平均時間をとります。

ラウンド 1 - 10 テスト
(1) - ~26 秒
(2) - 9.0 秒
(3) - 9.3 秒

ラウンド 2 - 100 回のテスト
(1) - さあ、私のマシンではそれをしません
(2) - 12,6 秒
(3) - 18,6 秒

これ以上のテストでテストする必要はないと思います。

0 投票する
1 に答える
474 参照

android - Androidでテストデータベースにデータを入力する方法は?

ProviderTestCase2<>を拡張するテストクラスがあります。

このテストクラスデータベースにいくつかの.dbファイルのデータを入力したいと思います。

.dbファイルをProviderTestCase2のモックコンテキストにプッシュする特定の方法はありますか?

それ以外の場合は、.dbファイルからデータベースにデータを入力する方が簡単です。

どうもありがとうございます!!

0 投票する
8 に答える
45184 参照

database - データベース単体テストを行う方法は?

データベースを使用するアプリケーションを開発する場合、データベースの単体テストを行う必要があると聞いたことがあります。

データベース単体テストのベスト プラクティスは何ですか? DB単体テストを行う際の主な懸念事項と、それを「正しく」行う方法は何ですか?

0 投票する
4 に答える
7798 参照

mysql - MySQLでのユニットテストに最適なツール

最近、MySQLで多くのsprocプログラミングを行っています。
そして、私はそれが好きだと言わなければなりません。多くの。

ただし、これらの赤ちゃんをデバッグするのは面倒です。
My MySQLのデバッグに満足をもたらすツールを知っている人はいますか?

0 投票する
1 に答える
271 参照

database - Microsoft デモ データベースの著作権、オープン ソースのデモ データベースは?

LGPLv3でライセンスされている私のオープン ソース プロジェクトでは、小さなデモ データベースが必要です。プロジェクトは複数のデータベースを対象としているため、テストの一貫性を保つために、すべてのデータベースに対して同じデモ データを使用する単純な SQL スクリプトを用意するとよいでしょう。

Microsoft が提供する SQL Server 用の小さなデモ データベースがあります。これは calles pubsです ( Northwindと共に SQL Server 2000 用のデモ データベースパッケージに含まれています)。SQL スクリプトとドロップイン データベース ファイルの 2 種類があります。スクリプトは次のように著作権で保護されています。

SQLite 用の同じデータでデータベースを生成するようにスクリプトを修正しました。しかし、これはおそらくあまり良い考えではないことに気づきました。そこで、いくつかの質問を明確にしたいと思います。

  1. 著作権を保持したまま、オリジナルの SQL スクリプト/MDF ファイル Microsoft スクリプトをプロジェクトに含めることはできますか?
  2. 変更された SQL スクリプト/sqlite データベースを含めることができますか、また含める必要がありますか? はいの場合、そのスクリプト/データベースの著作権は誰が所有しますか?
  3. 私の目的に使用できるオープン ソースのデモ データベースはありますか (SQL スクリプトを含めて変更します)? たとえば、これは?

最初の 2 つは「いいえ」、3 つ目は「はい」であるとほぼ確信しています。しかし、まだわかりません。

更新: BIRTChinookの 2 つのベースが見つかりました。1 つ目は Eclipse ライセンス、2 つ目は MS-PL です。これらを使用できるかどうかはわかりません。

更新 2: それほど大したことではないようです。コードのさまざまな部分に独立したライセンスを使用できることに気付きました。これはプロジェクト コードの重要な部分ではなく、単なるテスト データベースであるため、元のライセンスの BSD、Eclipse、MS-PL を使用して作業し、含めることができます。

だから今の主な質問は、どれを使うべきかということです. 条件は、かなり単純 (約 10 個のテーブル) である必要があり、スクリプトは大幅な変更を加えることなくほとんどの db エンジンで実行する必要があります。Chinookは理想的な選択肢のように思えますが、主要なソフトウェア プロバイダーからのものではありません。すでに人気があり、「テスト済み」のデータベースを使用したいと考えています。

最終更新: いくつかの調査/検索の後、データベース エンジンの一部の機能が極端に制限され、テストが非現実的になるため、1 つのテスト データベースを使用してすべてをルール化するという考えを断念しました。そのため、エンジンごとに異なるデータベースを使用します。MSデータベースに関しては、それは単なるパラノイアであり、MSはおそらく私を訴えることはないと思います:)。