Автоматизировать можно не только регрессионные тесты. Ну за примерами далеко ходить не надо - нагрузки, внешний мониторинг, различные сравнения чего попало, random walk, тесты эмулирующие работу различных статистических и не очень моделей.
В общем-то про нагрузки, модульные и всяческие регрессионные тесты уже написано много и давно. А вот про model-based активно говорить начали сравнительно недавно.
WTF is model-based & oracle-based?
А в общем-то все просто - основываясь на какой-то модели поведения (предварительно оцифрованной, можно даже в виде графа) автоматически выполняются тесты. В принципе на основе модели их можно и генерить. А так же модель можно сделать самообучающейся, но это уже другая история).
Задач много. Канер предлагает вот такой список:
- Теория ошибки (мы должны научить машину распознавать ошибку с минимумом харкода)
- Данные на вход (очень много вариантов подбора и подачи данных, аж глаза разбегаются)
- Последовательная зависимость (должны тесты быть независими или нет? и на то и на то есть свои аргументы, которые в разных ситуациях имеют разный вес)
- Выполнение тестов (как прогонять тесты, как изолировать от ошибки, если тесты базируются на эвристиках?)
- Данные на выход (опять же - мы должны очень аккуратно подбирать данные которые будут на выходе)
- Сравнение данных (мы должны где-то брать данные для сравнение, даже если мы генерируем эти данные - нам нужно от чего-то отталкиваться)
Ну и дальше Канер предлагает много всего про распознавание ошибки.
Фактически данный подход подразумевает большое количество именно аналитической работы (да-да, для того чтобы построить модель), потому как технически по готовой модели написать все существенно проще, да и шаблонов проектирования таких моделей в природе пока не появилось.
Да, тут есть риски.
Главный заключается в том что модель окажется некорректной. Таким образом можно просрать очень много человекоресурсов, потому как готовая продукция по этой модели будет бесполезна, а саму модель протестировать мягко говоря трудно.
Риски реализации, кривой спецификации модели, среды, поддержки и т.п. так же есть, но их проще избежать, хотя они так же могут быть весьма опасными.
Да, тут нужно хорошее знание продукта.
Да, тут нужно понимать и уметь применять техники тест-дизайна.
Да, мы все еще не можем выловить все баги.
Нет, тут совсем не обязательно много и чудовищно кодить, хотя тоже было бы плюсом.
И да, есть классные примеры от щищек по тестированию из MS. Качаются вот тут.
Комментариев нет:
Отправить комментарий