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
Dmitry Efimov
February 22, 2018
Programming
0
48
Инструменты для обнаружения рассинхронизации реализации “REST” API от документации
Dmitry Efimov
February 22, 2018
Tweet
Share
More Decks by Dmitry Efimov
See All by Dmitry Efimov
Автоматизируем синхронизацию HTTP API и документации
tuwilof
0
41
Автоматизация Document-Driven Development для проектов с большим API
tuwilof
0
44
Валидация “REST” API по документации APIB
tuwilof
0
41
Негативное тестирование “REST” API и защита от него
tuwilof
0
330
Ликбез по JSON
tuwilof
0
86
API Blueprint
tuwilof
0
79
Документирование API
tuwilof
0
190
Почему и как заменить все id на UUID
tuwilof
0
91
Authentication in rails. Monolith vs SPA
tuwilof
0
210
Other Decks in Programming
See All in Programming
Team topologies and the microservice architecture: a synergistic relationship
cer
PRO
0
1.1k
Google Agent Development Kit でLINE Botを作ってみた
ymd65536
2
210
Go1.25からのGOMAXPROCS
kuro_kurorrr
1
820
システム成長を止めない!本番無停止テーブル移行の全貌
sakawe_ee
1
150
既存デザインを変更せずにタップ領域を広げる方法
tahia910
1
240
生成AIコーディングとの向き合い方、AIと共創するという考え方 / How to deal with generative AI coding and the concept of co-creating with AI
seike460
PRO
1
340
#kanrk08 / 公開版 PicoRubyとマイコンでの自作トレーニング計測装置を用いたワークアウトの理想と現実
bash0c7
1
630
5つのアンチパターンから学ぶLT設計
narihara
1
130
地方に住むエンジニアの残酷な現実とキャリア論
ichimichi
5
1.4k
設計やレビューに悩んでいるPHPerに贈る、クリーンなオブジェクト設計の指針たち
panda_program
6
1.7k
PipeCDのプラグイン化で目指すところ
warashi
1
180
Modern Angular with Signals and Signal Store:New Rules for Your Architecture @enterJS Advanced Angular Day 2025
manfredsteyer
PRO
0
150
Featured
See All Featured
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
22k
How STYLIGHT went responsive
nonsquared
100
5.6k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
20
1.3k
Making the Leap to Tech Lead
cromwellryan
134
9.4k
The Language of Interfaces
destraynor
158
25k
RailsConf 2023
tenderlove
30
1.1k
Build The Right Thing And Hit Your Dates
maggiecrowley
36
2.8k
Facilitating Awesome Meetings
lara
54
6.4k
A Tale of Four Properties
chriscoyier
160
23k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
48
2.9k
Transcript
Инструменты для обнаружения рассинхронизации реализации “REST” API от документации
что такое реализованный код? как получить по нему информацию?
его тестируют, значит он существует
пусть реализация = тесты
тесты
нам нужно TDD
Test-Driven Development
документация
она тоже нужна
документация
какая документация без DDD
DDD?
Domain-Driven Design?
Проблемно- ориентированное проектированиe?
NO
Documentation- Driven Development
DDD это как TDD только вместо тестов документация
и те же проблемы, снова нужно что то писать помимо
кода и поддерживать
а что будет если их соединить DDD + TDD =
?
None
DDDTDD?
Document / Test-Driven Development (DTDD) Joshua Richardson https://techblog.chegg.com/2014/12/16/document- test-driven-development-dtdd/
идея не нова
gem 'apivore'
- нужно явно писать роутинг к json-schema-ам
None
gem ‘fdoc’
+не нужно явно писать роутинг к json-schema-ам
- только свой синтаксис на документацию и тесты
None
gem ‘fitting’
+не нужно явно писать роутинг к json-schema-ам
+ работает с обычными rspec тестами и использует существующую документацию
на API Blueprint (и в теории Swagger)
+ без фатального недостатка
None
что имеем?
тесты документация
fitting может проверить объединение между этими двумя множествами
JOIN! (прямо как БД)
тесты документация идеально не реализованно не задокументированно
всего два отчета реализованно / не реализованно задокументированно / не
задокументированно
для сервера достаточно проверять что он возвращает ответы по документации
но ответ не получить без запроса
1. смотрим задокументирован ли роут за запрос
2. смотрим есть ли в документации ответ с таким статусом
3. матчи ответ по JSON Schema из доки
4. (в ближайшем будущем) смотрим “покрытие” JSON Schema
где примеры? и можно ли добавить в fitting адаптер, что
бы переиспользовать в других языках и технологиях, например в проектах на Erlang?
None