Hnoss

Hnoss

GitLabのドキュメントが、CC BY-SA 4.0.になったー!やったー!
カレンダー

文書タグ

フノス(訳者)(215) IT(191) 解説記事(147) マニュアル(82) GitLab CI(60) オープンソース(50) GitLab(40) Linux(38) メディア(34) コンテナ(29) ウェブ制作(27) DTM(19) HTML5(19) Libre Music(18) おすすめ オープンソース・ソフトウェア(18) プラグイン(14) 百科事典(14) 文化(12) ソフトウェア(11) セキュリティ(11) 録音(11) ミキシング(11) MIDI(10) 西アジア/中東(10) グルジア(9) 東ヨーロッパ(9) 料理(9) ジョージア(9) シーケンス(8) 芸能(8) 業務効率化(8) 音楽編集(8) コマンド(8) 音楽(7) 経済(7) ハンドブック(7) マスタリング(7) アプリ(6) Raspberry Pi(6) Google(5) ワークフロー(5) WordPress(5) JACK(5) マイクロサービス(5) 北米(4) Windows(4) Android(4) 映像制作(4) GNU(4) 法律(4) 欧州(4) 音楽プレーヤー(4) Ubuntu(4) アニメ(3) ホームオートメーション(3) アニメーション(3) IoT(3) Ardour(3) 社会(3) Java(3) ソーシャルメディア(3) DAW(3) Python(3) 歴史(2) ニュース(2) GNOME3(2) iOS(2) PlayStation(2) 仮想通貨(2) 古代エジプト(2) マーケティング(2) 有角神(2) エジプト(2) ALSA(2) OS X(2) ERPシステム(2) 電子ブック(2) トヨタ(2) バト(2) Krita(2) 電子書籍(2) ウィッカ(2) GPL(2) ERP(2) オカルト(2) Twitter(2) ロスレス音源(2) BountySource(2) スマホ(2) 牛(2) ヤーウェ(1) CD(1) タブレット(1) 学校(1) 日本(1) 羊(1) ベルゼブブ(1) デジタルサイネージ(1) VR(1) アップストリーム・パッケージング(1) 画像(1) 由来(1) グンデストルップの大釜(1) カナン(1) カナダ(1) サウンドフォント(1) 詩篇(1) チップチューン(1) バ・ネブ・デデト(1) コットン・マザー(1) クラウドキャスティング(1) VST(1) ポータブルソフトウェア(1) エリファス・レヴィ(1) マサチューセッツ(1) 考古学(1) 申命記(1) クヌム(1) 魔女裁判(1) オンデマンド(1) リーナス・トーバルズ(1) バフォメット(1) UNIX(1) 黙示録(1) スタジオジブリ(1) アモン(1) セイラム魔女裁判(1) ねじ巻きラジオ(1) 3D(1) 政治(1) イボ人(1) 国際(1) クリエイティブ・コモンズ(1) amazon(1) キリスト教(1) レビ記(1) Synfig(1) 独占(1) アマナイ(1) 広告(1) KXStudio(1) EU(1) イケンガ(1) 国際公文書館会議(1) マイナビ(1) 募金(1) ユダヤ教(1) ウルガタ聖書(1) 科学技術(1) 出エジプト記(1) 観光案内(1) 絵文字(1) サンフランシスコ(1) パキスタン(1) リクルート(1) ハトホル(1) パン(1) 地方(1) Blender(1) 羊神(1) ギリシャ(1) 高速道路情報無線(1) ツイッター(1) Youtube(1) 中南米(1) モヘンジョ=ダロ(1) CC(1) 声明(1) 悪魔(1) ラジオ(1) アレクサンドロス大王(1) ローマ(1) ポッドキャスト(1) ゲーム(1) パシュパティ(1) 1Password(1) アピス(1) 宗教(1) テレビ(1) OpenToonz(1) 電子教材(1) 船乗りの柱(1) シリア(1) GPS(1) アフリカ(1) リグ・ヴェーダ(1) F-Droid(1) デザイン(1) ムネヴィス(1) ネオペイガニズム(1) コミュニティ放送(1) アンビソニック(1) 元ネタ(1) ケルヌンノス(1) ナイジェリア(1) 日記(1) 聖書(1) 任天堂 DS(1) 教育(1) bi-modal IT(1) 魔女宗(1) アクティブSETI(1) バイノーラル(1) Papagayo(1) 写真(1) 意味(1) コシディウス(1) インド(1) ユーコン(1)
リファレンス

