コードオーバーライド率テストおよびGitHub自動化統合
5394 ワード
本明細書の対応項目はlearn-coverage-testであり、プロジェクトのケースと比較して読むことができる.
コードを書くとき、コードテストを行って、コードの実行性を保証することがあります.しかし、テストコードはテストケースが通過することを保証するしかありません.私たちはどのようにして私たちのテストケースが基本的にすべての状況をカバーしていることを確保することができますか?
例:
上記のコードは、
したがって、カバー率テストを導入して、テスト事例を評価する必要があります.
オーバーライド率は、コードテスト中にテストされたコードの割合と程度を評価するために使用されます.通常、テストオーバーライド率の高いコードエラーの確率は比較的小さい.テストオーバーライド率の低いコードでは、予知できない動作が発生する確率が高い.
ウィキペディアの資料によると、基本的なコードカバー率は4種類ある:
次のようになります.関数オーバーライド率:プログラム内の関数が関数総量に占める比重 文オーバーライド率:実行コード行数がコード総行数に占める割合 分岐オーバーライド率:if条件がtrueまたはfalseの場合のコードが実行されたかどうかなど、コードロジックの各分岐がテストされたかどうかを示す 条件付きオーバーライド率:各ブール式はtrueまたはfalseとして割り当てられ、条件付きオーバーライド率テストを満たす必要があります.
たとえば、次のような関数があります.
上記の関数では、テスト時に次のようにします.foo関数が実行されると、その関数の関数オーバーライド率が満たされる.ソースコードにこの関数が1つしか含まれていない場合、関数のオーバーライド率は100%です.例: 関数の各ローコード(各文)が実行された場合、その関数の文オーバーライド率は満たされる.例: if内のコードも実行されると、条件上書き率が満たされる. テストケースに
以上のケースはウィキペディアから
MochaはJavaScriptプロジェクトのテストツール、IstanbulはJSテストオーバーライド率レポートの生成ツールです.
このセクションでは、両方のテストコードと組み合わせて、コードテストオーバーライド率レポートを生成する方法について説明します.
nycはIstanbulのコマンドラインインタフェースで、開発依存としてプロジェクトにインストールします.
次に、
もちろん、プロジェクトの状況によっては、上記のコマンドが一致しなくてもよく、具体的にはドキュメントを参照して構成することができます.
これにより、
まず、GitHubアカウントにCodecov権限を開設し、Codecovにアクセスし、GitHubアカウントを使用してログインします.その後、GitHub情報を自動的に同期し、ガイドラインに従って行えばいいです.
その後、GitHubで設定し、あるrepoに対してCodecovのサービスを開通する必要があります.具体的にはGitHub marketplaceでCodecovを見つけ、configureをクリックして構成できます.
Travis CIスクリプトには、対応する依存度レポートとアップロードオーバーライド率レポートをインストールするためのコマンドがいくつか追加されます.
インストールの依存性はcodecovであり、グローバルインストールであることがわかります.次に、
構成が完了すると、プロジェクトをPRするたびにCodecovは上書き率を自動的にテストし、PRにコメントを報告します.
Contributorが新しいコードに対応するテストケースを書いていない場合は、一目で見ることができます.テストオーバーライド率が低すぎる場合は、PRを修正して再統合することができます.
私はPRの中でテストコードを修正して、テストカバー率を高めました.Codecovは私がPRを合併する前にカバー率報告をPRの下にコメントしました.カバー率が向上したことが明らかになりました.確かに便利です.
Codecov公式サイトにログインしてrepoを見つけ、クリックして、Settings->Badgeを順に見つけ、対応するコードをコピーすればいいです.
効果はgithub.com/zhongdeming…
オーバーライド率テスト
コードを書くとき、コードテストを行って、コードの実行性を保証することがあります.しかし、テストコードはテストケースが通過することを保証するしかありません.私たちはどのようにして私たちのテストケースが基本的にすべての状況をカバーしていることを確保することができますか?
例:
const a = true;
if (a) {
return 1;
} else {
return -1;
}
上記のコードは、
a === true
が実行され、a === false
が実行されない場合にのみ実行できます.実際の使用でaの値がfalseである場合、上記のコードでは予知できない場合があります.したがって、カバー率テストを導入して、テスト事例を評価する必要があります.
オーバーライド率は、コードテスト中にテストされたコードの割合と程度を評価するために使用されます.通常、テストオーバーライド率の高いコードエラーの確率は比較的小さい.テストオーバーライド率の低いコードでは、予知できない動作が発生する確率が高い.
オーバーライド率テストの分類
ウィキペディアの資料によると、基本的なコードカバー率は4種類ある:
、
、
と
である.次のようになります.
たとえば、次のような関数があります.
function foo(x, y) {
let res = 0;
if (x > 0 && y > 0) {
res = x;
}
return res;
}
上記の関数では、テスト時に次のようにします.
foo(1, 2)
foo(1, 2)
は、res = x
も実行されているためです.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…