Тестирование ПО – важная составляющая любого процесса разработки, которая позволяет контролировать качество информационного продукта в процессе его создания. Чем раньше находятся и исправляются баги, тем меньше требуется денежных затрат заказчика, усилий разработчика и нервных клеток проектного менеджера.
Мы во Fusion Tech советуем клиентам выбирать ручное и автоматизированное тестирование одновременно для последовательной проверки качества мобильных и веб-приложений (web UI, API, mobile UI). Такой подход быстрее и дешевле, а также позволяет глубже исследовать продукт в процессе разработки. В чем разница между этими видами тестирования, какие плюсы и минусы у каждого из них, а главное – на каких этапах реализации ПО они подключаются? Об этом и не только читайте в нашей статье.
Ручное тестирование
Ручное тестирование – метод проверки информационного продукта, при котором специалист самостоятельно, с помощью собственных рук, глаз (иногда даже слуха) проверяет программное обеспечение на соответствие требованиям заказчика и удобство использования конечным потребителем. С его помощью подготавливается почва для написания автотестов, анализируются требования, разрабатываются тест-кейсы* для проверки определенной логики приложения.
*Тест-кейс – документ с пошаговым текстовым описанием процесса проверки работы какой-то части или функции приложения.
Хорошим тоном является разработка кейсов и написание прототипа автотеста до реализации полного функционала. Поэтому во Fusion Tech мы практикуем не просто ручное тестирование, а полноценную работу QA-инженера. В этом случае тестирование ПО идет на протяжении всего цикла разработки, а не только на этапе контроля качества. Тестирование продукта на стадии требований, выявление дефектов, уточнение неоднозначных моментов до подключения разработчика значительно ускоряет процесс и сокращает денежные вложения заказчика. Переписать несколько строк требований дешевле, чем полностью переделывать код приложения.Когда актуально только ручное тестирование:
- проект с еще не стабильным, часто изменяемым функционалом: UX, UI;
- требуется разработка и написание тестовых сценариев;
- нет необходимости в большом количестве тестов на проекте;
- требуется проверка верстки, локализации и удобства использования приложения;
- нужно точнее вникнуть в причину ошибки;
- нет данных о взаимодействии компонентов системы друг с другом;
- нужно тестировать требования и документацию.
Автоматизированное тестирование
Автоматизированное тестирование приходит на помощь ручному, чтобы уменьшить время на выполнение рутинной работы. В чем же заключается его задача? Любой программный продукт имеет “цепляющее” свойство – изменение одного элемента в системе влияет на другой. Чтобы убедиться, что все механизмы после изменений продолжают работать исправно, придется полностью тестировать приложение. На подобные перепроверки уходит много времени. Автоматизация устраняет этот недостаток, ускоряет прохождение тестов и уменьшает влияние человеческого фактора. Удобство автотестов еще и в том, что их можно проводить в любое время суток.Автоматизированное тестирование имеет свои подвиды (см. таблицу ниже). В ближайшем будущем Fusion Tech планирует внедрить в работу один из них – нагрузочное тестирование. Иначе его называют Performance Testing или тестирование производительности. Оно позволяет проверить работоспособность сервиса при высокой нагрузке. Иными словами, выдержит ли приложение, если им воспользуется большое количество пользователей одновременно.
Когда нужно задумываться о внедрении автоматизации?
- проект вмещает в себя множество функций и подсистем;
- команда состоит из большого количества разработчиков (фронтенд, бэкенд и мобильное направление);
- нужна поддержка нескольких версий продукта и/или нескольких девайсов или браузеров;
- подготовка к тестированию, настройка конфигурации, генерация тестовых данных отнимает много времени.
Если хотя бы один пункт совпал, то вам нужна автоматизация: тестовые данные будут генерироваться автоматически, регрессионное тестирование не будет отнимать много времени, а промежуток между выявлением дефекта и его исправлением заметно сократится.
Что нужно для внедрения автоматизации?
- приложение с уже устоявшимся UX (при изменении функциональности или сценария автотест перестанет работать) и UI;
- понимание, какую функцию следует проверять автотестами;
- тестовая документация (тест-кейсы, чек-листы);
- CI/CD (автоматизированная интеграция изменений, их доставки и развертывания кода программы).
Заглянем в таблицу, чтобы сравнить особенности и недостатки автоматического и ручного тестирования:
Какой вид тестирования выбрать?
Мы рассмотрели ключевые характеристики автоматического и ручного тестирования, сравнили их между собой, выявили плюсы и минусы каждого. В результате может возникнуть вопрос “А почему бы нам не автоматизировать все и забыть о ручном тестировании как о профессии?”. Ответ довольно прост: для написания автотестов кто-то должен составить тест-кейсы, провести первичное тестирование требований и/или готовой логики приложения.
Автоматизированное тестирование не в силах дать ответ, удобно ли пользоваться функционалом приложения. Оно не может протестировать верстку (UI) и локализацию (перевод) или применить творческий подход, чтобы найти неочевидную поломку. Автотест укажет только на ту ошибку, на которую запрограммирован, думать самостоятельно и применять нестандартные решения он не умеет. Суть автотеста – дать уверенность, что приложение после обновлений, внесенных разработчиком, работает исправно, и ускорить выявление и исправление дефектов. При малейшем сбое разработчик получит уведомление в течение нескольких минут (зависит от количества автотестов), и может оперативно исправить поломку. Ручному тестировщику для решения подобной задачи потребуется больше времени на проверку и написание отчета.
Какой вывод напрашивается? Ручное и автоматизированное тестирование тесно связаны друг с другом, идут вместе на протяжении всей реализации проекта. Не конкурируют, а последовательно дополняют друг друга. В зависимости от этапа работы тестировщик принимает решение, какой из двух вариантов применить для проверки ПО.
Отказ от одного из них грозит сдвигом выхода продукта в релиз и повышением конечной стоимости проекта. Тогда как тестирование на протяжении всего цикла разработки помогает сделать качественное ПО быстрее и значительно дешевле, повышая его конкурентоспособность и облегчая бизнес-задачи.