Эффект горизонта
вторник, октября 04, 2011В ежедневной работе постоянно сталкиваешься с тем, что большинство ошибок можно было предупредить на более ранних этапах. Все мы знаем, что цена внесенной на этапе создания требований ошибки возрастает в 100+ раз, если она найдена только на этапе тестирования готового приложения.
Я бы хотел рассказать об эффекте горизонта, который, так или иначе, проявляется в нашей ежедневной работе. Термин введен в обиход исследователями области искусственного интеллекта, где алгоритм может предусмотреть, скажем, пять шахматных шагов вперед, однако на шестой ему уже не хватает мощностей, в итоге выбор делается в пользу ситуации, которая оптимальная через пять ближайших шагов. При этом избранный ход может оказаться катастрофической ошибкой, которая в долгосрочной перспективе приведет к поражению в игре. И компьютер, на котором работает алгоритм, более мощным, система бы смогла предусмотреть шестой и седьмой ходы, выбрав неоптимальный шаг в краткосрочной перспективе, которых все же приведет к мату.
Как же этот эффект проявляется в тестировании:
- Неправильно выбираются тесты для автоматизации
- Ошибки в выборе тестов для прогона при ограниченном времени
- Ошибки при планировании тестирования
- Ошибки в выборе средств тестирования(от багтреккера до документов) и автоматизации
Методы сглаживания эффекта или как с этим бороться?
Для сглаживания последствий придумано несколько алгоритмических решений, суть которых:
- Расширить уровень горизонта за счет поиска «интересных» мест и продвижения «тихих» или «громких» ходов (Quiescence search)
- Минимизировать потери при максимизации прибыли (Minimax| Maximin) и его уточнение с помощью отбрасывания более «слабых» уже найденных ходов (Alpha-beta pruning)
Теперь же о главном…
Как можно применить указанное выше:
- Расширяем просмотр «Шахов»: «Шахи» - ключевые моменты бизнес процессов, ситуации, в которых от приложения требуется особая «багоустойчивость»; рассмотрение возможных последствий в узлах процесса тестирования
- Расширяем просмотр «Атак»: рассматриваем варианты поведения системы в особенно «популярных» для пользователя местах; варианты развития событий после внесения изменений в процесс тестирования
- Расширяем просмотр «Потенциальных угроз»: где произошли изменения; где будут происходить изменения в будущем (активная разработка модуля)
- Определяем уровень доступного горизонта - определяем области, необходимого расширения горизонта - строим свое дерево познания предметной области и процессов.
Вместо заключения:
- Люди обычно обладают довольно хорошей интуицией, чтобы решить, совершать ли ход, хотя он и мало обещающий, или до последнего искать выигрышный.
- Любая цель подчиняется эффекту горизонта: достижение каждой цели влечет за собой мгновенную постановку новой.
Текст сообщения и комментарии...