first-time visitors
user guide
謝辞

「みんなの翻訳」は情報通信研究機構言語翻訳グループ東京大学図書館情報学研究室による共同プロジェクトであり、三省堂国立情報学研究所連想情報学研究開発センターが開発に協力しています。三省堂には「グランドコンサイス英和辞典(36万項目収録)」の使用を許可していただきました。

連携研究グループはこちらをご覧ください。

「みんなの翻訳」を使っている翻訳グループについてはこちらをご覧ください。

バナー

logo

ポスター

poster

フライヤー

poster poster
Mozilla Firefox ブラウザ無料ダウンロード
本サイトはブラウザ「Mozilla Firefox」推奨です。
Firefox3で動作確認しています。

Valid XHTML 1.0 Transitional


2016年11月3日投稿

 ← エンジニアリング関連記事

 GitLabでは、皆さんのコントリビュート(アイデア投稿)をお待ちしております。もちろん、どなたでもご参加いただけるのですが、我々としては、より幅広いを募集するために、コードの正誤判定テストを自動的に実施します。
 たとえば、初心者の方が多少ルールを間違えたコードを提出してきたとしても、間違った箇所さえ訂正すれば、見かけより良い案だったということが多々あります。自動テストを使えば、そのコード上の誤りを効率的に発見できるのです。我々はこの仕組みが、開発参加者の枠を広げる一助になると考えてます。

 しかし、それには実用に耐えうるテストスイートを作り上げなくてはならなりません。ソフトウェアの信頼度を高め、更なる改良につなげる道しるべとなるのですから。

 コード網羅率とは?

 ソフトウェアのテストスイートで使われている手法に、コード網羅率の計測というものがあります。

 コード網羅率計測ツールは、たいていのソフトウェアテスト環境に搭載されているものです。そのソフトウェアの出来具合を、ソースコードを読み取って、開発者に解りやすく伝えます。ここで大切なのは、出来栄えのパーセンテージにこだわることではなくて、直すべきところがあるかどうか、またそれは具体的にどこなのかを測定できるというところです。

 ツールによっては、コードの計測結果をHTML形式に変換して、ブラウザで確認できるようにしてくれるものもありますので、そちらの方がコードの修正箇所と、改良につながる部分を簡単に把握できるでしょう。

 ここでは、GitLabの開発でも使われている Rubyのコード網羅率を計測する手法で、GitLab Pagesプロジェクトに不備がないかどうかを確認する方法を紹介します。
 (写真1)コード網羅率 計測結果

 どうやってコード網羅率を計測してるの?

 だいたい、どのプログラミング言語にも、それ専用のコード網羅率計測ツールが用意されています。それぞれのニーズに合ったものを探して使いましょう。これはGitLabでの話ですが、Rubyを使っているプロジェクトに対しては、だいたい「SimpleCov」というツールを利用していることが多いですね。

 でも、利用するツールは、「○○さんが使っているから、これにしちゃえ」というよりは、きちんと説明書きを読んで、どのようにしてコード網羅率を算出しているのかも、ある程度理解してから選択することをお勧めします。

 これから紹介する方法は、「SimpleCov」を使ってGitLab Pagesの質を確認する方法になりますが、「ローカル環境で、どのようにして問題点を計測して、修正を入れるか」の大まかな手順として参考にしていただけると嬉しいです。

 次の例では、RSpec と SimpleCovを併用していきます。

 テストツールの設定

 「SimpleCov」の設定は実に単純です。「spec_helper.rb」というファイルに、次の設定を加えます。

======================
require 'simplecov'
SimpleCov.start
======================
 この設定をすれば、あとで rspecコマンドを発動したときに、SimpleCovのテストが自動的に開始されるようになります。
 RSpecは、基本的に以下のコードを実行します。単純ですが、これでシングルクラスのテストを実施してるんですよ。

  spec/dog_spec.rb

======================
describe Dog do
 it 'barks' do
  expect(subject.bark).to eq 'Woof, woof!'
 end
end
======================

 dog.rb
======================
class Dog
 def bark
  'Woof, woof!'
 end
end
======================

 RSpec ハーネスでは、出てきた計測結果を次のように表示します。

======================
Dog
 barks

Finished in 0.00058 seconds (files took 0.08804 seconds to load)
1 example, 0 failures

Coverage report generated for RSpec to /tmp/coverage_example/coverage.  6 / 6 LOC (100.0%) covered.
======================
 出力されたテスト結果は、「coverage/」ディレクトリに収納されます。次のコマンドを使えば、後からでも計測結果を確認しなおせます。

======================
$ ls coverage/
assets/ index.html
======================

 はい!これにてHTML形式で、コード網羅率が表示されますから、GitLab Pagesで公表することも造作ありません!

 コードテストを GitLab CI で自動化しよう

 この章の説明は、「.gitlab-ci.yml」ファイルの使い方について、少し知識を持っていただいていると、より様々なプロジェクトに応用できるかもしれません。

 GitLab CIを使うには、「.gitlab-ci.yml」というファイルに、いくつか設定が必要ですが、GitLab Pagesのコード網羅率レポートを閲覧する時にも便利です。

 設定1. まずは RSpec テストツールを起動させる

 プロジェクトにプッシュしたら、途端にテストツールが動いた方が効率的ですね。早速、次の設定をファイルに書き込みましょう。これから、たくさんの設定が加わりますが、まずこれがベースの設定となります。

======================
image: ruby:2.3

rspec:
 script:
  - bundle install
  - rspec
======================

 設定2. テスト結果の保存先を指定する

======================
image: ruby:2.3

rspec:
 script:
  - bundle install
 
 - rspec
 artifacts:
  paths
:
   - coverage/

======================
 なんと、ここでは、テスト結果のレポートが、アーティファクトとして扱われます。よって、このようにビルド先を指定しないと、正しい場所にHTMLファイルが保存されません。「build」サイドバーから、build artifacts ブラウザを使うと、正しい場所にテスト報告書が置かれているかどうかがわかります。
 (写真2)コード網羅率 のHTMLは、このようなところから確認できます。

 設定3. 最後に、GitLab Pagesと共に公開する

 GitLab Pagesの使い方はこちら

======================
image: ruby:2.3

rspec:
 script:
  - bundle install
 
 - rspec
 artifacts:
  paths:
   - coverage/

pages:
 stage: deploy
 dependencies:
  - rspec
 script:
  - mv coverage/ public/
 artifacts:
  paths
:
   - public
  expire_in: 30 days
 only:
  - master

