2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ShellSpecでカバレッジを収集する

Last updated at Posted at 2021-09-27

はじめに

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を表示すると以下のようにカバレッジの結果が表示される。
スクリーンショット 2021-09-27 21.40.56.png

対象シェルスクリプトの実行詳細。
スクリーンショット 2021-09-27 21.41.42.png

まとめ

シェルスクリプトのテストでもカバレッジが収集できたことで試験が実施しやすくなり、単体テストのエビデンスの1つとして使用できるので良いと思います。
カバレッジに限らず、Shellspecには多くの機能が実装されてので、学習コストがかかるかと思います。
ただ、シェルスクリプトのテストフレームワークとしては利用する価値のあるフレームワークだと感じました。
今後、Shellspecを使って、シェルスクリプトの単体テストができるように学習しておきたいと思いました。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?