Наверх
Инфо-центр
Есть вопросы?
Закажите обратный звонок
или пришлите заявку!

Вводная статья по тестированию: F.A.Q. новичка

Тестирование программного продукта — один из важнейших этапов в процессе его разработки. Незнание основных терминов и понятий может усложнить работу тестировщика. Мы решили собрать самые распространенные вопросы по тестированию ПО, чтобы помочь тем, кто только начинает свой путь в профессии или просто интересуется сферой IT. Некоторые из них касаются теории тестирования, другие — практики, третьи — документации в тестировании.

Благодарим за помощь в подготовке материала «Аплана. Корпоративный университет» и в частности его преподавателей: Александра Бегларяна («Базовый курс тестирования и тест-дизайна») и Екатерину Дрюпину (курс «Ручное функциональное тестирование»).

Что такое тестирование программного обеспечения (ПО)?. 1

Какие есть виды тестирования?. 2

Можно ли выделить наиболее востребованные виды тестирования?. 3

Есть ли какие-то базовые принципы тестирования?. 3

Как понять, когда нужно начинать тестирование?. 4

Что такое баги?. 4

Какие инструменты инженер по тестированию обычно использует в своей работе?. 4

Как можно оценить качество ПО?. 4

Что такое тест-план и что в нем должно быть написано?. 5

Что такое тест-дизайн и зачем он нужен?. 5

Что является результатом работы инженера по тестированию?. 5

Есть ли какие-то книги, которые могут быть полезны новичку в тестировании?. 5

 

Что такое тестирование программного обеспечения (ПО)?

Согласно «Руководству к своду знаний по программной инженерии» (IEEE, SWEBOK, 2004), тестирование — это проверка соответствия между реальным и ожидаемым поведением программы, осуществляемая на конечном наборе тестов, выбранном определенным образом.

Согласно «Стандартному глоссарию терминов, используемых в тестировании программного обеспечения» (ISTQB), тестирование — это процесс, содержащий в себе все активности жизненного цикла, как динамические, так и статические, касающиеся планирования, подготовки и оценки программного продукта и связанных с этим результатов работ с целью определить, что они соответствуют описанным требованиям, показать, что они подходят для заявленных целей и определения дефектов.

В разных источниках, скажем, в книгах, статьях, можно встретить большое количество определений понятия «тестирование». Разные специалисты пытались объяснить его как можно точнее, придумывая все новые и новые формулировки. Например, одна из самых простых: тестирование — это сравнение фактического результата с ожидаемым. А еще — одна из техник контроля качества, включающая планирование работ (Test Management), проектирование тестов (Test Design), выполнение тестирования (Test Execution) и анализ полученных результатов (Test Analysis). Это исследование программы с целью обнаружения ошибок; возможный способ оценки качества программного обеспечения в терминах найденных дефектов, исполненных тестов и протестированных систем и т.д.

Какие есть виды тестирования?

Все виды тестирования программного обеспечения, в зависимости от преследуемых целей, можно условно разделить на следующие группы:

  1. Функциональные,
  2. Нефункциональные,
  3. Связанные с изменениями.

Тестирование можно классифицировать…

По критерию запуска программы:

  • Статическое;
  • Динамическое.

По объекту тестирования:

По уровням:

По степени автоматизации:

По времени проведения тестирования:

По степени подготовленности:

  • Тестирование по документации;
  • Исследовательское тестирование;
  • Интуитивное тестирование (ad hoc testing*).

По признаку позитивности сценариев:

  • Позитивное тестирование;
  • Негативное тестирование*.

По знанию системы:


Примечание: 

  • Отказоустойчивость — реакция системы на нестандартные, непредвиденные ситуации.
  • Ad hoc — сложная активность, которую может выполнить только опытный тестировщик.
  • Негативное тестирование — обработка системой ситуаций, которые не заложены разработчиком в программный продукт.
  • Тестирование «черного ящика» (black box) — проведение функционального тестирования без доступа к коду системы.
  • Тестирование «белого ящика» (white box) — функциональное тестирование с доступом к коду системы.
  • Тестирование «серого ящика» (gray box) — расширенный тип black-box тестирования, включающий изучение кода. 

 

Есть еще более сложные и полные классификации. К примеру, вот такой вариант использует один из преподавателей «Аплана. Корпоративный университет» на своем курсе:

Можно ли выделить наиболее востребованные виды тестирования?

Опыт показывает, что наиболее востребованы ручное функциональное тестирование, автоматизированное функциональное тестирование и нагрузочное тестирование.

