Академический Документы
Профессиональный Документы
Культура Документы
Тестирование Black-Box
Методика тестирования без каких-либо знаний о внутренней работе приложения называется
«черным ящиком». Тестировщик не обращает внимания на архитектуру системы и не имеет
доступа к исходному коду. Как правило, при выполнении теста с «черным ящиком» он будет
взаимодействовать с пользовательским интерфейсом системы, предоставляя входные данные и
анализируя выходы, не зная, как и где обрабатываются входы.
Метод «черного ящика» выгодно применять, если вы ищете:
○ неправильно реализованные функции приложения или сервиса;
○ ошибки в пользовательском интерфейсе;
○ ошибки в функциональных спецификациях.
Достоинства метода:
○ тестирование методом «черного ящика» позволяет найти ошибки, которые невозможно
обнаружить методом «белого ящика». Простейший пример: разработчик забыл добавить
какую-то функциональность. С точки зрения кода все работает идеально, но с точки
зрения спецификации это – сверх критичный баг.
○ «Черный ящик» позволяет быстро выявить ошибки в функциональных спецификациях
(в них описаны не только входные значения, но и то, что мы должны в итоге получить).
Если полученный при тестировании результат отличается от заявленного в
спецификации, то у нас появляется повод для общения с аналитиком для уточнения
конечного результата.
○ тестировщику не нужна дополнительная квалификация. Часто мы пользуемся
различными сервисами и приложениями, не очень в них разбираясь. Для того, чтобы
открыть инстаграм и обработать свою фотографию, нам совсем не нужно знать способ
реализации фильтров. Мы хотим открыть фотографию, выбрать фильтр и получить
красивую картинку на выходе. Задача тестировщика, который тестирует эту функцию в
инстаграм, – убедиться, что пользователь получит эту самую красивую картинку в
соответствии с выбранным фильтром. При этом нам совсем не обязательно иметь какую-
либо специализацию – нужны лишь телефон и инстаграм.
○ тестирование проходит «с позиции пользователя». Пользователь всегда прав, он
конечный потребитель практически любого ПО, а значит, ему должно быть удобно,
комфортно и понятно.
○ составлять тест-кейсы можно сразу после подготовки спецификации. Это значительно
сокращает время на тестирование: к тому моменту, как продукт готов к тестированию,
тест-кейсы уже разработаны, и тестировщик может сразу приступать к проверке.
Недостатки метода:
○ основным недостатком метода «черного ящика» является возможность пропуска
границ и переходов, которые не очевидны из спецификации, но есть в реализации кода
(собственно, это и заставляет тестировщиков использовать метод «белого ящика»).
Вспоминается случай, когда система получала котировки валют с биржи Forex и
округляла до 3 знаков после запятой. Система успешно прошла тестирование методом
«черного ящика» (так как ни одна валюта не выходила за соответствующие границы) и
хорошо работала до тех пор, пока курс доллара к биткоин не вышел за границы 1000
долларов. Тестирование «белым ящиком» выявило бы ошибку: специалист увидел бы,
что коэффициент конверсии валюты ограничен 3 знаками.
○ можно протестировать только небольшое количество возможных вводных (входящих)
значений, многие варианты остаются без проверки.
○ тесты могут быть избыточными, если разработчик уже проверил данную
функциональность (например, Unit-тестом).
○ при отсутствии четкой и полной спецификации проектировать тесты и тест-сценарии
оказывается затруднительно.
Тестирование White-box
Проверка белого ящика - это подробное исследование внутренней логики и структуры кода.
Тестирование с использованием белого ящика также называется тестированием стекла или
открытым тестированием . Чтобы выполнить тестирование белого ящика в приложении,
тестировщик должен знать внутреннюю работу кода, должен уметь заглянуть внутрь него и
выяснить, какой блок кода ведет себя некорректно. Поэтому, как правило, таким видом
тестирования на проектах занимаются сами программисты.
Достоинства метода:
– тестирование может производиться на ранних этапах: нет необходимости ждать создания
пользовательского интерфейса;
– можно провести более тщательное тестирование, с покрытием большого количества путей
выполнения программы.
Недостатки метода:
– для выполнения тестирования белого ящика необходимо большое количество специальных
знаний;
– при использовании автоматизации тестирования на этом уровне, поддержка тестовых
скриптов может оказаться достаточно накладной, если программа часто изменяется.
Тестирование Gray-box
Тестирование Gray-box - это метод тестирования программного продукта или приложения с
частичным знанием его внутреннего устройства. Для выполнения тестирования «серого
ящика» нет необходимости в доступе тестировщика к исходному коду. Тесты пишутся на
основе знания алгоритма, архитектуры, внутренних состояний или других высокоуровневых
описаний поведения программы.
Достоинства метода:
○ тестирование серого ящика включает в себя плюсы тестирования «черного» и «белого».
Другими словами, тестировщик смотрит на объект тестирования с позиции «черного»
ящика, но при этом проводит анализ на основе тех данных, что он знает о системе;
○ тестировщик может проектировать и использовать более сложные сценарии
тестирования;
○ тестировщик работает совместно с разработчиком, что позволяет на начальном этапе
убрать избыточные тест-кейсы. Это сокращает время функционального и
нефункционального тестирования и положительно влияет на общее качество продукта;
○ предоставляет разработчику достаточно времени для исправления дефектов.
Недостатки метода:
○ возможность анализа кода и тестового покрытия ограничена, так как доступ к исходному
коду отсутствует;
○ тесты могут быть избыточными в том случае, когда разработчик также проверяет свой
код Unit-тестами;
○ нельзя протестировать все возможные потоки ввода и вывода, поскольку на это
требуется слишком много времени.
Таким образом, метод «серого ящика» помогает в следующих случаях:
○ когда нет возможности использовать «белый ящик»;
○ когда необходимо более полное покрытие по сравнению с «черным ящиком».
4. Тестирование требований
Что такое «требование»?
Требование (requirement) — описание того, какие функции и с соблюдением каких условий
должно выполнять приложение в процессе решения полезной для пользователя задачи.
Требования являются отправной точкой для определения того, что проектная команда будет
проектировать, реализовывать и тестировать. Элементарная логика говорит нам, что если в
требованиях что-то «не то», то и реализовано будет «не то», т.е. колоссальная работа
множества людей будет выполнена впустую.
Важно отметить, что требования:
1. позволяют понять, что и с соблюдением каких условий система должна делать;
2. предоставляют возможность оценить масштаб изменений и управлять изменениями;
3. являются основой для формирования плана проекта (в том числе плана тестирования);
4. помогают предотвращать или разрешать конфликтные ситуации;
5. упрощают расстановку приоритетов в наборе задач;
6. позволяют объективно оценить степень прогресса в разработке проекта.
Поскольку мы постоянно говорим «документация и требования», а не просто «требования»,
то стоит рассмотреть перечень документации, которая должна подвергаться тестированию в
процессе разработки ПО.
В общем случае документацию можно разделить на два больших вида в зависимости от
времени и места её использования :
1. Продуктная документация (product documentation, development documentation) -
используется проектной командой во время разработки и поддержки продукта. Она
включает:
- план проекта (project management plan) и в том числе тестовый план (test
plan51);
- требования к программному продукту (product requirements document, PRD) и
функциональные спецификации (functional specifications document, FSD;
software requirements specification, SRS);
- архитектуру и дизайн (architecture and design);
- тест-кейсы и наборы тест-кейсов (test cases, test suites);
- технические спецификации (technical specifications), такие как схемы баз
данных, описания алгоритмов, интерфейсов и т.д.
2. Проектная документация (project documentation) включает в себя как продуктную
документацию, так и некоторые дополнительные виды документации и используется
не только на стадии разработки, но и на более ранних и поздних стадиях (например, на
стадии внедрения и эксплуатации). Она включает:
- пользовательскую и сопроводительную документацию (user and accompanying
documentation), такую как встроенная помощь, руководство по установке и
использованию, лицензионные соглашения и т.д.
- маркетинговую документацию (market requirements document, MRD), которую
представители разработчика или заказчика используют как на начальных этапах (для
уточнения сути и концепции проекта), так и на финальных этапах развития проекта
(для продвижения продукта на рынке).
Requirements start life on the customer's side. Their collection and identification is carried out using
the following techniques:
Interview. The most universal way to identify requirements is to communicate between the project
specialist and the customer's representative. The interview can take place in the classical sense of the
word (conversation in the form of a "question-answer"), in the form of correspondence, etc. The main
thing here is that there are two key figures - the interviewee and the interviewer (although this does
not exclude the presence of an “audience of listeners”, for example, in the form of persons included in
the copy of the correspondence).
Working with focus groups. It can act as a variant of the "extended interview", where the source of
information is not one person, but a group of people.
Questioning. This option for identifying requirements is highly controversial. if implemented
incorrectly, it can lead to zero results at volumetric costs. At the same time, if properly organized, the
questionnaire can automatically collect and process a huge number of responses from a huge number
of respondents. The key success factor is the correct formulation, the correct audience selection and
the correct presentation of the questionnaire.
Seminars and brainstorming. Seminars allow a group of people to very quickly exchange information
(and clearly demonstrate certain ideas), and also work well with interviews, questionnaires,
prototyping and modeling - including for discussing results and forming conclusions and decisions.
Brainstorming can be done as part of a workshop or as a separate activity. It allows you to generate a
large number of ideas in the shortest possible time, which in the future can be slowly considered from
the point of view of their use for the development of the project.
Observation. It can be expressed both in literal observation of certain processes, and in the inclusion
of a project specialist in these processes as a participant. On the one hand, observation allows you to
see what the interviewees, respondents and representatives of focus groups can keep silent about, but
on the other hand, it takes a lot of time and most often allows you to see only part of the processes.
Prototyping. It consists in demonstrating and discussing intermediate versions of the product (for
example, the design of the site pages can be first presented in the form of pictures, and only then laid
out). This is one of the best ways to find a common understanding and clarification of requirements,
but it can lead to serious additional costs in the absence of special tools (allowing rapid prototyping)
and too early application (when the requirements are not yet stable, and there is a high probability of
creating a prototype that has little in common with what the customer wanted).
Analysis of documents. Works well when subject matter experts are (temporarily) unavailable, as well
as subject areas that have well-established, well-established regulatory documentation. This technique
also includes simply the study of documents regulating business processes in the subject area of the
customer or in a specific organization, which allows you to acquire the knowledge necessary for a
better understanding of the essence of the project.
Modeling processes and interactions. Can be applied to both “business processes and interactions”
and “technical processes and interactions”. This technique requires a highly qualified business
analyst, since associated with processing a large amount of complex information.
Self-description. It is not so much a technique for identifying requirements as a technique for fixing
and formalizing them. It is very difficult to try to "come up with the requirements for the customer"
yourself, but in a calm atmosphere you can independently process the collected information and
carefully arrange it for further discussion and clarification.
Интервью. Самый универсальный способ определения требований - общение специалиста
проекта и представителя заказчика. Интервью может проходить в классическом понимании
этого слова (беседа в форме «вопрос-ответ»), в форме переписки и т. Д. Главное здесь то, что
есть две ключевые фигуры - интервьюируемый и собеседник. интервьюер (хотя это не
исключает наличия «аудитории слушателей», например, в виде лиц, включенных в копию
переписки).
Работа с фокус-группами. Он может действовать как вариант «расширенного интервью», когда
источником информации является не один человек, а группа людей.
Анкетирование. Этот вариант определения требований вызывает большие споры. при
неправильной реализации это может привести к нулевым результатам при объемных затратах.
В то же время, при правильной организации анкета может автоматически собирать и
обрабатывать огромное количество ответов от огромного количества респондентов. Ключевым
фактором успеха является правильная формулировка, правильный выбор аудитории и
правильное оформление анкеты.
Семинары и мозговой штурм. Семинары позволяют группе людей очень быстро обмениваться
информацией (и четко демонстрировать определенные идеи), а также хорошо работать с
интервью, анкетами, прототипированием и моделированием, в том числе для обсуждения
результатов и формирования выводов и решений. Мозговой штурм можно провести как часть
семинара или как отдельное мероприятие. Это позволяет в кратчайшие сроки сгенерировать
большое количество идей, которые в будущем можно будет постепенно рассматривать с точки
зрения их использования для развития проекта.
Наблюдение. Это может выражаться как в буквальном наблюдении за определенными
процессами, так и во включении специалиста проекта в эти процессы в качестве участника. С
одной стороны, наблюдение позволяет увидеть, о чем могут молчать интервьюируемые,
респонденты и представители фокус-групп, но с другой стороны, это занимает много времени
и чаще всего позволяет увидеть только часть процессов.
Прототипирование. Он заключается в демонстрации и обсуждении промежуточных версий
продукта (например, дизайн страниц сайта может быть сначала представлен в виде картинок, а
уже потом выложен). Это один из лучших способов найти общее понимание и разъяснение
требований, но он может привести к серьезным дополнительным расходам из-за отсутствия
специальных инструментов (позволяющих быстрое создание прототипов) и слишком раннего
применения (когда требования еще не стабильны и высока вероятность создания прототипа,
имеющего мало общего с тем, что хотел заказчик).
Анализ документов. Хорошо работает, когда профильные эксперты недоступны (временно), а
также в предметных областях, которые имеют хорошо отработанную нормативную
документацию. Также эта методика включает в себя просто изучение документов,
регламентирующих бизнес-процессы в предметной области заказчика или в конкретной
организации, что позволяет получить знания, необходимые для лучшего понимания сути
проекта.
Моделирование процессов и взаимодействий. Может применяться как к «бизнес-процессам и
взаимодействиям», так и к «техническим процессам и взаимодействиям». Эта техника требует
высококвалифицированного бизнес-аналитика, поскольку связана с обработкой большого
количества сложной информации.
Самоописание. Это не столько метод определения требований, сколько метод их фиксации и
формализации. Самостоятельно «придумать требования к заказчику» очень сложно, но в
спокойной обстановке можно самостоятельно обработать собранную информацию и аккуратно
оформить ее для дальнейшего обсуждения и уточнения.