Автоматическое тестирование. Моя система

Post on 08-Feb-2017

34 Views

Category:

Internet

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Моя система

Автоматическое тестирование

Игорь Любин

1

2

3

CRM

Pinpad

Киоск

WebCallCenter

3rd

4

Моя система• Разжечь угли

• Провести пытки

• Закрутить гайки

5

The Joel test

1. Пользуетесь ли вы системой контроля версий?

2. Можете ли вы собрать продукт за один шаг?

3. Выполняете ли вы ежедневные билды?

4. Используете ли вы базу данных ошибок?

5. Исправляете ли вы ошибки перед написанием нового кода?

6. Есть ли у вас актуальный план работ?

7. Есть ли у вас спецификация?

8. Предоставлены ли вашим программистам спокойные условия для работы?

9. Используете ли вы новейшее дорогое оборудование?

10. Есть ли у вас тестеры?

11. Пишут ли кандидаты на работу код во время собеседования?

12. Проводите ли вы коридорное тестирование удобства использования программ?

http://russian.joelonsoftware.com/Articles/TheJoelTest.html6

Проектный треугольник

7

Сокращение цикла разработки

Анализ Разработка Тестирование

8

Сокращение цикла разработки

9

Анализ Разработка

ТРИЗ http://www.altshuller.ru/triz/

Разжигаем угли

Подготовка к проекту

10

Какой первый автоматический тест?

11

Как вы запускаете тесты?

12

Сборка, выкладка и тест

13

Проводимпытки

14

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

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

http://positiveflower.blogspot.ru/2012/12/agile.html15

Тестировщики тоже могут писать юнит-тесты

16

Пример

Фронты (UI)APIUnit

CoreJson Web

XML PinPad

17

Сначала позитив

18

Сергей Мартыненко О стратегиях тестирования http://blog.shumoos.com/archives/293

Чек-лист покрытия API

19

• Хотя бы один тест с ответом 200 ОК

• Проверка JSON схемы ответа, проверка наличия полей и их правильных типов

• Проверка измененного состояния• Проверить, что изменения легли в БД• Проверки очередей• Проверки в смежных системах

• Тесты на кэш

• Вызов метода дважды

• Максимальное число параметров, расширения команды, другие способы вызова

• «Плохие» статусы у пользователей и карт

• Not found => Валидные, но несуществующие в системе значения параметров

• Invalid => Плохие значения параметров, пробелы, выход за границу допустимых значений

• Not specified => Пустые значения параметров, другие типы, проверка обязательных

• Пустой запрос = {}

• Запрос без параметров = ""

• Все ли покрыто из документации?

Правило 21-го UI теста

20

Что лучше cssили xpathлокаторы?

21

Что лучше cssили xpathлокаторы?

22

Лояльные разработчики и id локаторы

23

Закручиваемгайки

24

Договариваемся о правилах

«Фича» готова, если на нее есть автотест

25

Тесты должны быть зеленые

26

На каждую ошибку автотест

27

Сначала чиним баги, потом пишем новый код

28

Заключение

• Разжигаем угли• Первым делом автоматизировать сборку и выкладку• Запросить/выделить/добыть/выбить – машины для CI

• Проводим пытки• Пишем тесты на разных уровнях: unit, API, UI• Заручаемся поддержкой разработчиков

• Закручиваем гайки• Договариваемся о правилах

• «Фича» готова, если на нее написан автотест• Тесты должны быть зеленые• На каждую ошибку автотест• Сначала чиним баги, потом пишем новый код

29

Что было? Что стало?

• Сборка делалась на компьютере разработчика

• Выкладки проводились вручную

• Тесты не писались/Запускались изредка

• «А что работает?»

• Непрерывная интеграция

• Тесты на разных уровнях

• Все тесты зеленые

• Измерямое покрытие

30

Контакты

• Skype: igor.lyubin

• Email: igor.lyubin@outlook.com

31

Пример api теста

32

[Test, Smoke]public void Shoud_find_customer_by_id (){var customerId = Db.GetCustomerId();

var response = Api.SendRequest("find_customer_by_id", new { customer_id = customerId });

Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK));

Assert.That(response.DeserializeTo<CustomerResult>().CustomerId, Is.EqualTo(customerId));}

Roy Osherove “The Art of Unit Testing”

Manual tests suck

33

Автоматическое тестированиеvs

Автоматизация тестирования

Игорь Хрол http://sqadays.com/ru/talk/1955234

top related