Ручное функциональное тестирование (РФТ) — это тестирование вручную, то есть без использования каких-либо автоматизированных средств. В этом случае инженер по тестированию берет на себя роль конечного пользователя и, в соответствии с тестовым сценарием, проверяет ПО или систему. Его задача — выявить поведение, отличное от ожидаемого конечным пользователем.

Ручное тестирование применяется в регрессионном (тестирование изменений), интеграционном (связь с другими системами) и при тестировании нового функционала.

Автоматизированное функциональное тестирование (АФТ) — процесс верификации программного обеспечения, при котором основные функции и шаги теста выполняются автоматически при помощи инструментов для автоматизированного тестирования. Для этого сначала разрабатывают ручные тесты, затем их автоматизируют — тесты выполняются программой-роботом, без привлечения ручных тестировщиков. АФТ может являться частью регрессионного тестирования и входить в комплексное.

Нагрузочное тестирование (НТ) позволяет определить, как и с какой скоростью программа работает под определенной нагрузкой. Нагрузочное тестирование рекомендуется проводить при выпуске нового программного обеспечения, доработке эксплуатируемого ПО и при изменении конфигурации стендов.

Есть ли какие-то базовые принципы тестирования?

Вот семь основных из них:

  1. Тестирование демонстрирует наличие дефектов. Оно может показать, что дефекты есть, но не может доказать, что их нет. Тестирование снижает вероятность наличия дефектов, находящихся в ПО, но, даже если они не были обнаружены, это не доказывает корректность тестирования.
  2. Исчерпывающее тестирование невозможно. Полное тестирование с использованием всех комбинаций вводов и предусловий физически невыполнимо, за исключением тривиальных случаев. Вместо исчерпывающего тестирования должны использоваться анализ рисков и расстановка приоритетов, чтобы правильнее распределить усилия.
  3. Ранее тестирование. Чтобы как можно раньше найти дефекты, нужно как можно раньше начать активности по тестированию в жизненном цикле разработки ПО или системы. Кроме того, они должны быть сфокусированы на определенных целях.
  4. Скопление дефектов. Усилия тестирования должны быть сосредоточены пропорционально ожидаемой, а позже и реальной плотности дефектов по модулям. Большая часть дефектов, обнаруженных при тестировании или повлекших за собой основное количество сбоев системы, содержится в небольшом количестве модулей.
  5. Парадокс пестицида. Если одни и те же тесты будут прогоняться много раз, в конечном счете этот набор тестовых сценариев перестанет находить новые дефекты. Чтобы преодолеть «парадокс пестицида», тестовые сценарии должны регулярно рецензироваться и корректироваться, новые тесты должны быть разносторонними, чтобы охватить все компоненты ПО или системы, и найти как можно больше дефектов.
  6. Тестирование зависит от контекста. Тестирование выполняется по-разному, в зависимости от контекста. Допустим, ПО, в котором критически важна безопасность, тестируется не так, как сайт электронной коммерции.
  7. Отсутствие ошибок не означает, что система готова к использованию. Обнаружение и исправление дефектов не помогут, если созданная система не подходит пользователю и не удовлетворяет его ожиданиям и потребностям.

Как понять, когда нужно начинать тестирование?

Чем раньше обнаружен дефект, тем дешевле обходится его исправление, поэтому начинать тестирование нужно как можно раньше. Например, статическое тестирование (до фактического получения ПО) делает проще динамическую стадию. На ранних стадиях проще изменить тест-дизайн и т.д.

Что такое баги?

Баг (bug) или дефект — это отклонение фактического результата от ожидаемого, изъян в компоненте или системе, который может привести компонент или систему к невозможности выполнить требуемую функцию. Баги находят на этапе тестирования, затем нужна отладка (дебаггинг), которую выполняет разработчик. Отладка (debugging) — процесс поиска, анализа и устранения причин отказов в программном обеспечении. После отладки исправление требует новой проверки тестировщиком.

Какие инструменты инженер по тестированию обычно использует в своей работе?

Тестировщик самостоятельно определяет скорость работы, при которой он наиболее внимателен и эффективен. Как специалист, он должен уметь проводить ревизию своих активностей для выявления возможности ускорения действий.

