Оптимальное покрытие автотестами:
генерация случайных данныхГеннадий Алпаев
Ciklum
Покрытие приложения автотестами
Насколько полным является покрытие кода автоматическими скриптами?
2
• покрытие спецификаций• покрытие ручных тестов• покрытие кода
Покрытие кода
Критерии охвата:
3
• охват строк (каждая строка выполняется как минимум один раз)
• охват ветвлений (if…then…else)
• охват условийif(A>B or B>C)
Тестирование данных
• Тестирование граничных и средних значений
4
• Тестирование «опасных» значений (A=B/C)
Model-based testing
Проблемы:
5
данные условие
Путь 1
Путь 2
результат
• время выполнения• ресурсозатратно
• генерировать пути• генерировать данные• делать обход всех путей с разными данными
Решение проблемы
Continuous Integration + Random Path/Data
6
данные условие
Путь 1
Путь 2
результат
Недостатки подхода• Отслеживание пути в случае возникновения ошибки (решение: каждый раз при осуществлении выбора оставлять «следы»)
7
• Сложность написания и отладки кода
• Сложность воспроизведения ситуации в автоматическом режиме (решение: ручной прогон + автоматизация конкретного сценария