======================
 GitLab Pagesでコード網羅率を公開しようとするなら、job同士のステージを分割しなくてはなりません。
 ステージは、主にtestbuilddeployの三種類があります。(必要に応じて別のステージを設けることができる。)
 それから、GitLab Pagesを立ち上げる限り、job名「pages」は欠かせませんね。

 「dependencies」というキーワードを使っているので、GitLabはサイトをビルドする時に、job名「rspec」で作成されたアーティファクトを利用します。
 そして、「pages」jobのアーティファクト展開先は、「public/」とされているので、テスト結果は、「coverage/」から「public/」ディレクトリに移動させられるイメージを持つと、分かりやすいでしょう。
 GitLab Pagesは、「public/」に入れたものしか、ウェブサイトの材料として見なしてくれませんので、大事です。

 網羅率レポートページをデプロイするのは、masterブランチにプッシュされたときに限定するとよいので、only: -master という項目を、コンフィグファイルの最後に設けています。
 「expire_in: 30 days」とある通り、アーティファクトの有効期限は、30日間です。この日数が経過すると、コード網羅率の結果は無効化されます。

 同時並行テスト

 設定はやや複雑化しますが、他のテストスイートを同時に作動させることはできます。

 GitLab には、同じステージにあるjobを同時に実行する機能がありまして、テストjobが複数あるのなら、stage: test という設定を設けるのが適当と思われます。
 また、同じような工程を『同時に実施することで、テストやビルドにかかる所要時間を削減することにつながりますので、CIパイプラインに、jobのステージを明記しておくメリットはあるでしょう。

 ここで使用する試験方法には、様々な種類があります。
 もっとも単純なもので、手動で何らかのテストコードを実行してしまうもの、あるいは、既成のツールやプラグインをテストに利用することもできます。

 テストスイートが複数個あるのなら、生成される網羅率レポートには、それぞれ差異が発生することがあります。もちろん、どのテスト結果もbuildアーティファクトとして、指定されたディレクトリにビルドされることになりますよ。それらの計測結果は、他のjobで実施されたテスト結果と合流して、総合結果がアカウントの中に報告されることとなります。この工程にも支障が出ないように、テストには、testステージを設けてください。

 GitLabでは、基本的に自前のテストスイートを多用していますが、必要に応じては配布されているテストスイートをjobに取り入れています。
 たとえば、SimpleCovなんかは、その代表例ですが、このプロジェクトはソースこそ公開しているものの、外部からのマージは受け付けていないので、GitLab仕様にパッチを仕立てる必要がありました。このパッチにつきましては、SimpleCov本家様にも取り入れてもらえないかどうか、イシューを出しています。

 GitLab Pagesとして 網羅率レポートをデプロイする

 新しく変更を加えた「.gitlab-ci.yml」をGitLabにプッシュすると、新しいjobがCIパイプラインに表示されます。
 (写真3)カバレッジ・レポートの行方と、デプロイジョブの結果

 「pages:deploy」jobが成功しているようなら、ステータスアイコンが緑色になっているはずです。
 網羅率レポートにアクセスする番地は、「http://ここにグループ・パス.gitlab.io/ここプロジェクトパス」となるので、「https://gitlab-org.gitlab.io/gitlab-ce」みたいになりますね。

 そのアドレスに表示されているレポートは、その前にプッシュしたての最新版ですよ!

 コード網羅率レポートバッジを使う

 GitLab Pagesの網羅率を公開したら、そのリンクをどこかに設置したくなるものでしょう。
 そんなときに、コード網羅率レポートバッジを設置することをお勧めしております。ご自分のREADME.mdファイルに置いてみてはいかがでしょう。

 たとえば、我々のプロジェクトなら、こちらのREADME.mdに、バッジが沢山貼られていますね。
 (写真5)コード網羅率レポートバッジ

 このバッジをクリックすると、コード網羅率報告書のページが開くようになっています。
 ここで使われているマークダウンソースは、以下の通りです:

============================================
[![Coverage report](https://gitlab.com/gitlab-org/gitlab-ce/badges/master/coverage.svg?job=coverage)](http://gitlab-org.gitlab.io/gitlab-ce/coverage-ruby)
============================================  レポートバッジについて、もっと詳しく知りたい方は、こちらのドキュメントをご覧ください。

 おわりに

 コード網羅率は、ソフトウェアの質をあまりに分かりやすーく表示してくれるものではあります。かといって、それがソフトウェアの動作を保証するものではないし、他に良いテスト基準があるのなら、どんどん取り入れるべきです。ただ、そんな完璧とは言い難いものでも、大それた間違いを探すのには、大役立ちで、それがコードの投稿を促してくれる面があります。

 GitLabには、まだまだ改良しやすい部分がありますから、皆さん、どんどんコントリビュートしてください!

 原文記事をツイッターで共有する

原文:https://about.gitlab.com/2016/11/03/publish-code-coverage-report-with-gitlab-pages/
Creative Commons License
この作品は、クリエイティブ・コモンズ・ライセンスの下でライセンスされています。
クリエイティブ・コモンズ・ライセンス外部リンク
新着文書(Hnoss)

GitLab Plugin system
GitLab Documentation > Administrator documentation >GitLab Plugin system GitLab 10.6より導入。  カスタムプラグインを使えば、GitLa...
UX Department
現在の位置: チームハンドブック 目次 >UX部門   UX ガイド  GitLabの見た目は、 UXガイド を基準に構成されている。このガイドが、わが...
Team Handbook
現在の位置:チームハンドブック 目次  このハンドブックは、GitLabという企業が、どのようにサービスを維持運営していくかを記したものだ。ここに...
Engineering
現在の位置: チームハンドブック 目次 >エンジニアリング   連絡方法 Public Issue Tracker (GitLab CEの場合) ; 不特定多数に公開して...

新着文書

Bristol’s Last Bookshop shares key facts on the remains of publishing
ブリストルの ラスト・ブックショップ (「最後の書店」)はたぶん、真の本好きのための残本店と言っていいだろう。それは、いくつかの出版社の名作...
Second social leader opposed to dam construction murdered in one week
一人の社会指導者は昨日プエルトリコ・バルディビアで虐殺された。これはアンティオキアで一週間以内に連続して起きた二回目の類似の殺人である。5月8...
Avianca strike leaders fired / Justice for Colombia
コロンビア第一の航空会社アビアンカは昨年9月20日から11月9日の長期にわたり行われたストに参加したパイロット14人を解雇した。解雇された一人、ハイ...

新着Wikipedia翻訳

Flutter (software)
Flutter -------- 原作者:Google 開発者:Googleとコミュニティ 最初の公開:アルファ(v0.0.6)/2017年5月;1年前(2017-05)[1] 試験版の公...
E (programming language)
E(プログラミング言語) AmigaE や e(検証言語) 、 GNU E と混同しないこと。 E -------- パラダイム マルチパラダイム:オブジ...
Van Eck phreaking
Van Eck phreaking(ファン・エック・フリーク) Van Eck phreakingは盗聴の一形態であり、その中では特殊な装置が使用され、電子機器を探るため、隠...

更新履歴

※文書量によっては処理に数十秒かかる場合があります
バージョン 比較対象 更新日時 更新者
1(最新) 2018-05-17 23:41:22 Hnoss
2 2018-05-17 23:41:12 Hnoss
3 2018-05-17 22:48:43 Hnoss
4 2018-05-16 13:16:13 Hnoss
5 2018-05-16 00:59:57 Hnoss
6 2018-05-16 00:58:41 Hnoss
7 2018-05-16 00:57:38 Hnoss
8 2018-05-16 00:56:07 Hnoss
9 2018-05-16 00:55:17 Hnoss
10 2018-05-16 00:53:07 Hnoss

    
ブックマーク登録

タグを「;(半角セミコロン)」区切りで入力して下さい(例)tag1;tag2;tag3
10タグまで登録可能。各タグ30文字まで

履歴
状態 作業中 作業予定あり 作業予定なし 作業完了
テーマ 社会 政治 法律 経済 文化 芸能 科学技術 IT 健康/医療 スポーツ メディア 植物 動物 菌類 地方 国際
地域 日本 東アジア アフリカ 南アジア 東南アジア 西アジア/中東 太平洋 北米 中南米 欧州
ジャンル ニュース 解説記事 論文 日記 百科事典

コメントを入力して下さい
0 / 250
    
ブックマーク登録

ブックマークに登録しました。


言語選択

    
ファイルプロパティ

使用許諾条件
ファイル情報
あなただけがこのファイルを閲覧・編集できます。
みんながこのファイルを閲覧できますが、
編集ができるのはあなただけです。
あなたに加えて、指定された人やグループが
このファイルを自由に閲覧・編集できます。
公開設定
編集設定
グループ:0組 翻訳者:0人
    
アクセス属性
この文書は「非公開」設定になっています。
一般公開する場合は、編集ページの書誌情報で「公開」設定に変更して下さい。
翻訳者選択

※メニュー「翻訳者管理」で翻訳者、グループを追加することができます。


    
ノート

非公開ノート
0 / 2000 ※「公開・編集」権限を持つ翻訳者のみに公開されます。
公開ノート
0 / 2000 ※文書を「公開」にした場合、一般に公開されます。

言語選択

 →