Перейти к содержимому

Фотография

Баги, которые прячутся от автоматических тестов


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 13

#1 baranceva

baranceva

    Профессионал

  • Admin
  • PipPipPipPipPipPip
  • 4 182 сообщений
  • ФИО:Баранцева Наталья


Отправлено 17 апреля 2011 - 18:44

Оригинальная публикация
Автор: Bj Rollison
Перевод: Татьяна Зинченко


В комментариях к одной из заметок в моем блоге Шрини Калкарни (Shrini Kulkarni) предложил: “Наверное, тебе стоит написать о тех багах, которые юнит-тесты (или тестирование разработчиками на любом уровне) не могут поймать. Это будет достойный ответ всем, кто безгранично верит в автоматизацию тестирования на юнит и API уровнях”

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

  • профилактики дефектов (особенно ошибок в логике вычислений);
  • ранней идентификации проблем интеграции;
  • создания нагрузки на критические ресурсы (питание, производительность, память);
  • эффективного выполнения избыточных проверок (по необходимости или для надежности);
  • более эффективных/точных “оракулов” по сравнению с людьми;
  • снижения затрат в долгосрочной перспективе.

Читать дальше
  • 0
Наталья Баранцева
Тренинги по тестированию ПО

#2 Zenturio

Zenturio

    Опытный участник

  • Members
  • PipPipPipPip
  • 386 сообщений
  • ФИО:Дмитрий
  • Город:Смоленск - Москва


Отправлено 18 апреля 2011 - 06:00

Но проведя небольшое дополнительное исследование, я обнаружил другую ненормальность, которая не поддается логике, и которую автотесты, конечно, не нашли бы. Когда я нажал кнопку ALT, я заметил нечто странное – кнопка Cancel исчезает! Однако, с точки зрения системы эта кнопка все еще существует, я могу программно обратиться к ней. Хотя с точки зрения пользователя – ее нет!


Помоему это ошибка написания автотестов.
Обычно у кнопки есть свойство Visible
Если оно будет fALSE, ТО АВТОтест
это определит и выведет ошибку
Ихмо надо правильно писать автотесты
  • 0

#3 Pryanik

Pryanik

    Постоянный участник

  • Members
  • PipPipPip
  • 214 сообщений
  • Город:МОСКВА

Отправлено 18 апреля 2011 - 06:26

Помоему это ошибка написания автотестов.
Обычно у кнопки есть свойство Visible
Если оно будет fALSE, ТО АВТОтест
это определит и выведет ошибку
Ихмо надо правильно писать автотесты

Нет, автор просто пишет про авт. тестирования используя юнит-тесты или API.
А проверять свойство button-а это уже из области автоматического тестирования GUI.
  • 0

#4 OVA

OVA

    Опытный участник

  • Members
  • PipPipPipPip
  • 405 сообщений
  • ФИО:Высоцкий Сергей Павлович
  • Город:Новосибирск

Отправлено 18 апреля 2011 - 06:29

Увы не всегда наличие свойства visible гарантирует нам что кнопку реально видно. У тебя могут, например, слететь по ивенту стили с кнопки. Или выставиться еще что-нибудь, так что кнопки не будет видно визуально, но при этом visible будет очень ок. Не явно дублирующиеся свойства у разных кастомных контролов во флешике это та еще дискотека.
Ну и там таки написано:

and even trying to automate a test for these types of issues is not just an effort in futility, I would say it is damn near insanity

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

#5 OVA

OVA

    Опытный участник

  • Members
  • PipPipPipPip
  • 405 сообщений
  • ФИО:Высоцкий Сергей Павлович
  • Город:Новосибирск

Отправлено 18 апреля 2011 - 06:30

Нет, автор просто пишет про авт. тестирования используя юнит-тесты или API.
А проверять свойство button-а это уже из области автоматического тестирования GUI.

В данных примерах он кажется вполне конкретно разбирает GUI test automation
  • 0

#6 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 18 апреля 2011 - 07:34

Описанный пример является демонстрацией тезиса "Я верю, что мы в определенной степени можем автоматизировать случайности или непонятное поведение, но тогда возникает вопрос – должны ли мы это делать?"

Сколько и каких проверок надо написать в автотестах? Проверять все атрибуты контролов? Совершенно нереально. Ладно, начали проверять свойство Visible -- оно стоит, а элемент всё равно не видно. Почему? Потому что он находится за пределами диалогового окна. Будем ещё проверять координаты? А может быть в пределах окна, но скрыт другим контролом. И это тоже будем проверять? После каждого нажатия клавиши? Нафиг такую автоматизацию!

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

Ещё кстати -- вы не поверите, но в мейл-листе про Selenium в последнее время стали часто появляться вопросы "как кликнуть на невидимую кнопку?" Дело в том, что в Selenium 2 это запретили (а в первой версии было можно) -- и народ страдает. А вы говорите -- проверять свойство видимости перед выполнением действия. Да они наверняка знают, что она невидимая, и всё равно кликают!
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#7 stmark

stmark

    Опытный участник

  • Members
  • PipPipPipPip
  • 404 сообщений
  • ФИО:Докучаев Сергей
  • Город:Ярославль


Отправлено 18 апреля 2011 - 09:06

