вторник, 16 ноября 2010 г.

Автоматизируем не регрессионные тесты.

ВНЕЗАПНО!
Автоматизировать можно не только регрессионные тесты. Ну за примерами далеко ходить не надо - нагрузки, внешний мониторинг, различные сравнения чего попало, random walk, тесты эмулирующие работу различных статистических и не очень моделей.

В общем-то про нагрузки, модульные и всяческие регрессионные тесты уже написано много и давно. А вот про model-based активно говорить начали сравнительно недавно.

WTF is model-based & oracle-based?
А в общем-то все просто - основываясь на какой-то модели поведения (предварительно оцифрованной, можно даже в виде графа) автоматически выполняются тесты. В принципе на основе модели их можно и генерить. А так же модель можно сделать самообучающейся, но это уже другая история).

Задач много. Канер предлагает вот такой список:

  • Теория ошибки (мы должны научить машину распознавать ошибку с минимумом харкода)
  • Данные на вход (очень много вариантов подбора и подачи данных, аж глаза разбегаются)
  • Последовательная зависимость (должны тесты быть независими или нет? и на то и на то есть свои аргументы, которые в разных ситуациях имеют разный вес)
  • Выполнение тестов (как прогонять тесты, как изолировать от ошибки, если тесты базируются на эвристиках?)
  • Данные на выход (опять же - мы должны очень аккуратно подбирать данные которые будут на выходе)
  • Сравнение данных (мы должны где-то брать данные для сравнение, даже если мы генерируем эти данные - нам нужно от чего-то отталкиваться)
Ну и дальше Канер предлагает много всего про распознавание ошибки.

Фактически данный подход подразумевает большое количество именно аналитической работы (да-да, для того чтобы построить модель), потому как технически по готовой модели написать все существенно проще, да и шаблонов проектирования таких моделей в природе пока не появилось.

Да, тут есть риски. 
Главный заключается в том что модель окажется некорректной. Таким образом можно просрать очень много человекоресурсов, потому как готовая продукция по этой модели будет бесполезна, а саму модель протестировать мягко говоря трудно.
Риски реализации, кривой спецификации модели, среды, поддержки и т.п. так же есть, но их проще избежать, хотя они так же могут быть весьма опасными.

Да, тут нужно хорошее знание продукта.
Да, тут нужно понимать и уметь применять техники тест-дизайна.
Да, мы все еще не можем выловить все баги.
Нет, тут совсем не обязательно много и чудовищно кодить, хотя тоже было бы плюсом.

И да, есть классные примеры от щищек по тестированию из MS. Качаются вот тут.

Комментариев нет:

Отправить комментарий