40
Об опыте тестирования программного компонента без UI Игорь Любин, Казань

Игорь Любин - Об опыте тестирования ПК без UI

  • Upload
    ilyubin

  • View
    410

  • Download
    1

Embed Size (px)

DESCRIPTION

Доклад на SQAdays-8

Citation preview

Page 1: Игорь Любин - Об опыте тестирования ПК без UI

Об опыте тестирования

программного компонента без UI

Игорь Любин, Казань

Page 2: Игорь Любин - Об опыте тестирования ПК без UI

Вступительное слово

Немного о Казани

2

Page 3: Игорь Любин - Об опыте тестирования ПК без UI

Вступительное слово

Немного о себе

3

Закончил КГУ, ФизФак

В тестировании с 2007 г.

Руководитель группы

тестирования в iiko

Опыт автоматизации

• Selenium, TestComplete

• Собственные разработки

Page 4: Игорь Любин - Об опыте тестирования ПК без UI

Программный компонент

– это «кубик» программы

4

Page 5: Игорь Любин - Об опыте тестирования ПК без UI

Программный компонент

Примеры

• API приложений

• WEB-сервисы

• «Внутренности» приложения

5

Page 6: Игорь Любин - Об опыте тестирования ПК без UI

Программный компонент

– это чѐрный ящик

6

Page 7: Игорь Любин - Об опыте тестирования ПК без UI

Постановка задачи

Проект

• Профили пользователей

• Лента новостей

• Блоги

• Друзья, Фотки

• Избранное

• …

7

Интернет газета с сервисами блогосферы

Page 8: Игорь Любин - Об опыте тестирования ПК без UI

Постановка задачи

Проект развивается

• Профили пользователей

• Лента новостей

• Блоги

• Друзья, Фотки

• Избранное, Теги

• …

8

Расширяет возможности доступа

Page 9: Игорь Любин - Об опыте тестирования ПК без UI

Постановка задачи

На проекте идет разработка

9

Появляется API (Программный компонент)

Page 10: Игорь Любин - Об опыте тестирования ПК без UI

Постановка задачи

Имеем картину

• Профили пользователей

• Лента новостей

• Блоги

• Друзья, Фотки

• Избранное, Теги

• …

10

Page 11: Игорь Любин - Об опыте тестирования ПК без UI

Постановка задачи

На входе POST запрос

11

• ~40 команд– login / logoff

– blog

– friends

– favorite

– …

POST — метод запроса для передачи данных

заданному ресурсу

Page 12: Игорь Любин - Об опыте тестирования ПК без UI

Постановка задачи

На входе POST запрос

12

• ~40 команд

• Параметры

/[email protected]&password=123

Пример визуализации POSТ запроса в виде GET

POST — метод запроса для передачи данных

заданному ресурсу

Page 13: Игорь Любин - Об опыте тестирования ПК без UI

Постановка задачи

На выходе JSON

13

• {} – объект

• [] – массив

JSON — текстовый формат обмена данными

{

"ключ1" : "значение1",

"ключ2" : "значение2"

}

Page 14: Игорь Любин - Об опыте тестирования ПК без UI

Постановка задачи

На выходе JSON

14

• Статус

• Данные

{ "status": 0, "data": {"id_user": 1024} }

JSON — текстовый формат обмена данными

Page 15: Игорь Любин - Об опыте тестирования ПК без UI

Постановка задачи

Надо тестировать!?

• Профили пользователей

• Лента новостей

• Блоги

• Друзья, Фотки

• Избранное, Теги

• …

15

Page 16: Игорь Любин - Об опыте тестирования ПК без UI

• Уверенность, что API

работает

• Обратная совместимость

API с моб. клиентом

Постановка задачи

Почему надо тестировать API?

16

Для команды разработки API

Page 17: Игорь Любин - Об опыте тестирования ПК без UI

Постановка задачи

Почему надо тестировать API?

• Профили пользователей

• Лента новостей

• Блоги

• Друзья, Фотки

• Избранное, Теги

• …

17

Для команды разработки моб. клиента

• Пример использования

• Документация

Page 18: Игорь Любин - Об опыте тестирования ПК без UI

Постановка задачи

Цель

Проверить работу

команд API сервиса

18

Page 19: Игорь Любин - Об опыте тестирования ПК без UI

Решение

Программировать

Тестовый инструмент

– Управление набором

тестов

– Запуск/остановка

– Отчетность

– Конфигурирование

19

Page 20: Игорь Любин - Об опыте тестирования ПК без UI

Решение

Инструмент должен уметь

20

Формировать

запрос

Проверять

результат

