среда, 21 мая 2014 г.

Кроссбраузерность вручную:Тысячи тестов за несколько часов.


Еще одна моя статья из журнала Tester's Life  (выпуска Август" 2013)
Немного предыстории 
Не так давно в нашей компании было принято решение интегрировать имеющийся проект в разные социальные сети и вопрос о кросс-платформенности и кросс-браузерности появился в виде огромной горы на моем пути, а я оказалась перед ней без экипировки альпиниста.
Ниже я расскажу, какие были проблемы, как они решались, какие применялись инструменты, методы и подходы, как велся подсчет количества тестов, как нам удалось сократить их с почти 6000 до менее 450, и на что вам стоит обращать внимание при проведении такого тестирования.

Сразу замечу, что у нас было 3 приемочных теста:
 1. проверить корректность установки приложения.
2. корректность входа в приложение.
3. минимальный пул тестовоткрытие интерфейсов, которые для нас критичны

Быстрое разочарование...

Попробовав несколько инструментов для тестирования кросс-браузерности, я весьма быстро разочаровалась и выделила основные проблемы:

проблема 1.
тестируем социальную сеть 
Будьте готовы к тому, что 99% существующих инструментов для тестирования кросс-браузерноститестируют только web-приложения. Проще говоря, вы увидите только скрин, и в лучшем случае это будет скрин вашего приложения, а не социальной сети.
А изначально ведь стоит задача проверить корректность установки и запуска самого приложения в социальной сети при использовании браузеров, клиентов, операционных систем...

проблема 2. 

Всем, наверное, знакомо приложение IE Tester, вот и я решила попробовать его использовать, к тому же необходимо было проверить корректность запуска проекта Империя в Facebook в браузере Internet Explorer 6.
Запустила IE Tester, выбрала версию IE 6, в которой нужно было открыть наше приложение в Facebook. Но в итоге я получила квадрат а-ля Малевич, только белого цвета с непонятными циферками. Не только нашегоприложения не увидела, а и сам Facebook не открылся.
 Через несколько недель после этого появились статьи о том, что Facebook отказывается от поддержки браузера IE 6. Я решила не отчаиваться, и пошла на поиски других бесплатных приложений.

LunASCAPE 6
Этот инструмент нельзя назвать традиционным средством для кросс-браузерного тестирования, он больше полезен для программистов и дизайнеров, да и весьма сложен в применении.
Вердикт
для необходимого нам тестане подходит.
SAuCELABS
В принципе абы как подходит для тестирования. Абы как потому что работает он ооооочень медленно.
Вердикт
времени нет на долгую обработку одного запроса.
SuPER PREVIEW
Можно проверить работу приложения в интерактивном режиме просмотра страницы. Неплохой инструмент в целом, но немного виснет периодически.
Вердикт
подх одит частично

просвещение

По результатам знакомства с инструментами, пришло пониманиени один из них не даст гарантии, что я не протестирую его работу или социальную сеть, вместо своего приложения.
Вопрос: «Нужно ли тратить средства на покупку какого-то платного приложения?» – я отвергла сразу же. Но если вы уверены, что данное приложение сделает все, что вам необходимо и за нужное времяприобретайте. Особенно если знаете, что такие тесты вам понадобятся еще ни единожды.
Итак, мною было принято решениетестировать вручную.
Порывшись по бескрайним просторам интернета, выявив множество браузеров, их версий, операционных систем, тьму версий flash-плееров, и связав этот хаос в одно целое
я даже не смогла подсчитать, сколько времени уйдет на все проверки!

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

