Тестирование методом черного ящика (black box testing): Тестирование, функциональное или нефункциональное, без знания внутренней структуры компонента или системы (ISTQB).
Тестирование на основе спецификации (specification-based testing): Тестирование, основным базисом которого являются внешние вводы и выводы элемента тестирования, обычно на основе спецификации, а не ее реализация в исходном коде или исполнимом программном обеспечении. (ГОСТ 56920)
Другие названия: Behavioral Testing, Specification-Based Testing, Input-Output Testing, непрозрачный ящик (opaque-box), закрытый ящик (closed-box), тестирование на основе спецификации (specification-based testing) или тестирование с глазу на глаз (eye-to-eye testing).
Тестирование методом «черного ящика» - это стратегия, в которой тестирование основано исключительно на требованиях и спецификациях, при этом мы не знаем, как устроена внутри тестируемая система и работаем исключительно с внешними интерфейсами тестируемой системы или компонента. Тестирование черного ящика может быть применено на всех уровнях - модульном, интеграционном, системном и приемочном.
Functional Testing: этот тип касается функциональных требований или спецификаций приложения (functional requirements or specifications). Здесь различные действия или функции системы тестируются путем предоставления входных данных и сравнения фактического выхода с ожидаемым выходом. Например, когда мы тестируем раскрывающийся список, мы нажимаем на него и проверяем, что он раскрывается и все ожидаемые значения отображаются. Вот несколько основных типов функционального тестирования:
- Smoke Testing;
- Sanity Testing;
- Integration Testing;
- System Testing;
- Regression Testing;
- User Acceptance Testing;
Non-Functional Testing: Помимо функциональности требований, есть несколько нефункциональных аспектов, которые необходимо протестировать, чтобы улучшить качество и производительность приложения. Несколько основных типов нефункционального тестирования включают:
- Usability Testing;
- Load Testing;
- Performance Testing;
- Compatibility Testing;
- Stress Testing;
- Scalability Testing;
Преимущества Black box testing:
- Тестировщику не обязательно иметь технический опыт. Важно проводить тестирование, оказываясь на месте пользователя и думая с его точки зрения;
- Тестирование можно начинать после завершения разработки проекта / приложения. И тестировщики, и разработчики работают независимо, не мешая друг другу;
- Это более эффективно для больших и сложных приложений;
- Дефекты и несоответствия можно выявить на ранней стадии тестирования;
Недостатки Black box testing:
- Без каких-либо технических или программных знаний есть вероятность пропустить возможные условия тестируемого сценария;
- В оговоренное время есть вероятность протестировать не все входные и выходные значения;
- Полный Test Coverage невозможен для больших и сложных проектов;
Парадигмы тестирования методом черного ящика (Paradigms of Black Box Software Testing)
Парадигма создает основное направление мышления - она дает понимание и направление для дальнейших исследований или работы. Парадигма тестирования будет определять типы тестов, которые (для человека, работающего в рамках этой парадигмы) актуальны и интересны. Список парадигм:
- Domain driven
- Ключевые идеи:
- «Попробуйте диапазоны и варианты»;
- «Разделите мир на классы»;
- Основной вопрос или цель:
- Стратегия стратифицированной выборки. Разделите большое пространство возможных тестов на подмножества. Выберите лучших представителей из каждого набора;
- Примеры кейсов:
- Анализ эквивалентности простого числового поля;
- Тестирование совместимости принтеров;
- Сильные стороны:
- Нахождение ошибок с наибольшей вероятностью с помощью относительно небольшого набора тестов;
- Интуитивно понятный подход, хорошо обобщает;
- Слепые зоны:
- Ошибки, выходящие за рамки границ, или в очевидных особых случаях;
- Кроме того, фактические домены часто остаются неизвестными;
- Ключевые идеи:
- Stress driven
- Ключевые идеи:
- «Сокруши продукт»;
- «Проведи его через отказы;
- Основной вопрос или цель:
- Узнать о возможностях и слабых сторонах продукта, проведя его через отказ и за его пределами. Что сбои в экстремальных случаях говорят нам об изменениях, необходимых в работе программы в нормальных случаях?
- Примеры кейсов:
- Большие объемы данных, подключения устройств, длинные цепочки транзакций;
- Условия нехватки памяти, сбои устройств, вирусы и другие проблемы;
- Сильные стороны:
- Выявление слабых мест, в т.ч. дыр в безопасности;
- Слепые зоны:
- Слабости, которые не становятся более заметными из-за стресса;
- Ключевые идеи:
- Specification driven
- Ключевые идеи:
- «Проверяйте каждое требование»;
- Основной вопрос или цель:
- Проверяйте соответствие (conformance) продукта каждому заявлению в каждой спецификации, документе с требованиями и т. д.;
- Примеры кейсов:
- Матрица прослеживаемости, отслеживает тестовые случаи, связанные с каждым элементом спецификации;
- Сильные стороны:
- Критическая защита от гарантийных претензий, обвинений в мошенничестве, потери доверия со стороны клиентов;
- Слепые зоны:
- Любые проблемы, не указанные в спецификациях или плохо решенные в спецификациях;
- Ключевые идеи:
- Risk driven
- Ключевые идеи:
- «Сначала найди наибольшие ошибки»;
- Основной вопрос или цель:
- Расставьте приоритеты при тестировании с точки зрения относительного риска различных областей или проблем, которые мы могли бы проверить;
- Примеры кейсов:
- Переформулированный анализ классов эквивалентности;
- Тестируйте в порядке частоты использования;
- Стресс-тесты, тесты на обработку ошибок, тесты безопасности, тесты для поиска прогнозируемых или предполагаемых ошибок;
- Образец из списка предсказанных ошибок;
- Сильные стороны:
- Оптимальная приоритезация (при условии, что мы правильно идентифицируем и расставляем по приоритетам риски);
- Тесты высокой мощности;
- Слепые зоны:
- Риски, которые не были идентифицированы или которые на удивление более вероятны;
- Ключевые идеи:
- Random / statistical testing
- Ключевые идеи:
- «Объемное тестирование с новыми кейсами»;
- Основной вопрос или цель:
- Пусть компьютер создает, выполняет и оценивает огромное количество тестов;
- Примеры кейсов:
- Валидация функции или подсистемы (например, тестирование эквивалентности функций) на основе оракулов (Oracle-driven);
- Стохастическое (переход между состояниями) тестирование для выявления конкретных сбоев (ассерты, утечки и т. д.);
- Оценка статистической надежности;
- Частичный или эвристический оракул, чтобы найти некоторые типы ошибок без общей проверки;
- Сильные стороны:
- Регрессия не зависит каждый раз от одного и того же старого теста;
- Частичные оракулы могут быстро и дешево находить ошибки в молодом коде;
- Меньше вероятность пропустить невидимые извне внутренние оптимизации;
- Может обнаруживать сбои, возникающие из-за длинных сложных цепочек, которые было бы трудно создать в соответствии с запланированными испытаниями;
- Слепые зоны:
- Нужно уметь отличать pass от failure. Слишком много людей думают: «Not crash = not fail»;
- Кроме того, эти методы часто охватывают многие типы рисков, но затемняют необходимость в других тестах, которые не поддаются автоматизации;
- Ключевые идеи:
- Function Testing
- Ключевые идеи:
- «Модульное тестирование черного ящика»;
- Основной вопрос или цель:
- Тщательно проверяйте каждую функцию по очереди;
- Примеры кейсов:
- Таблица, тестируйте каждый элемент по отдельности;
- База данных, тестируйте каждый отчет по отдельности;
- Сильные стороны:
- Тщательный анализ каждого протестированного элемента;
- Слепые зоны:
- Упускает взаимодействия, пропускает исследование преимуществ предлагаемые программой;
- Ключевые идеи:
- Regression Testing
- Ключевые идеи:
- «Повторить тестирование после изменений»;
- Основной вопрос или цель:
- Управляйте рисками, связанными с тем, что (а) исправление ошибки не устраняет ошибку или (б) исправление (или другое изменение) имело побочный эффект (side effect);
- Примеры кейсов:
- Регрессия ошибок, регрессия старых исправлений, общая функциональная регрессия;
- Наборы автоматизированной регрессии графического интерфейса;
- Сильные стороны:
- Обнадеживает, укрепляет доверие, удобен для регуляторов;
- Слепые зоны:
- Все, что не вошло в регрессионную серию. Кроме того, поддержание этого стандартного списка может быть очень дорогостоящим;
- Ключевые идеи:
- Scenario / use case / transaction flow
- Ключевые идеи:
- «Делай что-нибудь полезное и интересное»;
- «Делайте одно за другим»;
- Основной вопрос или цель:
- Сложные случаи, отражающие реальное использование;
- Примеры кейсов:
- Оценивайте продукт на предмет соответствия бизнес-правилам, данным о клиентах и продукции конкурентов;
- Тестирование жизненного цикла / Life history testing (Hans Buwalda’s “soap opera testing”);
- Варианты использования (Use cases) - это более простая форма, часто основанная на возможностях продукта и пользовательской модели, а не на естественном наблюдении за системами такого типа;
- Сильные стороны:
- Сложные, реалистичные события. Может помогать справляться в ситуациях, которые слишком сложны для моделирования;
- Выявляет сбои, которые происходят (развиваются) с течением времени;
- Слепые зоны:
- Отказ одной функции может сделать этот тест неэффективным;
- Необходимо хорошо подумать, чтобы добиться хорошего покрытия;
- Ключевые идеи:
- User testing
- Ключевые идеи:
- Стремитесь к реализму;
- Давайте попробуем это с настоящими людьми (для разнообразия);
- Основной вопрос или цель:
- Выявить сбои, которые могут возникнуть по вине человека, то есть сбои в общей системе человек / машина / программное обеспечение;
- Примеры кейсов:
- Бета-тестирование;
- Собственные эксперименты с использованием стратифицированной выборки целевого рынка;
- Сильные стороны:
- Проблемы дизайна более достоверны;
- Может продемонстрировать, что некоторые аспекты продукта непонятны или приводят к высокому проценту ошибок при использовании;
- Внутренние тесты можно контролировать с помощью логов, видео, отладчиков и других инструментов;
- Внутренние тесты могут быть сосредоточены на областях / задачах, которые, по вашему мнению, являются (или должны быть) спорными;
- Слепые зоны:
- Покрытие не гарантировано (серьезные пропуски бета-тестирования, других пользовательских тестов);
- Тестовые примеры могут быть плохо спроектированы, тривиальны, вряд ли выявляют малозаметные ошибки;
- Бета-тестирование стоит денег;
- Ключевые идеи:
- Exploratory testing
- Ключевые идеи:
- «Интерактивное, одновременное исследование, разработка тестов и тестирование»;
- Основной вопрос или цель:
- ПО поступает тестировщику без документации. Тестировщик должен одновременно узнавать о продукте и о тестовых примерах / стратегиях, которые позволят выявить продукт и его дефекты;
- Примеры кейсов:
- Полное тестирование test-it-today;
- Сторонние компоненты;
- Горилла-тестинг;
- Сильные стороны:
- Продуманная стратегия получения результата в неизвестности;
- Стратегия выявления несоответствия ожиданиям клиентов;
- Слепые зоны:
- Чем меньше мы знаем, тем больше рискуем упустить.
- Ключевые идеи:
Источники: