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
カジュアルなテスト&仕様書としてJSON+node requestのご提案
Search
Minoru KAWAMOTO
May 25, 2015
Programming
1
3k
カジュアルなテスト&仕様書として JSON+node requestのご提案
Testing Casual Talks #2 LTの資料です
Minoru KAWAMOTO
May 25, 2015
Tweet
Share
More Decks by Minoru KAWAMOTO
See All by Minoru KAWAMOTO
メディカルノート開発/インフラのあゆみ
k12u
0
1.7k
Other Decks in Programming
See All in Programming
Designing Your Organization's Test Pyramid ( #scrumniigata )
teyamagu
PRO
5
1.4k
カウシェで Four Keys の改善を試みた理由
ike002jp
1
140
LRパーサーはいいぞ
ydah
7
1.3k
オープンソースコントリビュート入門
_katsuma
0
130
Flutterでllama.cppをつかってローカルLLMを試してみた
sakuraidayo
0
140
医療系ソフトウェアのAI駆動開発
koukimiura
1
110
GitHub Copilot for Azureを使い倒したい
ymd65536
1
330
The Missing Link in Angular’s Signal Story: Resource API and httpResource
manfredsteyer
PRO
0
150
一緒に働きたくなるプログラマの思想 #QiitaConference
mu_zaru
81
21k
VibeCoding時代のエンジニアリング
daisuketakeda
0
200
複雑なフォームの jotai 設計 / Designing jotai(state) for Complex Forms #layerx_frontend
izumin5210
6
1.6k
AWS Summit Hong Kong 2025: Reinventing Programming - How AI Transforms Our Enterprise Coding Approach
dwchiang
0
140
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.4k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
19
1.2k
BBQ
matthewcrist
88
9.6k
It's Worth the Effort
3n
184
28k
Building Better People: How to give real-time feedback that sticks.
wjessup
368
19k
Designing for Performance
lara
608
69k
The Invisible Side of Design
smashingmag
299
50k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.2k
Being A Developer After 40
akosma
91
590k
Code Review Best Practice
trishagee
68
18k
Agile that works and the tools we love
rasmusluckow
329
21k
Transcript
カジュアルなテスト&仕様書として JSON+node requestのご提案 Testing Casual Talks #2 @k12u (kawamoto.minoru)
アカウントが取れることに定評ある k12u@twitter k12u@github k12u@なんでも
成分 フリーランス:3 会社員:7 マネージメント:4 開発:6 QA:0 サーバサイド:5 インフラ:4 フロント:1
とある仕事での話 • APIサーバを作る仕事 • テスト書きたいけど予算・工数の都合が… • 正直めんどい • (諸事情により)費用対効果見込めない ※今は外注っぽい仕事はしてません
面倒でもやらなきゃいけない仕事 • 仕様書 • フロントエンドとの連携 ◦ 外部仕様作りながらAPI決めながら開発
どうせなら全部一緒にやっちゃおう • テストコード書くの正直面倒ですよね? ◦ 怒らないから言ってごらん
テストランナーの仕様 JSON APIの応答をどこかでみたようなルールで チェックする 仕様もJSON(※)で書く (※)nodeのrequestモジュールの仕様で
テストランナーの仕様 001-hogehoge.json 〜 999-hogehoge.json を順番に流して動作確認 001: {request: {[json]}, response: {[json]}
999: {request: {[json]}, response: {[json]}
テストランナーの仕様 fixture: なし 割り切り設計&全体の一貫性重視
テストランナーの仕様 • evalBeforeRequest • evalAfterResponse リクエスト/レスポンスの中身でテストしにくい部分 (変数の代入、現在時刻等)をJSのコードで管理す る。 汚い部分はここに追い出される
考えたけど今回はボツにした JSON Schemaでvalidationするといいかも? X ルールが必要十分なのを保証できない X 怠けるためのはずが書くのが微妙に大変
使い道 • 開発時 ◦ PR: [wip] ◦◦機能仕様 ◦ Issue: [Bug]このレスポンスがおかしい
• 仕様書として • 実装/仕様/仕様書の不備がCIでfailする喜び
振り返り:どうしてこれをやっているのか Web開発の気持ち • Viewは頻繁に変わるからロジックをテストしよう ◦ 単体テスト中心が自然 API開発が普通になると • Viewが仕様 ◦
仕様の変更にテストが追随するのも自然 ◦ APIの外部仕様のテストが自然と中心に
振り返り:思わぬ副作用 「テスト書きすぎ問題」が起きにくい (外部仕様に対するテストしかないから)
振り返り:TIPS ファイル名の変更が多すぎると レビューがつらい 001.json → 00100.json ぐらいでちょうどいいのかも
振り返り 軽い気持ちでやってみたら意外とよかった カジュアルな開発にはもう単体テストとかあまりい らないかも ※書いた方がよさそうなときには書く程度
関連 WebAPIリクエスト仕様書としてcurlコマンドのご提案 http://qiita.com/Hiraku/items/dfda2f8a5353b0742271 を見て題名を変えました
ありがとうございました お問い合わせはいろんなサイトの@k12uまで (お知らせ) お仕事あります。※していただくほう 会社とかWebサイトとか準備中でまだ存在しませ んが怪しいものではございません