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
Инструменты для обнаружения рассинхронизации реализации “REST” API от документации
Search
Dmitry Efimov
February 22, 2018
Programming
0
30
Инструменты для обнаружения рассинхронизации реализации “REST” API от документации
Dmitry Efimov
February 22, 2018
Tweet
Share
More Decks by Dmitry Efimov
See All by Dmitry Efimov
Автоматизируем синхронизацию HTTP API и документации
tuwilof
0
25
Автоматизация Document-Driven Development для проектов с большим API
tuwilof
0
38
Валидация “REST” API по документации APIB
tuwilof
0
28
Негативное тестирование “REST” API и защита от него
tuwilof
0
300
Ликбез по JSON
tuwilof
0
76
API Blueprint
tuwilof
0
63
Документирование API
tuwilof
0
100
Почему и как заменить все id на UUID
tuwilof
0
72
Authentication in rails. Monolith vs SPA
tuwilof
0
180
Other Decks in Programming
See All in Programming
Deep Dive 大規模システムアーキテクチャ/開発組織エンジニアリング / Deep Dive Large-Scale System Architecture, Development Organization Engineering
nrslib
15
2.9k
オブジェクト指向コードレビューの新しいアプローチ
akkie76
3
1.6k
生成 AI の中身を覗いてみよう〜基礎から医療現場での応用まで〜
soh9834
2
770
OpenAPI を守るのは難しい
ohmori_yusuke
1
140
Cloud RunとCloud PubSubでサーバレスなデータ基盤2024 with Terraform / Cloud Run and PubSub with Terraform
shinyorke
7
1.9k
Swiftの型推論を学ぼう | Let's Learn About Type Inference in Swift
omochi
2
790
自動テスト実行結果の目的を整理する / Organizing objectives of automated test results
twada
PRO
10
2.1k
品質が高いコードって何?Rev2.1
ickx
1
490
設計の知識と技能で駆動するソフトウェア開発
masuda220
PRO
18
11k
DDD, necessary but insufficient: physical design principles for microservices
cer
PRO
0
2.2k
C# 大統一理論推進委員会 会員のための Unity Package Manager プロジェクト構成案
monry
PRO
0
580
プロンプトエンジニアリング入門
tomokusaba
2
990
Featured
See All Featured
Fantastic passwords and where to find them - at NoRuKo
philnash
35
2.4k
Designing for humans not robots
tammielis
247
25k
Optimising Largest Contentful Paint
csswizardry
7
2.3k
What's in a price? How to price your products and services
michaelherold
236
11k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
5
1.4k
We Have a Design System, Now What?
morganepeng
42
6.7k
Reflections from 52 weeks, 52 projects
jeffersonlam
343
19k
A Modern Web Designer's Workflow
chriscoyier
689
190k
Done Done
chrislema
178
15k
For a Future-Friendly Web
brad_frost
170
8.9k
A designer walks into a library…
pauljervisheath
199
23k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
113
18k
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