0

So what are the objectives here:

  1. Test Isolation means , test code is not accessible with the source, as his can cause security issues, and induce vulnerabilities.

  2. We can Extend and Generalize Test Frameworks beyond just testing the particular source.

  3. We can do refactoring and improvement regardless of Source Changes

  4. Because of isolation we can try running the same test framework against various branches of source code

  5. Performance problems with test code , run time , or overflows do not directly affect test runs, as we can easily revert to the version of the test framework that was performing well.

Questions:

Should the test code and source code be in the same branch ? How would we set that up ? how would that work with lets say subversion, what would be the pros and cons ?

4

1 に答える 1

1

質問は少し不正確です-私はあなたの質問がユニットテストコードに言及しており、受け入れテスト、パフォーマンステストなどではないと仮定しています.

最初に考慮すべきことは、テスト コードとテスト対象コードの間に密接な結合があることです。その依存関係を管理する必要があります。どのように管理するかは、開発戦略に大きく依存します。ブランチを使用して機能またはリリースを分離する場合、そのブランチのテスト コードを同じブランチに配置します。別のブランチのコードで動作することは期待できません。テスト コードに別のブランチを追加すると、必ずしも利点が追加されるわけではなく、物事がより複雑になります。

第二に、できれば明らかに、依存関係を管理する必要があります。テスト コードは、テスト対象のコードに依存します。テスト対象のコードは、テスト コードに依存するべきではありません。JDepend や NDepend などのツールを使用すると、これらの依存関係を監視できます。通常は、テスト コードから依存関係を明示的に管理することをお勧めします。すべてのテストがコード下のテストで単一のクラスに依存している場合、問題が発生した場合、その依存関係によってすべてのテストが中断される可能性があります。

ここで、特定の質問に答えるために、SVN に (主要な) 機能のブランチがあり、標準的なプロジェクト構造を設定していると仮定します。

 \src   
   \app
   \test   

アプリケーション コードは "app" フォルダーにあります。「test」ディレクトリのテスト コード。

この場合、SVN は次のようになります。

\trunk
  \app
     \com.me.app.views
     \com.me.app.models
     \com.me.app.controllers
  \test
     \com.me.app.tests.views
     \com.me.app.tests.models
     \com.me.app.tests.controllers
\branches
  \feature1
     \app
        \com.me.app.views
        \com.me.app.models
        \com.me.app.controllers
     \test
        \com.me.app.tests.views
        \com.me.app.tests.models
        \com.me.app.tests.controllers
  \feature2
     \app
        \com.me.app.views
        \com.me.app.models
        \com.me.app.controllers
     \test
        \com.me.app.tests.views
        \com.me.app.tests.models
        \com.me.app.tests.controllers
于 2013-06-18T20:58:06.343 に答える