Видео выступления на SQA Days 10 - Эффект Горизонта

Ну вот и дошло до меня видео моего выступления на SQA Days 10.
Качество звука не очень, а за кадром ещё и смех посторонний - но лучше это, чем вообще ничего :).

Отдельное спасибо Стасу Фомину за запись и оцифровку.

Смотрите, и, чур, помидорами не бросаться ;)


Текст сообщения и комментарии...


Эффект горизонта

В ежедневной работе постоянно сталкиваешься с тем, что большинство ошибок можно было предупредить на более ранних этапах. Все мы знаем, что цена внесенной на этапе создания требований ошибки возрастает в 100+ раз, если она найдена только на этапе тестирования готового приложения.

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

Как же этот эффект проявляется в тестировании:
  • Неправильно выбираются тесты для автоматизации
  • Ошибки в выборе тестов для прогона при ограниченном времени
  • Ошибки при планировании тестирования
  • Ошибки в выборе средств тестирования(от багтреккера до документов) и автоматизации


Методы сглаживания эффекта или как с этим бороться?

Для сглаживания последствий придумано несколько алгоритмических решений, суть которых:
  1. Расширить уровень горизонта за счет поиска «интересных» мест и продвижения «тихих» или «громких» ходов (Quiescence search)
  2. Минимизировать потери при максимизации прибыли (Minimax| Maximin) и его уточнение с помощью отбрасывания более «слабых» уже найденных ходов (Alpha-beta pruning)


Теперь же о главном…

Как можно применить указанное выше:
  1. Расширяем просмотр «Шахов»: «Шахи» - ключевые моменты бизнес процессов, ситуации, в которых от приложения требуется особая «багоустойчивость»; рассмотрение возможных последствий в узлах процесса тестирования
  2. Расширяем просмотр «Атак»: рассматриваем варианты поведения системы в особенно «популярных» для пользователя местах; варианты развития событий после внесения изменений в процесс тестирования
  3. Расширяем просмотр «Потенциальных угроз»: где произошли изменения; где будут происходить изменения в будущем (активная разработка модуля)
  4. Определяем уровень доступного горизонта - определяем области, необходимого расширения горизонта  - строим свое дерево познания предметной области и процессов.


Вместо заключения:
  1. Люди обычно обладают довольно хорошей интуицией, чтобы решить, совершать ли ход, хотя он и мало обещающий, или до последнего искать выигрышный.
  2. Любая цель подчиняется эффекту горизонта: достижение каждой цели влечет за собой мгновенную постановку новой.



Текст сообщения и комментарии...


Тестирование оптимизации...

В процессе тестирования поставок клиентам часть задач (около 10%) связана с оптимизацией кода на SQL.
Понятно, что проверить во первых стоит проверить, не поломалась ли функциональность приложения и только затем перейти ко второй фазе - непосредственная проверка оптимизации.

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

Куча первая - проблемы БД:

  • фоновые процедуры (служебные job'ы и процедуры приложения, выполняемые в фоновом режиме)
  • "служебные" активности БД: пересчет индексов, высвобождение temp'овых таблиц, оптимизация хранения данных на жестком диске
Куча вторая - проблемы данных и процессов приложения:

  • сколько данных нужно для повторения процесса и фиксации времени улучшения?
  • сколько параллельных бизнес-процессов должно выполняться, чтобы повторить ситуацию?
  • как обеспечить повторность проверки?
  • добавим сюда и толщину каналов связи в случае тонкого (вернее средней упитанности) клиента?
Мелкие камешки в повторении состава "железа" и скорости работы исполнителя разбросаем вокруг.

Часть проблем, безусловно решается разными дополняющими и исключающими друг друга методами.. но возникает резонный вопрос:
Зачем все танцы с бубном, которые займут ещё и кучу времени, если мы изобретаем велосипед для нагрузочного тестирования?

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

Но тогда возникает резонный вопрос у заказчика - а был ли мальчик?  А исправили ли медленную работу ПО?

Я пытаюсь решать такие вопросы обсуждая проблему с заказчиком, планируя нагрузочное тестирование отдельно, иногда - проверяя процесс на "разумные" цифры выполнения. Что не гарантируют полную удовлетворенность клиента, но оставляет всех без розовых очков "надежды и веры в тестирование оптимизации" 

----------------
*Рассматриваем ситуации оптимизации процедур и функций в рамках произведения комплексных процессов: закрытия операционного дня банка; пересчет PnL и PV позиций; обработки 1000К сообщений для отправки и т.д. (код, а не бизнес-логика этапов процесса)

P.S.:  все хотел куда-нибудь серых человечков добавить :)

Текст сообщения и комментарии...


Боец тестирования банковского ПО в Минске, Гродно или Бресте будет успешно принят на работу


Если ты не раз вспоминал программистов добрыми словами за ошибки и медленную работу программного обеспечения отделения твоего банка – есть шанс это исправить.

Ко мне в команду нужны бойцы невидимого фронта тестирования.

Требования:
- быть готовым за очень короткие сроки овладеть большим объемом информации
- знать, что такое функциональное тестирование (и чем оно отличается, скажем, от нагрузочного)
- разговаривать с компьютером на «ты»

Плюсом будет:
- знание любого скриптового языка
- знание SQL
- опыт тестирования
- огромное желание стать тестировщиком
- знание правил бухгалтерского учета

