見出し画像

【UpBoost開発日誌 #3】テスト駆動開発(TDD)

はじめに

こんにちは!!!!
Manhattan Code Inc.の開発チーム、Swift始めて3週間のコニーです!
弊社では現在スタートアップ向けキュレーションサイト『UpBoostのWeb版を改修し、App版のリリースに向けた開発を進行中です!
開発日誌では主にUpBoostのApp版を開発する中での進捗、チームの活動などについてお伝えしていきますよ〜!!
開発を行う中で得られたことや、頑張ったこととか書いてくので、読者の皆様は最後まで読んでね!!

UpBoostというサービスの詳しい内容については初回の記事「What's UpBoost ?」に記載してありますので、興味があればご一読ください!

今回の内容

今回の実装する部分は緑色に塗られている部分です。
プロフィール編集画面で入力した情報を保存するテストと、保存されている情報をマイページで出力、取得するためのテストを行います!

画像3

表題で分かるように、今回はテストについての記事です!!!
エンジニアの方はテストの重要性や、必要性はとうの昔に知っていると思いますが復習程度に次の部分へ目を通してください!

簡単にテストの説明

アプリ上のソースコードは仕様・要件を実装しますが、実装したコードが仕様・要件通りにきちんと動くかどうかを確認するものがテストコードです。

テストで得られるもの
テストコードを書くことでアプリが落ちた時に、どの部分で不具合が起きたのか見つけやすい。
書いたコードが動くことが実証できるので安心できる(大事)。
テストコードを見れば仕様がわかる。

通常は実装を行ってから、テストで機能の担保を行うのが主流ですがUpBoostの開発では、テストを最初に書いて、テストが通る実装を作成していくTDD(TestDrivenDevelopment)を採用しています!

TDDは、日本語ではテスト駆動開発とも言い、テストを書いてから実装コードを書いて品質の担保されたコードを作成する手法のことを指します。
詳しくはここで説明を行うよりも調べてもらう方がわかりやすいかもしれないです・・「テスト駆動開発」「TDD」などで検索検索!

テスト作成とコード実装の流れ

今回実装するものはマイページの入力した文字が保存される処理と、出力する処理です。

①テストの作成
前記した通りマイページ画面で入力した情報を保存し、出力する処理のテストを書いていきます。
今の時点ではModelを作成していない為、エラーが発生します。なお、今回の実装で最初のテストをスクショし忘れてました!!!!すみません!!!!

下記の画像は完成したテストコードを、完成前のブランチに置いたものになります。(真っ赤か)

スクリーンショット 2020-02-10 17.19.24

そもそも、テストをするためのClassや処理を作成していないので通る訳が無いですよね〜!!!!!
ここからこの真っ赤なXcodeを緑色に変えるべく、下記の工程で実装を始めま〜す!!!!!

②DomainModel(Domain層)の作成
マイページで保存を行う情報を作っていきます。
保存を行う情報は、「名前」「住所」「誕生日」「好きなこと」「職業」「目標ややりたいこと」「募集要項(起業をする仲間が欲しいなど)」
③Repository(Domain層)の作成
データ保存・取得処理の規格(interface)を作成します。ここでは実装ではなく、どういう処理があるのかを定義しているだけです。
例えば、ここでは保存と出力なので「save」と「get」というメソッド名が書かれているだけです。
④Repository(Infrastructure層)の作成
③で作った、リポジトリの実装を行います。具体的に保存をどのようにするか(API経由のDB保存か、App内保存)が書かれています。
今回の実装ではAPIがまだ出来上がっていないので、App内保存で実装しています。
⑤DomainService(Domain層)の作成
④で作った処理を呼び出す処理が書かれます。

ここで処理実装は完了!!!!!!!!!!

実際にテストを動かしていきます!!!!!!!!!!!!!!!

スクリーンショット 2020-02-10 12.40.59

できたああああああああああああああ!!!!!!!!!テスト通ったああああああああああああああああああああああ!!!!!!!!!!!!!!!!

テストは通ったので、データの保存取得処理の機能は担保された状態になります!本来であれば、この後にUIとの連結がありますが今回は時間が足りず・・・断念・・・・!!!!

まとめ

テストは大事だよ!テストから実装することで機能性が担保できるし、時間がないからテストするのやーめた!ってことがなくなるよ!!素敵だね!!!

来週はこのテストが通った処理を使ってUIとの連結処理をやっていきます!!!!!!絶対見てくれよな!!!!!!!



この記事が気に入ったらサポートをしてみませんか?