Виды тестирования
Классификаций есть много: по разным критериям, от разных авторов. Сегодня рассмотрим не самую обширную, довольно классическую классификацию.
Цель
Каждый программный продукт должен выполнять одну или несколько ключевых задач. От приложения с гео-картами мы ожидаем точной ориентации в пространстве, от сайта интернет-магазина ― корректного поиска товаров по заданным параметрам и т. д. Но те же программные продукты мы можем протестировать и с точки зрения дизайна.
Таким образом, анализ ПО с позиции его ключевых или вспомогательных функций определяет тип тестирования:
- Функциональное
- Нефункциональное
Функциональное тестирование направлено на проверку того, какие функции ПО реализованы, и того, насколько верно они реализованы.
Нефункциональное – проверка корректности работы нефункциональных требований. Оценивается, КАК программный продукт работает. Эта проверка включает в себя следующие виды:
- Тестирование производительности – работа ПО под определённой нагрузкой.
- Тестирование пользовательского интерфейса – удобство пользователя при взаимодействии с разными параметрами интерфейса (кнопки, цвета, выравнивание и т. д.).
- Тестирование UX – правильность логики использования программного продукта.
- Тестирование защищенности – определение безопасности ПО: защищено ли оно от атак хакеров, несанкционированного доступа к данным и т. д.
- Инсталляционное тестирование – оценка вероятности возникновения проблем при установке, удалении, а также обновлении ПО.
- Тестирование совместимости – тестирование работы программного продукта в определённом окружении.
- Тестирование надежности – работа программы при длительной средней ожидаемой нагрузке.
- Тестирование локализации –оценка правильности версии программного продукта (языковой и культурный аспекты).
Степень автоматизации
В зависимости от того, используют ли тестировщики дополнительные программные средства для тестирования приложений или программ, тестирование бывает:
- Мануальное (ручное) – без использования дополнительных программных средств, т. е. «вручную».
- Автоматизированное – с использованием программных средств (более детально в описании курса по автоматизации тестирования ПО).
Каждый из подходов имеет свои преимущества и недостатки. Ручное тестирование проще освоить, оно широко применяется на проектах всех типов, но мануальные проверки отличаются монотонностью. А вот написание тестов даёт больше возможностей для творческой реализации, но автоматизация требует базовых навыков программирования.
Позитивность сценария
Этот подход определяет поведение системы в привычных и экстремальных условиях.
- Позитивная проверка – оценка ожидаемого поведения. Это тестирование проводится в первую очередь, ведь позволяет определить корректность работы программы.
- Негативная – определение устойчивости системы в нестандартной ситуации. Например, неожиданный сценарий взаимодействия пользователя с интерфейсом.
Эти типы тестирования нередко проводятся параллельно. Ведь работая над некоторой функциональностью, тестировщику проще оценить её поведение и в стандартных, и в нестандартных условиях.
Доступ к коду программного продукта
В процессе тестирования инженер может работать с ПО, не обращаясь к его коду, а может определить правильность работы, взглянув на код. По доступу к коду программного продукта тестирование делится на:
- Тестирование «белого ящика» – с доступом к коду.
- Тестирование «черного ящика» – без доступа к коду продукта.
- Тестирование «серого ящика» – на основе ограниченного знания внутренней структуры ПО. Часто говорят, что это смесь тестирования «белого ящика» и «чёрного ящика», но это в корне неверно. В данном случае тестировщик не работает с кодом программного продукта, но он знаком с внутренней структурой программы и взаимодействием между компонентами.
Уровень
Этот пункт определяет объект тестирования.
- Модульное / юнит-тестирование – проверка корректной работы отдельных единиц ПО, модулей. Этот вид тестирования могут выполнять сами разработчики.
- Интеграционное тестирование – проверка взаимодействия между несколькими единицами ПО.
- Системное – проверка работы приложения целиком.
- Приёмочное – оценка соответствия заявленным требованиям к программному продукту.
Исполнитель
От объекта тестирования движемся к его субъекту. Вы могли слышать об альфа- и бета-тестировании. А поучаствовать в одном из них можно, даже не будучи тестировщиком. Итак, по исполнителю тестирование делится на:
- Альфа-тестирование – проверка программного продукта на поздней стадии разработки. Проводится разработчиками или тестировщиками.
- Бета-тестирование – оценка ПО перед выходом на рынок в фокус-группе или добровольцами. Отзывы собираются, анализируются и учитываются при внесении правок.
Формальность
Этот пункт определяет подготовленность тестировщика перед началом проверки.
- Тестирование по тестам – использование написанных заранее тест-кейсов.
- Исследовательское тестирование – одновременная разработка тестов и их использование.
- Свободное тестирование – проверка качества без разработки тестов и написания документации. Основывается на интуиции и опыте тестировщика.
Начинающие тестировщики редко работают на свободном уровне. А вот опытные QA-специалисты могут позволить себе проверку без дополнительной подготовки.
Важность
- Дымовое тестирование – проверка самой важной функциональности программного продукта.
- Тестирование критического пути – проверка функциональности, используемой типичными пользователями в повседневной деятельности.
- Расширенное тестирование – проверка всей заявленной функциональности.
QA-область очень многообразна. Помимо отличий в технологии оценки качества, тип тестирования может отличаться индустрией или видом программного продукта.
Задание: Нарисовать карту знаний по видам и типам тестирования. Например, вот в таком виде:
Присылайте свои фото/скрины в л/с в пн на нашей паре(пока еще пара у меня будет с Вами удаленно, в следующий понедельник планирую выйти в очный режим).