21.6K Views
May 21, 22
スライド概要
Scrum Fest Niigata 2022
https://www.scrumfestniigata.org/2022
半年前の僕らを超えろ! 自動テストに向き合いながら、一歩 ずつ進もうとしている現場のお話 Tomonari Nakamura (ikikko) 2022/05/21 Scrum Fest Niigata 2022
中村 知成 ( ikikko ) • 所属:クリエーションライン株式会社 • 役割:スクラムマスター • 大切にしている価値観:現場で働くチームの役に立ちたい! • エンドユーザーへ価値を届けることを見据えつつ • その価値を産み出すチームもより活き活きと動けるように • 得意なこと・興味があること:チームやプロセス改善、CI/CDをはじめと した自動化周り
「雑談の国から来ました」 スクラムフェス新潟2022でおしゃべりしましょう フルリモートで雑談の機会が減っているのなら、ぜひ私たちとお話ししましょう @NIINNO @Discord デブサミ2020ベストスピーカー賞 安田忠弘社長とのZoom雑談を 申込された方先着20名に 『Joy, Inc.』 笹 健太 安田 忠弘 庄田 宏平 『知識ゼロから学ぶソフトウェアテスト[改訂版]』 どちらか1冊プレゼント! 小坂 淳貴 矢田進之介 スクフェス新潟2022会期中 十松 和生 ↑お申込はコチラ
アウトライン • 背景 • テストにまつわる取り組み • 実プロジェクトへの適用 • テストや品質に関する学びの場を提供 • まとめ
背景 • スクフェス三河で発表した現場の、約半年後のお話 https://speakerdeck.com/ikikko/why-dont-you-write-unit-tests
背景 • スクフェス三河での発表当時の状況 • 社内TDDBCの開催 • ユニットテスト環境の整備 • 上記の活動を通じて、自動テストに関する土台が整ってきた
背景 • スクフェス三河から、自動テストが順調に浸透してきている • テストを書いた経験がないことからくる苦手意識が減ってきた • 基本的に、自動テストを書いていこうという方向になっている
背景 • 完成の定義にも、違和感なく自然と取り込める状態に • 最初から完璧は目指さない、まずは導入して試しながら
背景 • 今やってる取り組みの中で、テストに関連するものをいくつか紹介
アウトライン • 背景 • テストにまつわる取り組み • 実プロジェクトへの適用 • テストや品質に関する学びの場を提供 • まとめ
実プロジェクトへの適用 • 背景:データ基盤を移行するプロジェクト • データベース(テーブルやカラム)周りをがつがつ変える • 画面や機能など、ユーザーから見える部分はほとんど変わらない • 方針:データベース周りの自動テスト環境を改善する
プロジェクトへの関わり方 • スクラムマスターとしてより、自動化担当エンジニアとして動く • スケジュール・スコープの制約で、自分で手を動かして道を切り開 いた方がより効果的だと判断 • CI/CDや開発環境の整備が得意という、自分の特性を上手く活用し て、状況に合わせて帽子をかぶり直す
プロジェクトへの関わり方
プロジェクトへの関わり方 • とはいえ、全部自分でやり過ぎない • やらなくても回るけど、やるともっと効率上がるところを中心に • 道を切り開いた後は、チームに育ててもらう
プロジェクトへの関わり方 • 同じチームの が、テストや品質に関する学びの場を提供 • 道を切り開く系の自分と、いい感じに役割分担ができている
データベース構築処理の一元化 • 課題:データベース構築処理(DDL)が二箇所に分かれていた • 片方だけ修正して、もう片方は修正漏れのリスクがある • テストが落ちることによって影響範囲を特定したいのに、想定通りにテ ストが落ちない
データベース構築処理の一元化:改善前 バックエンドリポジトリ Python テスト用 データベース データベース 構築処理 テストデータ 作成処理 テスト実行処理 半年前は、まずシ ンプルに一つのリポジト リ内で完結する構成でテス ト環境を構築
データベース構築処理の一元化:改善前 バックエンドリポジトリ データベースリポジトリ Python テスト用 データベース データベース 構築処理 テストデータ 作成処理 テスト実行処理 本番環境用 データベース でも、実は別のリポジ トリでもデータベース構築 処理を管理していた マイグレーション ツール データベース 構築処理
データベース構築処理の一元化:改善前 バックエンドリポジトリ データベースリポジトリ Python テスト用 データベース データ基盤の移行 プロジェクトなので、こ の箇所の修正が主な作業に なる想定 本番環境用 データベース マイグレーション ツール データベース 構築処理 テストデータ 作成処理 データベース 構築処理 テスト実行処理 ここを変更した際に、テス トが落ちることによって影響範 囲を検知したい
データベース構築処理の一元化:改善前 バックエンドリポジトリ データベースリポジトリ Python テスト用 データベース データ基盤の移行 プロジェクトなので、こ の箇所の修正が主な作業に なる想定 本番環境用 データベース マイグレーション ツール データベース 構築処理 テストデータ 作成処理 テスト実行処理 二重管理されて いるこちらも変更しな いと、テストが想定通り に落ちない… データベース 構築処理 ここを変更した際に、テス トが落ちることによって影響範 囲を検知したい
データベース構築処理の一元化:改善後 バックエンドリポジトリ データベースリポジトリ Python リポジトリをまたい で、テスト用データベースと 連携するように テストデータ 作成処理 テスト実行処理 テスト用 データベース 本番環境用 データベース マイグレー ションツール マイグレーション ツール データベース 構築処理 こちらに、データ ベース構築処理を集約
データベース構築処理の一元化:改善後 バックエンドリポジトリ データベースリポジトリ Python リポジトリをまたい で、テスト用データベースと 連携するように テストデータ 作成処理 テスト実行処理 テスト用 データベース 本番環境用 データベース マイグレー ションツール マイグレーション ツール データベース 構築処理 こちらに、データ ベース構築処理を集約 自動テストで修正の影 響範囲を検知するという恩恵 を受けやすくなった!
1コマンドでお手軽データベース構築 • 課題:データベース構築に、複数コマンドを実行する必要があった • 「データベースを立ち上げて、立ち上がるのを待ってからマイグレー ションコマンド実行して、マイグレーション成功したのを確認してから ユニットテスト実行だったり、テーブル定義書を作成したり…」😥 • 脳内メモリを無駄に使っちゃう
1コマンドでお手軽データベース構築:改善前 Docker composeで定義されているが、 単純に依存関係を設定するだけでは、 databaseが準備できていないまま migration実行しようとして失敗する 必要な依存サービスが準備完了 になっているのを一つずつ確認し ながら、手動で4コマンド実行して おく必要あり
1コマンドでお手軽データベース構築:改善後 適切なタイミングまで 待てるよう、依存関係に 追加設定を加える 依存サービスが適切に準備完了/ 正常終了まで待機して、それから unittestが走るようになる - service̲healthy:サービスが起動してい て、準備完了している - service̲completed̲successfully:サー ビスが正常終了している
1コマンドでお手軽データベース構築:改善後 1コマンドだけで完結し、複数コ マンドを覚えておく煩わしさがなく なった! CI上で実行する際の、余分で長く なりがちなsleepも不要となった!
テストや品質に関する学びの場の提供 • 詳しくは、昨日の の発表を参照ください https://speakerdeck.com/izumii19/sohutoueatesutonanteta-ren-shidatosi-tuteitasi-gashi-metaxiao-sanaqu-rizu-mi
アウトライン • 背景 • テストにまつわる取り組み • 実プロジェクトへの適用 • テストや品質に関する学びの場を提供 • まとめ
まとめ • いい仲間と共に、半年前と比べても一歩ずつ進めていけるチームになっている • 実プロジェクトに応じて、自動テスト環境を改善 • 一方で、テストや品質に関する分野も、みんなでちょっとずつ学び中 • スクラムマスター間で、自然と役割分担して進められている
まとめ • 独自に、テストファースト / TDDを試し始めているチームも とあるチームの、ふりかえりの変遷
これからの展望 • 自分個人としてもチームとしても、学んでいける環境を作っていきたい • スケジュール・スコープが共に厳しいプロジェクトで、学びの時間を少 し犠牲にしてしまった(折込済みではあったが) • 目の前のプロジェクトをこなすだけでなく、学び続ける習慣を身につけ ておくのは、この先生きのこるためにも大事
これからの展望 • 過程も含めて、いいチームとその作り方を広げていきたい • 今の現場だけでなく、他のいろいろな現場・組織に対しても広がってい けば、世の中いいチームばかりになるはず!
これからの展望 • そういえば、弊社社長が同じようなことを言ってました https://speakerdeck.com/yasudatadahiro/joyinc-journey-scrumfestsapporo-2020
これからの展望 • 過程も含めて、いいチームとその作り方を広げていきたい • 今の現場だけでなく、他のいろいろな現場・組織に対しても広がってい けば、世の中いいチームばかりになるはず! • 興味がある方は、気軽に雑談などでお声がけください!