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

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

2
サービスの構成変更をテストする方法は?
新しい構成を追加するときにサービスをテストする最善の方法は何ですか?たとえば、私のサービスは顧客にサービスを提供し、顧客の構成に基づいて、異なるタイプのサービスを提供します。たとえば、顧客が特定の通貨を選択した場合、別の通貨と比較して20%の割引が提供されます。 上記の例は重要ではありません。重要なのは、CI \ CDを行うときに人々がとるアプローチです 割引を計算するロジックはドメイン内にあり、その周りに単体テストがあります。私の質問は、割引を把握するためにさまざまなルールで構成されたマーチャントがいる場合(すべて構成に基づいており、ドメインがそれを解決する場合)、構成を変更する要求が来た場合、どのように確認しますか? もっとテストを書きますか? 単体テストと同じようにテストしませんか? 変更を手動でテストしますか? その他の 私は多くの記事と共にxUnitテストパターンとテスト駆動開発の本を読みましたが、人々がこれをどのように管理するか(サービス内の構成変更と正確性の検証)に遭遇していません。 私はこれが継続的デリバリー・ブックで扱われるのを見ません。

4
ダーティデータベースを回避するための統合テスト中のクリーンアップと配置のプラクティス
私はC#でテストをコーディングしていますが、次の構造で解決しました。 try { // ========== // ARRANGE // ========== // Insert into the database all test data I'll need during the test // ========== // ACT // ========== // Do what needs to be tested // ========== // ASSERT // ========== // Check for correct behavior } finally { // …

8
テストを行うプログラマ
プログラマーが帽子をかぶって、お互いの作業をテストするのがどれほど典型的なことかと思います。チームが、タスクの形式化からリリースへの移行に「責任を共有する」アプローチを取りたいと仮定します- プログラマーが機能を記述しない限り、ソフトウェアテストとして作業することをお勧めしますか? これは頻繁に起こりますか? プログラマが自分の作業をどの程度「テスト」できるか? TDDと単体テストを使用しても、開発プロセスでソフトウェアテスト装置がまだ必要ではありませんか?

3
レガシーコード(わかりません)の単体テストを作成するにはどうすればよいですか?
進む この質問をする前に、SEに関する多くの関連する質問を含め、多くのことを読みました。 (ソフトウェアエンジニアリングSE)目的がわからないコードのテストを書く (ソフトウェアエンジニアリングSE)ユニットテスト初心者チームはユニットテストが必要 (ソフトウェアエンジニアリングSE)レガシーコードを自動テストで改造するためのベストプラクティス (ソフトウェアエンジニアリングSE)大規模なレガシーシステムを単体テストする方法 (ブログ投稿)単体テスト環境をモックアップする方法 しかし、助けを求めて読んだ後、かゆみはまだ引っかかれていないと感じざるを得ません。 TL; DR 実行、シミュレーション、読み取り、または簡単に理解できないレガシーコードの単体テストを作成するにはどうすればよいですか?おそらく意図したとおりに機能するコンポーネントに役立つ回帰テストは何ですか? 全体像 私は大学院に移行しているので、再び夏の帰国研修生です。私の仕事には次の要件が含まれます。 特定の製品について、ソフトウェアチームが既存のプロジェクトとの互換性を失うことなくIDEおよびJUnitバージョンをアップグレードできるかどうかを評価します。 既存のJavaコード(主にJavaではない)の一部のコンポーネントの単体テストを開発します。ユニットテストとTDDは、使用する必要がある非常に貴重なツールであることをソフトウェアチームに納得させたいと思います。(現在、0%のコードカバレッジがあります。) どういうわけか、重要なシステムのカウボーイコーディングの時代を終わらせてください。 ソースコードのコピーを入手した後、この製品の機能と動作を理解できるように、ビルドして実行しようとしました。できませんでした。私は上司に自分のやり方を尋ね、実際に機能するビルドスクリプトを含む、それをビルドできる新しいスタンドアロンマシンを発行されました。彼らの予想通り、製品コードは設計された組み込みシステムでのみ実行されるため、それも機能しませんでした。しかし、彼らはこの目的のためにシミュレーターを持っているので、彼らはシミュレーターを手に入れ、このマシンにそれを置いてくれました。シミュレータも機能しませんでした。代わりに、私は最終的に特定の画面のGUIのプリントアウトを受け取りました。また、700,000以上のJava LOC内のどこにもコードコメントがないため、把握がさらに困難になります。さらに、彼らのプロジェクトが新しいIDEと互換性があるかどうかを評価する問題がありました。特に、彼らのコードは、彼らが使用しているまさにそのIDEバージョンに適切にロードされませんでした。 私の在庫は次のようになっています: NetBeans 8、9、10、11 JUnit 4、5 特定の製品のソースコード(700,000以上のJava LOCを含む) 実質的にコードコメントはありません(場合によっては署名) 既存のテストはありません GUIウィンドウの物理的な写真 画像内のコンポーネントについて説明していないソフトウェア設計ドキュメント(109ページ) 少なくとも理論的には実行可能なテストを書くのに十分です。そこで、このコンポーネントについて基本的な単体テストを試しました。しかし、モデル、マネージャー、DB接続など、依存関係として持つオブジェクトを初期化できませんでした。基本的な単体テスト以外にJUnitの経験はあまりないので、次のセクションに進んでください。 私の読書から学んだこと モッキング:単体テストを作成する場合、本番環境での依存関係のために、モック変数を用意する必要がありますsetUp。 ここの誰もがマイケルフェザーズの著書「レガシーコードを効果的に使用する」を寛大に提案しています。 回帰テストは、おそらく開始するのに適しています。統合テストを試すのに十分な兵器がないと思います。回帰テストは、ソフトウェアチームにすぐに満足感を与えるでしょう。ただし、私は彼らの既知のバグにアクセスできません。しかし、私はたぶん尋ねることができました。 そして今、私がまだ疑問として持っている不確実性を明確にする試み。基本的に、私はこれらのテストを作成する方法の一部を理解していません。(おそらく)上司からこれ以上のガイダンスを受け取らないと想定すると、このコンポーネントの機能を理解するだけでなく、どのテストが回帰テストとして実際に役立つかを判断するのは私の球場です。 このようなプロジェクトに携わってきた専門家として、このような状況で単体テストを作成する方法について何かアドバイスはありますか?

