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

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

7
誰がテスト計画を書くべきですか?
私は社内の開発チームに所属しており、マーケティングチームの要件に従って会社のWebサイトを開発しています。受け入れテストのためにサイトをリリースする前に、従うべきテスト計画を提供するように依頼されました。 ただし、開発チームは、要求者からの要求であるため、何をテストするか、何を探すべきか、どのように動作するかなどについて最良の知識を持っているため、テスト計画は不要であると感じています。私たちは常にこれについて議論しています。開発者は次のようなことを書き留めるのは時間の無駄です。 ボタンAをクリックします。 フォームフィールドにXYZと入力し、ボタンBをクリックします。 動作Cが表示されます。 これは、要求された要件/機能ごとに繰り返す必要があります。これは基本的に、要件ドキュメントに既にあるものを言い換えたものです。 プロジェクトの管理にはアジャイルアプローチを使用する方向に進んでおり、これは各反復の終了時にも要求されます。 単体テストと統合テストは別として、エンドユーザー受け入れテスト計画を立てるのは誰ですか?それは要求者ですか、それとも開発者ですか? よろしくお願いします。 CK よろしく

2
単体テストユーティリティクラス
私たち全員が、さまざまなソースからの使用のために、静的メソッドのみを含むいくつかのユーティリティクラスを持っています。ここで、このコードのテストに向けて実行できる2つの方法があります。 アプローチ1: ユーティリティクラス用に個別の単体テストを用意します。それらが呼び出されているところはどこでも、PowerMockなどのプロビジョニングが用意されているテストフレームワークを使用して相互作用を模擬します。これは基本的に、ユーティリティクラスをシステムの個別のコンポーネントとして扱い、個別にテストして保守する必要があります。 アプローチ2: ユーティリティクラスの単体テストを記述しないでください。ただし、このユーティリティクラスと対話する他のコアクラス用に記述されたテストでは、その相互作用が発生します。これにより、このユーティリティクラスで記述されたコードがさまざまなユースケースに対して適切にテストされることが本質的に保証されます。何かが壊れた場合、他のコンポーネントのテストはそれをキャッチできるはずです。 どちらのアプローチが望ましいか、または他の方法でこれに取り組む方法があるかどうかについて、あなたの考えを共有してください。

7
エンドツーエンドおよび統合テストは、ミッションクリティカルではないものに価値がありますか?
エンドツーエンドのテストと統合テストはコストがかかることはよく知られています。もちろん、問題が発生した場合に人々が死ぬ可能性のあるアプリケーションを開発する場合、それは価値のある投資です。しかし、エラーが世界の終わりではないアプリケーションでは、E2Eテストと統合テストを完全にスキップして、何か問題が発生した場合に代わりにバックアップ計画を作成する方が安くないでしょうか。ユーザーストーリーの手動テスト+単体テスト+静的に型付けされた言語を十分に使用するようなものですか? たとえば、ウェブストアが注文を失った場合、代わりに無料でアイテムを送って+謝罪として別のアイテムを送ることができます。エンドユーザーはその方法でさらに幸せになる可能性があり、会社全体でコストを節約できます。 私の質問は、一般的に、統合テストとE2Eテストの費用と、それによって節約できる費用はどれくらいかと思います。これについてリスク/コスト計算を行う方法はありますか?
9 testing  qa  pricing  risk 

5
プログラムで任意のコードの安全性を評価することは可能ですか?
最近、安全なコードについて多くのことを考えています。スレッドセーフ。メモリセーフ。セグフォールトセーフで自分の顔を爆発させない。ただし、質問を明確にするために、Rustの安全モデルを定義として使用します。 多くの場合、Rustの必要性によって証明されているunsafeように、同時実行など、キーワードを使用しないとRustに実装できない非常に合理的なプログラミングのアイデアがいくつかあるため、安全性の確保はネットでの問題です。unsafe。並行処理が完全にロック、ミューテックス、チャンネルやメモリ分離して安全か何を持って行うことができますが、これは作業が必要です外での錆の安全モデルのをunsafe、その後、手動で、というコンパイラを保証する「うん、私は私がやっているか知っていますこれは安全ではないように見えますが、完全に安全であることを数学的に証明しました。」 しかし、通常、これは手動でこれらのモデルを作成し、定理証明を使用してそれらが安全であることを証明することになります。コンピュータサイエンスの観点(可能か)と実用性の観点(宇宙の生命を奪うことになるか)の両方から、任意の言語で任意のコードを受け取り、それがそうであるかどうかを評価するプログラムを想像するのは合理的です錆びない」 警告: この問題の簡単な解決策は、プログラムが停止しない可能性があるため、停止の問題が失敗することを指摘することです。読者に提供されたプログラムが停止することが保証されているとしましょう 「任意の言語の任意のコード」が目標ですが、これはプログラムが選択された言語に慣れていることに依存していることはもちろん承知しています。

4
リファクタリング-すべてのテストに合格する限り、単純にコードを書き直すことは適切ですか?
最近、RailsConf 2014の「All the Little Things」を視聴しました。この講演中に、Sandi Metzは、ネストされた大きなifステートメントを含む関数をリファクタリングします。 def tick if @name != 'Aged Brie' && @name != 'Backstage passes to a TAFKAL80ETC concert' if @quality > 0 if @name != 'Sulfuras, Hand of Ragnaros' @quality -= 1 end end else ... end ... end 最初のステップは、関数をいくつかの小さなものに分割することです: def tick case name when 'Aged …

1
プロジェクトの非単体テストを管理する方法は?
私は自分のプロジェクトにtestsユニットテストではないコードをいくつか持っています。これらは実行することを意図しており、結果は人間が評価する必要があります。これは、物理エンジンを作成していて、開発中に自分が何をしているかを確認する必要があったためです。それでsimulation、テストモジュールでパッケージを作成しました。シミュレーションはユニットテストライブラリを使用しているため、技術的にはユニットテストですが、実際のユニットテストのようにすべてを実行するわけではありません。 すべての単体テストを簡単に実行したいので、これらの特別なテストを単体テストと区別します。機能テストに少し似ていると思います。アプリケーションを機能テスト用に準備しなければならないケースに遭遇したことがありますか?その機能テストの準備(基本的には私のシミュレーション)はプロジェクトのどこに配置し、ユニットテストとどのように区別するのですか? 私はJavaを使用しているため、すべてのメソッドシグネチャをから@Test public void myNamedTest()に変更できpublic static void main(String[] args)ますが、シミュレーションを使用するのは面倒で実用的ではありません。 プロジェクトで使用junitしていgradleます。で特別なテストフォルダを作成するソリューションgradleは大歓迎です。

6
自動テストの作成を開始する必要があるのは、アジャイルのどの段階(SCRUM)ですか?
私のちょっとした背景-私はSCRUM(1〜2週間のスプリント)を使用したアジャイル環境内で約2年間、手動テスターです。そこで、Selenium WebDriver(Javaを使用)を使用した作業に自動化テストを導入したいと思います。 私の質問は、いつ機能を手動でテストする必要があるか、いつ自動化テスト用に変換する必要があるかです。 私は次のようなさまざまなアプローチを読んでいます。 新しいスプリントの開始時に、ユーザーストーリーを以前のスプリントの自動スクリプトに変換するか、または 同じスプリント内でユーザーストーリーを変換します。 アドバイスは非常にいただければ幸いです。前もって感謝します。

