0

基本的な質問は、「テストされていないプロジェクトの単体テストと統合テストをどのように書き始めればよいでしょうか?特に、その人がコードに精通しておらず、以前に統合テストを行ったことがないという事実を考慮してください。

プロジェクトの単体テストと統合テストを作成する必要があるシナリオを考えてみましょう。このプロジェクトは Java/J2EE テクノロジーを使用しており、テストはまったく作成されていません。

私が直面しているジレンマは、コードを書いていないので、すぐにコードをリファクタリングしてテストを書きたくないということです。テスト フレームワークも選択する必要があります。Mockito と Powermock の使用を考えています。

また、テストのコード カバレッジを見積もる必要もあります。そして、統合テストを実行します。統合テスト ツールについて調査し、いずれかを選択する必要があります。これまで、統合テストを行ったことも、プロジェクトのコード カバレッジの許容レベルを見積もったこともありません。

私は独立して働いているので、戦略、ヒント、何から始めるべきか、推奨できるツールに関する提案があれば、感謝します.

4

3 に答える 3

3

先着順:

  1. アーキテクチャを理解してください。主なコンポーネントは何ですか?
  2. プログラムが提供する機能の概要がよくわからない場合は、それらのリストを作成し、それらの階層を作成します
  3. コードに慣れてください。次のアプローチをお勧めします。
    • さまざまなコンポーネントのコードが開始される場所を理解したら、メソッド呼び出し階層を把握してみてください (Eclipse では、F3 を押すことでソース コード定義に簡単にジャンプできます)。
    • 後でコードのデバッグ中に同じことを行うことができます。この方法では、定義に自動的にジャンプし、プログラムの状態がどのように変化するかを観察できます。

単体テスト自体については、初心者向けにClean Code Chapter 9 (約12 ページ) をお勧めします。例として JUnit を使用し、優れたテストがどのように行われるかを紹介しています。

そこでは、単体テストは次のようにすべきであるという最初の原則のようなことを学びます。

高速、独立、反復可能、自己検証、タイミング

いくつかの明確化、JUnit は最も使用され、受け入れられているテスト フレームワーク自体です。Mockito と Powermock はモック フレームワークであり、統合テストを行う場合に JUnit と一緒に使用されます。

コード カバレッジについてはCoberturaしかお勧めできませんが、他にもたくさんあります

コベルチュラ

統合テスト (ボトムアップ) に飛び込む前に単体テストから始めます。逆に (トップ-ボトム) 行うこともできますが、あなたはあまり経験がないと言っているので、最初のテストに固執します.

最後に、それを目指して始めましょう。実際にテスト コードを書いているときに、最も速く学習できます。

于 2012-07-05T17:53:07.427 に答える
2

テストのないレガシ コードにテストを追加するのは、難しい作業です。@Suraj が述べたように、コード ベースと期待される機能に慣れてください。何をすべきか分からなければ、テストすることはできません。

テストするコードの領域を選択するという点で。ビジネス価値の高い分野から始めます。最も重要な機能はどれですか? そのコードの強力なテスト セットがあることを確認する必要があります。

ユニット/統合テストがないため、システムへの入力が与えられた場合に期待される出力が得られることを少なくとも保証する、高レベルのエンドツーエンドのテストから始めます。これは正確性を保証するものではありませんが、少なくとも一貫性を保証します。

その後、テスト スイートを開発するときに、行っているリファクタリングがコードの動作を変更していないことを確信できます (もちろん、修正中のバグを見つけない限り)。

テスト フレームワークの場合、JUnit が標準の単体テスト フレームワークです。フレームワーク Mockito と Powermock はフレームワーク自体をテストしていませんが、JUnit 内で使用できることに注意してください。

受け入れテストには、役立つさまざまなフレームワークもあります。Web UI のテストでは、Selenium がかなり標準的です。より多くのテーブル駆動テスト用の Fitnesse などのツールもあります。

コード カバレッジに役立つ一般的なフレームワークもいくつかあります。Cobertura、Emma、Clover が思い浮かびます。

自動ビルドもセットアップします (Jenkins ビルド サーバーのセットアップは非常に簡単です)。これにより、すべてのチェックインでテストを実行できます。最初はコード カバレッジが低くても、この習慣を身に付けることは良いことです。

于 2012-07-05T17:59:27.320 に答える
2
  • 止まる。" ..not familiar with the code.."。最初にコードに慣れ、最も重要なことは期待される機能に慣れることです。慣れていないコードをリファクタリングまたは単体テストすることはできません。
  • 以前に単体テストを行ったことがないので、単体テストを学習して便利になることをお勧めします。

重要: 悪い/間違った単体テストは、単体テストがない場合よりも悪いです。これは、あなたのコードを保守する次の人が機能を誤解するからです。

于 2012-07-05T17:45:00.060 に答える