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

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

5
CDを無駄にすることなくCDを作成するソフトウェアをテストする方法は?
CD(音楽)の書き込みに使用できるアプリケーションを作成したい。とにかく実際のCDでテストする必要があることは知っていますが、小さな変更を加えるたびにこれを行いたくありません。しかし、正しいデータが書き込まれるかどうかを知り、テストしたいので、破損したCDを取得することはありません。 物理ドライブに直接書き込むAPIのみを公開するライブラリを使用しています。ディスクイメージに書き込むことはできません(テストがはるかに簡単になります)。 CDを無駄にせずにこれをテストするにはどうすればよいですか?
16 testing  hardware 

2
ソフトウェアテストの手法またはカテゴリ[非公開]
ここで何が尋ねられているかを伝えるのは難しいです。この質問は曖昧、曖昧、不完全、過度に広範、または修辞的であり、現在の形式では合理的に答えることができません。この質問を明確にして、再開できるようにするには、ヘルプセンターに アクセスしてください。 8年前に閉鎖されました。 どのようなソフトウェアテストを知っていますか?テスト駆動開発、単体テストなどについて聞いたことがありますが、それらの重要性と違いを理解できません。たとえば、なぜ回帰テストや受け入れテストを使用するのでしょうか。彼らが提供する利点は何ですか?

10
お金を稼ぐために、どの時点でソフトウェア開発の原則をいくつか捨てますか?
興味深いことに、メディアがどこにあるかを見るために、この質問をそこに投げ出したいと思います。 過去12か月で、TDDとソフトウェア開発におけるアジャイルの価値の多くを取り上げました。私はソフトウェアの開発がどれほど良くなったかに圧倒され、それらを原則から外すことはありませんでした。まで...私は年間の持ち帰り給与を倍増する契約の役割を提供されました。 私が参加した会社は特定の方法論を踏んでおらず、チームはコードの匂いやソリッドなどのことを聞いていませんでしたし、チームでさえもしていないなら、TDDに時間を費やすことはありませんでした実際にユニットテストを見ました。売り切れですか?いいえ、完全ではありません...コードは常に「ボブおじさんの教えに従って」「きれいに」書かれ、SOLIDの原則は必要に応じて私が書くコードに常に適用されます。しかし、テストフレームワークを作成したとしても、テストフレームワークを正しく使用/保守することはありませんでした。 それを例にとると、開発者は個人的にお金/その他の利益のために職人技の原則を落とすべきではないという点を教えてください。これは、自分のニーズ、ビジネスニーズ、職人技などのためにどれだけ関心があるかについて、非常に個人的な意見になり得ることを理解しています。しかし、たとえば、テストチームは、プログラミングの単体テストを理解するのではなく、私がやったように自分自身を許すことができるでしょうか?あなたが落とすものがあることを考えると、通常はあなたが落とすものを補うビジネスに等しい費用があるはずです-できれば、もちろんあなたがあなた自身のポケットを並べてコミュニティ/社会的コラボレーションではなく)。 お金を2倍にして、RADに戻りますか?または、歩いて、アジャイルをしている人を探して、決して振り返らないでください...

12
プログラミング中にコードを実行およびテストする頻度はどれくらいですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 特に、Cでゼロから新しいコードを書くとき、たまに構文チェック以外のコンパイラを実行せずに、何時間も、何日もコードを書くことに気づきます。 私は、大量のコードを慎重に記述し、頭の中でフローを分析することでコードが本来行うべきことを確信している場合にのみ徹底的にテストする傾向があります。誤解しないでください-テストせずに1000行を書くことはありません(ギャンブルになります)が、サブルーチン全体を書いて、終了したと思ったらテストします(必要に応じて修正します)。 反対側では、エディターに入力するすべての行の後にコードを実行およびテストし、デバッガーが注意と正気の代わりになる可能性があると考えている初心者がほとんどです。言語の構文を学んだ後は、これは多くの注意散漫になると思います。 2つのアプローチの適切なバランスは何だと思いますか?もちろん、最初のものはより多くの経験を必要としますが、生産性にプラスまたはマイナスの影響を及ぼしますか?2つ目は、より細かいレベルでエラーを見つけるのに役立ちますか?

