gossでのテスト実行と結果の見方


この記事はgoss advent calender 2019 参加記事です。

前回記事からの継続になります。

作成したテスト項目を実行(検証)は以下の実行します。

goss validate

もしくは以下のように省略系で実行します。

goss v

テスト項目作成で使用したadd等も省略形はありますが、validateほど使わないので
ここでの紹介になります。

テスト実行結果の見方

これで実行すると以下のような結果になります。

全て成功の場合

失敗を含む場合

ドット(緑色)で表記されているものはテストは成功しYAMLに書いた期待結果に沿った内容だったもので
F(赤色)で表記されているものはテストに失敗し、期待通りの結果と異なる内容だったものです。

S(黄色)で表記されているものはSkipで、特定のテストが失敗しているのでテストされずにスキップされた場合に表記されます。

画像の例の場合、tcp6 80ポートのListen状態が失敗しているため、ListenポートのバインドIPのテストをスキップしています。

またFとなったテスト失敗については、詳細が表示され、テストで書いた項目と実際の取得値が並べて表示されます。

そして最後に、テスト実行にかかった時間とテスト項目数、テスト失敗数、スキップ数が表示されます。

他の結果表示を使用する

validateサブコマンドではオプションに --output または -o で表示形式を変更できます。

個人的によく使うのは documentation と tapで正常系も含めた詳細表示と
slientで表示しない形式です。

documentationは目視で正常系も見たい場合に
tapは正常系も含めてテスト内容と結果をExcelへ出力する際に使っています。
tap形式でも直接は表形式にならないので、CSV化できるように多少加工を加えますが。

slientは名前の通り結果表示を抑える場合に使用します。

また個人的には使ったことありませんが、jsonまたはjson_oneline形式は他のアプリに結果を取り込む場合に便利だと思います。
DBに直接の場合はElasticSearchやMongoDB等スキーマレスに限られますが取り込めると思います。
(やったことある方がいらっしゃいましたらコメントを是非ください)

また他にもjunit形式やnagios形式の出力があるので、それらの形式を入力として使えるツールであれば連携可能だと思います。(junitやnagiosは詳しくないので詳細割愛です)