8
Оптимальное покрытие автотестами: генерация случайных данных Геннадий Алпаев Ciklum

Геннадий Алпаев - "Оптимальное покрытие автотестами: генерация случайных данных"

Embed Size (px)

DESCRIPTION

При автоматизации тестирования один из самых главных параметров - покрытие кода. Насколько хорошо тестируется приложение в автоматическом режиме и можно ли доверять результатам тестирования? Как можно увеличить покрытие кода, не увеличивая при этом время выполнения автоматических скриптов? Какие проблемы при этом возникают и как их можно решить? Что такое model-based тестирование и как его можно применить в условиях ограниченного времени на тестирование? На эти вопросы я попытаюсь ответить с примерами из реального проекта, объясню с какими проблемами мы столкнулись и как их решали.

Citation preview

Page 1: Геннадий Алпаев - "Оптимальное покрытие автотестами: генерация случайных данных"

Оптимальное покрытие автотестами:

генерация случайных данныхГеннадий Алпаев

Ciklum

Page 2: Геннадий Алпаев - "Оптимальное покрытие автотестами: генерация случайных данных"

Покрытие приложения автотестами

Насколько полным является покрытие кода автоматическими скриптами?

2

• покрытие спецификаций• покрытие ручных тестов• покрытие кода

Page 3: Геннадий Алпаев - "Оптимальное покрытие автотестами: генерация случайных данных"

Покрытие кода

Критерии охвата:

3

• охват строк (каждая строка выполняется как минимум один раз)

• охват ветвлений (if…then…else)

• охват условийif(A>B or B>C)

Page 4: Геннадий Алпаев - "Оптимальное покрытие автотестами: генерация случайных данных"

Тестирование данных

• Тестирование граничных и средних значений

4

• Тестирование «опасных» значений (A=B/C)

Page 5: Геннадий Алпаев - "Оптимальное покрытие автотестами: генерация случайных данных"

Model-based testing

Проблемы:

5

данные условие

Путь 1

Путь 2

результат

• время выполнения• ресурсозатратно

• генерировать пути• генерировать данные• делать обход всех путей с разными данными

Page 6: Геннадий Алпаев - "Оптимальное покрытие автотестами: генерация случайных данных"

Решение проблемы

Continuous Integration + Random Path/Data

6

данные условие

Путь 1

Путь 2

результат

Page 7: Геннадий Алпаев - "Оптимальное покрытие автотестами: генерация случайных данных"

Недостатки подхода• Отслеживание пути в случае возникновения ошибки (решение: каждый раз при осуществлении выбора оставлять «следы»)

7

• Сложность написания и отладки кода

• Сложность воспроизведения ситуации в автоматическом режиме (решение: ручной прогон + автоматизация конкретного сценария

Page 8: Геннадий Алпаев - "Оптимальное покрытие автотестами: генерация случайных данных"

Вопросы 8

?Геннадий Алпаев

Skype: gennadiy.alpaevE-mail: [email protected]