Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AWSマネージドサービスとのテスタブルなアプリケーションコード

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

 AWSマネージドサービスとのテスタブルなアプリケーションコード

Avatar for shiro seike

shiro seike PRO

October 08, 2022
Tweet

More Decks by shiro seike

Other Decks in Programming

Transcript

  1. 自己紹介
 清家 史郎
 @seike460
 - ID
 - GitHub:seike460
 - Twitter:@seike460


    - Work at
 - 株式会社 Fusic (フュージック) 
 技術開発本部/技術開発第一部門 
 - チームリーダー/プリンシパルエンジニア/ 
 エバンジェリスト
 - Skill
 - PHP/Go/AWS
 - Community
 - PHPカンファレンス2018 - 2022 
 - AWS Dev Day Japan 2021 - 2022 
 2

  2. PHPUnitの実行の様子
 29
 Testを記述して実行すると次の様に
 結果を確認することが出来ます。
 
 ...FE...
 
 . … 成功したテスト


      想定したテスト結果となった場合
 F … failure(失敗)したテスト
   想定したテスト結果と違う場合
 E … error 
   予期せぬエラー(Fatal Error等)が
   発生した場合

  3. Serveless Laravel (Bref)
 37
 https://bref.sh/docs/frameworks/laravel.html
 
 Laravelを利用したBrefを
 整備する方法はBref公式ページに
 説明があります。
 


    手順をなぞるだけで、
 なんの不自由もなくLaravelを
 投入することが出来ます。
 
 AWS Lambdaの場合はAPIとして
 利用する事がほとんどですので、
 今回はAPIモードで利用します

  4. テスト時のIAM情報を設定できる
 39
 envファイルの中には
 AWS_ACCESS_KEY_IDや
 AWS_SECRET_ACCESS_KEY、
 AWS_BUCKETまで
 設定項目が最初から用意されてます 
 
 .env.testingの中に


    テスト用のIAMを記述する事で
 テストの時に利用するIAMを記述し、 
 本番と別の、テスト用のS3に
 データ保存を行う事が出来ます。 
 
 言語毎に設定していきます

  5. 処理の単位で分割をする
 63
 
 - クライアント生成
 - 保存情報生成
 - 保存処理の実施
 


    が一つ一つの処理単位となる
 
 保存処理の分離で達成可能
 
 だが全てのアプリケーションが
 綺麗に分割出来るわけではない 

  6. まとめ
 Point 2
 アプリケーションコードはテストが出来る単位で処理分割すると Unit Test対応が出来ます 
 65
 バグをなくすために自動テストを行いましょう
 Point

    1
 
 AWS サービスを各種OSSなどを利用することで、エミュレートして自動テストが出来ます。
 Point 3
 Point 4
 テストは完璧ではないことを知り、様々な手法を学ぶことで、選択肢を知りましょう。