Экспертиза ФОРС и партнеров
#Эксперты говорят
Тестирование ПО. Часть 2
Алена Белякова, руководитель отдела тестирования компании Форс
Несмотря на, казалось бы, монотонную деятельность по тестированию программных продуктов и требований, наша работа достаточно разнообразна. Среди задач специалиста по тестированию можно выделить написание тест-кейсов, выполнение различных видов тестирования, работу с логами и базами данных, работу с инструментами для перехвата трафика, подготовку баг-репортов, участие в демонстрациях функционала пользователям, постоянные коммуникации с аналитиками и разработчиками и многое другое. Более того, работая на проектах, тестировщики достаточно глубоко погружаются в предметную область разрабатываемых систем. Все это делает нашу работу одновременно интересной и трудной. Я бы даже сказала, творческой. Несмотря на четкие требования к реализуемым системам, в процессе тестирования часто приходится применять креативный подход к разрабатываемым тестам, а также искать нестандартные решения проблем.
Разрабатываемые приложения зачастую состоят из нескольких модулей, а также взаимодействуют со смежными системами. Так, мы часто сталкиваемся с задачей обеспечить интеграцию реализуемых систем с внешними, например, с государственными информационными системами СМЭВ (Система межведомственного электронного взаимодействия) и ЦХЭД (Центр хранения электронных документов), а также с Порталом государственных и муниципальных услуг города Москвы. Для проверки корректности реализации таких взаимодействий мы применяем интеграционное тестирование.
Проверка корректности установки программного обеспечения выполняется в ходе проведения инсталляционного тестирования. Такой вид тестирования часто применяется в продуктивной среде после установки обновления версии приложения. Тестировщики обычно выполняют сценарии инсталляционного тестирования перед началом работы конечных пользователей с новой установленной версией продукта.
Основным у нас является мануальное (ручное) тестирование, хотя автоматизация последнее время активно набирает обороты. Высокий процент ручного тестирования объясняется тем, что в некоторых случаях затраты на автоматизацию превышают потенциальную выгоду от ее реализации. Стоит отметить, что все чаще заказчики включают в контракты требования по автоматизации тестирования, поэтому мы активно развиваем компетенции в этом направлении. Конечно, не исключено, что в обозримом будущем мануальное тестирование начнет терять свое превосходство над автоматизированным, тем не менее, полностью уйти от него вряд ли представляется возможным.
Сейчас искусственный интеллект используется всё шире и определенно с его помощью можно автоматизировать и выполнять некоторые тесты, но вот полноценно заменить тестировщиков вряд ли получится. Есть в работе тестировщика такие аспекты, на которые ИИ не способен, например, у него отсутствуют когнитивные навыки, креативность и эмоциональный интеллект. Более того, у тестировщиков накапливается релевантный опыт, который помогает предугадывать возможные проблемы, а также писать альтернативные сценарии тестирования.
Однако бывает так, что ПО протестировано, но ошибки в нём всё равно остались. Как правило, это связано со слишком сжатыми сроками на проектах разработки программного продукта, ведь тестирование это один из финальных этапов, соответственно, если неправильно оценены плановые трудозатраты или на предыдущих этапах поджимали сроки, то время на тестирование уменьшается. Также ошибки могут возникать из-за разницы окружения, т.е. когда конфигурация тестового стенда отличается от продуктивного. Бывают ошибки, вызванные проблемами с конкретными данными. Другой вариант — ошибки, привнесенные обновлением смежных систем. Для минимизации выпущенных на продуктивный контур ошибок рекомендуется более осознанно подходить к планированию релизов и закладывать достаточно времени на этап тестирования, а также эффективно работать над управлением требованиями.
Для качественного выполнения поставленных задач высококлассный тестировщик должен обладать определённым набором софт и хард скиллз. Среди них можно выделить коммуникабельность, умение работать в команде, внимание к деталям, критическое мышление, усидчивость, адаптивность и умение находить выход из сложных ситуаций. Хард скиллз включают знание теории тестирования, знание основ клиент-серверной архитектуры, владение техниками тест-дизайна, различными инструментами, применяемыми при тестировании веб и мобильных приложений (Devtools, SQL, Postman, Swagger, Android Studio, Soap UI, Jmeter. Kibana, Kafka, Charles, Fiddler и т.д).