Начинаем рисковать
В данной ситуации без рисков не обойтись. Первый риск, который я на себя взялаотбросила малоизвестные браузеры, которые в приличном количестве выдал поиск
Google, и наименее используемые операционные системы.
Теперь уже можно было подсчитать количество тестов:
Берем известные браузеры и все их версии.
Также берем все наиболее используемые операционные системы и все их подвиды: Windows 7 (Basic,Home и пр.), Windows Vista (все ее разновидности), Windows XP (Home, Professional и т.д.), Linux, Mac OS.
Учитываем три социальные сети, в которых нам надо проводить проверки.
Все это перемножаем между собой и на количество необходимых проверок по тест-кейсу.
Например: Браузер Mozilla Firefox – 19 версий, перемножаем на все виды ОС Windows перемножаем еще на 2 (32 и 64 бит). Затем делаем тоже самое с Windows Vista. Все полученные цифры складываем.
По итогу у нас получилось около 6 тысяч тест-кейсов, которые необходимо пройти.
Было понятно, что такое тестирование растянется на месяцы. А их у меня не было. Был от силы 1 день. А если честно смотреть на поставленные сроки 4-6 часов максимум.
Следующий шаг заключался в сборе и анализе статистики использования браузеров и ОС нашими пользователями (по внутренним данным проекта). По результатам был составлен топ-5 браузеров и топ-3 операционных систем 

Операционные системы:
·         Windows7 
·         Windows XP
·         Mac OS

Браузеры
o    Mozilla Firefox.
o    Google Chrome.
o    Internet Explorer.
o    Opera.
o     Safari.

Количество тестов уменьшилось в 2 раза и сос тавило около 3 тысяч тестов. Но даже если 1 тест = 1 минута, то 3 000 минут≈ 6 дней. А 6 дней на тестирование у нас нет
Совет:
для отбора приоритетных версий используйте:
различную статистику в интернете
данные из статистики блогов (например,в Blogger–е).
если у вас нет личного блога,обратитесь к друзьям
показатели из вашего внутреннего баг-трекера от пользователей, и так далее


уменьшаем в 20 раз!

Главная задача
выдать максимальный результат за 4 часа, что означаетнам нужно сократить количество  уже сокращенных тестов практически в 20 раз!
Как?!?
Как мы видим из предыдущих расчетов, в каждом браузере было очень много версий, изобилием версий отличаются и операционные системы, и флеш-плеер.
И вот тут снова прибегаем к рискам. А именноотбрасываем «лишние» версии везде, где только можем при помощи классов эквивалентности и граничных значений.


 операционные системы:
Операционная система Windows 7 Basic от Windows 7 Home вряд ли имеет какие-либо технические различия, которые позволят выявить какой-то баг, еще сомнительней, что это будет критичный баг. Поэтому для тестирования берем только 1 версию (лучше наиболее полную) операционной системы Windows 7.
По аналогии поступаем и с остальными ОС

версии браузеров:

• Самая популярная версия.
• Самая последняя версия.
• Версия, на которой тестировали в предыдущий раз
(если тестировали).

Например:
Mozilla Firefox версии 10 / 19 / 3,6

версии FLASH

•Версия, на которой тестировали прошлый раз (на случай, если пользователь не обновился).
•Версия, которая является последней на момент необходимости тестирования.
•Промежуточная версия (если была). Данная версия берется на случай если пользователь обновил следующую версию, которую мы не проверяли, но не
обновился еще до последней.Обычно получается 2 версии, т.к. промежуточная
версия Flash для тестирования берется редко

алгоритм тестирования

посмотрим на примере нашего приложения.
После определения тестового окружения мы получили следующий набор:
• Социальные сети: Вконтакте, Одноклассники, Facebook.
• Операционные системы: Windows 7, Windows XP, Mac OS.
По 3 версии каждого браузера: Mozilla Firefoх, Google Chrome, Internet Explorer, Opera, Safari.
• 2 версии клиента Adobe Flash.

подход к тестированию:

Берем операционную систему Windows 7 (как самую популярную) + Flash последний (так как его вы еще не проверяли) и ставим минимальные версии всех браузеров (это для дальнейшего удобства).

1. Заходим с каждого браузера в каждую социальную сеть. Ставим наше приложение себе на аккаунт и пытаемся в него зайти (по необходимости можно проверить самые критичные части функционала).
2. Далее обновляем каждый браузер до следующей нужной версии и повторяем первый шаг.
3. И так до тех пор, пока не выполним все проверки

подведем итоги

Если вы перемножите все варианты тестов из описанного примера подхода к тестированию, то получите вместо 3 тысяч тестов– около 450 для тестирования
кросс-браузерности/кросс-платформенности, это количество, которое реально проверить за несколько часов.