9
単体テストを使用して列挙型の値をテストする必要がありますか?
値のみの列挙型(Javaで実行できるメソッドはない)があり、この列挙型がシステムのビジネス定義の一部である場合、単体テストを作成する必要がありますか? 単純で冗長に見えるかもしれませんが、ユニット/統合/ ui / etcに関係なく、ビジネス仕様に関係するものをテストで明示的に作成する必要があると思います。テストするか、テスト方法として言語の型システムを使用します。列挙型(Javaなど)に必要な値は、ビジネスの観点から、型システムを使用してテストできないため、そのための単体テストが必要だと思います。 この質問は類似していない、この1、それは私と同じ問題に対処していないので。その質問にはビジネス機能(savePeople)があり、その人は内部実装(forEach)について問い合わせています。そこには、言語コンストラクト(forEach)をカプセル化する中間ビジネスレイヤー(人を救う機能)があります。ここで、言語構造(enum)は、ビジネスの観点から動作を指定するために使用されるものです。 この場合、実装の詳細は、データの「真の性質」、つまり値のセット(数学的な意味で)と一致します。ほぼ間違いなく不変のセットを使用できますが、同じ値がまだ存在しているはずです。配列を使用する場合は、ビジネスロジックをテストするために同じことを行う必要があります。ここでの難問は、言語構成がデータの性質と非常によく一致するという事実であると思います。自分自身を正しく説明したかどうかわかりません

2
基本クラスのテストを回避しても大丈夫ですか?
かなり汎用的である必要がある柔軟性/抽象化を与えるために、かなりの量の「メタプログラミング」を持つ基本クラスがあります。 基本クラスの共通メソッドを使用するサブクラスが多数あり、各サブクラスのすべてのケースをカバーする動作指向の単体テストがあります。 基本クラスのテストをスキップしても大丈夫ですか?

6
TDDの最初のテストで大丈夫だと思うオブジェクトを作成しています
私はTDDにかなり慣れていないので、実装コードの前に来る最初のテストを作成するときに問題があります。実装コードにフレームワークがなければ、私は最初のテストを自由に書くことができますが、Java / OOの問題に対する考え方によって常に汚染されているようです。 たとえば、私のGithub ConwaysGameOfLifeExampleで最初に書いたテスト(rule1_zeroNeighbours)では、まだ実装されていないGameOfLifeオブジェクトを作成することから始めました。存在しないsetメソッド、存在しないstepメソッド、存在しないgetメソッドを呼び出し、アサートを使用しました。 テストはさらにテストを書いてリファクタリングするにつれて進化しましたが、元々は次のようなものでした: @Test public void rule1_zeroNeighbours() { GameOfLife gameOfLife = new GameOfLife(); gameOfLife.set(1, 1, true); gameOfLife.step(); assertEquals(false, gameOfLife.get(1, 1)); } この最初のテストを書くためにこの初期段階でどのように決定したかに基づいて実装の設計を強制していたので、これは奇妙に感じました。 あなたがTDDを理解する方法でこれは大丈夫ですか?私はテストと実装がリファクタリングによって時間とともに進化したという点でTDD / XPの原則に従っているようです。この方法で開始することにより、ソリューション。 TDDは他にどのように使用されますか?GameOfLifeオブジェクトなしで、プリミティブと静的メソッドのみで開始することにより、リファクタリングの反復をさらに行うことができましたが、それはあまりにも不自然に思えます。

5
リファクタリングするコードのテストを書くのはなぜですか?
私は巨大なレガシーコードクラスをリファクタリングしています。リファクタリング(私は推測する)はこれを支持します: レガシークラスのテストを書く クラスから一体をリファクタリングする 問題:クラスをリファクタリングしたら、ステップ1のテストを変更する必要があります。たとえば、以前は従来のメソッドにあったものが、代わりに別のクラスになる場合があります。1つの方法でしたが、現在はいくつかの方法である場合があります。レガシークラスの全体像が何か新しいものに抹消される可能性があるため、ステップ1で記述するテストはほとんど無効になります。本質的に、ステップ3を追加します。テストを大量に書き換えます。 リファクタリングの前にテストを書く目的は何ですか?それは自分自身のためにより多くの作品を作成する学術的な運動のように聞こえます。現在、このメソッドのテストを書いていますが、物事をテストする方法と、従来のメソッドがどのように機能するかについて詳しく学んでいます。レガシーコード自体を読むだけでこれを学ぶことができますが、テストを書くことは、その中に鼻をこすりつけることと、別のテストでこの一時的な知識を文書化することにほとんど似ています。したがって、この方法では、コードが何をしているのかを学ぶ以外にほとんど選択肢がありません。私はここで一時的なことを言いました。なぜなら、コードを完全にリファクタリングし、ドキュメントとテストのすべてがかなりの部分で無効になるためです。ただし、私の知識は残り、リファクタリングの新鮮さを保つことができます。 それがリファクタリングの前にテストを書く本当の理由ですか?コードをよりよく理解するのに役立ちますか?別の理由があります! 説明してください! 注意: この投稿があります:完全なリファクタリングの時間がないときにレガシーコードのテストを書くことは理にかなっていますか?しかし、「リファクタリングの前にテストを書く」と言いますが、「なぜ」とは言いません。

