Анна Сергеева. Инструменты тестировщика или с чего начать новичку // Системный администратор. 2014. № 7-8. С.70-74.
Начинающему тестировщику: что поможет стать одним из тех специалистов, благодаря которым конечные пользователи присылают больше положительных отзывов о приобретенном ПО?
Опубликовано в разделе "Разработка / Тестирование"
Эта же статья на сайте журнала
Если изучить сегодняшний рынок вакансий ИТ-индустрии, то становится понятно, что в современной разработке программных приложений востребован труд инженеров службы обеспечения качества или тестирования программное обеспечение. И интересен тот факт, что все чаще предлагаемый уровень заработной платы здесь сопоставим с доходами программистов. Но следует иметь в виду, что тестировщики – это совершенно особенные специалисты, с особым складом ума, со своими навыками и опытом. И обязанности у них особенные и в то же время очень интересные.
Тестировщики берут на себя большую часть ответственности за то, что программное обеспечение которое получит конечный пользователь, будет обладать удобным и понятным интерфейсом, работать надежно и без сбоев, обеспечит возможность в реализации личных и профессиональных задач пользователя, будь то дома или на производстве.
«Быстро только вирусы плодятся», а потому сразу гуру в сфере тестирования стать не получится. Но попробовать все-таки стоит! Так с чего же начать, если читатель хочет вступить в наши сплоченные ряды и тоже стать одним из специалистов, благодаря которым клиенты и пользователи выражают благодарность и пишут хорошие отзывы на приобретенные программные приложения?
В обязанности тестировщиков входят планирование и проведение тестов функциональности, удобства использования, совместимости, инсталляции, масштабирования, производительности, резервирования данных и много чего еще. И, разумеется, в их работе просто невозможно обойтись без удобных помощников – программных инструментов (программ, утилит, языков программирования и сред разработки), проверенных уже не одним поколением специалистов службы обеспечения качества программного обеспечения.
Приведу список инструментов и знаний, необходимых в работе тестировщиков. Это субъективный взгляд, и буду рада получить от коллег полезные комментарии и дополнения.
Средства первой необходимости
Сначала перечислим первоочередные вещи, без которых нельзя отправляться в путь. Это как аптечка в автомобиле: зеленка и бинты. То, что обязательно должно присутствовать в арсенале каждого тестировщика, кто занимается тестированием десктопных приложений.
Виртуальные машины
Пользу от их применения, пожалуй, трудно переоценить. Ведь любого, кто по незнанию или в силу собственной лени и неаккуратности, устанавливает тестируемые приложения прямо на свою рабочую машину неминуемо преследует «злой рок» - им необходимо все время что-то постоянно деинсталлировать, а также чистить реестр, временные файлы, системные логи и так далее, вплоть до регулярной (в некоторых случаях, даже несколько раз в месяц) полной переустановки системы. А как-то раз автору вообще довелось столкнуться с ситуацией, когда очередная временная непроверенная сборка разрабатываемого продукта в результате инсталляции полностью убивала рабочую машину...
Незавидная перспектива. А вот с виртуальными машинами такого не бывает. С помощью нескольких умело сделанных снимков состояний можно всегда иметь настроенную и подготовленную к работе машину, без ненужных следов «старых» инсталляций и вмешательства в настройки системы. К тому же, запуская несколько виртуальных машин можно тестировать работу ПО под разными ОС и приложения, предназначенные для совместной работы. А это, кстати говоря, немаловажная область тестирования.
Среди распространенных средств виртуализации, заслуживших признание специалистов, стоит назвать VirtualBox (Oracle VM VirtualBox) и продукты семейства VMware (такие как VMware Workstation и VMware Player). Пример работы с виртуальными машинами в VMware Workstation приведен на рис. 1.
Рис. 1. Пример работы с виртуальными машинами в VMware Workstation
Такие инструменты позволяют поддерживать на одном компьютере процесс разработки, отладки, тестирования, запуска мнооуровневых приложений, вводить в эксплуатацию новые типы и версии операционных систем и исследовать на них поведение тестируемых программных приложений, а также поддерживается возможность инсталляции новых или обновления имеющихся ОС без необходимости модификации разделов дисков и перезагрузки компьютера.
Скриншотеры
Вовремя приложить поясняющий скриншот к баг-репорту — это святая обязанность ответственного тестировщика. К тому же, так можно избавиться от необходимости повторно общаться с программистами и что-то дополнительно им снова и снова разъяснять. Задумайтесь, а это ведь не только прямая экономия времени...
Существует целый ряд типовых инструментов для снятия скриншотов: SnagIt, Greenshot, PicPick, Snipping Tool, PrtScr и так далее. По своим функциям они практически не различаются, так что каждый может выбрать на свой вкус, исходя из удобства интерфейса и симпатичности логотипа. Например, работа со Snagit выглядит так (рис. 2).
Рис. 2. Снятие скриншотов с помощью SnagIt
Кстати, в качестве альтернативного способа снятия багов можно использовать и видеозапись. Тогда пояснение обнаруженного дефекта будет еще более наглядным. Как это делается и какие программные средства стоит применять, автор написал здесь [1].
Windows Task Manager Также не стоит забывать пользоваться и диспетчером задач. Windows Task Manager — это достаточно многофункциональное средство, которое помогает закрывать различные запущенные приложения, останавливать и запускать нужные службы, получать данные обо всех процессах, следить за активностью функционирования сетевого адаптера, и даже выполнять некоторые административные задачи. Вспомогательные инструменты Исходя из особенностей конкретных тестируемых приложений, а также требований к видам проводимого тестирования, базовый минимум может быть расширен и дополнен. Если набор упомянутых ранее инструментов сравнивался с «аптечкой скорой помощи», то здесь — лекарства на случай вездесущих простуд, а также всевозможные витамины, БАДы и прочая гомеопатия.
BAT/BASH
Первым делом, нельзя не упомянуть BAT-файлы для Windows (или BASH-скрипты для Linux). С их помощью решается автоматизация всевозможных задач: от сбора логов и копирования/удаления файлов до запуска сервисов и приложений. А значит, не придется многократно набирать однотипные команды вручную.
*Script
В качестве альтернативы BAT и BASH (а также наряду с ними) можно использовать различные скриптовые языки, такие как JScript или VBScript, а также широко известные «друзья» PHP, Python, Perl, JavaScript и Ruby. Ведь именно они все чаще применяются тестировщиками для автоматизации различных рабочих рутинных задач. Например, при написании тестовых сценариев для тестирования вэб-приложений в Selenium (см. далее).
Windows PowerShell
Для родного брата тестировщика - системного администратора, Windows PowerShell — это мощное средство управления, которое разработчики Windows заботливо встроили в систему.
По сути PowerShell представляет собой оболочку интерактивной командной строки плюс среда исполнения сценариев. Причем эти составляющие можно использовать совместно или же по отдельности. Оболочка Windows PowerShell, встроенная в Microsoft .NET Framework, предоставляет опытным пользователям и IT-специалистам возможность контроля и автоматизации процесса администрирования ОС Windows, а также всех приложений, работающих в системе Windows. Так, в частности, Windows PowerShell предоставляет доступ к файлам и реестру, а также к Active Directory и всем компьютерам в сети.
SysInternal Suite
Это полезный набор технических средств и утилит, которые используются для управления, нахождения и устранения неисправностей, а также для выполнения диагностики приложений и операционных систем Windows. Полный подробный перечень приведен на сайте [2]. И здесь действительно есть из чего выбрать.
Среди множества полезных вещей здесь можно найти, например, программу для выполнения команд на удаленной машине (PsExec) или средство автоматического входа в систему (Autologon), чтобы не вспоминать и не вводить пароль и логин администратора на тестовой машине.
Selenium
Весьма популярный на сегодняшний день инструмент автоматизации для управления работы в браузерах. Причем Selenium поддерживает как десктопные, так и мобильные браузеры [3]. Наиболее распространенная сфера применения Selenium — это автоматизация выполнения тестов для веб-приложений. Но и это не все. С помощью Selenium возможна автоматизация любых других рутинных действий, которые должны выполняться через браузер. Также нельзя не упомянуть, что это чудо техники позволяет создавать сценарии для автоматизации практически на любом языке программирования.
Проект Selenium включает следующие продукты:
-
Selenium IDE — среда разработки, которая позволяет легко осуществлять запись и воспроизведение тестовых сценариев в браузере Mozilla Firefox. Пример написания сценария приведен на рис. 3. Также поддерживает возможность генерировать код тестовых сценариев, который в дальнейшем можно запускать в рамках Selenium Remote Control.
-
Selenium Remote Control — это клиент/серверная система, которая позволяет осуществлять управление всеми доступными веб-браузерами. Причем управление может выполняться как на локальной, так и на удаленной машине, с использованием практически всех известных языков программирования и тестовых фреймворков.
-
Selenium WebDriver — программа, симулирующая работу браузеров как на локальных, так и на удаленных машинах.
-
Selenium Grid — удобное средство для тех, кто стремится к масштабированию в тестировании. Дает возможность организовать распределённую сеть, и использовать Selenium Remote Control для запуска тестов на нескольких серверах / под несколькими ОС / в нескольких браузерах в одно и то же время.
Рис. 3. Редактирование тестового сценария в среде разработки Selenium IDE
Плагины браузеров. FireFox, FireBug и компания
При работе с Selenium веб-тестировщики постоянно сталкиваются с необходимостью поиска элементов на веб-страницах. Для этого удобно использовать FireBug, известный плагин к браузеру FireFox. Вот так, например, FireBug ищет элементы страниц на моем сайте (рис. 4).
Рис. 4. Поиск элементов на веб-странице сайта автора с помощью FireBug
Также полезными окажутся и другие расширения Firebug для работы с элементами страниц, среди них такие как:
-
FireFinder. Средство интерактивного запроса HTML-элементов в стиле CSS и XPath для поиска соответствий и подсчета количества совпавших элементов в текущем документе. Удобно использовать, например, для изучения интересующих вариантов заголовков текста.
-
FirePath. Расширение Firebug, которое дает возможность редактировать, исследовать и генерировать выражения в стиле CSS и Xpath.
-
DOM Inspector. Используется для исследования, просмотра и редактирования объектоной модели документа (Document Object Mode, DOM) в таких документах как вэб-страницы и окна XUL.
-
XPath Checker. Интерактивный редактор для обращения к элементам вэб-страниц с помощью выражений в стиле XPath.
-
Xpather. Инструмент разработчика, который генерирует выражения в стиле XPath при просмотре или исследовании документов в формате HTML, XML, *ML. Также вычисляет заданные выражения в стиле Xpath и исследует и извлекает полученные результаты.
-
Live HTTP Headers. Удобное средство для проверки и анализа на конкретном сайте, какими заголовками протокола HTTP обмениваются клиент и сервер.
YSlow
Отдельно хочется упомянуть YSlow, еще одно расширение к плагину FireBug для браузера Firefox. С его помощью выполняется измерение скорости загрузки страниц и их отдельных компонентов. Также плагин выполняет анализ всех компонентов страницы. Определяет наличие заголовков, использование компрессии и перенаправлений, использование подключаемых файлов стилей и скриптов. [4] Дополнительно, YSlow предоставляет рекомендации касательно оптимизации веб-страниц, основываясь на собственных тестах и исследованиях в этой области компании-производителя Yahoo.
Средства браузера Internet Explorer
При работе с другими браузерами также есть свои возможности, и о них тоже стоит обязательно упомянуть. Причин несколько. Во-первых, не все тестировщики работают с FireFox как с основным рабочим браузером. А во-вторых, что гораздо более важно, конечные пользователи уж точно имеют самые разные вкусовые (и религиозные) предпочтения относительно используемых браузеров, и поэтому при тестировании веб-приложений обязательно проводится кросс-браузерное тестирование и оценивается и сравнивается поддержка разных браузеров.
Так, для браузера Internet Explorer доступен компонент Internet Explorer Developer Toolbar. Устанавливается он с сайта Microsoft [5] и предоставляет часть функций, аналогичных Firebug, используемого с браузером Firefox. Также имеет набор ценных возможностей, что есть и в Web Developer Toolbar, используемом с браузером Firefox.
Internet Explorer Developer Toolbar предоставляет следующие возможности:
-
Просмотр и модификация существующих файлов в форматах HTML, CSS, DOM.
-
Выборочная очистка кэша браузера и сохраненных cookie.
-
Масштабирование окон, изменение размеров окон до указанных значений.
-
Выбор интересующих элементов по клику («Inspect element»).
-
Выделение различных элементов страницы: таблиц, ячеек таблиц, изображений или выбранных тэгов.
-
Отображение размеров картинок, размеров файлов, информации о путях к ним и альтернативного текста (атрибут ALT).
-
Выборочное отключение настроек браузера Internet Explorer.
Внешний вид компонента Internet Explorer Developer Toolbar приведен на рис. 5. Он может отображаться как в панели, так и в меню браузера.
Рис. 5. Внешний вид панели Internet Explorer Developer Toolbar
Возможности браузера Chrome
Для работы с браузером Chrome разработчики предлагают пакет встроенных инструментов Chrome Developer Tools (DevTools) [6]. Панель Chrome DevTools выглядит следующим образом (рис. 6).
Рис. 6. Внешний вид панели Chrome DevTools
Здесь инструменты организованы в функциональные группы, каждая из которых ориентирована на работу с конктретным типом информации страниц или приложений, включая элементы DOM, ресурсы и исходные файлы.
Основные группы инструментов:
-
Elements — нахождение и просмотр информации об интересующих элементах страниц.
-
Network — анализ сетевой производительности рассматриваемого вэб-приложения. Содержит информацию о работе в сети, включая запись даты и времени, заголовки-HTTP, сохраненные cookie, данные WebSocket и т.д.
-
Sources — возможность просмотра и модификации исходных файлов.
-
Timeline — сохранение и анализ всех видов активности рассматриваемого приложения с момента его запуска. Дает возможность настройки предполагаемой производительности приложения.
-
Profiles — профайлеры, позволяющие отследить, какие функции отнимают большую часть времени работы сайта. Доступны 3 вида профилирования: JavaScript CPU profile (время обработки процессором скрипта JavaScript), CSS selector profile (время обработки CSS-селекторов), Heap snapshot (объем памяти, используемой переменными сериптов JavaScript)
-
Resources — инспектирование локальных источников данных приложения, включая базы данных IndexedDB и Web SQL, кэш приложения и сохраненные cookie.
Apache JMeter
Наряду с такими наиболее часто обсуждаемыми на специализированных форумах и в периодических изданиях видами тестирования как функциональное и тестирование удобства использования (usability), существуют и другие, не менее важные виды тестирования. Среди них стоит уделять особое внимание нагрузочному тестированию (сюда же относятся тестирование производительности, стабильности и надежности, стрессовое, объемное и т. д.). Ведь никто, пожалуй, не хочет столкнуться с ситуацией, когда, например, одновременная обработка всего лишь пары-тройки заказов пользователей в интернет-магазине окажется способной полностью блокировать его работу на неопределенное время...
Для проведения нагрузочного тестирования и тестирования производительности различных ресурсов, в частности, баз данных, сервисов и веб-приложений широко используется приложение Apache JMeter. Он представляет собой Java-приложение, которое может применяться с целью симуляции нагрузки на сеть, сервер или какой-либо другой объект. С его помощью могут выполняться проверки устойчивости стабильности системы, а также анализ общей производительности с учетом разных видов нагрузки.
Но и это еще не все
Как собственный опыт автора, так и коллег, подсказывает, что овладением и применением перечисленных здесь программных инструментов (или их аналогов) дело не обойдется. Что же понадобится еще, чтобы стать настоящим специалистом в сфере тестирования?
Также будет полезно, например, научиться писать SQL-запросы для работы с базами данных (минимально — извлечение данных, добавление/удаление записей и таблиц). И овладеть базовыми навыками программирования (например, очень востребовано среди тестировщиков знание Java), чтобы писать скрипты, автоматизирующие работу тестера (генерация тестовых данных, сборка версий, автоматическое воспроизведение тестовых сценариев, генерация отчетов). И, конечно же, еще — навыки системного администрирования, чтобы выполнять тестирование безопасности, учитывать специфичность и различные настройки операционных систем и их влияние на тестируемые приложения.
***
Разумеется, вооружившись набором программ и только лишь бегло пролистав руководства пользователя к ним, далеко не уедешь. Придется энное количество часов потратить на изучение разновидностей, способов и методологий тестирования. Ознакомиться с тем, что такое есть тестирование функциональности, удобства интерфейса, совместимости, производительности, стрессовое, нагрузочное, объемное, стабильности, безопасности, конфигурационное, и прочее и прочее... Попробовать на практике применять эти различные виды тестирования как вручную, так и в автоматизированном режиме. При этом сравнить использование разных вариантов инструментов тестирования и определить, что более удобно применять в работе конкретному тестировщику и что даст бо`льшую эффективность его труда. Понять, какие виды тестирования необходимы для проверки работоспособности конкретных исследуемых программных приложений.
И в завершение этого списка: опыт, опыт и еще раз практический опыт. И чем больше и разнообразнее, тем лучше. И не забывать о профессиональном любопытстве и расширении кругозора...
***
Что и говорить, инженер службы обеспечения качества ПО — это такая многогранная специальность, которая вынуждает и вместе с тем дает прекрасную возможность ознакомиться с разными аспектами разработки программных приложений. Для сравнения. Например, кругозор программиста, поскольку он работает только по техническому заданию (разумеется, если программисту повезло с руководством, которое проявило определенное благородство и побеспокоилось о формировании ТЗ), зачастую только этим заданием и ограничен. А у тестировщика задач гораздо больше, поскольку ему нужно предусмотреть и проверить все возможные (и невозможные, на первый взгляд) варианты развития событий.
Вот, например, N параметров дают 2 в степени N вариантов. И из них только один — правильный. Зачастую именно его только и реализуют программисты. А «оставшиеся» (2^n – 1) варианты обрабатывают уже тестировщики.
И если кто-то в это не поверит, то автор предлагает перечитать историю о том, как компания Intel по всему миру меняла микросхемы процессоров только из-за того, что их специалисты пропустили ошибку при разработке...[7]
Вот именно поэтому у тестировщика кругозор гораздо шире, а потому он быстрее, при удачном параде планет, дорастет и до руководителя проекта...
Литература
[1] Сергеева А. Видеорекордер CamStudio в руках тестировщика. Применение видеофайлов на этапе разработки и отладки ПО (с последующим созданием видеоинструкций) // Системный администратор. 2014. № 3.
[2] О полезных утилитах SysInternal Suite - http://technet.microsoft.com/ru-RU/sysinternals
[3] Применение Selenium для тестирования веб-приложений - http://docs.seleniumhq.org/projects/
[4] Сайт инструмента YSlow - http://yslow.org/
[5] Страница загрузки компонента Microsoft Internet Explorer Developer Toolbar с сайта Microsoft – http://www.microsoft.com/en-us/download/details.aspx?id=18359
[6] Страница Chrome DevTools — https://developers.google.com/chrome-developer-tools/
[7] Intel сообщает об ошибках в выпущенных микросхемах — http://newsroom.intel.com/community/intel_newsroom/blog/2011/01/31/intel-identifies-chipset-design-error-implementing-solution