Если ты студент(ка) или не имеешь опыта работы, но безумно трудолюбив(а) и талантлив(а) – пиши, возможно именно для тебя осталось место!

Писать на colvir[гав]yatester.ru или нашему HR - ohaetckaya[гав]colvir.ru



Кстати, знание английского вовсе не требуется – совещаемся и пишем по-русски J

Текст сообщения и комментарии...

Из-под пера Maksim Grinevich

| 0 ответов, оставьте свой...

Никогда не говори никогда и другие 10 никогда...

Десять фраз, которые не должны звучать из уст тестировщика:

1. Здесь багов нет - я гарантирую.
2. Всё равно, никто не использует Firefox!
3. Cem Kaner и James Bach вообще не понимают, о чем говорят.
4. Это срочно? Я тут просто в Farmville играю.
5. У меня на компьютере все работает!
6. Я только что написал в твиттере о дыре в нашей системе безопасности...
7. Использовать инструменты для тестирования? Я справлюсь без них!
8. На самом деле я отличный тестировщик, пока не трезв..
9. Ты прав, мне тоже кажется что сообщение об ошибке - это новая фича.
10. Если здесь остались баги, их найдут beta-пользователи...

Источник

Текст сообщения и комментарии...


Возможно ли построить идеальный процесс тестирования?

Проблема создания процесса тестирования много раз поднималась на конференциях, круглых столах и семинарах. Вооруженные тестировщики возвращаются на свои рабочие места и пытаются воплотить в жизнь советы своих старших товарищей, пытаясь создать идеальный процесс тестирования. Давайте попробуем разобраться в самой постановке вопроса: «Возможно ли построить идеальный процесс тестирования?»


ИПТ

На первый взгляд кажется, что самым верным ответом на поставленный в теме вопрос будет слово «Нет». Предлагаю немного углубиться в тему вопрос, возможно даже помечтав...

Что такое?

Идеальный процесс тестирования для меня – это процесс который позволяет решать поставленную задачу максимально эффективно, а так же создает комфортные условия для этого. Идеальный процесс, когда «лучше уже и не надо!»
Хотя само понятие ИПТ достаточно не однозначно, потому что каждый читатель может выдвинуть свои критерии идеальности процесса.

ИПТ не существует

ИПТ не существует, если вы хотите придумать один универсальный для всех людей или команд. (команда)
ИПТ не существует, если вы думаете, что может одна и та же команда на протяжении очень долгого времени работать по заранее заданному процессу. (время)
ИПТ так же не существует, если вы планируете использовать его на разных проектах. (проект)

ИПТ существует

ИПТ можно построить для конкретного набора людей, сплоченного в команду, даже если это всего два человека – фрилансер и пользователь. (команда)
ИПТ достижим, если вы готовы планомерно улучшать Ваш процесс на протяжении всего жизненного цикла проекта. (время)
ИПТ возможен только в рамках конкретного проекта и зачастую полностью непереносим на другие. (проект)

Как?

Создание ИПТ сопряжено с набором следующих действий, которые следует повторять в течении проекта:

I. Описать то место в проекте, времени и команде, в котором вы находитесь;

II. Идентифицировать проблемные места
     1. идти от проблемы
     2. с точки зрения цели:
  • удобный для достижения цели
  • предсказуемый результат
  • понятный объем работ
III. Приоритизировать проблемы
     1 решать по одной из каждой выделенной области в единицу времени
     2 параллельное решение из несмежных областей

IV. Внести изменения
     1 мотивация команды
     2 обратная связь
     3 довести изменение до конца

V. Проанализировать результат

Несколько примеров

Пример первый.

Небольшая продуктовая компания на 20 человек. Постановкой процесса занимались исключительно в случаях, когда были на то проблемы:

- частое обращение ПМа за информацией о состоянии задач, расчетным временем их исполнения -
введено и применяется сразу практически всей командой: обновление статусов задач в багтрэккере, выставление перед началом и изменение estimations в процессе работы над большими задачами.Убедившись в достаточной верности данных – ПМ реже задает свои вопросы.

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

Пример – второй.

Крупная оффшорная компания. Выделенный центр разработки для одного западного информационного агентства составом в Х человек, из которых 30-40 человек – группа тестировщиков.

- стремясь улучшить процесс для всей группы, изменения вносят на всех, проверяя на одной из групп.
Изменения успешные для группы из 5-7 тестировщиков валяться на группе из 2-х человек, т.к. они работают с другим типом ПО, у них свой «подкрученный» процесс тестирования.

Заключение
Подводя итог выше сказанному, следует отметить следующие моменты:
- стремиться к ИПТ необходимо – он существует и достижим;
- движение стоит начинать от проблемы;
- ...

В дополнение хочу показать карту памяти, которую я использовал для подготовки этого сообщения:


Спасибо mindmeister за сервис.


Текст сообщения и комментарии...


Why? Why not? Why not me? Why not now?



Не совсем про тестирование, но очень понравилось:

"For true success ask yourself these four questions: Why? Why not? Why not me? Why not now?"
(с) James Allen

"Для настоящего успеха задайте себе следующие четыре вопроса: Почему? Почему бы и нет? Почему не я? Почему не сейчас? "
(с) Джеймс Аллен

Текст сообщения и комментарии...