3
継承を使用してクラスをテストする正しいアプローチは何ですか?
私が以下の(過度に単純化された)クラス構造を持っていると仮定します: class Base { public: Base(int valueForFoo) : foo(valueForFoo) { }; virtual ~Base() = 0; int doThings() { return foo; }; int doOtherThings() { return 42; }; protected: int foo; } class BarDerived : public Base { public: BarDerived() : Base(12) { }; ~BarDerived() { }; int doBarThings() { return …

2
統合テストですが、どれくらいですか?
私のチーム内での最近の議論は私を不思議に思いました。基本的なトピックは、機能/統合テストでいくら、何をカバーするかということです(確かに、それらは同じではありませんが、例は重要ではないのでダミーです)。 次のような「コントローラ」クラスがあるとします。 public class SomeController { @Autowired Validator val; @Autowired DataAccess da; @Autowired SomeTransformer tr; @Autowired Calculator calc; public boolean doCheck(Input input) { if (val.validate(input)) { return false; } List<Stuff> stuffs = da.loadStuffs(input); if (stuffs.isEmpty()) { return false; } BusinessStuff businessStuff = tr.transform(stuffs); if (null == businessStuff) { return false; …

4
ソースコードのバグクラスタリング
バグまたは欠陥のクラスターの存在について多くの主張があります。単純な検索は、例えば、複数の結果を明らかにする: 1、 2、 3、 4、 5。 しかし、引用された証拠はすべて逸話的であり、これを裏付ける具体的なデータは見つかりませんでした。私自身の経験はこれらの主張に矛盾しませんが、パターンがない場合でも人々はパターンを見るのが好きです(バグが均一に分散されてもクラスターが生成され、10箇所ではなく1箇所で10箇所のバグを修正する必要がある場合は覚えやすいでしょう)コードベース全体で無関係なもの)。 この現象が実際に存在するかどうかは本当に気になりますが、欠陥のクラスタリングが実際に発生していることを示す客観的または半目的的なソース(テスト、実験、研究など)さえ見つけることができませんでした。 もちろん、私はバグのクラスタリング仮説を良い習慣として想定しても問題ありません(たとえそれが間違っていても、それほど害はありません)。一方、具体的なデータは、それが発生する理由を明らかにする可能性があります。何故かといえば、(どんな理由であれ)ひどい頭痛がしているからでしょうか。または、コードの一部が難しいだけで、他の部分が簡単なためでしょうか?それとも、互いに嫌いな2人のエンジニアの責任の所でしょうか。 私の質問:欠陥クラスタリング効果は実際に存在しますか?この仮説によって最もよく説明される具体的な非逸話的なデータはありますか?

1
限られた予算でのビザンチン決済処理コードのリファクタリング[終了]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 4年前休業。 私は数年間、大規模なRuby on Railsアプリケーションに取り組んできました。それは貧しい状態で受け継がれましたが、生産バグのほとんどは時間とともに解決されました。支払い処理コードなど、変更されていないセクションがあります。このコードはほとんどの部分で機能しますが、支払い処理業者によって請求が拒否された場合は常に、ユーザーに役立つメッセージではなく500エラーが表示されます。保守を容易にするためにコードをリファクタリングしたいと思います。それがどのように機能するかの簡単な概要を提供します。 次のスニペットからすべてのエラー処理コードを削除しました。 迷路はコントローラーで始まります: def submit_credit_card ... @credit_card = CreditCard.new(params[:credit_card].merge(:user => @user)) @credit_card.save ... @submission.do_initial_charge(@user) ... end 次に、Submissionモデルで: def do_initial_charge(user) ... self.initial_charge = self.charges.create(:charge_type => ChargeType.find(1), :user => user) self.initial_charge.process! self.initial_charge.settled? end ではChargeモデル: aasm column: 'state' do ... event :process do transitions :from => [:created, :failed], …

4
アジャイルスクラム/かんばんチームの適切なテスト戦略は何ですか?
問題は: 私が働いているチームは、開発者が10人、テスターが2人という比率です。つまり、「テスト」よりも早くコードを作成することになります。 では、アジャイルの専門家によると、このようなシナリオでの活動を追跡するための正しいアプローチは何でしょうか? 以前のスプリントで「完了」と呼ばれるもの(テストは行われていません)がたくさんあるときに、近いうちにその日が来るのではないかと心配しています。 努力をシームレスに追跡するにはどうすればよいですか?テストは「完了定義」の一部である必要がありますか?そうでない場合の落とし穴は何ですか? 私によると、実際に機能テストされる前にストーリーを「完了」と呼んでいるので、これは一種の「ウォーターフォール」です。
8 testing  agile 

3
視覚化ソフトウェアにとって意味のあるテストを作成するにはどうすればよいですか?
特定の種類のファイルを取得して視覚化したり、プロットされた画像を操作するためのボタンのホストを作成したりする、かなり大きなソフトウェアがあります。週に一度は機能しないバグ/コードの断片を見つけているように感じますが、このソフトウェアのテストを作成する方法を理解するのに苦労していますか? ライブラリやAPIなどのプロジェクトにとってテストがどのように重要であるかを理解しています。これらの関数を使用するテストを作成するだけです。 しかし、視覚化ソフトウェアはどうですか?関連する視覚要素のため、別のアプローチが必要なようです。 データで使用できるすべての操作を実行して手動で呼び出すテストプログラムまたはテストハーネスを作成する必要がありますか? バグを修正したことを検証し、コードが再度壊れた場合に警告するために、テストの作成を開始するにはどのアプローチを使用すればよいですか? ユニットテストをいつ行うべきかに関して、関連するが重複していない質問があります。私はバグを発見しているので、ソフトウェアが再び後退するのを防ぐためのテストを作成したいと思います。

1
既存のRパッケージからスタンドアロンCライブラリを抽出するための推奨される方法?
私のグループは、植物の成長をシミュレートするためのRパッケージを開発しています(GitHubレポジトリを参照)。Rパッケージは.CallCとのインターフェースに使用します。 スタンドアロンCライブラリを作成する価値があると判断しました。2つの主な理由は、1)使い慣れたCデバッグツールを使用すること、および2)開発者/ユーザーコミュニティの大部分がコンパイル済み言語に精通していることです(ほとんどのクラスのモデルはCまたはFortranで書かれています)。ただし、Rパッケージはこのコミュニティの外部の多くの人がアクセスできるため、その機能を維持したいと考えています。 Cライブラリの依存関係を持つRパッケージについて説明しているいくつかの関連する質問(https://stackoverflow.com/q/12328156/199217など)を確認しましたが、既存のRパッケージのデカップリングを特に扱う質問は見つかりませんでした。 提案されたアプローチ (私たちがこれまでに思いついたこと...ストローマン) 既存の機能のテストを作成する Cライブラリをsrc/フォルダー内に保持する R固有のCコード(SEXPRライブラリの読み込みなど)を、先頭に「Rラッパー」ファイルを配置して配置します。R_* Cで構成ファイルを読み取るための個別の関数を作成する Rの機能を置き換える「メイン」のC関数を作成する Rラッパーファイルを無視するCライブラリのmakefileを書き込む Cライブラリが独立してRパッケージと同等に機能したら、C関数を別のリポジトリに移動することを検討できます。これはRパッケージの依存関係になります。 質問: この取り組みは見当違いですか? 潜在的な落とし穴を見落としていますか? RライブラリとCライブラリの両方を並行して開発するより良い方法はありますか? Rパッケージから分離されたCライブラリの例はありますか? RとCで同等の関数を比較するためのテストをどのように書けばよいでしょうか?
8 design  testing  c  refactoring  r 

2
特定のハードウェアに依存するアプリケーションをテストするにはどうすればよいですか
Androidアプリケーションを作成しました。アプリケーションには、非常に特定のハードウェア(現在はプロトタイプ)へのBluetooth接続が必要です。現在アプリをテストできる唯一の方法は、何百マイルも走行して機能するかどうかを確認することです。最終的にANRが発生した場合、クライアントの前では非常に恥ずかしいことがあります。このアプリの接続タイプとメカニズムは、このハードウェアに合わせて非常に厳密に調整されています。ラップトップを持参したり、電話をルート化したり、敷地内の他のデバイスに接続したりすることは許可されていません。 このアプリケーションを自宅でテストする方法、またはアクティビティをステップ実行して、クライアントが私を怖がらせている間、2番目のアクティビティで別のANRがないことを確認する方法はありますか? 私は経験豊富なプログラマーではないことを指摘しておく必要があります。これは、現在スタッフを雇っていないため、誰かを助けるための新しいアイデアです。間違いなく、これを開発するための非常に基本的な概念の一部が欠けています。

3
テストファイルをソース管理に保存する必要がありますか?
維持する必要のある(大きな)テストファイルがいくつかあります。これは、彼らの歴史へのアクセスが要件であることを意味します。 利点 新しい開発者は、だけでテストスイート全体を入手できgit pullます。 ファイルの履歴がバックアップされます。 ファイル自体がバックアップされます。 欠点 リポジトリのサイズが大幅に増加しました。 リポジトリをコピーする新しい開発者のダウンロードサイズが大幅に増加します。 テストファイルを維持するためのベストプラクティスは何ですか? これらのファイルをソース管理に保存しますか?代替案はありますか?

3
手動テストと自動テストの相対的な価値
私が働いている組織では最近、手動テストを実行するためにテスト担当者を雇っていますが、開発者としてユニットテストを書く時間を与えられるかどうかを尋ねたところ、手動​​テストの方が費用が大きくなると回答しました。それは私には間違っていると感じているものであり、手動と自動のテストを相互に評価する手段を探しています。手動テストの場所がないと言っているわけではありませんが、自動テストは、少なくとも、繰り返しの多い退屈なタスクのいくつかを取り除くように思えます。いくつかの単体テストといくつかのセレンテストを実行するビルドサーバーがあるので、自動テストのアイデアは無意味ではありませんが、投資収益率が低いと見なされています。 システムの完全なエンドツーエンドテストを誰かに行わせることで最終製品がテストされ、最終的にそれがユーザーの関心事であることが理解できますが、それは時間がかかり、非常に反復的です。手動回帰テストとは、以前のすべてのテストを繰り返し、何も変更されていないことを確認することです。プロセスに4つのパスがある場合、それはそれぞれ5分かかる4つの手動テストです。 それで、自動テストの時間の予算を立てるために使用できる検証可能な事実と数値はありますか?さらに言えば、リンクにあるもの以外の自動テストの欠点は何ですか?

9
ソフトウェアテストの目的は何ですか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 6年前休業。 多くの本を読んだことで、基本的な矛盾があります: 「テストの目的はバグを見つけることです」と言う人もいれば、「テストの目的は製品の品​​質を均一にすることです」と言う人もいます。つまり、バグはその副産物です。 また、テストが主にバグハントに向けられている場合、実際に検証を行い、ソフトウェアの準備ができているという情報を実際に提供するのは誰ですか。 たとえば、Kanerでさえ、テスト目標の元の定義をバグハンティングから品質評価規定に変更しましたが、まだ明確な違いはわかりません。私はどちらも同じくらい重要だと考えています。 ソフトウェアを仕様で検証して機能することを確認できます。その場合、見つかったバグは製品のみによるものです。しかし、私は物事を壊すためだけにテストを実行します。 また、どの定義がより正確ですか? 上記の注意点私は主にソフトウェアテストをプロセスと呼んでいます。

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