Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
電子署名サービスの品質戦略
Search
林憲吾
July 01, 2024
Programming
1
1k
電子署名サービスの品質戦略
林憲吾
July 01, 2024
Tweet
Share
More Decks by 林憲吾
See All by 林憲吾
GraphQLを安全に使うためにやっていること
hayashikengo
2
870
GraphQLでの型渡しとデータフェッチの最適化
hayashikengo
1
570
CTOの役割と、カルチャーの醸成
hayashikengo
1
98
Other Decks in Programming
See All in Programming
AI時代でも変わらない技術コミュニティの力~10年続く“ゆるい”つながりが生み出す価値
n_takehata
2
650
DSPy入門 Pythonで実現する自動プロンプト最適化 〜人手によるプロンプト調整からの卒業〜
seaturt1e
1
580
go directiveを最新にしすぎないで欲しい話──あるいは、Go 1.26からgo mod initで作られるgo directiveの値が変わる話 / Go 1.26 リリースパーティ
arthur1
2
490
Ruby x Terminal
a_matsuda
7
590
AI時代のソフトウェア開発でも「人が仕様を書く」から始めよう-医療IT現場での実践とこれから
koukimiura
0
140
RAGでハマりがちな"Excelの罠"を、データの構造化で突破する
harumiweb
9
2.6k
Takumiから考えるSecurity_Maturity_Model.pdf
gessy0129
1
120
開発ステップを細分化する、破綻しないAI開発体制
kspace
0
110
米国のサイバーセキュリティタイムラインと見る Goの暗号パッケージの進化
tomtwinkle
2
440
ベクトル検索のフィルタを用いた機械学習モデルとの統合 / python-meetup-fukuoka-06-vector-attr
monochromegane
2
330
エージェント開発初心者の僕がエージェントを作った話と今後やりたいこと
thasu0123
0
230
LangChain4jとは一味違うLangChain4j-CDI
kazumura
1
150
Featured
See All Featured
Rebuilding a faster, lazier Slack
samanthasiow
85
9.4k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
1
1.3k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
340
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.3k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
140
Ethics towards AI in product and experience design
skipperchong
2
220
Abbi's Birthday
coloredviolet
2
5.1k
sira's awesome portfolio website redesign presentation
elsirapls
0
180
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
130
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
980
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.8k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Transcript
電子署名サービスの品質戦略 株式会社PICK 林憲吾 Hayashi Kengo
https://twitter.com/kenbu05 株式会社PICK CTO 林憲吾 Hayashi Kengo 自己紹介 ①経歴 ②趣味 学生時代
スペースマーケット (インターン ) 2018-2019 ヤフー 2019-2022 スリーシェイク 2022-現在 PICK CTO 筋トレ・バイク・釣り
会社紹介 品質戦略 01. PICKのテスト環境 02. 03. 目次 まとめ 04.
01. 会社紹介
None
- 株式会社 CTO - 林憲吾 Hayashi Kengo - 経歴 -
スペースマーケット(インターン) → ヤフー →ス リーシェイク → PICK - PICKではPMとしてジョインし、開発をリード - 趣味 - 筋トレ、バイク 会社 01. https://twitter.com/kenbu05
不動産業界はまだまだ古臭い。たくさん課題がある。 不動産業界はレガシーでアナログ
None
PICKFORMの成長
不動産電子契約の今後の成長見込み
バックエンドで使っている技術 03. Nestjs Prisma ApolloServer Jest SuperTest
02. 品質戦略
品質とは? 02. 品質戦略 製品に対する期待はステークホルダーごとに違う もっと使いやすくして! とにかく安全稼働が必須! 運用・保守が 簡単なシステムをお願い! by事業担当者 byユーザー
by運用担当者
バックエンドとしては何ができるか? 02. 品質戦略 テストを書き動作を保証 監視の精度を上げ、想定外動作はテストを書く コードの品質を保ち、変更容易性を担保
なぜテストを書くべきなのか? 02. 品質戦略 引用: https://learn.microsoft.com/ja-jp/archive/msdn-magazine/2009/december/code- cleanup-using-agile-techniques-to-pay-back-technical-debt 変更コスト曲線 「中長期の変更コストを最適化させる為」
テストの種類 02. 品質戦略 UIテスト E2Eテスト インテグレーションテスト ユニットテスト 引用:https://www.linkedin.com/pulse/unit-tests-vs-integration-end-to-end-ashraf-ragab/ テスト図解
テストピラミッド理論 02. 品質戦略 引用: https://gihyo.jp/dev/serial/01/savanna-letter/0005 テストピラミッド “テストピラミッド理論とは、 コストが高く忠実性が高いテストほどケース数を減ら し、実行速度と決定性が低いテストはケース数を増
やすべきという理論”
テストピラミッドが機能する条件 02. 品質戦略 引用: https://gihyo.jp/dev/serial/01/savanna-letter/0005 テストピラミッド 仕様が明確・変更が多くない 設計がクリーンである チームがテストに習熟してる
初期のPICKだと? 02. 品質戦略 仕様が明確でなく、変更多い リリース優先で、クリーンでない 業務委託主体でスキル感ばらつき 引用: https://gihyo.jp/dev/serial/01/savanna-letter/0005 テストピラミッド
当初のPICKがなぜこの状況にあったのか? 02. 品質戦略 PMF達成が目標であり、早く市場にだすこと主目的であった。 署名機能を自社開発していた為、高い動作保証性が必要。 エンジニア社員1名に対して、業務委託が 4〜7名が1年半続いた。
どう解決するか? 02. 品質戦略 原則、E2Eを全てのユースケースで書く Unitテストは分岐の多い部分のみ
内部設計が未熟な設計ほど、 E2Eが効く 03. 品質戦略 1. E2Eは、内部的な I/Fと疎結合である 2. 内部的なI/Fの変更しやすい 3.
リファクタリングハードルが下がった
03. PICKのテスト環境
実際PICKのテスト比率は? 03. PICKのテスト環境 E2Eテストを全てのユースケースで書く Unitテストは分岐の多い部分のみ ※ ユースケースは graphQLのmutation/query単位を指しています
E2Eテスト運用実態 03. PICKのテスト環境 E2E Test: 934 Unit Test: 137 137
Endpoints: 262
E2Eをどう実現している? 03. PICKのテスト環境 ※ ユースケースは graphQLのmutation/query単位を指しています UI上でテストデータを作成、 dumpファイルで管理 CI上で、DockerでDB立てて、データを流し込む テスト用DBに対してSuperTestでリクエストを送る
①UI上でテストデータを作成 03. PICKのテスト環境 UIがあれば、 localのUIから UIが無ければ、 PrismaStudioから PrismaStudio UI
①dumpファイルで管理 03. PICKのテスト環境 dumpデータをPRにてレ ビュー
①dump周りのコマンドをまとめて、フロー整備 03. PICKのテスト環境 E2E用の環境を localに用意 操作しテストデータ作成 差分をdumpしコミット
②CI上で、DockerでDB立てて、データを流し込む 03. PICKのテスト環境 GithubActionsでDB立てる dump入れる E2Eを走らせる
③SuperTestでリクエスト 03. SuperTestでリクエスト レスポンスを確認 PICKのテスト環境
E2E主軸での課題と解決 03. PICKのテスト環境 E2Eテスト記述文化作るの大変 テストがだんだん遅くなる テストデータケースの作成が大変 テスト無いと PR通さない 効率化・並列化 UIでデータ作成
03. まとめ
まとめ 03. E2E主体だと、確実性の高い動作保証を担保できる リファクタリング促進の効果を持つ コストは高いが、有用な手段の1つ
PICKの開発チームは、レガシーな産業に、 モダンな技術で立ち向かっております。
ご清聴ありがとうございました
None