Базовые инструменты тестировщика:

  • Текстовый редактор для поиска, конвертации и сравнения файлов (Notepad++, PSPad и др.),
  • Xml-редактор (Altova XML Spy (работа с xml и xsd), XMLPad и др.),
  • Инструмент для работы со снимками экранов (Snipping Tool, Snagit, GreenShoot, ScreenHunter и др.),
  • Инструмент для записи видео с содержимым экрана (CamStudio, Ashampoo Snap, Free Screen Video Recorder и др.),
  • Инструмент для сравнения графических файлов (ImageDiscerner, FastStone Image Viewer, ImageDupeless, Graf2 Free rus),
  • Файловый менеджер (Total Commander, Far Manager, TrolCommander, Free Commander),
  • Планировщик задач (MS Outlook, Redmine и др.).

Как можно оценить качество ПО? 

Оценка программного обеспечения производится согласно международному стандарту ISO 9126. ПО будет качественным, если можно обеспечить его функциональность, надежность, удобство использования, удобство сопровождения, производительность и переносимость. Чем больше атрибутов качества можно реализовать или поддержать (для производительности — это соответствие стандартам, временная эффективность и эффективность использования ресурсов и т.д.), тем выше будет качество ПО. У атрибутов есть и численные показатели — метрики, которые позволяют измерять прогресс в достижении качества.

Что такое тест-план и что в нем должно быть написано?

Тест-план — это документ, описывающий весь объем работ по тестированию, начиная с описания объекта, стратегии, расписания, критериев начала и окончания тестирования, до необходимого в процессе работы оборудования, специальных знаний, а также оценки рисков с вариантами их разрешения.

Как и в случае с тестированием, в профессиональной литературе можно встретить и другие определения тест-плана. Одно из самых коротких: тест-план — это документ, обобщающий и координирующий тестирование. А одно из самых длинных: тест-план — это документ, описывающий масштаб, подход, ресурсы и график тестирования, в котором определены тестовые элементы, отдельные части функционала, тестовые задания, специалисты, которые будут проводить конкретные тесты, и любые риски, требующие дополнительного планирования.

Основные разделы тест-плана:

  • Назначение,
  • Объект тестирования,
  • Тестовая стратегия,
  • Применяемые виды тестирования,
  • Условия проведения тестирования,
  • Критерии начала и завершения тестирования,
  • План-график проведения тестирования,
  • Ресурсы, необходимые для выполнения тестирования,
  • Возможные риски.

Что такое тест-дизайн и зачем он нужен?

Тест-дизайн — одна из наиболее творческих деятельностей в IT. Это этап процесса тестирования ПО, на котором, в соответствии с определенными ранее критериями качества и целями тестирования, проектируются и создаются тестовые случаи (тест-кейсы).

Задачи тест-дизайна:

  • Оптимизация поиска критичных ошибок (с целью раннего их обнаружения),
  • Мониторинг процесса тестирования и качества продукта,
  • Формализованные и понятные последовательности действий, подходящие для начинающих инженеров по тестированию,
  • Уменьшение нагрузки на тестировщиков.

Что является результатом работы инженера по тестированию?

Для большинства тестировщиков основной продукт работы — отчет о проделанных испытаниях в разрезе общего количества пройденных тестовых сценариев с их результатами, а также список открытых дефектов с указанием их критичности.

Есть ли какие-то книги, которые могут быть полезны новичку в тестировании?

Рекомендуем к прочтению следующие книги:

  • «Краткие основы тестирования программного обеспечения», А. Коробейник;
  • «Тестирование программного обеспечения. Базовый курс», С.Куликов;
  • «Тестирование дот ком», Р. Савин;
  • «Тестирование программного обеспечения. Фундаментальные концепции менеджмента бизнес-приложений», С. Каннер, Д. Фолк, Е. К. Нгуен;
  • «Ключевые процессы тестирования. Планирование, подготовка, проведение, совершенствование», Р. Блэк;
  • «Автоматизированное тестирование программного обеспечения», Э. Дастин, Д. Рэшка, Д. Пол;
  • «Как тестируют в Google», Д. Уиттакер, Д. Арбон.
  • Юлмарт
  • МТС Банк
  • Сбербанк
  • Центральный банк Российской Федерации
  • Хоум Кредит энд Финанс Банк
  • Sanofi
  • Филип Морис Интернэшнл
  • Спутник
  • ВТБ 24
  • ДжиИ Мани Банк
  • Альфа-Банк
  • Эльдорадо
  • Procter&Gamble
  • Газпромбанк
  • Ренессанс Жизнь
  • Мегафон
  • Райффайзенбанк
  • ТрансКредитБанк
  • ОТП Банк
  • МТС
Система Orphus