3
プライベート関数は、単にまだ抽出されていない機能の内部ユニットである場合があります。では、なぜそれらをテストしないのですか?
モジュールまたはクラスのプライベート関数が、まだ抽出されていない機能の内部ユニットである場合があります。これは、独自のテストに値する場合があります。では、なぜそれらをテストしないのですか?我々はなります彼らは、抽出しているとき場合は/に、後でそれらのためのテストを書きます。では、同じファイルにまだ含まれているテストを書いてみませんか? 実証するには: まず、書きましたmodule_a。それをテストしたいのですが。「プライベート」機能をテストしたいと思います_private_func。私は後で私はとにかく自身の内部モジュールにそれをリファクタリングする可能性がある場合、それのためにテストを書き、ではないだろう、なぜ私は理解していないそしてそれに対する書き込みテスト。 次の機能を持つモジュールがあると仮定します(クラスの場合もあります)。 def public_func(a): b = _do_stuff(a) return _do_more_stuff(b) _do_stuffおよび_do_more_stuffモジュールの「プライベート」機能です。 実装の詳細ではなく、パブリックインターフェイスのみをテストする必要があるという考えを理解しています。しかし、これは次のとおりです。 _do_stuffおよび_do_more_stuffモジュールの機能の大部分が含まれています。それらのそれぞれは、異なる「内部」モジュールのパブリック関数である可能性があります。しかし、それらはまだ進化しておらず、ファイルを個別に抽出するのに十分な大きさではありません。 したがって、これらの関数は機能の重要な単位であるため、これらの関数のテストは適切だと感じます。それらがパブリック関数として異なるモジュールにあった場合、それらをテストしたでしょう。では、別のファイルにまだ(またはこれまでに)抽出されていないときにテストしてみませんか?
9 python  testing 

2
単体テストで注釈の存在を確認できますか?
抽象クラスとそのN個の拡張によって形成されるJavaクラス階層があります。抽象クラスには、@ Removeアノテーションが付けられたメソッドがあります。このアノテーションが削除されても例外がすぐに失敗することはありませんが、メモリ不足の例外が発生する可能性があるため、このアノテーションがリファクタリングで消えた場合は、できるだけ早く通知するようにしたいと思います。 私はGUTS(優れた単体テスト)を作成しようとしているので、テストでこの「技術要件」を文書化し、それを明記するテストケースを作成できると考えました。 しかし、これは機能ではなく、実装の詳細であり、メソッドの動作にはリンクされていません(メソッドは空である可能性がありますが、存在し、注釈が必要です)。 そのためのテストを作成しても大丈夫ですか、またはこの注釈の存在を確認する他の方法はありますか?

3
テストデータはどこに保存すればよいですか?
実際のデータセットからの小さなスニペットを使用する小さな単体テストがあります。また、さまざまな理由から、完全なデータセットに対してプログラムをテストしたいと思います。唯一の問題は、単一の実際のデータセットが約5GBであることです。Gitリポジトリーに保管できる具体的な数値は見つかりませんでしたが、多すぎるようです。 このプログラマーの投稿によると、プロジェクトをテストするために必要なすべてのデータをリポジトリーに保管する必要があります。 私のチームが採用したソリューションは、プロジェクトに、テストデータを保持するネットワーク接続ファイルシステムへのパスを含むファイルがあることです。ファイルはGit無視されます。 これは2つの理由で不完全な解決策であると感じています。NASが動作していない、遅い、または完全なテストを実行できないほどダウンしている場合。2番目の理由は、誰かが最初にリポジトリのクローンを作成するときにユニットテストが失敗するため、特定の名前で物をマウントする方法と、テストパスファイルの構築に使用される構文を理解する必要があるためです。 だから私の質問は二つあります。どのくらいのデータが多すぎてリビジョン管理に保存できませんか? 大量のテストデータを処理するためのより良い方法は何ですか?
9 testing 

2
Phaserなどのステートフルフレームワークのユニットテスト
TL; DRステートフルなフレームワーク内で作業する場合、自動化された単体テストを簡略化するための手法を特定するのに役立ちます。 バックグラウンド: TypeScriptとPhaserフレームワークでゲームを書いています。Phaserは、コードの構造をできるだけ制限しないHTML5ゲームフレームワークとしての地位を占めています。これにはいくつかのトレードオフが伴います。つまり、キャッシュ、物理、ゲームの状態など、すべてにアクセスできるGod-object Phaser.Gameが存在します。 このステートフル性は、私のタイルマップなどの多くの機能をテストすることを本当に困難にします。例を見てみましょう: ここでは、タイルレイヤーを正しくテストして、タイルマップ内の壁と生き物を識別できるかどうかをテストしています。 export class TilemapTest extends tsUnit.TestClass { constructor() { super(); this.map = this.mapLoader.load("maze", this.manifest, this.mazeMapDefinition); this.parameterizeUnitTest(this.isWall, [ [{ x: 0, y: 0 }, true], [{ x: 1, y: 1 }, false], [{ x: 1, y: 0 }, true], [{ x: 0, y: 1 }, …

1
ユニットとインテグレーションのギャップのテスト:小型コンポーネントインテグレーションのユニットインテグレーションテスト
過去数週間、私はテスト方法論のギャップを埋める方法を検討し、検討してきました。簡単に言うと、単体テストは小さすぎ、従来の統合テストは大きすぎます。 頻繁にシナリオがアップになるAとB、両方の使用コンポーネントをC。ただしA、のB要件は少し異なり、についての仮定も少し異なりますC。私が開発者である場合A、どこでどのように私の想定をテストするのCですか? 明らかにAモックされた仮定Cを使用Aした単体テストは、単独でのテストには適していますが、仮定自体はテストしません。 別の可能性は、の単体テストを追加することですC。ただし、これはA開発段階ではありますがC、仮定を進化させてテストを変更するのは非常にA不格好なため、これは理想的ではありません。実際、A開発者はC(たとえば、外部ライブラリ)の単体テストに適切にアクセスできない場合もあります。 これをより具体的な例でフレーム化するには:これがノードアプリケーションであると想定します。 AにB依存しC、(特に)ファイルを読み取り、ファイルの内容をに渡されたオブジェクトに格納しますC。最初Cは、処理するすべてのファイルが小さく、重大なブロックなしで同期的に読み取ることができます。ただし、の開発者Bは、自分のファイルが巨大になりC、非同期読み取りに切り替える必要があることを認識しています。これにより、で散発的な同期バグが発生します。Aこれは、Cファイルを同期的に読み取ることを前提としています。 これは、完全な統合テストから追跡するのが非常に難しいことで有名なタイプのバグであり、統合テストではまったく検出されない可能性があります。またA、Asの前提条件がモックされているため、sの単体テストでは捕捉されません。ただし、「」Aおよび「」のみを実行する「ミニ」統合テストで簡単に検出できますC。 このタイプのテストへの参照はわずかしか見つかりませんでした。小型の統合、コンポーネント統合テスト、ユニット統合テスト。また、正式なTDD単体テストではなく、BDDテストの方向性にも関係しています。 このテストギャップをどのように埋めますか?具体的には、そのようなテストはどこに置くのですか?どのように私はの入力あざけりないAとC「ミニ」統合テストのために?そして、これらのテストと単体テストの間でテストの懸念を分離するためにどれだけの努力を払う必要がありますか?または、テストのギャップを埋めるためのより良い方法はありますか?

5
*専用*のテスターの役割を持たない開発チームの実行可能性[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 6年前休業。 私は最近、無駄のない開発チームを構築する方法について多くのことを考えています。最終的には、志を同じくする少数の人々と私自身の小さなソフトウェアハウスをオープンしたいと思います。目標は金持ちになることではなく、健康的な職場環境を作ることです。 これまでのところ、無駄のないチームを次のように定義しています。 小さい; 自己組織化; すべてのメンバーはQAを念頭に置く必要があります。 メンバーは複数の役割を実行できる必要があります 最後のポイントは、私が少し心配しているところです。マントラが進むにつれて... 開発者は悪いテスターを作ります。 多くの場合、開発者は自分のコードまたは同僚のコードに「近すぎ」て、品質のより高いレベルの評価を行うことを理解していますが、彼らが事実上悪いテスターであるとは確信していません。それどころか、優れた開発者の資質は優れたテスターの資質と非常に重なっていると私は考えています。 これが正しいと仮定して、私は開発者/テスターの問題を回避するさまざまな方法を考えてきましたが、私は実行可能なモデルを考え出したと思います。 私のモデルには以下が必要です: 2つ以上のプロジェクトがある小さなソフトウェアハウス 開発と配信に対するアジャイル(反復)アプローチ プロジェクトごとに1チーム すべてのチームメンバーはソフトウェア開発者になります 彼らの職務記述書には、開発、品質保証、テスト、および提供が責任として明確に記載されています これらの前提条件がすべて満たされている場合、プロジェクトは次のように編成できます(この例では、2つのプロジェクトAとBを参照します)。 すべてのチームメンバーが開発者の役割とテスターの役割を交互に行います チームメンバーがプロジェクトAの開発者である場合、チームメンバーはプロジェクトBのテスターに​​なります メンバーは、一度に1プロジェクトで作業しますので、として機能することが期待されているいずれかのDev やテスター。 ロールサイクル(二つの異なるプロジェクトで、再び)Devのような3回の反復及びテスターとして2反復で構成されてい プロジェクトチームには、常に3つの開発者と2つのテスターがいます。 メンバーの役割サイクルは、1反復だけフェーズがずれている必要があります。 これにより、チーム変更の突然の発生を最小限に抑えることができます。各反復で、2つのDevsと1つのテスターが前の反復と同じままです。 上記を考えると、次の長所と短所がわかります。 長所 会社全体にプロジェクトの知識を配布します。 チームメンバーが記述に役立つコードをテストしていないことを確認します。 フェーズが異なるロールサイクルとは、100%メンバーの切り替えを行うプロジェクトがないことを意味します。 交互の役割は退屈なプロジェクトの単調さを壊します。 短所 両方のプロジェクトのイテレーションは密接に結合されています。1つのプロジェクトが途中でイテレーションをキャンセルして再開した場合、2つのプロジェクトは同期しなくなります。これは、役割サイクルの管理を困難にします。 開発者を採用する際のヒンジは、テスターとしても活躍しています。 このアプローチについて友人や同僚と話し合ったとき、私はさまざまなレビューを受けました。一部の開発者はこのような役割を代替したいと考えていると信じていますが、他の開発者は個人的に試してみたいと言っています。 だから私の質問です: そのようなモデルは実際に機能するでしょうか?そうでない場合は、作業モデルに調整できますか? 注: 簡潔にするために、私はDevおよびTesterの役割のみに焦点を当てました。必要に応じて、他の役割について詳しく説明します。

1
リレーショナル代数/計算の証明を使用してSQLをテスト/検証できますか?
SQLステートメント、関数、およびストアドプロシージャの正当性をテスト/検証するために、証明の形式でリレーショナル代数および/またはリレーショナル計算を使用することは可能ですか、それとも可能ですか? 少なくともそれは可能であるように思えますが、証拠とコードの間の1:1マッピングを不正確にする欠落している詳細があるかどうかはわかりません。 このような方法を試した人はいますか?うまくいきましたか?どのような体験をしましたか?

5
最大の費用対効果をもたらすバグの解決[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 4年前休業。 解決がどれほど簡単か、そしてどれだけの利益が得られるかに基づいて、バグを分類する方法を知りたいと思っていました。たとえば、解決に1時間かかる(2つのファイルを閉じるなど)バグと、1日かかる別のバグ(セグメンテーションエラー)がある場合などです。ただし、最初のバグの解決がそれほど重要でない場合は、おそらく2番目のバグに取り組みます。 費用便益または類似の指標に基づいてバグを分類する研究論文はありますか? たとえば、セキュリティの脆弱性、メモリエラー、論理エラーなど、バグの特性に基づいてバグを分類することができるとしましょう。他の次元では、難易度(簡単、中程度、難しい)などのパラメータがある場合があります。私が探しているべき他の次元はありますか?物事を単純化するために、私は2つのことを想定できます。 チーム内のすべてのプログラマーは、あらゆるバグを同等に解決することができます 締め切りはありません

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