То, что даже очень хорошие автотесты никогда не заменят человека, думаю, и ежу понятно.
Однако, если приходится тестировать одно и тоже раз 5 в месяц в течение года, то автотесты очень к месту.
Проблема с "недочеловечностью тестов" у нас решается расширенными методами и дополнительными проверками большинства элементов на странице через Page Objects архитектуру.
Такие подробные автотесты получаются довольно наглядными и простыми в написании. Важно просто изначально понимать в какую сторону двигаться и использовать техники тестирования и программирования.
Кроме того, дополнительно при прогонке автотестов записывается лог и делаются скриншоты. Которыми пользуется уже ответственный человек для дополнительной проверки.
  • 0

#8 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 18 апреля 2011 - 09:23

Помоему это ошибка написания автотестов.
Обычно у кнопки есть свойство Visible
Если оно будет fALSE, ТО АВТОтест
это определит и выведет ошибку
Ихмо надо правильно писать автотесты

Могу поспорить, что вряд ли кто-нибудь в этой ситуации догадался бы в автотесте проверить отдельно нажатие ALT.
При проектировании автотеста придумалось, что надо нажать кнопку Cancel -- это и будет запрограммировано. Перед нажатием кнопка видна, так что добавление проверки свойств контрола не помогло бы выявить баг.

Человек хорош тем, что у него высокая естественная вариативность поведения. В отличие от компьютера. Человек -- как "пьяный компьютер", идёт по тому же самому сценарию, но его постоянно "штормит" и он отклоняется то туда, то сюда. В результате получается, что при выполнении того же самого сценария человек проверяет гораздо больше вариантов поведения программы.
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#9 stmark

stmark

    Опытный участник

  • Members
  • PipPipPipPip
  • 404 сообщений
  • ФИО:Докучаев Сергей
  • Город:Ярославль


Отправлено 18 апреля 2011 - 09:45

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


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

#10 OVA

OVA

    Опытный участник

  • Members
  • PipPipPipPip
  • 405 сообщений
  • ФИО:Высоцкий Сергей Павлович
  • Город:Новосибирск

Отправлено 18 апреля 2011 - 09:52

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

Не, можно сразу взять monkey clicker и обозвать это автотестами. Ну допилить еще немного)
Без фанатизма многое ок. Дальше вопрос цены/времени встает.
  • 0

#11 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 18 апреля 2011 - 10:21

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

Можно. Но сложность оракулов сразу начинает быстро расти. За всё приходится платить :)
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#12 astenix

astenix

    Специалист

  • Members
  • PipPipPipPipPip
  • 906 сообщений
  • ФИО:Лёша Лупан
  • Город:Кишинев


Отправлено 18 апреля 2011 - 10:45

Человек -- как "пьяный компьютер"

Блеск!
  • 0

Software Testing Glossary - простыми словами о непростых словах.


#13 Zenturio

Zenturio

    Опытный участник

  • Members
  • PipPipPipPip
  • 386 сообщений
  • ФИО:Дмитрий
  • Город:Смоленск - Москва


Отправлено 19 апреля 2011 - 05:51

Увы не всегда наличие свойства visible гарантирует нам что кнопку реально видно. У тебя могут, например, слететь по ивенту стили с кнопки. Или выставиться еще что-нибудь, так что кнопки не будет видно визуально, но при этом visible будет очень ок. Не явно дублирующиеся свойства у разных кастомных контролов во флешике это та еще дискотека.
Ну и там таки написано:

and even trying to automate a test for these types of issues is not just an effort in futility, I would say it is damn near insanity

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


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

#14 OVA

OVA

    Опытный участник

  • Members
  • PipPipPipPip
  • 405 сообщений
  • ФИО:Высоцкий Сергей Павлович
  • Город:Новосибирск

Отправлено 19 апреля 2011 - 06:36

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

Если вы делаете миллион проверок на любой чих, то медленным будет. У части приложений для тестирование извлечение свойств идет через пятую точку, так что может стать критично медленным. Одна проверка и 500 это разница. Пара секунд набежит на каждый экшен и уже совсем не очень. И у вас врятли же в GUI тесте будет "1 экшен" = "1 тест". А если вам еще сравнивать не тупо цифру/строку, а объекты, то начнется дискотека. Ну набежит пара минут на каждый тест. Ничего страшного если их несколько десятков. И если всего пара минут. А если больше?
И при этом никто вам не гарантирует что вы предусмотрели все возможные проверки свойств и все возможные экшены. Ваш тест найдет ALT, но пропустит CTRL+ALT+TAB, например. Хотите сделать все переборы? Ну ок, со странички вы можете выдрать все ивенты. Может быть. А для десктопных приложений уже не получится.

Это плохая логика проверять все, везде и сразу. Избыточные проверки это верный путь в декартов взрыв. Где-то они оправданы, но с ними надо быть аккуратным. Хардкодить эти проверки плохо и в итоге может стать дорого в плане поддержки. Делать их умными несколько дороже в плане реализации, но уже лучше. Но это дополнительные риски.

Нельзя закрыть тестами все. Более того - это не очень умно. Можно закрыть достаточно. Это утверждение верно и для мануальных тестов и для автоматики. И тут еще встает вопрос эвристик. Часть эвристик отлично работает для автоматики. Часть (визуальщина самый частый пример) слишком дорогие.
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных