コードオーバーライド率テストおよびGitHub自動化統合

5394 ワード

本明細書の対応項目はlearn-coverage-testであり、プロジェクトのケースと比較して読むことができる.

オーバーライド率テスト


コードを書くとき、コードテストを行って、コードの実行性を保証することがあります.しかし、テストコードはテストケースが通過することを保証するしかありません.私たちはどのようにして私たちのテストケースが基本的にすべての状況をカバーしていることを確保することができますか?
例:
const a = true;
if (a) {
  return 1;
} else {
  return -1;
}

上記のコードは、a === trueが実行され、a === falseが実行されない場合にのみ実行できます.実際の使用でaの値がfalseである場合、上記のコードでは予知できない場合があります.
したがって、カバー率テストを導入して、テスト事例を評価する必要があります.
オーバーライド率は、コードテスト中にテストされたコードの割合と程度を評価するために使用されます.通常、テストオーバーライド率の高いコードエラーの確率は比較的小さい.テストオーバーライド率の低いコードでは、予知できない動作が発生する確率が高い.

オーバーライド率テストの分類


ウィキペディアの資料によると、基本的なコードカバー率は4種類ある: である.
次のようになります.
  • 関数オーバーライド率:プログラム内の関数が関数総量に占める比重
  • 文オーバーライド率:実行コード行数がコード総行数に占める割合
  • 分岐オーバーライド率:if条件がtrueまたはfalseの場合のコードが実行されたかどうかなど、コードロジックの各分岐がテストされたかどうかを示す
  • 条件付きオーバーライド率:各ブール式はtrueまたはfalseとして割り当てられ、条件付きオーバーライド率テストを満たす必要があります.

  • たとえば、次のような関数があります.
    function foo(x, y) {
      let res = 0;
      if (x > 0 && y > 0) {
        res = x;
      }
      return res;
    }
    

    上記の関数では、テスト時に次のようにします.
  • foo関数が実行されると、その関数の関数オーバーライド率が満たされる.ソースコードにこの関数が1つしか含まれていない場合、関数のオーバーライド率は100%です.例:foo(1, 2)
  • 関数の各ローコード(各文)が実行された場合、その関数の文オーバーライド率は満たされる.例:foo(1, 2)は、res = xも実行されているためです.
  • if内のコードも実行されると、条件上書き率が満たされる.
  • テストケースにx > 0の値がtrueおよびfalseである場合、およびy > 0がtrueおよびfalseである場合、条件カバー率は満たされる.例:foo(1, -1)foo(-1, 1)です.

  • 以上のケースはウィキペディアから

    Mocha+Istanbulを使用してオーバーライド率をテスト


    MochaはJavaScriptプロジェクトのテストツール、IstanbulはJSテストオーバーライド率レポートの生成ツールです.
    このセクションでは、両方のテストコードと組み合わせて、コードテストオーバーライド率レポートを生成する方法について説明します.
    nycはIstanbulのコマンドラインインタフェースで、開発依存としてプロジェクトにインストールします.
    $ npm i -D nyc
    

    次に、package.jsonファイルのscriptsオブジェクトに次のプロパティを追加します.
    "coverage": "node_modules/.bin/nyc --reporter=html --reporter=text node_modules/mocha/bin/_mocha"
    

    もちろん、プロジェクトの状況によっては、上記のコマンドが一致しなくてもよく、具体的にはドキュメントを参照して構成することができます.
    これにより、npm run testの後にテスト結果の後に出力されたオーバーライド率レポートが表示され、プロジェクトのcoverageディレクトリにオーバーライド率レポートページファイルが追加的に生成されます.coverage/index.htmlをクリックすると、詳細なカバー率テスト結果が表示されます.

    CodecovとTravisCIを統合してカバー率自動化テストを行う


    まず、GitHubアカウントにCodecov権限を開設し、Codecovにアクセスし、GitHubアカウントを使用してログインします.その後、GitHub情報を自動的に同期し、ガイドラインに従って行えばいいです.
    その後、GitHubで設定し、あるrepoに対してCodecovのサービスを開通する必要があります.具体的にはGitHub marketplaceでCodecovを見つけ、configureをクリックして構成できます.
    Travis CIスクリプトには、対応する依存度レポートとアップロードオーバーライド率レポートをインストールするためのコマンドがいくつか追加されます..travis.yml具体的な構成は以下の通りである.
    language: node_js
    node_js:
      - "7"
    install:
      - npm i
      - npm i -g codecov
    script:
      - npm run coverage
      - node_modules/.bin/nyc report --reporter=text-lcov > coverage.lcov
      - codecov
    cache:
      directories:
        - node_modules
    

    インストールの依存性はcodecovであり、グローバルインストールであることがわかります.次に、node_modules/.bin/nyc report --reporter=text-lcov > coverage.lcovコマンドを使用してレポートを生成します.
    構成が完了すると、プロジェクトをPRするたびにCodecovは上書き率を自動的にテストし、PRにコメントを報告します.
    Contributorが新しいコードに対応するテストケースを書いていない場合は、一目で見ることができます.テストオーバーライド率が低すぎる場合は、PRを修正して再統合することができます.
    私はPRの中でテストコードを修正して、テストカバー率を高めました.Codecovは私がPRを合併する前にカバー率報告をPRの下にコメントしました.カバー率が向上したことが明らかになりました.確かに便利です.

    Codecov Badgeの追加


    Codecov公式サイトにログインしてrepoを見つけ、クリックして、Settings->Badgeを順に見つけ、対応するコードをコピーすればいいです.
    効果はgithub.com/zhongdeming…