Тестирование программного продукта — один из важнейших этапов в процессе его разработки. Незнание основных терминов и понятий может усложнить работу тестировщика. Мы решили собрать самые распространенные вопросы по тестированию ПО, чтобы помочь тем, кто только начинает свой путь в профессии или просто интересуется сферой IT. Некоторые из них касаются теории тестирования, другие — практики, третьи — документации в тестировании.
Благодарим за помощь в подготовке материала «Аплана. Корпоративный университет» и в частности его преподавателей: Александра Бегларяна («Базовый курс тестирования и тест-дизайна») и Екатерину Дрюпину (курс «Ручное функциональное тестирование»).
Что такое тестирование программного обеспечения (ПО)?. 1
Какие есть виды тестирования?. 2
Можно ли выделить наиболее востребованные виды тестирования?. 3
Есть ли какие-то базовые принципы тестирования?. 3
Как понять, когда нужно начинать тестирование?. 4
Какие инструменты инженер по тестированию обычно использует в своей работе?. 4
Как можно оценить качество ПО?. 4
Что такое тест-план и что в нем должно быть написано?. 5
Что такое тест-дизайн и зачем он нужен?. 5
Что является результатом работы инженера по тестированию?. 5
Есть ли какие-то книги, которые могут быть полезны новичку в тестировании?. 5
Согласно «Руководству к своду знаний по программной инженерии» (IEEE, SWEBOK, 2004), тестирование — это проверка соответствия между реальным и ожидаемым поведением программы, осуществляемая на конечном наборе тестов, выбранном определенным образом.
Согласно «Стандартному глоссарию терминов, используемых в тестировании программного обеспечения» (ISTQB), тестирование — это процесс, содержащий в себе все активности жизненного цикла, как динамические, так и статические, касающиеся планирования, подготовки и оценки программного продукта и связанных с этим результатов работ с целью определить, что они соответствуют описанным требованиям, показать, что они подходят для заявленных целей и определения дефектов.
В разных источниках, скажем, в книгах, статьях, можно встретить большое количество определений понятия «тестирование». Разные специалисты пытались объяснить его как можно точнее, придумывая все новые и новые формулировки. Например, одна из самых простых: тестирование — это сравнение фактического результата с ожидаемым. А еще — одна из техник контроля качества, включающая планирование работ (Test Management), проектирование тестов (Test Design), выполнение тестирования (Test Execution) и анализ полученных результатов (Test Analysis). Это исследование программы с целью обнаружения ошибок; возможный способ оценки качества программного обеспечения в терминах найденных дефектов, исполненных тестов и протестированных систем и т.д.
Все виды тестирования программного обеспечения, в зависимости от преследуемых целей, можно условно разделить на следующие группы:
По критерию запуска программы:
По объекту тестирования:
По уровням:
По степени автоматизации:
По времени проведения тестирования:
По степени подготовленности:
По признаку позитивности сценариев:
По знанию системы:
Примечание:
Есть еще более сложные и полные классификации. К примеру, вот такой вариант использует один из преподавателей «Аплана. Корпоративный университет» на своем курсе:
Опыт показывает, что наиболее востребованы ручное функциональное тестирование, автоматизированное функциональное тестирование и нагрузочное тестирование.
Ручное функциональное тестирование (РФТ) — это тестирование вручную, то есть без использования каких-либо автоматизированных средств. В этом случае инженер по тестированию берет на себя роль конечного пользователя и, в соответствии с тестовым сценарием, проверяет ПО или систему. Его задача — выявить поведение, отличное от ожидаемого конечным пользователем.
Ручное тестирование применяется в регрессионном (тестирование изменений), интеграционном (связь с другими системами) и при тестировании нового функционала.
Автоматизированное функциональное тестирование (АФТ) — процесс верификации программного обеспечения, при котором основные функции и шаги теста выполняются автоматически при помощи инструментов для автоматизированного тестирования. Для этого сначала разрабатывают ручные тесты, затем их автоматизируют — тесты выполняются программой-роботом, без привлечения ручных тестировщиков. АФТ может являться частью регрессионного тестирования и входить в комплексное.
Нагрузочное тестирование (НТ) позволяет определить, как и с какой скоростью программа работает под определенной нагрузкой. Нагрузочное тестирование рекомендуется проводить при выпуске нового программного обеспечения, доработке эксплуатируемого ПО и при изменении конфигурации стендов.
Вот семь основных из них:
Чем раньше обнаружен дефект, тем дешевле обходится его исправление, поэтому начинать тестирование нужно как можно раньше. Например, статическое тестирование (до фактического получения ПО) делает проще динамическую стадию. На ранних стадиях проще изменить тест-дизайн и т.д.
Баг (bug) или дефект — это отклонение фактического результата от ожидаемого, изъян в компоненте или системе, который может привести компонент или систему к невозможности выполнить требуемую функцию. Баги находят на этапе тестирования, затем нужна отладка (дебаггинг), которую выполняет разработчик. Отладка (debugging) — процесс поиска, анализа и устранения причин отказов в программном обеспечении. После отладки исправление требует новой проверки тестировщиком.
Тестировщик самостоятельно определяет скорость работы, при которой он наиболее внимателен и эффективен. Как специалист, он должен уметь проводить ревизию своих активностей для выявления возможности ускорения действий.
Базовые инструменты тестировщика:
Оценка программного обеспечения производится согласно международному стандарту ISO 9126. ПО будет качественным, если можно обеспечить его функциональность, надежность, удобство использования, удобство сопровождения, производительность и переносимость. Чем больше атрибутов качества можно реализовать или поддержать (для производительности — это соответствие стандартам, временная эффективность и эффективность использования ресурсов и т.д.), тем выше будет качество ПО. У атрибутов есть и численные показатели — метрики, которые позволяют измерять прогресс в достижении качества.
Тест-план — это документ, описывающий весь объем работ по тестированию, начиная с описания объекта, стратегии, расписания, критериев начала и окончания тестирования, до необходимого в процессе работы оборудования, специальных знаний, а также оценки рисков с вариантами их разрешения.
Как и в случае с тестированием, в профессиональной литературе можно встретить и другие определения тест-плана. Одно из самых коротких: тест-план — это документ, обобщающий и координирующий тестирование. А одно из самых длинных: тест-план — это документ, описывающий масштаб, подход, ресурсы и график тестирования, в котором определены тестовые элементы, отдельные части функционала, тестовые задания, специалисты, которые будут проводить конкретные тесты, и любые риски, требующие дополнительного планирования.
Основные разделы тест-плана:
Тест-дизайн — одна из наиболее творческих деятельностей в IT. Это этап процесса тестирования ПО, на котором, в соответствии с определенными ранее критериями качества и целями тестирования, проектируются и создаются тестовые случаи (тест-кейсы).
Задачи тест-дизайна:
Для большинства тестировщиков основной продукт работы — отчет о проделанных испытаниях в разрезе общего количества пройденных тестовых сценариев с их результатами, а также список открытых дефектов с указанием их критичности.
Рекомендуем к прочтению следующие книги: