タグ付けされた質問 「testing」

そのシステムの予想される動作に対するソフトウェアシステムの動作の確認。

6
パラメータ化されたテスト-いつ、なぜそれらを使用しますか?
最近仕事では、パラメータ化テストに関して意見の違いがあります。通常、TDDスタイルを使用します(少なくとも試してみます)。そのため、このアプローチの利点を理解しています。ただし、パラメータ化されたテストがもたらすゲインの表示に苦労しています。参考のために、RESTfulインターフェースを介して公開されるサービスとそのライブラリーに取り組みます。 これまで見てきたのは、少なくともEclipse内でJUnitを使用するテストです。 詳細がない-テストが失敗すると、失敗の原因となったパラメーターを見ることは非常に困難です 作成が複雑なことが多い コードが記述された後に作成される傾向があります-厳密には欠点ではありませんが、コードを開始するときにパラメータ化されたテストを念頭に置いていますか? 誰かが本当に便利な場所の例や、それらを使用するための良いヒントさえあれば素晴らしいでしょう。私は個人的にそれらを使用することを選択しないので、私が頑固ではないことを確認したいと思います。


2
gitリポジトリが著作権で保護されたメディアを歴史上持っているプロジェクトをオープンソースにする方法は?
無料のライセンスでオーディオフィンガープリントソフトウェアプロジェクトをリリースしたいのですが、リポジトリには著作権で保護されたオーディオファイルが含まれています。現在、テストケースではこれらのファイルも使用しています。最大のバージョン履歴で、著作権を侵害せずにコードを公開するにはどうすればよいですか? 詳細: コードはgitでバージョン管理されています。リリース前にすべてを1つのブランチに戻します。 400 MBのオーディオデータがあります。一部のファイルは、たとえばJamendoの無料ライセンス音楽であり、その他のファイルは私たちの個人コレクションのMP3です。 どのようなアプローチをとっても、プロジェクトの履歴を破壊しないように、常に元のリポジトリの不変のコピーを保持します。 主な質問:パブリックリリースの処理方法 問題のファイルのすべての履歴をgitリポジトリから消去し、変更されたリポジトリをリリースします。(v64 はこれを行う方法を指摘しました。) または、コードの現在の状態のスナップショットを取得し、プレリリースコードの公開履歴を気にすることさえしません。 副次的な質問:プロジェクトの初期段階でプライベートコードまたはメディアが必要になる場合があるので、そもそもこのジレンマをどのように回避できたでしょうか?

2
RailsのRSpec vs Test :: Unit
Ruby on RailsでTest :: UnitからRSpecに切り替えることで得られる利点を、RSpecについて時々読んでいるにもかかわらず、私は本当に確信していません。 ほとんどのRailsプロジェクトがRSpecを使用しているように見えるのは、RSpecについての何ですか? (一方が他方より優れていることを明確に示すいくつかのコード例は大歓迎です)