Page 21: Игорь Любин - Об опыте тестирования ПК без UI

Решение

Организация тестов

Отделить тесты от инструмента

21

Page 22: Игорь Любин - Об опыте тестирования ПК без UI

Решение

Инструмент должен уметь

22

Загружать

тесты

Page 23: Игорь Любин - Об опыте тестирования ПК без UI

Решение

Организация тестов

1 тест = 1 файл

Следствие• Управление тестами сводится к управлению файлами

23

Page 24: Игорь Любин - Об опыте тестирования ПК без UI

Решение

Организация тестов

24

Формат тестов

задает API

Page 25: Игорь Любин - Об опыте тестирования ПК без UI

Решение

Пример тест-кейса

{

"name" : "Вход пользователя на сайт",

"command" : "login",

"input" : { "username": "[email protected]",

"password": "123" },

"assert" : "equal",

"output" : { "status": 0,

"data": {"id_user": 1024} }

}

25

Page 26: Игорь Любин - Об опыте тестирования ПК без UI

Решение

Формирование POST запроса

{

"name" : "Вход пользователя на сайт",

"command" : "login",

"input" : { "username": "[email protected]",

"password": "123" },

"assert" : "equal",

"output" : { "status": 0,

"data": {"id_user": 1024} }

}

26

/[email protected]&password=123

Page 27: Игорь Любин - Об опыте тестирования ПК без UI

Решение

Проверка результата

{

"name" : "Вход пользователя на сайт",

"command" : "login",

"input" : { "username": "[email protected]",

"password": "123" },

"assert" : "equal",

"output" : { "status": 0,

"data": {"id_user": 1024} }

}

27

Page 28: Игорь Любин - Об опыте тестирования ПК без UI

Решение

Пример тест-сценария{

"testsuite_name" : "Название сценария",

"testcases":

[

{

"name" : "Тест-кейс 1",

"command": "login",

"input" : {"username":"[email protected]","password":"123"},

"output" : {"status": 0, "data": []}

},

{

"name" : "Тест-кейс 2",

"command": "logoff",

"input" : {},

"output" : {"status": 0, "data": []}

}

]

}28

Page 29: Игорь Любин - Об опыте тестирования ПК без UI

Решение

Тестовый инструмент

29

Page 30: Игорь Любин - Об опыте тестирования ПК без UI

Решение

Формирование POST запроса

30

Page 31: Игорь Любин - Об опыте тестирования ПК без UI

Решение

Проверка результата

31

array_diff_assoc($array1, $array2)

Page 32: Игорь Любин - Об опыте тестирования ПК без UI

Решение

Схема тестового инструмента

32

Page 33: Игорь Любин - Об опыте тестирования ПК без UI

Решение

Лог

20.06.2010 06:15:49 Run test case: Вход пользователя

Request: /[email protected]&password=123

20.06.2010 06:15:50 End test case.

Response: {"status":0,"data":{"id_user":1024}}

20.06.2010 06:15:50 TEST PASSED

33

Page 34: Игорь Любин - Об опыте тестирования ПК без UI

Решение

Лог

20.06.2010 06:15:49 Run test case: Вход пользователя

Request: /[email protected]&password=123

20.06.2010 06:15:50 End test case.

Response: {"status":1,"data":[]}

20.06.2010 06:15:50 TEST FAILED

Expected: {"status":0,"data":{"id_user":1024}}

Разница cur-exp: [status => 1]

Разница exp-cur: [status => 0]

34

Page 35: Игорь Любин - Об опыте тестирования ПК без UI

Решение

Лог

20.06.2010 06:15:49 Run test case: Вход пользователя

Request: /[email protected]&password=123

20.06.2010 06:15:50 End test case.

Response: {"status":0,"data":{"id_user":1024}}

20.06.2010 06:15:50 TEST PASSED

...

**********************************

Time: 268 sec.

Tests: 199, Passed: 191, Failed: 8

**********************************

35

Page 36: Игорь Любин - Об опыте тестирования ПК без UI

Результат

Статистика

36

Время разработки инструмента 14 д.Первая версия инструмента через 5 д.

Время разработки тестов 13 д.Время подготовки документации 2 д.

Количество тест-кейсов ~300Количество тест-сценариев 63

1 д. = 8 ч.

Page 37: Игорь Любин - Об опыте тестирования ПК без UI

Другие примеры

Проект экстрактор

37

Page 38: Игорь Любин - Об опыте тестирования ПК без UI

Другие примеры

Проект сбора статистики

38

Page 39: Игорь Любин - Об опыте тестирования ПК без UI

Результат

Резюмируем

39

DoRequest() Diff()