QA Tips LT会 #QATipslt - connpass https://rakus.connpass.com/event/234065/
テストコードを書きたいけどテスト対象がない。どうする?2022-02-10 QA Tips LT会 #QATipsltサイボウズ株式会社 Garoon開発チーム 兼 生産性向上チーム小山 晃久(@akihisa1210)
View Slide
自己紹介小山 晃久 (@akihisa1210)サイボウズ株式会社Garoon開発チーム 兼 生産性向上チーム品質、テスト、CI/CD、アジャイル趣味は読書Twemoji https://twemoji.twitter.com/content/twemoji-twitter/en.htmlCopyright 2020 Twitter, Inc and other contributorsGraphics licensed under CC-BY 4.0: https://creativecommons.org/licenses/by/4.0/
Cybozu Productivity Weekly• 開発者の生産性向上ネタを毎週共有• CI/CDや自動テストの話題も• Zenn & Twitterで発信中!
本題
テストコードを書きたい!• テストコードを書いたことがないので書きたい!• あのテストフレームワークを使ってみたい!• 特に理由はないが書きたい!
テスト対象がない……。• 何にテストコードを書こう?
なければ作ろう!• Webアプリケーションを作成する類の書籍を買ってくる• サンプルコードにテストを追加しながら進める
書籍を選ぶ際の注意• 特定のユニットテストツールを使いたい場合は、そのツールが対応している言語と同じ言語でアプリケーションを作る書籍を選ぶ• E2Eテストツールはテスト対象が何で実装されているかには依存していないので大丈夫• できれば新しめの書籍を選ぶ(余計な所でハマらないために)
静的解析
静的解析を導入する• 問題のある書き方を検出・自動修正する• 特定のスタイルを強制する• 「Linter」「Formatter」などで検索!
(参考)パッケージマネージャー• プロジェクトごとに、そのプロジェクトが使うパッケージを管理するツール• ツール導入時に必要になることも
ローカル開発環境静的解析ソースコード
CI
CI?• Continuous Integration• コードに変更が加わるごとにビルドやテストを行う• 早いフィードバックで小さく修正• 自動トリガーの恩恵(手動だと忘れる)
CIを設定する前に• コードをソースコード管理システムで管理する• サンプルコードのライセンスを要確認• プライベートリポジトリと連携できるCIシステムもある
CIの設定• 設定ファイルをソースコードと合わせて管理する• CIシステムがソースコード管理システムからコードを取得できるようにする• CIシステム上で静的解析が実行されるようにする
ローカル開発環境静的解析ソースコードソースコード管理システムソースコード静的解析CI システムソースコード
ユニットテスト
ユニットテストを書く• 関数やクラスに勝手にテストを書く• テストが書きづらい場合は、テストが書けるように修正してみる• ユニットテストもCIで流す
ローカル開発環境静的解析ユニットテストソースコードソースコード管理システムソースコード静的解析CI システムユニットテストソースコード
E2E テスト
E2Eテストを書く• ローカル開発環境でWebアプリケーションを立ち上げる• E2Eテストを書いてみる
ローカル開発環境静的解析ユニットテストE2Eテストソースコードビルドデプロイソースコード管理システムソースコード静的解析CI システムユニットテストソースコード
E2EテストをCIで動かす• CIシステムがアクセスできるところでWebアプリケーションを動かす• CIシステム上でテストを実行する
ローカル開発環境静的解析ユニットテストE2Eテストソースコードビルドデプロイソースコード管理システムソースコード静的解析CI システムユニットテストE2Eテストデプロイビルドソースコード
最後に
全部やらないといけないの?• やらなくても大丈夫です• 興味のあるところ、開発の効率が上がるところから