!["Узкие горлышки" мешают эффективности процесса "Узкие горлышки" мешают эффективности процесса](https://habrastorage.org/getpro/habr/upload_files/99a/545/147/99a54514776c4bea2fb2197b2115fcbc.png)
Качество программного обеспечения (ПО) напрямую зависит от многих факторов: от требований и спецификаций, проектирования и архитектуры, процессов разработки и тестирования ПО. Естественно, в процессе тестирования часто возникают проблемы и «узкие горлышки», которые могут существенно затруднить успешное завершение проекта.
Меня зовут Александр Черняков, я специалист по тестированию “Лаборатории качества”, и сегодня написал об основных проблемах, с которыми сталкиваются команды тестировщиков, а также рассмотрел возможные пути их решения. Всё актуально – об очевидном и наболевшем тут.
Что же такое эти "узкие горлышки"?
“Bottleneck” (от англ. "бутылочное горлышко") – это ограничения системы, которые урезают её производительность или пропускную способность. Это мешает продукту функционировать на полную мощность и выдавать оптимальный результат. Узкие места могут проявляться по-разному:
Внутренние или внешние.
Могут быть связаны с оборудованием или трудозатратами сотрудников.
Могут быть вызваны политическими факторами или неэффективными процессами.
Термин "бутылочное горлышко"
В контексте тестирования ПО узкие места означают, что процесс тестирования не может проходить эффективно и возникают проблемы. Например, для разработки тест-кейсов тестировщику необходимо прочитать и изучить требования, которые также находятся в разработке и не утверждены окончательно. Или они не формализованы, а единственный их носитель, например, аналитик, в данный момент не может ответить на все вопросы тестировщика.
Нехватка документации
Одна из основных проблем – недостаточное количество или неактуальность документации о продукте, а то и вовсе ее отсутствие. Для работы нам нужны технические спецификации, требования, дизайн-документация и другие руководства для понимания функциональности ПО и его ожидаемого поведения.
Последствия:
Тестировщикам сложно писать тест-кейсы и сценарии.
Невозможно корректно воспроизвести дефекты из-за неясности ожидаемого результата системы.
Рискуем упустить важные аспекты функциональности ПО.
Решения:
Активно участвовать в создании документации. Специалисты по тестированию должны быть вовлечены в процесс создания документации с самого начала разработки.
Регулярно обновлять документацию. Важно поддерживать ее актуальность на протяжении всего жизненного цикла продукта.
Использовать инструменты для управления требованиями. Системы управления требованиями (СУТр) могут помочь в сопровождении и обновлении документации. Среди ярких примеров таких систем можно встретить Jira Software, Modern Requirements, Jama Software, Spira Team, а так же отечественный аналог Техэксперт СУТр.
2. Нехватка времени, бюджета, ресурсов и кадров для тестирования
На многих проектах команды тестирования сталкиваются с ограничениями по времени, бюджету, доступным ресурсам (тестовые окружения, инструменты) и квалифицированному персоналу.
Последствия:
Ограниченная область тестового покрытия.
Мало тестовых случаев.
Очень большая вероятность, что пользователи найдут баги после релиза.
Решения:
Планировать и оценивать риски и область тестового покрытия. Необходимо проанализировать критические области ПО и сосредоточить усилия на наиболее важных аспектах.
-
Автоматизировать тестирование.
Обучать и развивать персонал. Инвестиции в обучение помогают повысить квалификацию существующих сотрудников и снизить зависимость от внешних ресурсов.
3. Неэффективные процессы разработки и тестирования ПО
Срок сдачи проекта, выпуск ПО на рынок и его качество зависят от процессов разработки и тестирования. Результат будет плохим, если не подобрать оптимальные процессы. Примерами таких ситуаций могут послужить недостаточная коммуникация между разработчиками и тестировщиками и в команде в целом, отсутствие стратегии тестирования, недостаточная проверка и контроль версий кода, слабое тестирование производительности и безопасности, неактуальная и слабая тестовая модель.
Последствия:
Трудно интегрировать новые изменения из-за несогласованности процессов разработки и тестирования.
Повторяются ошибки из-за недостаточной проверки изменений.
Циклы разработки и тестирования слишком растянуты во времени.
Решения:
Внедрять методологии Agile. Agile-подход позволяет улучшить коммуникацию между разработчиками и тестировщиками, ускорить циклы разработки и повысить гибкость процессов.
![](https://habrastorage.org/getpro/habr/upload_files/088/bcb/523/088bcb5235663bc6ebe8caa5dd83c865.png)
Использовать непрерывную интеграцию и доставку (CI/CD). Автоматизация процессов интеграции и доставки позволяет быстрее выявлять и устранять проблемы в ПО.
Проводить регулярные ретроспективы. Организация сессий ретроспектив позволяет выявлять проблемы в процессах и предлагать улучшения.
Для эффективного управления качеством программного обеспечения недостаточно только технических знаний — важно также адаптировать процессы и ресурсы к специфике проекта. А для этого нужно проанализировать все необходимые параметры, спланировать действия команды до начала работы и быть готовым вносить корректировки на любом этапе проекта.
Буду рад вашим вопросам/отзывам/замечаниям. Мы с командой QA хотим писать интересно и полезно о том, что умеем.
San_tit
Почему именно Agile и continuous deployment? В некоторых случаях необходимо обеспечивать полный цикл тестирования перед обновлением...
Тут скорее надо в принципе заняться описанием и оптимизацией процессов разработки (читать как понятную последовательность взаимодействий между участниками), Agile это или водопад -- дело десятое.
QualityLab Автор
Вы верно заметили, что "в некоторых случаях" 2e2 действительно необходим, полностью соглашусь с вами. Данная статья - всего лишь мой взгляд на проблему узких мест в тестировании, один из вариантов ситуации и никак не руководство к действию. Почему Agile и CI/CD - в данном контексте (неэффективные процессы) позволяет быстрее наладить коммуникацию в команде. На текущий момент наверное трудно найти команду без CI, но все же, если его нет - данный процесс значительно упрощает жизнь не только разработчикам, но и всей команде в целом, а так же влияет на обеспечение качества.
Александр Черняков.