4
なぜCem Kanerはテストがバグを明らかにしないと時間の無駄だと考えるのですか?
肯定的なテストで機能を確認し、機能していることを証明するのはどうですか?時間の無駄だと言えますか?この引用の背後にある概念は何ですか? 失敗したテスト、つまりエラーを見つけられないテストは時間の無駄です。 Web Engineering:Cem Kanerを引用したWebアプリケーションの体系的開発の規律。
15 testing  theory 

2
統合テストを削除するのに十分な単体テストのカバレッジがあるかどうかを知るにはどうすればよいですか?
私はレガシーシステムで作業しています(つまり、テストなしで作成されたという意味です)。外部から機能をテストする統合テストを作成して、システムの一部をテストしようとしました。 これにより、コードの破損を心配することなく、コードの一部をリファクタリングする自信が得られます。しかし、問題は、これらの統合テストを実行するのに2分以上かかり、数分かかることです。また、それらは維持するのが苦痛です。それらはそれぞれ数千行のコードをカバーしており、そのうちの1つが壊れた場合、その理由をデバッグするのに1時間かかることがあります。 私は最近行ったこれらの機能変更のために多くの単体テストを書いてきましたが、コミットする前に常に新しいデプロイを行い、すべての統合テストを実行します。この時点で、ユニットテストと統合テストの一部がテスト内容と重複していることがわかりました。 統合テストを削除できるように、適切な単体テストが不適切な統合テストを適切にカバーしていることをどのようにして知ることができますか?

4
テストごとに1つのアサーションのみが必要な場合。複数の入力をテストする方法は?
私はいくつかのテストケースを構築しようとしていますが、テストケースごとのアサーションの数を制限するようにしてください。 したがって、私の質問は、複数の入力を持つ関数をテストするための最善の方法は何ですか?たとえば、ユーザーからの文字列を解析し、分数を返す関数があります。文字列は、週、時間、日、および分数"5w6h2d1m"にw, h, d, m対応する形式で指定できます。 「テストルールごとに1つのアサーション」に従う場合、入力のバリエーションごとに複数のテストを作成する必要がありますか?それはばかげているように見えるので、代わりに私は次のようなものを持っています: self.assertEqual(parse_date('5m'), 5) self.assertEqual(parse_date('5h'), 300) self.assertEqual(parse_date('5d') ,7200) self.assertEqual(parse_date('1d4h20m'), 1700) 1つのテストケース。もっと良い方法はありますか?

5
ランダムイベントに基づいてコードをカバーするテストケースを設計するにはどうすればよいですか?
たとえば、コードが0〜10のランダムなintを生成し、結果ごとに異なる分岐を取る場合、そのようなコードで100%のステートメントカバレッジを保証するテストスイートをどのように設計できますか。 Javaでは、コードは次のようになります。 int i = new Random().nextInt(10); switch(i) { //11 case statements }

5
「新しい」キーワードを使用する必要がある場合と使用しない場合
Misko HeveryによるUnit Testingに関するGoogle Tech Talkのプレゼンテーションを見て、彼newはビジネスロジックコードでキーワードを使用しないように言った。 プログラムを作成し、newキーワードをあちこちで使用することになりましたが、それらは主にデータを保持するオブジェクトをインスタンス化するためのものでした(つまり、関数やメソッドはありませんでした)。 私は自分のプログラムに新しいキーワードを使用したときに何か間違ったことをしたのだろうかと思っています。そして、その「規則」をどこで破ることができるでしょうか?

5
多くの順列を持つ何かに対してTDDを行う方法は?
非常に多くの異なるパスをたどることができるAIのようなシステム、または実際に複数の異なる入力を持つ任意のアルゴリズムを作成する場合、可能な結果セットには多数の順列が含まれることがあります。 結果の多くの異なる順列を出力するシステムを作成するときに、TDDを使用するにはどのようなアプローチをとるべきですか?


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