Автоматизированное тестирование (Automation Testing, Test Automation) — техника тестирования, в которой для выполнения тест кейсов используются специальные программы. Это отличает ее от ручного тестирования, в котором тест кейсы выполняются вручную тестировщиком.
Программы для автоматизации сравнивают полученные результаты с актуальными и генерируют подробные тест-репорты.
Разработка продукта циклична и итерационна — и на каждой итерации, как правило, требуется выполнение одного и того же набора тестов. С помощью инструментов автоматизированного тестирования можно записывать наборы тестов (test suites) и выполнять, когда это необходимо. Как только набор тестов автоматизирован, участие человека в выполнении тестов практически не требуется. Это делает автоматизированное тестирование эффективной техникой. Цель автоматизации — уменьшить количество тестов, которые нужно выполнять вручную.
Зачем нужно автоматизированное тестирование?
Автоматизированное тестирование — лучший способ улучшить эффективность, покрытие продукта тестами, уменьшить время на тестирование. Автоматизированное тестирование очень важно, и вот почему:
С чего начать изучение автоматизации тестирования? Мой опыт
- Ручное тестирование всех возможных сценариев использования требует много времени (и, следовательно, денег)
- Автоматизированное тестирование увеличивает скорость тестирования
- Автоматизированное тестирование не требует участия человека для выполнения тестов. Автоматизированные тесты могут быть запущены в любое время (днем, ночью, в выходные и праздники)
- Многократное ручное тестирование одной и той же функциональности скучно
Что автоматизировать в первую очередь?
Для максимальной эффективности, для определения сценариев, подходящих под автоматизацию, пользуйтесь следующими критериями:
- Критически важная бизнес-функциональность
- Тест кейсы, которые нужно выполнять много раз
- Тест кейсы, которые сложно воспроизвести вручную
- Тест кейсы, воспроизведение которых занимает много времени
Следующие критерии не подходят для автоматизации:
- Новые тест кейсы, которые еще не были выполнены вручную
- Тест кейсы для функциональности, требования к которой часто меняются
- Тест кейсы, которые выполняются редко
Лекции / Лекция 5. Автоматизация тестирования
Тестирование программного обеспечения Раздел 1. Основные понятия тестирования Раздел 2. Критерии выбора тестов Раздел 3. Разновидности тестирования Раздел 4. Особенности индустриального тестирования Раздел 5. Регрессионное тестирование
Раздел 4. Особенности индустриального тестирования Автоматизация тестирования Автоматизация тестирования – использование специального ПО (помимо тестового ПО), для выполнения и контроля выполнения тестов, а также сравнения ожидаемого и фактического результатов работы ПО. Автоматизация тестирования ПО позволяет осуществлять выполнение часто повторяющихся рутинных и необходимых для максимизации тестового покрытия задач. Основные виды автоматизированного тестирования : — автоматизированное тестирование кода, т.е. тестирование на уровне программных модулей, классов и библиотек; — автоматизированное тестирование графического пользовательского интерфейса, позволяющее генерировать пользовательские события, т.е. нажатия клавиш, события от манипулятора графической информации («мыши»), отслеживающие реакцию ПО и соответствие этой реакции спецификации; — автоматизированное тестирование программного интерфейса ПО, предназначенного для взаимодействия с другим ПО.
Введение в автоматизированное тестирование | Теория
Автоматизированные тесты ПО – это ПО, предназначенное для тестирования другого ПО.
Автоматизация тестирования Структура инструментальной системы автоматизации тестирования
Автоматизация тестирования В ходе выполнения инструментальной системы автоматизации тестирования на каждом из соответствующих этапов создается и сохраняется следующая информация: 1) набор тестов, достаточный для покрытия тестируемого приложения в соответствии с выбранным критерием тестирования, как результат ручной или автоматической разработки (генерации) тестовых наборов и драйвер/монитор пропуска тестового набора; 2) результаты прогона тестового набора, зафиксированные в Log-файле. 3) статистика тестового цикла, содержащая: — результаты пропуска каждого теста из тестового набора и их сравнения с эталонными величинами; — факты, послужившие основанием для принятия решения о продолжении или окончании тестирования; — критерий покрытия и степень его удовлетворения, достигнутая в цикле тестирования.
Автоматизация тестирования Издержки тестирования
Автоматизация тестирования Издержки тестирования Чем больше трудозатрат вкладывается в процесс тестирования, тем меньше ошибок в продукте остается незамеченными (A). Со временем, по мере обнаружения более сложных ошибок и дефектов (В), эффективность низкозатратных методов падает вместе с количеством обнаруживаемых ошибок (С). Таком образом, соответствующие методы тестирования имеют свою нишу, где они хорошо обнаруживают ошибки, тогда как вне ниши их эффективность падает. Поэтому необходимо совмещать различные методы и стратегии отладки и тестирования с целью обеспечения запланированного качества программного продукта при ограниченных затратах, что может быть достигнуто использованием процесса управления качеством программного продукта. На практике используются следующие методы тестирования и отладки, упорядоченные по связанным с их применением затратам: — статические методы тестирования — модульное тестирование — интеграционное тестирование — системное тестирование — тестирование реального окружения и реального времени
Автоматизация тестирования Фазы процесса тестирования В процессе тестирования целесообразно выделить следующие фазы: — определение целей (требований к тестированию): какие части системы будут тестироваться, какие аспекты их работы будут выбраны для проверки, каково желаемое качество и т.п. — планирование: создание графика (расписания) разработки тестов для каждой тестируемой подсистемы; оценка необходимых человеческих, программных и аппаратных ресурсов; разработка расписания тестовых циклов. — разработка тестов, то есть тестового кода для тестируемой системы, если необходимо — кода системы автоматизации тестирования и тестовых процедур (выполняемых вручную) — выполнение тестов — реализация тестовых циклов. — анализ результатов.
После анализа результатов возможно повторение процесса тестирования, начиная с планирования, разработки тестов или даже с уточнения и / или переопределения целей.
Автоматизация тестирования Тестовый цикл Тестовый цикл – это цикл исполнения тестов, включающий выполнение тестов и анализ результатов тестового процесса. Тестовый цикл включает следующую последовательность действий: 1) Проверка готовности системы и тестов к проведению тестового цикла 2) Подготовка тестовой машины в соответствии с требованиями, определенными на этапе планирования (например, полная очистка и переустановка системного программного обеспечения).
Конфигурация тестовой машины, так же, как и срез системы, должны быть однозначно воспроизводимыми. 3) Воспроизведение среза системы. 4) Прогон тестов в соответствии с задокументированными процедурами. 5) Сохранение тестовых протоколов (test log) 6) Анализ протоколов тестирования и принятие решения о том прошел или не прошел каждый из тестов (Pass/Fail) 7) Анализ и документирование результатов цикла.
Автоматизация тестирования Планирование тестирования Тестовый план — это документ или набор документов, содержащий: 1) Тестовые ресурсы. 2) Перечень функций и подсистем, подлежащих тестированию. 3) Тестовую стратегию, включающую: — анализ функций и подсистем с целью определения наиболее слабых мест, то есть областей функциональности тестируемой системы, где появление дефектов наиболее вероятно — определение стратегии выбора входных данных для тестирования — определение потребности в автоматизированной системе тестирования и дизайн такой системы 4) Расписание тестовых циклов 5) Фиксацию тестовой конфигурации: состава и конкретных параметров аппаратуры и программного окружения 6) Определение списка тестовых метрик, которые на тестовом цикле необходимо собрать и проанализировать, например, метрик, оценивающих степень покрытия тестами набора требований, степень покрытия кода тестируемой системы, количество и уровень серьезности дефектов, объем тестового кода и другие характеристики.
Автоматизация тестирования Типы тестирования В тестовом плане определяются и документируются различные типы тестов. Типы тестов могут быть классифицированы по двум категориям: — по тому, что подвергается тестированию (по виду подсистемы или продукта) — по способу выбора входных данных Типы тестирования по виду подсистемы или продукта : 1) Тестирование основной функциональности, когда тестированию подвергается собственно система, являющаяся основным выпускаемым продуктом 2) Тестирование инсталляции включает тестирование сценариев первичной инсталляции системы, сценариев повторной инсталляции (поверх уже существующей копии), тестирование деинсталляции, тестирование инсталляции в условиях наличия ошибок в инсталлируемом пакете, в окружении или в сценарии и т.п. 3) Тестирование пользовательской документации включает проверку полноты и понятности описания правил и особенностей использования продукта, наличие описания всех сценариев и функциональности, синтаксис и грамматику языка, работоспособность примеров и т.п.
Источник: studfile.net
Автоматизация тестирования программных систем
Здравствуйте, уважаемые хабрапользователи! Хочу представить вашему вниманию статью, в которой речь пойдёт о тестировании программных систем, его автоматизации, а также средствах для этого используемых.
На сегодняшний день уже мало кто сомневается в целесообразности проведения процесса тестирования разрабатываемых программных продуктов, но, к сожалению, не все ясно себе представляют как тестирование грамотно внедрять и применять. Корифеям-тестировщикам моя статья не принесёт практической пользы, а вот интересующихся тематикой новичков порадовать есть чем.
Изначально я не ставлю своей целью охватить всю проблемную область. На это не хватит и серии книг, которую мне, к тому же, не хватит знаний и опыта написать. Основная задача статьи — не растекаясь мыслью по древу, создать у читателя достаточно чёткую картину того, что вообще из себя представляет автоматизация тестирования и когда, а также с чем её едят.
Основные понятия
Начну с небольшого теоретического экскурса.
Итак, под тестированием принято понимать деятельность, выполняемую для оценки и улучшения качества ПО. В общем случае тестирование базируется на обнаружении дефектов и проблем в программных системах.
Автоматизированное тестирование ПО — процесс тестирования программного обеспечения, при котором основные функции и шаги теста, такие как запуск, инициализация, выполнение, анализ и выдача результата, производятся автоматически с помощью инструментов для автоматизированного тестирования.
В свою очередь, инструмент для автоматизированного тестирования — это программное обеспечение, посредством которого осуществляется создание, отладка, выполнение и анализ результатов прогона тест-скриптов (Test Scripts — это наборы инструкций для автоматической проверки определенной части программного обеспечения).
Тестирование программных систем состоит из динамической верификации поведения программ на конечном наборе тестов. При этом тесты выбираются из обычно выполняемых действий прикладной области и обеспечивают проверку соответствия ожидаемому поведению системы.
Применение автоматизированного тестирования
Первым пунктом в этом списке стоит тестирование производительности. Нагрузочное, стрессоустойчивое, тестирование на стабильность… Без автоматизации его выполнение трудно себе представить. По этой причине имеется широкий выбор продуктов от разных производителей и столь же высокие цены, даже в случае неудобного и слабо функционального инструмента.
Следом идёт регрессионное тестирование. Означает оно проверку ПО на корректность функциональности, выпущенной и протестированной в предыдущей версии. Выполняется с регулярной частотой, задаваемой в зависимости от условий: у кого-то с каждым новым билдом, а у кого-то с каждой версией для заказчика.
Конфигурационное тестирование – выполнение одних и тех же тестов в разных условиях. То есть когда один или несколько компонентов архитектуры системы требуется проверить в разном окружении, обычно заявленном в изначальных требованиях. Например: поддержка СУБД от разных производителей, работа в разных клиентских браузерах, использование в нескольких ОС и т.п. То есть некий аналог регрессионного тестирования, но в рамках одной версии системы.
Функциональное тестирование. Ясно, что здесь речь идёт о проверке нового функционала. Иногда бывает, что без автоматизации никак не обойтись. Даже если нужно выполнить тестирование только один раз. Обычно, впоследствии эти тесты и используются для регресса.
Установочное тестирование, выполняется для проверки условий инсталляции (и настройки) продукта с учётом тех или иных требований к системе от заказчика.
«А зачем?»
- Исключен «человеческий фактор». Сильное достоинство. Все мы люди и никто из нас не застрахован от ошибок. Выполняемый же тест-скрипт не пропустит тест по неосторожности и ничего не напутает в результатах.
- Быстрое выполнение – автоматизированному скрипту не нужно сверяться с инструкциями и документациями.
- Меньшие затраты на поддержку – когда скрипты уже написаны, на их поддержку и анализ результатов требуется, как правило, меньшее время чем на проведение того же объема тестирования вручную.
- Отчеты – автоматически рассылаемые и сохраняемые отчеты о результатах тестирования.
- Выполнение без вмешательства – во время выполнения тестов инженер-тестировщик может заниматься другими полезными делами, или тесты могут выполняться в нерабочее время.
- Повторяемость – все написанные тесты всегда будут выполняться однообразно. Это одновременно является и недостатком и преимуществом, так как тестировщик, выполняя тест вручную, может обратить внимание на некоторые детали и найти возникший дефект. Скрипт этого, увы, сделать не может.
- Затраты на поддержку – чем чаще изменяется приложение, тем они выше.
- Большие затраты на разработку – разработка автоматизированных тестов это сложный процесс, так как фактически идет разработка приложения, которое тестирует другое приложение.
- Стоимость инструмента для автоматизации – в случае, если используется лицензионное ПО, его стоимость может быть достаточно высока. Свободно распространяемые инструменты, как правило, отличаются более скромным функционалом и меньшим удобством работы.
- Пропуск мелких ошибок — автоматический скрипт может пропускать мелкие ошибки, на проверку которых он не запрограммирован.
Как автоматизировать тестирование?
Вернее даже будет сказать так: как подойти к внедрению процесса автоматизации тестирования в своей деятельности?
Во-первых, следует обратить внимание, насколько хорошо инструмент для автоматизации распознает элементы управления в приложении. В случае, когда элементы не распознаются, стоит поискать плагин, либо соответствующий модуль. Если такового нет – от инструмента лучше отказаться.
Во-вторых, нужно иметь в виду, сколько времени требуется на поддержку скриптов, написанных с помощью выбранного инструмента. Для этого можно записать простой скрипт, который выбирает пункт меню, а потом представить, что изменился пункт меню, который необходимо выбрать. Если для восстановления работоспособности сценария придется перезаписать скрипт целиком, то инструмент не оптимален, так как реальные сценарии гораздо сложнее.
И последний момент, на который надо обратить внимание – насколько удобен инструмент для написания новых скриптов. Сколько требуется на это времени, насколько можно структурировать код, насколько код читаем, и т.д.
На финишной прямой
Чтобы принять окончательное решение о целесообразности применения автоматизации, обычно советуют ответить на возникающий естественным образом в данной ситуации вопрос: «превалируют ли в нашем случае преимущества над недостатками?». Если недостатки в конкретном случае неприемлемы, то от автоматизации стоит воздержаться.
Выбор инструмента
Чаще всего зависит от объекта тестирования и требований к тестовым сценариям, т.к., разумеется, инструменты тестирования не могут поддерживать полный объём технологий, используемых при разработке приложений. Таким образом, выбор инструмента сводится к банальному методу проб и ошибок. В итоге, нередко тестировщики выбирают несколько инструментов для тестирования функций приложения.
Логично теперь будет поближе рассмотреть некоторые популярные средства автоматизации тестирования и привести пример написания простого тест-скрипта.
HP QuickTest Professional
Средство автоматизации от кампании Hewlett-Packard. Распространяется на платной основе (8000-10000 USD). Является основным инструментом автоматизации функционального тестирования от данного производителя. Позволяет автоматизировать функциональные и регрессионные тесты через записи действий пользователя при работе с тестируемым приложением, а потом исполнять записанные действия с целью проверки работоспособности ПО.
Записанные действия сохраняются в виде скриптов.
Скрипты могут быть отображенные в инструменте как VBScript (expert view), или же как визуальные последовательные шаги с действиями (keyword view).
Каждый шаг может быть отредактирован и на него можно добавить точки проверки (checkpoint), которые сравнивают ожидаемый результат с полученным.
IBM Rational Functional Tester
Тоже платный, но не настолько («всего-то» 6000 USD).
Rational Functional Tester предоставляет тестировщикам средства автоматизированного тестирования, позволяющие выполнять функциональное тестирование, регрессивное тестирование, тестирование пользовательского интерфейса и тестирование управляемое данными.
Много описательной информации о нём не дам, а лучше приведу практический пример.
Пример использования
Будет использована интеграция IBM Rational Functional Tester со средой разработки Microsoft Visual Studio. Для создания функционального теста необходимо выполнить следующие действия:
1) В среде разработки Microsoft Visual Studio создать новый проект «Functional Test Project»:
2) Выполнить запись пользовательских действий с тестируемым приложением:
3) Создать проверочную точку в процессе выполнения записи. Проверочная точка также будет выполнять проверку значения в выпадающем списке:
4) Сохранить результаты записи:
Далее необходимо сформировать bat-файл, который будет вызывать скрипт тестирования на выполнение и проверять результат:
rational_ft.exe -datastore “DemoTestRFT” -playback uml2cqtestscript
findstr failed “DemoTestRFT_logsuml2cqtestscriptrational_ft_logframe.html”
if %errorlevel% == 1 goto end
exit -1
:end
exit 0
Bat-файл выполняет следующие действия:
Вызывается IBM Rational Functional Tester со следующими параметрами:
-datastore “DemoTestRFT” – путь к каталогу с проектом.
-playback uml2cqtestscript – выполнить скрипт тестирования.
IBM Rational Functional Tester записывает свои результаты в отчет в формате HTML. Для того, чтоб определить был ли провален хоть один шаг в процессе выполнения скрипта тестирования, необходимо найти слово «failed» в отчете.
В зависимости от результата поиска возвращается результат 0 или -1.
Результат выполнения
Selenium
А это уже бесплатный пакет от компании OpenQA.org.
В основе Selenium лежит среда для тестирования web-приложений, реализованная на JavaScript и выполняющая проверки непосредственно средствами браузера. В рамках проекта Selenium выпускается 3 инструмента, каждый из которых имеет свои особенности и область применения: Selenium Core, Selenium IDE, Selenium RC и Selenium GRID.
Поддерживаемые технологии: DHML, JavaScript, Ajax
Поддерживаемые ОС: Mac OS, Microsoft Windows, Linux, Solaris
Язык тестов: HTML, Java, C#, Perl, PHP, Python, и Ruby
Тестируемые приложения: веб-приложения.
- тестирование
- автоматизация тестирования
- средства автоматизации тестирования
- IBM rational functional tester
- HP QuickTest Professional
- Selenium
Источник: habr.com