Назад | Содержание |
В этом разделе мы поговорим о различных инструментах, предназначенных для автоматизации тестирования, их достоинствах и недостатках, а также сделаем небольшой обзор существующих приложений.
6.1 Выбор: платное или бесплатное?
Один из первых вопросов, с которым мы сталкиваемся на этапе выбора инструмента, является цена, которую компания готова заплатить за приложение, с помощью которого мы будем автоматизировать наши тесты. Цена же может колебаться от нуля (бесплатные инструменты и проекты с открытым исходным кодом) до десятков и даже сотен тысяч долларов.
Наша задача – вовсе не «выбить» из руководства как можно больше денег для своих нужд, а найти «золотую середину» – такой инструмент, который будет устраивать и нас, и компанию, в которой мы работаем.
Ниже перечислены основные достоинства и недостатки платных и бесплатных инструментов.
Бесплатные (или недорогие) инструменты:
- Стоимость. Это очевидный плюс данной группы инструментов.
- Расширяемость. Обычно бесплатные инструменты предоставляются с открытым исходным кодом, что позволяет нам расширять и улучшать их под свои нужды.
- Поддержка новых технологий. Если инструмент поставляется с исходными кодами, вполне возможно, что для него сторонними пользователями будет написано множество расширений, в том числе и для новых технологий (в коммерческих инструментах добавление поддержки новых технологий обычно происходит дольше, так как больше времени уделяется тестированию и совместимости с существующими модулями).
- Отсутствие техподдержки. Это очень важный недостаток бесплатных инструментов, так как единственным источником информации в случае затруднений использования оказываются интернет-форумы, где можно пообщаться с такими же пользователями.
- Узконаправленность инструмента. Зачастую бесплатные и недорогие инструменты предназначены для тестирования какого-то одного типа приложений (например, для тестирования веб-приложений или приложений .NET). Соответственно если в дальнейшем нам понадобится тестировать какой-то другой тип приложения, придется снова заниматься поиском подходящего инструмента.
- Уровень знаний и опыта, требующийся от тестировщика, использующего бесплатный инструмент, обычно выше, чем при использовании коммерческих инструментов, поскольку установка, настройка, изучение и интеграция подобных приложений обычно сложнее, чем использование платных приложений.
Платные (дорогие) инструменты:
- Официальная техподдержка. Это очень большой плюс, особенно на первых порах, когда вы только изучаете инструмент. В любой момент вы можете получить квалифицированную помощь службы поддержки, сотрудники которой, вполне вероятно, уже сталкивались с подобными вопросами и могут быстро помочь решить проблему.
- Поддержка большого количества технологий. В отличие от узконаправленных бесплатных инструментов, коммерческие приложения обычно позволяют работать с различными типами приложений (веб, десктопные, мобильные), используя одни и те же подходы для всех тестируемых приложений.
- Интеграция с другими продуктами. Обычно коммерческие инструменты предоставляют широкие возможности интеграции с другими приложениями (например, багтрекерами, системами контроля версий, системами управления проектами и т.д.), что может существенно упростить создание инфраструктуры автоматизации.
- Качество коммерческих инструментов обычно выше, чем качество бесплатных утилит. Производители платных инструментов автоматизации обычно заботятся о качестве выпускаемых ими продуктов, их хорошо тестируют и проверяют на совместимость с различными версиями операционных систем, браузеров и т.п., что уменьшает вероятность нахождения ошибок конечными пользователями.
- Стоимость коммерческих инструментов может оказаться существенным недостатком при выборе программы для автоматизации.
- Внедрение поддержки новых технологий или сторонних библиотек может происходить спустя некоторое время после их выхода на рынок, что, безусловно, является существенным минусом, если в вашем тестируемом приложении всегда используются их свежие версии.
- Невозможность самостоятельного расширения возможностей инструмента. Не все коммерческие инструменты предоставляют средства для расширения их возможностей (API или SDK). Наличие же подобной возможности может решить проблему позднего внедрения поддержки сторонних компонентов, так как вы сможете самостоятельно писать необходимые дополнения.
Если вас не устраивает цена на приложение, имеет смысл пообщаться с отделом продаж компании-разработчика (sales team), так как некоторые инструменты не продаются целиком, а разделяются на модули. Вы покупаете «базовый комплект» приложения и лишь необходимые дополнения к нему, что позволяет сэкономить деньги.
6.2 Выбор: универсальное или специализированное?
С точки зрения поддержки различных технологий и программных платформ, инструменты автоматизации делятся на 2 категории: универсальные (т.е. поддерживающие сразу несколько технологий) и специализированные (поддерживающие лишь какую-то одну из них). Как уже было сказано в предыдущей главе, коммерческие инструменты обычно поддерживают несколько платформ, а бесплатные – только одну.
Недостаток специализированных программ очевиден: такой программой мы сможем тестировать только один тип приложений, при этом не имея никакой возможности взаимодействовать с другими типами приложений. Например, если выбранный нами инструмент работает только с приложениями .NET, а нужно протестировать взаимодействие тестируемого приложения с какой-то простой Win32 утилитой (например, со стандартным Блокнотом), то сделать это мы не сможем.
С другой стороны, коммерческие приложения могут иметь свои ограничения, так как производители стараются сделать свои инструменты максимально совместимыми со всеми поддерживаемыми технологиями, при этом стараясь уменьшить различия в работе с разными типами приложений для конечного пользователя (т.е. для тестировщика). В результате такие подходы могут оказаться менее стабильными или менее производительными по сравнению со специализированными программами.
Если перед вами стоит выбор, какой из этих двух типов инструментов выбрать, необходимо не только учитывать текущие нужды компании или отдела, в котором внедряется автоматизация, но также постараться предугадать нужды компании в будущем.
Если вы работаете в небольшой компании, которая занимается исключительно разработкой веб-сайтов или какого-то одного приложения, вряд ли вам понадобится тестировать другие типы приложений, поэтому выбор стоит остановить на специализированном инструменте.
Если вы работаете в средней или большой компании, которая только начинает внедрять автоматизацию и в которой существует несколько различных подразделений, создающих различные приложения на разных платформах, то скорее всего лучше остановить выбор на универсальном инструменте. Использование одного инструмента для всех (или большинства) разрабатываемых компанией продуктов позволит тестировщикам повторно использовать код из одного проекта в других, а также упростит процесс обучения в следующих проектах (так как в первом проекте, где автоматизация внедрялась раньше всего, уже будут опытные специалисты, знакомые с инструментом автоматизации, которые смогут помочь следующим проектам).
6.3 Обзор инструментов для функционального тестирования
В этой главе мы кратко рассмотрим наиболее часто встречающиеся и используемые инструменты для автоматизации тестирования. Не стоит рассматривать эти описания как детальное описание и истину в последней инстанции, так как мы дадим лишь поверхностное описание, которое, возможно, позволит вам сэкономить время при начальном поиске подходящего вам инструмента.
Обратите внимание на следующие особенности обзора:
- Под «встроенными возможностями» подразумеваются различные подходы и техники автоматизации тестирования, которые явно поддерживаются инструментом (например, в виде модулей или библиотек). В нашем обзоре мы указываем только основные такие возможности инструментов, а потому эти списки нельзя считать полными. Для получения полной информации об инструменте и его возможностях лучше всего воспользоваться встроенной в него справочной системой.
- То же самое касается типов тестируемых приложений: здесь указаны только наиболее известные и часто встречающиеся технологии.
- Цена на инструменты автоматизации может сильно различаться в зависимости от типа лицензии. Чаще всего встречаются 2 типа лицензии:
- Именная или закрепленная (named, node-locked). В этом случае лицензия может использоваться на одном компьютере или одним человеком. Если необходимо установить программу на другом компьютере, на первом ее необходимо удалить или приобрести вторую такую же лицензию. Это самый дешевый тип лицензий, он обычно применяется в том случае, если в команде есть люди, полностью занятые автоматизацией и которым необходим постоянный доступ к программе.
- Плавающая лицензия (floating). В этом случае программа может быть установлена на скольких угодно компьютерах, однако количество одновременно запущенных программ на разных компьютерах (или в разных сессиях одного компьютера) не может превышать количества имеющихся лицензий. Этот тип полезен в том случае, если автотесты пишутся несколькими людьми, однако они не заняты автоматизацией на 100%, поэтому могут работать с программой в разное время. Еще один пример использования плавающих лицензий – использование продукта в разных часовых поясах, в случае когда рабочее время двух команд не пересекается. В этом случае сотрудники с одной и той же лицензией работают сначала сотрудники одного офиса, а когда их рабочий день заканчивается лицензии используются сотрудниками другого офиса.
Обычно чем больше лицензий приобретается, тем ниже стоимость каждой из них. Все эти вопросы необходимо уточнять с сотрудниками отдела продаж компании.
В нашем обзоре в качестве нижней ценовой планки мы берем стоимость одной именной лицензии, а в качестве верхней планки – стоимость одной плавающей лицензии. Однако ценовая политика некоторых инструментов отличается от приведенной выше схемы, поэтому цены здесь приведены весьма приблизительные.
- В большинстве случаев цена указана только за саму программу и не включает стоимость поддержки (т.н. подписка – subscription).
- Также стоит отметить, что приведенная далее информация является актуальной на момент написания книги (2013 год), однако со временем картина на рынке может существенно поменяться, поэтому обязательно проверяйте всю приведенную здесь информацию на актуальность.
TestComplete
Разработчик: SmartBear Software
Сайт разработчика: http://smartbear.com/
Цена за 1 лицензию: $2000 – $4000
Языки программирования: Python, JScript, VBScript, DelphiScript
Встроенные возможности: Record & Play, DDT, ODT, KDT, User Forms, Distributed testing, Web Services и др.
Поддержка тестирования приложений: Win32 (MS Visual C++, Intel C++), Java, .NET, Delphi/C++ Builder, Qt, PowerBuilder, Visual FoxPro, Web, Flash, Flex, Silverlight.
TestComplete – один из наиболее привлекательных коммерческих инструментов по соотношению цена/качество. При небольшой (по сравнению с другими коммерческими инструментами) цене он поддерживает практически все основные среды разработки, причем поддержка новых версий библиотек и платформ добавляется в TestComplete весьма оперативно.
Кроме поддержки большого количества технологий разработки и сторонних элементов управления, возможности TestComplete могут быть расширены за счет создания собственных расширений (на языках C++ или Delphi).
Кроме того стоит отметить официальную службу поддержки, которая помогает не только зарегистрированным пользователям (как это принято у других производителей), а всем. При этом вопросы от клиентов имеют приоритет выше, чем остальные пользователи, поэтому на их вопросы служба поддержки обычно отвечает быстрее.
SilkTest
Разработчик: Micro Focus
Сайт разработчика: http://www.microfocus.com/
Цена за 1 лицензию: $4.500 – $9.000
Языки программирования: 4Test, Java, VB/C#
Встроенные возможности: Record & Play, DDT, Distributed testing и др.
Поддержка тестирования приложений: Win32, Java, .NET, Web.
Довольно мощный инструмент, поддерживающий основные типы тестируемых приложений и рассчитанный на использование в средних и крупных проектах. Встроенный язык программирования 4Test является, пожалуй, одним из наиболее продвинутых языков программирования, встречающихся в инструментах автоматизации. Также присутствует возможность написания тестов на языках Java, Visual Basic и C# в средах разработки Eclipse и Visual Studio.
QuickTest Professional (QTP)
Разработчик: Hewlett-Packard
Сайт разработчика: http://hp.com/
Цена за 1 лицензию: $6.000 и выше (доплата отдельно за каждый модуль)
Языки программирования: VBScript
Встроенные возможности: Record & Play, KDT, DDT, Distributed testing и др.
Поддержка тестирования приложений: Win32, Java, .NET, Web.
QuickTest Professional – самый дорогой инструмент из существующих в данный момент на рынке. При этом он поддерживает наибольшее количество различных тестируемых приложений, однако за каждый модуль придется доплатить отдельно.
Компания Mercury Interactive (впоследствии приобретенная компанией Hewlett Packard) была первой на рынке инструментов автоматизации тестирования GUI и продолжает удерживать эту позицию до сих пор, несмотря на то, что в последние годы появилось большое количество более дешевых решений.
QuickTest Pro хорошо интегрируется с другими инструментами этого же производителя, поэтому обычно используется в крупных корпорациях, которые могут себе позволить покупку столь дорогого инструмента.
Squish
Разработчик: froglogic GmbH
Сайт разработчика: http://www.froglogic.com/
Цена за 1 лицензию: от $4.500 (за одну лицензию на один тип тестируемого приложения, т.н. Edition)
Языки программирования: JavaScript, Python, Perl, Ruby, Tcl
ОС: Windows, Linux/Unix, MacOS X, iOS
Встроенные возможности: Record & Play, DDT, BDD, Distributed testing и др.
Поддержка тестирования приложений: Win32, Java, .NET, Qt, Web.
Squish – это, пожалуй, единственный на данный момент кроссплатформенный коммерческий инструмент с поддержкой наиболее часто используемых технологий. Кроме кроссплатформенности большим плюсом инструмента является список языков программирования, которые можно использовать для написания тестов. Например, языки Python и Ruby очень мощные и содержат практически всё, что может понадобиться при написании тестов и создании хорошего фреймворка.
Еще одним плюсом можно считать его среду разработки: она построена на базе Eclipse’a и разобраться в ней человеку, знакомому с Eclipse, не составит никакого труда.
Ranorex
Разработчик: Ranorex GmbH
Сайт разработчика: http://www.ranorex.com/
Цена за 1 лицензию: $1.100 – $3.600
Языки программирования: C#, VB .NET
Встроенные возможности: Record & Play, DDT, Distributed testing и др.
Поддержка тестирования приложений: Win32, Java, .NET, Qt, Delphi, Web, Android/iOS и др.
Один из самых молодых инструментов, однако при этом один из наиболее интересных с точки зрения поддержки различных типов тестируемых приложений. Отдельно стоит отметить нативную поддержку тестирования под iOS и Android, так как автоматизация тестирования мобильных приложений набирает обороты и требуется всё чаще.
Еще один плюс – используемые языки программирования: весьма популярные и очень мощные, с их помощью можно создать весьма мощный фреймворк.
Rational Functional Tester (RFT)
Разработчик: IBM
Сайт разработчика: http://www.ibm.com/
Цена за 1 лицензию: $3.200 – $13.200
Языки программирования: C#, VB .NET
Встроенные возможности: Record & Play, DDT, Distributed testing и др.
Поддержка тестирования приложений: Win32, Java, .NET, Web, PowerBuilder и др.
Довольно мощный инструмент, обычно применяемый в больших корпорациях совместно с другими продуктами IBM. Особо ничем не выделяется среди подобных инструментов.
Selenium (WebDriver)
Разработчик: открытое сообщество
Сайт разработчика: http://seleniumhq.org/
Цена: бесплатный с открытым исходным кодом
Языки программирования: Java, Python, C#, Ruby
Поддержка тестирования приложений: Web-приложения
Поддержка браузеров: Internet Explorer, Mozilla Firefox, Google Chrome, Opera, Safari и др.
Дополнительные возможности: расширение Selenium IDE для браузера Mozilla Firefox, обеспечивающее возможности Record & Play и преобразование записанных дествий в код на поддерживаемых языках программирования.
Этот инструмент стоит немного особняком по сравнению с уже рассмотренными инструментами, так как он, во-первых, совершенно бесплатный (что является несомненным плюсом), а во-вторых, предназначен для тестирования исключительно веб-приложений практически для любых браузеров и платформ.
На данный момент это наиболее популярный инструмент в мире для тестирования веб-приложений, для него существует огромное колическтво документации на различных языках, расширений, сообществ и т.п., что делает его очень привлекательным для использования.
Sikuli
Разработчик: открытое сообщество
Сайт разработчика: http://www.sikuli.org/
Цена: бесплатный с открытым исходным кодом
Языки программирования: visual scripting, Jython
ОС: Windows, Linux/Unix, MacOS X, iOS, Android
Встроенные возможности: Record & Play, DDT, Distributed testing и др.
Sikuli попала в наш обзор потому, что является в своем роде уникальным явлением. В отличие от всех других инструментов, которые работают на низком уровне, обращаясь к элементам управления и оперируя их свойствами, Sikuli работает с изображениями, скриншотами элементов управления и окон. Достоинства Sikuli – возможность работать с любым приложением в любой операционной системе. Главный недостаток – работа с изображениями обычно весьма нестабильна и скрипты приходится часто менять. Однако бывают случаи, когда никакой другой способ не подходит и использование Sikuli вполне оправданно.
Другие инструменты
В этом разделе мы кратко перечислим другие инструменты, которые можно использовать для автоматизации тестирования, но которые, однако, не получили сильного распространения по тем или иным причинам.
- MS Visual Studio – Coded UI. Инструмент для автоматизации тестирования веб и .NET-приложений. Не очень популярный, так как лицензия на Visual Studio весьма дорогая, а возможности инструмента весьма ограничены.
- AutoIt. Очень простой бесплатный инструмент для тестирования Win32 приложений. Для написания скриптов используется язык, похожий на Basic.
- WinTask. Недорогой инструмент для тестирования Win32 и веб-приложений.
- Test Automation FX. Простой инструмент для тестирования Win32 и .NET-приложений. Интегрируется с Visual Studio.
- Vermont HighTest Plus. Простое приложение для автоматизации тестирования Win32 и веб-приложений.
Устаревшие инструменты
Здесь мы перечислим инструменты, которые когда-то были популярны, но в данный момент уже считаются устаревшими и не поддерживаются разработчиками. Однако у вас все еще есть возможность встретиться с ними в проектах, где автоматизация существует уже несколько лет и переписывать скрипты, используя более современные инструменты, считается нерентабельным.
- Rational Robot – предшественник Rational Functional Tester
- WinRunner – предшественник QuickTest Pro
- Selenium RC – предшественник WebDriver’a, поддерживается с целю обратной совместимости, не рекомендуется для создания новых проектов ввиду различных ограничений
6.4 Какой инструмент изучать?
Если вы только начали знакомиться с автоматизацией тестирования, но у вас нет конкретной задачи для автоматизации, то вопрос «что изучать?» для вас будет весьма актуальным. В этом разделе мы постараемся на него ответить.
Функциональное тестирование
- Если вы собираетесь работать в какой-то компании, где автоматизация тестирования уже внедрена, вам нет нужды гадать. Просто поинтересуйтесь, какие инструменты используются в этой компании, и начните изучение с них.
- Если вы готовитесь внедрять автоматизацию на своем проекте «с нуля», то вам необходимо рассмотреть несколько вариантов. В этом случае всё зависит от того, какие приложения вам придется автоматизировать и сколько денег компания готова потратить на автоматизацию.
- Если вы хотите заниматься автоматизацией тестирования десктопных приложений в одной из стран СНГ, но еще не определились с компанией, в которой будете работать, начните изучать TestComplete. Из-за невысокой цены этот инструмент чаще всего выбирают компании, аутсорсящие разработку в наши страны. Еще один плюс в изучении TestComplete заключается в том, что в этом инструменте представлены почти все подходы, использующиеся в автоматизации (DDT, KDT и др.).
- Если вы собираетесь заниматься автоматизацией веб-приложений, то наиболее вероятным инструментом, который вы будете использовать, является WebDriver. Если вы не уверены насчет выбора языка программирования, который будете использовать вместе с WebDriver, имейте ввиду, что среди поддерживаемых WebDriver’ом языков наиболее часто используется Java, а самым простым для изучения является язык Python.
Нагрузочное тестирование
- Если вы просто хотите познакомиться с нагрузочным тестированием, выбирайте JMeter. Он бесплатный, прост в установке (его достаточно распаковать из архива) и по нему есть большое количество учебников и тренингов.
- Во всех остальных случаях вам придется изучать тот инструмент, который подходит вам для работы.
Тестирование мобильных приложений
В настоящее время ни один из инструментов для автоматизации тестирования мобильных приложений не является лидером.
- Если вы хотите просто познакомиться с предметом автоматизации, то для обучения лучше взять один из инструментов, предназначенных для функционального тестирования, а затем использовать полученные знания, пользуясь любым инструментом для тестирования мобильных приложений.
- Во всех остальных случаях выбирайте тот инструмент, который подходит для вашего проекта или задачи.
Назад | Содержание |