Python製BDDツールを使っ
てテストを自動化してみた
自動化大好きエンジニアLT会 第5回
■自己紹介
 [名前]: 上畑圭史(うえはたけいじ)
 [Twitter]: いじけまん(@ijikeman)
 [職業]:株式会社ラクスのインフラエンジニア
 [趣味1]: 自作キーボード大好き
アクリル板(4mm)にキーの穴(60個)を手であけた
自キー(自作キーボード)界隈ではちょっとした有名人
 [趣味2]: ピアノ歴5ヵ月(コロナを契機に) …
 [趣味3]: 野菜作り
 [趣味4]: 自動化大好きエンジニアLT会登壇(第1~5回) 皆勤継続
2
■BDD(ビヘイビア駆動開発)
ツールはTDDの一つの手法
TDD(テスト駆動開発)では
「テストを書いて実行(失敗:Red)」
「テストに合わせた実装→テスト実行
(成功: Green)」
を繰り返していく開発手法
「振る舞い(機能的外部実装)」のテストに特化
させたフレームワークツール
※長くなるので詳細は TDD、BDD、アウトインサイドTDD等で調べてください
■Python製BDDツール一覧
ツール名 リリース年 メンテナンス(最新リリース日) ステータス
pytest-bdd 2013年 ○ 5.0.0(2021/10/26) Star: 597
Fork: 149
behave 2011年 ○ 1.2.6(2021/02/26) Star: 2,453
Fork: 549
radish 2015年 ○ 0.13.4(2021/03/29) Star: 159
Fork: 44
lettuce 2010年 × 0.2.22(2016/05/10)
ツール名 リリース メンテナンス ステータス
cucumber 2008年 ○ 7.1.0(2021/10/12) Star: 5.1k
Fork: 1.1k
Turnip 2011年 ○ 4.3.0(2021/05/16) Star: 956
Fork: 114
spinach 2011年 ○ 0.11.0(2020/04/12) Star: 563
Fork: 66
■Ruby製BDDツール一覧
Pythonのテストツールとし
てpytestは有名だが、BDD
としてはbehaveが人気
Ruby版では
cucumberが圧倒的
■BDDツールの特徴
Gherkin言語でテストケースを記載可能
→日本語での記載が可能!!
Gherkin記法:
テスト実行前の前提条件
テスト内容
結果
behave使ってみた
■サンプル
.featureと一致している処理を実行する
実行時の引数を受け取れる
features/admin_page.feature
features/steps/http.py
featureから値を取得できる
テスト判定
■サンプル実行
■メンテナンス後の確認
インフラはOSの一斉アップデート等メンテナンス作業が
あります。
サービス全体に影響するメンテナンス後の動作確認は規
模が大きくなればなるほど大変
WebサーバとDBサーバが起動していれば絶対OKかという
とそうではない
→実際のWEB管理画面へログインテストを全台素早く確
認することは難しいというか無理ゲー
Jenkinsと組み合わせて
全200台のログインテストを6分弱に短縮!!
安心して寝れました
おわり。
■インストール(CentOS)
■ディレクトリ構成
.feature(テストシナリオ)
steps/*.py(テスト処理)

Python製BDDツールで自動化してみた