Число может быть меньше или больше в зависимости от количества выполняемых непосредственно шагов тест-кейса помимо требований к окружению. Если вы совместите это с парным тестированием, то сократите время еще в 2 + раз.
Данная схема и метод тестирования для наших проектов оказался идеально верным, быстрым, и удобным. С максимальным предоставлением информации

совет

•не брезгуйте никакой статистикой.

отслеживайте, собирайте, используйте.

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

•не делайте лишних тестов.

•тестируйте свое приложение, а не окружающую среду.

4 комментария :

Nicholas A. Georgievsky комментирует...

Спасибо что поделились полной историей вашего успеха от начала до конца.

Сразу в голову пришло несколько вещей, которые вами не озвучены, но которые можно проиллюстрировать на вашем примере:
- выделяйте классы эквивалентности как можно раньше, обращайтесь к разработчикам чтобы они подтверждали, дополняли ваши предположения.
- про это: "Поэтому для тестирования берем только 1 версию (лучше наиболее полную) " -
не надо брать "максимальные версии" - реальный домашний пользователь скорей будет/должен иметь ограниченную версию. Другой аспект этого, кстати, то, что не надо использовать "административные акаунты" и аккаунты наделённые множественными ролями внутри самого приложения, так как это не реализуется для реальных пользователей и может скрывать важные ошибки.
- не стоит ожидать что простые инструменты будут выполнять именно вашу специфическую задачу. очень мало в мире производства программного обеспечения таких задач, которые целиком автоматизируются простыми хорошо поддерживаемыми инструментами. Отсюда вывод, либо вам нужно знаить и множество интегрируемых друг с другом инструментов, каждый из которых хорошо решает элементарные задачи, либо нужно брать большой сложный инструмент и разбираться в нём и настраивать.
- из предыдущего пункта следует заметить, что начиная решать вышеуказанную задачу раньше вы имеете больше шансов найти и приспособить для себя подходящие инструменты. иначе нужно идти и решать поставленную задачу на уровне искусства.

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

Ещё раз спасибо за статью.

Николай

ЗЫ. возможно было бы полезно если б вы объяснили поподробней ваши выводы и рекомендации. Почему парное тестирование ускоряет, а не замедляет текущее тестирование. Как вы разделяли приложение и окружающую среду (зачем вы вообще брали разные ОС за исключением того что нет такой ОС на которой работали бы все ваши браузеры?)

Рина комментирует...

Привет. Спасибо за отзыв.

брали полную версию исходя из полученной статистики. ( по статистике наши пользователи используют в 87% именно их)

Про админ. аки согласна. Есть в них тайное зло)

Парное тестирование ускорит в двух случаях:
1. если вы разделите между собой тесты. Я тестирую на Мак Ос, Вася на Винде, Петя на шарманке)
2. Если вы тетсируете - а баги за вас записывает кто-то другой ( сокращается время на оформление багов)

Зачем брали ОС - ОС брали потому что игра была не только в социалках, но и в браузерной версии + клиентская. Был риск что из-за ранее установки под клиент (платформа) это может оказать влияние на социальную версию.
Это уже кросс-платформенность.

Приложение должно запускаться в любой своей версии. Поэтоу брали платформы- флеш и браузеры. Все ингредиенты, которые могли повлиять. + как вы заметили, уникальность системы + браузер. Браузер фаерфокс на МакОс это другой браузер , нежели на виндовс. Исходя из этих факторов составляли тесты.

Unknown комментирует...

Интересно узнать результаты вашей проверки, например в % соотношении ОС и кол-ва багов, или браузер - количество багов в процентах )

Рина комментирует...

У нас всего было около 40 багов.
Около 10 в Виндовс Виста + Сафари.
(сейчас сафари на виндовс нет смысла проверять, ибо он не поддерживается более)
3 бага были в Хроме. (Виндовс хр) 4 в опере.(виндовс хп и виндовс 7 премиум)
Это из критичных.
Остальные по мелочи везде.
Наименьше багов было в фаерфоксе виндовс 7 и хп.