はじめに
Shellspec でカバレッジを収集できるということだったので、カバレッジを収集してみる。
そもそも、ShellSpecとはシェルスクリプト用のBDDスタイルのテストフレームワークです。
ShellSpec - シェルスクリプト用のBDDテスティングフレームワークを作りました
ShellSpecのリポジトリはこちら
ShellSpec
環境
カバレッジの収集を実施する際の環境は以下のとおり。
OS / MW | Version |
---|---|
CentOS | 7.6.1810 |
Bash | 4.2.46(2)-release |
Shellspec | 0.29.0-dev |
kcov | v37-65-g48a3 |
準備
Shellspec でカバレッジを収集するためには、kcovコマンドが必要になる。
そのため、事前にkcovをインストールする。
kcovのインストール
Shellspecでカバレッジを収集するために、kcovが必要なので、kcovのインストールをする。
$ sudo yum install -y elfutils-libelf-devel libcurl-devel binutils-devel elfutils-devel cmake gcc gcc-c++ openssl-devel python3
$ git clone https://github.com/SimonKagstrom/kcov.git
$ mkdir -p kcov/build
$ cd kcov/build
$ cmake ..
$ make
$ sudo make install
Shellspecでカバレッジを取得してみる
--kcovオプションをつけて実行するとcoverageフォルダが生成され、coverageフォルダ配下にカバレッジのデータが保存される。
$ shellspec --kcov --kcov-options "--include-path=../shell --include-pattern=.sh"
オプション | 内容 |
---|---|
--include-path | ,(カンマ)区切りで、カバレッジを取得する対象のスクリプトファイルがあるディレクトリを指定 |
--include-pattern | ,(カンマ)区切りで、収集対象のシェルの拡張子を指定 |
実際に実行すると標準出力でカバレッジの情報も出力される。
Code covered: 53.85%, Executed lines: 14, Instrumented lines: 26
coverage配下に出力されたindex.htmlを表示すると以下のようにカバレッジの結果が表示される。
まとめ
シェルスクリプトのテストでもカバレッジが収集できたことで試験が実施しやすくなり、単体テストのエビデンスの1つとして使用できるので良いと思います。
カバレッジに限らず、Shellspecには多くの機能が実装されてので、学習コストがかかるかと思います。
ただ、シェルスクリプトのテストフレームワークとしては利用する価値のあるフレームワークだと感じました。
今後、Shellspecを使って、シェルスクリプトの単体テストができるように学習しておきたいと思いました。