8
インタビュー中のホワイトボード「テスト」:(ホワイトボード)コードをバックアップする正当な方法 [閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 わかりましたが、ホワイトボードコードにエラー(「;」のようなタイプミスや欠落)があると、多くの場合、インタビューポイントがかかります。それを避けることは、必然的に1つの校正コードを何度も繰り返します(時間と神経エネルギー/集中力を失う)、またはより単純な(したがって効果の低い)アルゴリズムを使用します-そして、これらの両方の方法は再び「高価」です! それでは、(ユニット)テストフレームワークを自由に使えるように、エレガントで効果的なコードを高速で書いて、それを(ホワイトボード上で)普通にテストしてみませんか? 誰もがこのアプローチを試した/見ましたか?アイデア全体に価値がありますか? [これはもちろん、ペンと紙のケースにも当てはまります]

5
厳密なTDDとDDDを組み合わせる方法
TDDは、テストによって導かれるコードの設計に関するものです。 したがって、通常、典型的なレイヤーは事前に構築されていません。それらはリファクタリング手順でわずかに表示されるはずです。 ドメイン駆動型設計には、アプリケーション層、インフラストラクチャ層、ドメイン層、永続層などの十分に確立された層を定義する多くの技術的パターンが含まれます。 DDDプロジェクトのコーディング部分をゼロから開始するには、どのように動作するのですか? DDDの技術的なパターンに適合するために、設計をテストから厳密に浮かび上がらせる必要がありますか? または、それらの空のレイヤー(アプリケーション、エンティティ/ドメインサービス、インフラストラクチャ)を作成し、TDDをそれぞれに個別に適合させる必要があります(モックを使用してレイヤー間を分離します)。

1
APIクライアントとラッパーのユニットテスト
私は、開発中のAPIクライアントライブラリを単体テストするための最良の方法を見つけようとして、一周して回りました。このライブラリには、Client基本的にAPIとの1:1マッピングを持つWrapperクラスと、の上部でよりユーザーフレンドリーなインターフェイスを提供する追加のクラスがありますClient。 Wrapper --> Client --> External API 私は最初の両方に対してテストの束を書いたClientし、Wrapper効果的にちょうど彼らが前方(上で動作するものは何でもの適切な機能にそのことをテストし、Wrapper上の動作Client、およびClientHTTP接続で動作します)。しかし、インターフェイスではなくこれらのクラスの実装をテストしているように感じるので、これに不快感を覚え始めました。理論的には、クラスを別の完全に有効な実装に変更することはできましたが、呼び出されると予想されていた関数が呼び出されていないため、テストは失敗します。それは私にとって脆弱なテストのように聞こえます。 この後、クラスのインターフェースについて考えました。テストでは、クラスが実際に行う方法ではなく、クラスが実際に意図したジョブを実行することを確認する必要があります。どうすればこれを行うことができますか?最初に頭に浮かぶのは、外部APIリクエストをスタブ化することです。しかし、私は外部サービスを単純​​化しすぎることに神経質です。私が見たスタブAPIの例の多くは、定型応答を提供しているだけです。これは、コードが偽のAPIに対して正しく実行されることをテストするだけの非常に簡単な方法のようです。別の方法はサービスをモックすることです。これは実行不可能であり、実際のサービスが変更されるたびに最新の状態に維持する必要があります。 最後に、私はこれを に、プログラマーSEに関する別の回答ました。 リモートAPIクライアントの仕事は、特定の呼び出しを発行することです-これ以上でもそれ以下でもありません。したがって、そのテストでは、これらの呼び出しを発行することを確認する必要があります-これ以上でもそれ以下でもありません。 そして今、私は多かれ少なかれ確信しています-テストするとき、テストClientする必要があるのは、APIへの正しいリクエストを行うことだけです(もちろん、APIが変更される可能性は常にありますが、私のテストは合格し続けます-しかしそれは統合テストが役立つ場合)。以来Clientちょうど1:APIと1のマッピング、私の懸念は実際には適用されません別の有効な実装から変更について前に-の各メソッドの唯一の有効な実装がありますClient。 しかし、私はまだにこだわっています Wrapperクラスにます。次のオプションが表示されます。 Clientクラスをスタブ化し、適切なメソッドが呼び出されることをテストします。このように、私は上記と同じClientことをしていますが、APIの代用として扱います。これは私が始めたところに私をすぐに戻します。繰り返しになりますが、これはインターフェースではなく実装のテストの不快感を与えてくれます。のWrapper非常によく、完全に別のクライアントを使用して実施することができます。 モックを作成しますClient。ここで、モックを作成する方法を決定する必要があります。サービスの完全なモックを作成するには、多くの労力が必要になります(ライブラリ自体に行った以上の作業)。API自体はシンプルですが、サービスは非常に複雑です(基本的に、そのデータに対する操作を備えたデータストアです)。そして再び、私は私のモックを本物と同期させておく必要がありますClientます。 適切なHTTPリクエストが行われていることをテストするだけです。これはWrapper、実際のClientそれらのHTTP要求を行うためにオブジェクトをため、実際に個別にテストするわけではありません。これは少しひどい単体テストになります。 したがって、これらのソリューションのいずれにも特に満足していません。あなたならどうしますか?これについて正しい方法はありますか?

5
テスト駆動開発:ファイルシステム操作をテストするための良い/受け入れられた方法ですか?
私は現在、ファイルシステムの内容に基づいて(特に)テーブルを生成し、見つかったものに対してメタデータの変更を行うプロジェクトに取り組んでいます。問題は、これをどのようにテストするのか、セットアップするのかです。これを簡単にモックする方法はありますか?または、「サンドボックス」を設定する必要がありますか?

3
テスト中の開発者とは何ですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 私は最近、Test in Developerの職に就くために会社に入れたいリクルーターと話していました。彼は本質的に、新しいプログラミング手法を試したり、ソフトウェアのバグや改良点をテストしたり、標準的な期限を気にする必要がないような立場にしたようです。あなたの仕事で非常に創造的になります。 しかし、その説明は私にはまだあいまいでした。私は何年もの間Web開発者であり、ほとんどがPHPで働いています。それで、私は、コミュニティの他の人々がこれらのポジションが通常伴うものについてもっと知っているかどうか知りたかったです。 私はこれがこのフォーラムにふさわしい主題ではないかもしれないことを知っていますが、Stack Exchangeで見つけることができる最適なものでした。 。 私はそれをグーグルで試しましたが、そこには多くの情報がありません。では、テスト中の開発者とは正確には何ですか?


4
確率的挙動のプログラムをテストするためのベストプラクティスは何ですか?
研究開発の仕事をしていると、私は自分の行動にある程度のランダム性があるプログラムを書いていることがよくあります。例えば、私が遺伝的プログラミングで働いているとき、私はしばしば任意のランダムなソースコードを生成して実行するプログラムを書きます。 そのようなコードのテストに関する問題は、バグが頻繁に断続的に発生し、再現が非常に困難になる可能性があることです。これは、ランダムシードを同じ値に設定して実行を開始するだけではありません。 たとえば、コードはカーネルリングバッファからメッセージを読み取り、メッセージの内容を条件付きでジャンプします。当然、後で問題を再現しようとすると、リングバッファーの状態が変更されます。 この動作は機能ですが、予期しない方法で他のコードをトリガーする可能性があるため、多くの場合、単体テスト(または人間のテスター)が見つけられないバグを明らかにします。 この種のシステムをテストするためのベストプラクティスは確立されていますか?もしそうなら、いくつかの参照は非常に役立ちます。そうでない場合は、他の提案を歓迎します!

5
アルゴリズムの複雑さをテストする必要がありますか?もしそうなら、どのように?
ソートされたリスト/配列の検索のような単純なものを実装しているとしましょう。関数(c#内)は次のようになります。 static int FindIndex(int[] sortedList, int i); 機能の面でこれを実装してテストすることもできますが、明らかな理由から、通常は線形検索や意図的に愚かなものよりもバイナリ検索を好むでしょう。 だから私の質問は次のとおりです。アルゴリズムの複雑さの観点からパフォーマンスを保証するテストを作成する必要がありますか? 私はこの質問の「あなたがすべき」部分の両側で議論を始めましたが、私はそれらを促すために私の議論なしで人々が言うことを見てみたいです。 「方法」に関しては、非常に興味深いものになります:)比較演算子をパラメーター化して、比較演算子が比較などをカウントするテストを持つことがわかります。しかし、あなたができるからといって... 他の誰かが(おそらく)これを考えましたか?ありがとう。

5
csvパーサーの単体テスト
csvパーサーの単体テストに使用するテストは何ですか? C#には単純なcsvパーサーがあり、すべての一般的な(および一般的ではない)エッジケースのユニットテストのカバレッジが良好であることを確認したいと思います。潜在的な問題と境界ケースを識別するために、どのテストを使用する必要がありますか?
14 testing  parsing 

4
受け入れテストケースの作成
SCRUMプロセスにテストプロセスを統合しています。私の新しい役割は、後で自動化するためにWebアプリケーションの受け入れテストを作成することです。テストケースの作成方法について多くのことを読みましたが、複雑なWebアプリケーション用のテストケースを作成するための実用的なアドバイスを提供してくれる人はいませんでした。 テストケースは短くする必要があります。CMSの例を取り上げます。短いテストケースは、保守が容易で、入力と出力を識別するのが簡単です。しかし、長い一連の操作(たとえば、ドキュメントの追加、他のユーザーへの通知の送信、他のユーザーの返信、ドキュメントの状態の変更、ユーザーへの通知など)をテストする場合はどうでしょうか。むしろ、テストケースは完全なシナリオを表す必要があるように思えます。しかし、これにより、明らかに複雑なテスト文書がどのように生成されるかがわかります。 テストでは、入力と出力を特定する必要があります。:動作が異なる、相互作用するフィールドが多数ある長いフォームがある場合はどうなりますか。すべてに対して1つのテストを作成しますか、それとも1つのテストを作成しますか? テストケースは独立している必要があります。しかし、アップロード操作のテストに接続操作の成功が必要な場合、どのように適用できますか?そして、それはテストケースの作成にどのように適用されますか?各操作に対してテストを作成する必要がありますが、各テストはその依存関係を宣言しますか、それとも各テストのシナリオ全体を書き換える必要がありますか? テストケースは、軽く文書化する必要があります。この原則は、アジャイルプロジェクトに固有のものです。それでは、この原則を実装する方法について何かアドバイスはありますか? 受け入れテストケースの作成は簡単だと思っていましたが、私がしなければならないすべての決定に圧倒されました(参考:私は開発者であり、プロのテスターではありません)。私の主な質問は次のとおりです。複雑なアプリケーションの保守可能な受け入れテストケースを作成するために、どのような手順またはアドバイスがありますか。ありがとうございました。 編集:私の質問を明確にするために:受け入れテストは要件から開始し、アプリケーション全体をブラックボックスと見なす必要があることを認識しています。私の質問は、テストドキュメントを作成し、テストケースを特定し、テスト間の依存関係に対処するための実用的な手順に関するものです...複雑なWebアプリケーションの場合


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.