Виктор Розаев - Как не сломать обратную совместимость...

26
Как не сломать обратную совместимость в Public API Виктор Розаев Odin (Ingram Micro Cloud) [email protected]

Upload: moscowjs

Post on 11-Apr-2017

41 views

Category:

Technology


2 download

TRANSCRIPT

Как не сломать обратную совместимость в Public API

Виктор РозаевOdin (Ingram Micro Cloud)

[email protected]

APS JS SDK и ISV

• APS JS SDK – это JavaScript фреймворк который мы разрабатываем

• ISV (Independent Software Vendor) – сторонние разработчики которые интегрируют новые сервисы в Odin Automation

1

А их более 500!

Уже написанные приложения должны работать!

2

Любое изменение вносить всё опаснее…

ПРОБЛЕМА

3

РЕШЕНИЕ

Тестирование!

4

Тестирование?!

Чем тестировать?

Как тестировать?

Что тестировать?

5

Что тестировать?

6

Public API

Визуальные компоненты (виджеты):

• Свойства

• Методы

Утилиты

• Работа с сетью

• Data store

• Help tools

7

Необходимо проверить

Свойства

• Значение по умолчанию

• Все сайд-эффекты от изменения значения

• Валидацию

Методы и события

• Результат выполнения

• Работу с некорректными аргументами

• Безопасность переопределения

• Порядок выполнения

• Контекст исполнения

• Аргументы

• Количество вызовов

8

Как тестировать?

9

Методики тестирования

Unit Tests

Functional Tests

Scenario Tests

10

Чем тестировать?

11

theintern.github.io

12

Не зависит от фреймворка

13

Какие типы тестов поддерживает Intern?

Unit Tests

Unit Tests

• Поддерживаются BDD, TDD, QUnit

• Встроенная Chai Assertion Library

Functional Tests

• Компенсация ошибок в WebDriver

Benchmark Tests

Accessibility

Visual Regression

14

Различные стили декларации тестов

BDD Objective Interface

TDD QUnit

15

Какие типы тестов поддерживает Intern?

Unit Tests

Unit Tests

• Поддерживаются BDD, TDD, QUnit

• Встроенная Chai Assertion Library

Functional Tests

• Компенсация ошибок в WebDriver

Benchmark Tests

Accessibility

Visual Regression

16

Какие типы тестов поддерживает Intern?

Unit Tests

Unit Tests

• Поддерживаются BDD, TDD, QUnit

• Встроенная Chai Assertion Library

Functional Tests

• Компенсация ошибок в WebDriver

Benchmark Tests

Accessibility

Visual Regression

17

Пример:

18

Какие типы тестов поддерживает Intern?

Unit Tests

Unit Tests

• Поддерживаются BDD, TDD, QUnit

• Встроенная Chai Assertion Library

Functional Tests

• Компенсация ошибок в WebDriver

Benchmark Tests

Accessibility

Visual Regression

Benchmark Tests

Accessibility

Visual Regression

19

• Встроенные инструменты для code coverage

• Поддержка multi-level source maps

• Интеграция с CI

• Расширяемость

• Интеграция с облачными системами

• Автоматическая настройка локального Selenium

• Тестирование мобильных приложений

И многое другое!

Полный список возможностей: theintern.github.io

20

Понимание тестирования

Чем тестировать — Intern

Как тестировать — Unit Tests, Functional Tests

Что тестировать — Public API

Кто это будет делать?

Когда этим заниматься?

Кто это будет делать — Все!

Когда этим заниматься — В процессе разработки!

21

Проверка по API coverage и LoC coverage:

22

Полученное покрытие тестами

Публичное API — 100%

По условиям — 84.5%

По строкам — 92.9%

23

• Изменения стали более контролируемыми.

• Изменилось качество багов.

• Код стал чище.

• Можно коммитить в пятницу вечером!

Что нам это дало?

24

На этом всё, спасибо!

Сайт: https://theintern.github.io

Демо проекты: https://github.com/theintern/intern-examples

Блог: https://www.sitepen.com/blog/category/intern