Тестирование — заключительный этап разработки сайтов и программного обеспечения. Он позволяет ответить на три важных вопроса: соответствует ли продукт изначальной задумке, все ли работает как надо и что нужно сделать, чтобы ответ на первые два вопроса был положительным.
Передача проекта тестировщику — по сути, репетиция финального согласования с клиентом и отправки продукта в массы. То есть тестировщик — это тот же клиент и пользователь, только на стороне агентства. И его задача — сделать так, чтобы на выходе получить качественный продукт, который соответствует ожиданиям или превосходит их.
Есть два типа тестирования: ручное и автоматизированное. В первом случае контроль качества производит человек — тестировщик (или QA-инженер) — посредством моделирования действий пользователя. Специальные программы для проверки сайта не применяются.
Во втором случае запуск, инициализация, выполнение, анализ и выдача результата производятся автоматически с помощью специальных инструментов. Тестировщик обрабатывает полученные результаты.
Рассмотрим оба типа подробнее.
Преимущества и недостатки ручного и автоматизированного тестирования
В маленьких компаниях тестированием занимаются сами менеджеры проектов. В компаниях побольше — тестировщики (QA-инженеры), которые применяют ручные методы проверки продуктов. Дальнейший рост компании подразумевает рост количества проектов, а значит есть 2 решения: или увеличить штат специалистов, или сделать так, чтобы при том же количестве тестировщиков сохранилось (а лучше — чтобы улучшилось) качество на выходе. Какое решение выбрать — дело за вами. Чтобы вам было проще сориентироваться, мы сравнили оба типа тестирования.
Ручное тестирование
Тестировщик оценивает продукт как обычный пользователь и может предоставить максимально развернутый и понятный отчет о работе функционала.
Специалист смотрит не только функционал, но и дизайн, поэтому может оценить удобство сайта. Программа — нет.
Возможна реализация нетипичных сценариев — человек может найти баг, который не найдет программа.
Ручная проверка нетипичных сценариев обходится дешевле, чем их автоматизация.
Несущественные изменения тестировщик может проверять сразу после их реализации.
Присутствует человеческий фактор — каким бы профессионалом ни был тестировщик, он может допустить ошибку.
Нет возможности моделировать высокую нагрузку, а значит нельзя объективно оценить, как поведет себя сайт при большом количестве пользователей.
Ручное тестирование занимает больше времени, чем автоматизированное.
Автоматизированное тестирование
Исключен человеческий фактор — программа не может допустить ошибок по невнимательности и неосторожности.
Высокая скорость проверки: функционал, на тестирование которого специалист потратит много времени, может быть обработан программой за секунды.
Отчет о результатах тестирования формируется и сохраняется автоматически.
Пока выполняется автотестирование, специалист может заниматься другими задачами. Также тесты могут производиться и в нерабочее время по заранее написанным сценариям..
Автоматические тесты всегда выполняются строго по плану, в то время как при ручном методе тестировщик обращает внимание на детали и может найти неожиданные ошибки.
При неграмотном подходе есть риск, что разработка автотестов может превратиться в процесс создания приложения для проверки приложений и серьезно затянуться.
Автоматизация требует от специалиста более высоких компетенций, чем ручное тестирование.
Автоматизация незаменима в регрессионном тестировании, когда происходит повторная проверка функционала после внесенных изменений (исправления ошибок). Если ваша цель — получить на выходе качественный продукт, регрессионное тестирование должно проводиться даже при малейших изменениях в коде.
Несмотря на то, что усилия, которые требуются для внесения небольших изменений, обычно минимальны, повторная проверка функционала включает в себя сравнительно большой объем работ. Выручает автоматизация — она позволяет свести время на регрессионное тестирование к минимуму.
Как происходит автоматизированное тестирование
С проблемой больших трудозатрат мы в Uplab столкнулись как раз при регрессионном тестировании. Причем высокие трудозатраты не всегда были равны высокому качеству проведенной работы. При перепроверке функционала специалисту нужно обратить внимание на каждую деталь, однако чаще всего на тот момент у него уже просто «замылен глаз» и он может что-то пропустить. Результат — наличие багов на сайте.
Чтобы исключить человеческий фактор, мы решили внедрить автоматизированное тестирование.
Прежде чем рассказать, как всё работает, дадим несколько определений — они помогут вам сориентироваться в профессиональном мире тестировщика.
Глоссарий
Тест-кейс
Основной профессиональный документ тестировщика, фиксирующий последовательность действий, которые нужно совершить для проверки какого-либо функционала. Обычно он максимально простой и понятный — важно, чтобы любой специалист мог пройтись по тест-кейсу и выполнить все, что нужно, не погружаясь в проект.
Именно по тест-кейсам пишут автотесты — каждый шаг алгоритма соответствует шагу в тест-кейсе.
Атрибуты тест-кейса:
Шаги — описание последовательности действий, которые должны привести нас к ожидаемому результату. Каждый шаг отвечает на вопрос «что сделать?» (например, «зайти на страницу „Новости"», «кликнуть на кнопку „Узнать больше"»).
•
Название — основная тема тест-кейса. Краткое описание его сути.
•
•
Ожидаемый результат — то, что должно произойти после выполнения всех шагов, если функционал работает правильно.
•
Фактический результат — то, что происходит, если функционал работает некорректно (ошибка, баг).
Чек-лист
Документ, который описывает, что должно быть протестировано. Он может быть абсолютно разного уровня детализации — все зависит от требований к отчетности, уровня знания продукта сотрудниками и сложности разработки.
Документ, описывающий ситуацию или последовательность действий, которые привели к некорректной работе объекта тестирования. В нем указываются причины и ожидаемый результат.
Фреймворк тестирования
Программная платформа или комплекс компонентов и моделей, которые упрощают реализацию продукта. С помощью фреймворков, позволяющих эмулировать поведение реальных пользователей из программной среды, строится автоматизация тестирования.
Фреймворки обычно состоят из двух частей:
API, предоставляющего удобные функции для контролирования этой программы.
•
Программы или надстройки над браузером, которые позволяют управлять браузером.
•
Возможности фреймворков, полезные для тестирования:
Поиск на странице веб-элемента с указанными параметрами.
•
Навигация между веб-страницами.
•
Открытие новой вкладки или окна браузера, изменение размеров.
•
•
Функции ожидания определенных событий, в частности, ожидания полной загрузки страницы или появления на ней определенного элемента.
•
Эмуляция действий пользователя, например, нажатие кнопки мыши на определенный элемент или ввод последовательности символов с клавиатуры.
•
Исполнение на странице команды JavaScript для более сложных действий.
Мы выбрали Selenium IDE — плагин к браузеру Firefox, который может записывать действия пользователя, воспроизводить их, а также генерировать код для WebDriver или Selenium RC, в котором выполняются те же самые действия.
Примеры автотестов на базе Selenium IDE
Допустим, мы хотим проверить форму обратной связи на странице CONTACT US на сайте gazglobal.com. Вот так будет выглядеть тест-кейс:
№;Что нужно проверить;Шаги проверки;Ожидаемый результат;Статус;Автор
1;Поля формы;Ввод данных в поля;Корректное отображение данных;Пройден;Пыркин
2;Отправка формы;Клик по кнопке «Отправить»;Pop-up с сообщением «Форма отправлена»;Пройден;Пыркин
3;Валидность формы;Ввод ошибочных данных в обязательные поля формы;При ошибочном вводе данных поля выделяются красным цветом;Пройден;Пыркин
4;Поле с выбором региона и продукции;Ввод данных в поля. Поле «Регион» — обязательное, поле «Продукция» — необязательное;Открывается выпадающий список, любой из пунктов можно выбрать;Пройден;Пыркин
5;Выбор таба в SUBJECT;Выбор таба;Поле обязательное;Пройден;Пыркин
На основе кейса запишем автотест на Selenium IDE, где, используя перечисленные в таблице шаги, программа пройдет по сайту и запишет результат — есть ошибки в функционале или все работает корректно.
Т.к. тестирование проводится в расширении Firefox, баги тоже фиксируются в этом браузере.
Тестирование формы на базе Selenium IDE
Рассмотрим еще один пример — автотест, который проверяет работоспособность поиска на том же сайте gazglobal.com. На сайте реализовано два функционала поиска: один в шапке, другой в подвале. Проверим первый — в нем есть pop-up с выбором тегов, основанных на самых популярных запросах.
Составим тест-кейс:
№;Что нужно проверить;Шаги проверки;Ожидаемый результат;Статус;Автор
1;Открытие поисковой строки;Клик по лупе в шапке сайта;Открывается pop-up поиска;Пройден;Пыркин
2;Ввод данных в строку;Ввод текста в строку поиска, клик на Enter;Переход на страницу поиска;Пройден;Пыркин
3;Работа тегов;Клик по тегам в pop-up;Переход на страницу поиска по данному тегу;Пройден;Пыркин
4;Закрытие поисковой строки;Клик по крестику в pop-up;Закрытие попапа;Пройден;Пыркин
А теперь на основе перечисленных шагов запишем автотест:
Тестирование поисковой строки на базе Selenium IDE
Стоит ли инвестировать в автоматизацию тестирования? Считаем
Чтобы сделать вывод, целесообразно ли вкладывать средства в автоматизацию тестирования, представим ситуацию. Допустим, есть некая компания X, в которой все специалисты всегда тестировали функционал вручную. То есть автоматизация — это некий эксперимент, который по задумке должен подтвердить гипотезу, что тестирование с помощью программы сократит время на проверку сайта и повысит качество результата на выходе. Срок эксперимента — 3 года.
Чтобы рассчитать эффективность вложений, потребуются следующие данные:
Сколько стоит час специалиста, который на текущий момент занимается ручным тестированием.
•
Сколько стоит час специалиста, который займется процессом автоматизации.
•
•
Как часто проводится или планируется проводить регрессионное тестирования.
•
По скольким тест-кейсам запускается тестирование.
•
Сколько времени требуется на переключение с тестирования одного проекта на другой.
•
Сколько времени уйдет на доработку документации по автоматизации определенного тест-кейса. Важно учитывать возможные проблемы при изучении документации и погружении в особенности каждого проекта.
•
Сколько времени уходит на оформление бага в баг-лист.
•
Сколько времени требуется на разработку одного автотеста.
•
Сколько времени занимает ручное тестирование по 10 кейсам.
Подставим условные значения, чтобы произвести расчет:
Параметр;Значения для расчета
Оплата труда специалиста, который займется процессом автоматизации;600 руб./час
Оплата труда специалиста, который на текущий момент занимается ручным тестированием;500 руб./час
Частота проведения регрессионного тестирования;Каждый день по 2 часа
Количество тест-кейсов, по которым запускается тестирование;10
Время, которое требуется на переключение специалиста с тестирования одного проекта на другой;5 минут
Время, необходимое на доработку документации по автоматизации определенного тест-кейса;1 час
Время на оформление бага в баг-лист;30 минут
Время на разработку одного автотеста;2 часа
Средняя длительность ручного тестирования по 10 кейсам;45 минут
Теперь мы можем сравнить затраты на автоматизированное и на ручное тестирование. Обратите внимание: расчеты ниже основаны на первичном приближении и не претендуют на максимальную точность. Мы показываем примерные трудозатраты при описанном алгоритме работы — в вашей компании цифры могут быть другими.
Затраты на автоматизированное тестирование
Использовать будем следующую формулу:
Ip = Io + Co + Σ (Ce + Ca + Cm)
Co — стоимость разработки тестов
•
Io — начальные инвестиции
•
Ip — затраты на автоматизацию тестирования
•
•
Σ — планируемое количество циклов тестирования
•
Ce — оценка стоимости однократного выполнения цикла автоматизированного тестирования
•
Ca — оценка стоимости анализа результатов выполненного цикла
•
Cm — оценка стоимости поддержания автоматизированных тестов в рабочем и актуальном состоянии
При расчетах мы не учитываем первоначальные инвестиции — они не нужны, т.к. применяются уже существующие бесплатные технологии (IDE, фреймворки) и отсутствует необходимость инвестировать в дополнительное оборудование.
Расчет
Стоимость разработки автоматизированных тестов: 10 тестов х 2 часа х 600 руб./час = 12 000 руб.
Планируемое количество циклов тестирования: 3 года х 52 недели х 2 часа/день = 312 раз
Оценка стоимости однократного выполнения цикла автоматизированного тестирования равна нулю, т.к. подготовка к циклу тестирования не требуется, а само тестирование не нуждается в дополнительном контроле со стороны специалиста и происходит полностью автономно.
Оценка стоимости анализа багов тестировщиком: 10 тестов x 0,125 часа x 600 руб./час = 750 руб.
Стоимость поддержки автотестов в рабочем состоянии: 10 тестов x 0,3 цикла x 0,5 часа x 600 руб./час = 900 руб.
Подставим данные в формулу:
0 + 12 000 +312 x (0 + 750 + 900) = 526 800 рублей
Следовательно, для автоматизации тестирования в компании X необходимо 526 800 рублей.
Затраты на ручное тестирование
Формула:
Gp = Go + Σ (Gc + Ga+ Gm)
Σ — планируемое количество циклов тестирования
•
Go — начальные инвестиции
•
Gp — затраты на ручное тестирование
•
•
Gc — стоимость разработки тест-кейсов
•
Ga — оценка стоимости анализа багов тестировщиком
При расчетах мы не учитываем стоимость разработки базы тест-кейсов для ручного тестирования — она равна нулю, поскольку компания, которая уже занималась тестированием, обладает этой базой.
Расчет
Стоимость одного цикла ручного тестирования: 0,75 часа х 10 тестов х 500 руб./час = 3 750 руб.
Стоимость анализа багов тестировщиком: 10 тестов x 0,25 часа x 500 руб./час = 1 250 руб.
Стоимость разработки документации тестировщика с учетом возможных рисков: 10 тестов x 0,5 часа x 500 руб./час = 2 500 руб.
Подставим данные в формулу:
0 + 3 750 + 312 x (0 + 1 250 + 2 500) = 1 173 750 рублей
Сравнив результаты обоих расчетов (526 800 рублей на автоматизированное тестирование и 1 173 750 рублей на ручное), можно сделать вывод, что на данном этапе для компании X целесообразна автоматизация.
Автоматизация тестирования — непростой, но очень важный процесс для команд, которые выступают за высокое качество разрабатываемых продуктов. Минимизация человеческого фактора, сокращение финансовых вложений, рост производительности — сопутствующие результаты, но чтобы их достичь, недостаточно одной автоматизации. Не менее важно построить эффективные взаимоотношения внутри команды тестировщиков. Но об этом — в одной из следующих публикаций. Следите за обновлениями!
Читайте по теме
10 мин.
7762
Как в Uplab разрабатывают сайты. Этап frontend
10 минут
5745
Как в Uplab разрабатывают сайты. Этап дизайна
20 мин.
16085
Как в Uplab разрабатывают сайты. Этап аналитики и проектирования
Расскажите о вашем проекте
Расскажите о вашем проекте
Кратко опишите свою задачу, и мы свяжемся с вами в кратчайшие сроки
Комментарии к статье
Комментарии: 0