Методология и практика тестирования по. · Автоматизированное тестирование (automated testing)

30.08.2019 Сотовые операторы

При создании типичного программного проекта около 50 % общего времени и более 50 % общей стоимости расходуется на тестирование. Эти цифры могут вызвать целую дискуссию, однако основным здесь является вопрос: как сократить расходы и повысить качество программного обеспечения?

Ручное тестирование (manual testing) - часть процесса тестирования на этапе контроля качества в процессе разработки программного обеспечения. Оно проводится тестировщиками или обычными пользователи путем моделирования возможных сценариев действия пользователя.

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

Ручное тестирование заключается в выполнении задокументированной процедуры, где описана методика выполнения тесто. Методика задает порядок тестов и для каждого теста – список значений параметров, который подается на вход со список результатов на выходе. Так как процедура предназначена для выполнения человеком, в ее описании для краткости могут использоваться некоторые значения по умолчанию, ориентированные на здравый смысл, или ссылки на информацию, хранящуюся в другом документе.

Пример фрагмента процедуры

  1. Подать на вход три разных целых числа;
  2. Запустить тестовое исполнение;
  3. Проверить, соответствует ли полученный результат таблице [ссылка на документ1] с учетом поправок [ссылка на документ2];
  4. Убедиться в понятности и корректности выдаваемой сопроводительной информации.

В этой процедуре тестировщик использует дополнительные документы и собственное понимание того, какую сопроводительную информацию считать “понятной и корректной”. Успех от использования процедурного подхода достигается в случае однозначного понимания тестировщиком всех пунктов процедуры. Например, в п.1 приведенной процедуры не уточняется, из какого диапазона должны быть заданы три целых числа, и не описывается дополнительно, какие числа считаются “разными”.

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

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

Данные методы способствуют существенному увеличению производительности и повышению надежности программы. Во-первых, они обычно позволяют раньше обнаружить ошибки, уменьшить стоимость исправления последних и увеличить вероятность того, что корректировка произведена правильно. Во-вторых, психология программистов, по-видимому, изменяется, когда начинается тестирование перед релизом. Возрастает внутреннее напряжение и появляется тенденция «исправлять ошибки так быстро, как только это возможно». В итоге программисты допускают больше промахов при корректировке ошибок, уже найденных во время тестирования, чем при корректировке ошибок, найденных на более ранних этапах. Кроме того, скептицизм связан с тем, что это «первобытный метод». Сейчас стоимость машинного времени очень низка, а стоимость труда тестировщиков высока и ряд руководителей пойдут на все, чтобы сократить расходы. Однако, есть другая сторона ручного тестирования – при тестировании за компьютером причины ошибок выявляются только в программе, а самая глубокая их причина – мышление программиста, как правило, не претерпевает изменений, при ручном же тестировании, программист глубоко анализирует свой код, попутно выявляя возможные пути его оптимизации, и изменяет собственный стиль мышления, повышая квалификацию. Таким образом, можно прийти к выводу, что ручное тестирование можно и нужно проводить на первичном этапе, особенно, если нет прессинга времени и бюджета.

Сравнение ручного и автоматизированного подхода к тестированию

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

Ручное Автоматизированное
Задание входных значений Гибкость в задании данных. Позволяет использовать разные значения на разных циклах прогона тестов, расширяя покрытие Входные значения строго заданы
Проверка результата Гибкая, позволяет тестировщику оценивать нечетко сформулированные критерии Строгая. Нечетко сформулированные критерии могут быть проверены только путем сравнения с эталоном
Повторяемость Низкая. Человеческий фактор и нечеткое определение данных приводят к неповторяемости тестирования Высокая
Надежность Низкая. Длительные тестовые циклы приводят к снижению внимания тестировщика Высокая, не зависит от длины тестового цикла
Чувствительность к незначительным изменениям в продукте Зависит от детальности описания процедуры. Обычно тестировщик в состоянии выполнить тест, если внешний вид продукта и текст сообщений несколько изменились Высокая. Незначительные изменения в интерфейсе часто ведут к коррекции эталонов
Скорость выполнения тестового набора Низкая Высокая
Возможность генерации тестов Отсутствует. Низкая скорость выполнения обычно не позволяет исполнить сгенерированный набор тестов Поддерживается

Инспекции и сквозные просмотры

Инспекции исходного текста и сквозные просмотры являются основными методами ручного тестирования. Так как эти два метода имеют много общего, они рассматриваются здесь совместно. Инспекции и сквозные просмотры включают в себя чтение или визуальную проверку программы группой лиц. Оба метода предполагают проведение подготовительной работы. Завершающим этапом является «обмен мнениями» – собрание, проводимое участниками проверки. Цель такого собрания – нахождение ошибок, но не их устранение (т. е. тестирование, а не отладка). Программа, тестируется не автором, а другими людьми и фактически «инспекция» и «сквозной просмотр» – просто новые названия старого метода «проверки за столом», однако они более эффективны потому что в процессе участвует не только автор программы, но и другие лица. Результатом использования этих методов является, обычно, точное определение природы ошибок. К тому же этим методом можно обнаруживать группы ошибок, что позволяет в дальнейшем корректировать сразу несколько ошибок.

Инспекции исходного текста это набор процедур и приемов обнаружения ошибок при изучении текста группой тестировщиков. Во время инспекции исходного текста внимание сосредоточено на методах, процедурах, формах выполнения и т. д. Группа включает обычно четыре человека, один из которых выполняет функции председателя. Председатель должен быть компетентным программистом, но не автором программы; он не должен быть знаком с ее деталями. В обязанности председателя входят подготовка материалов для заседаний инспектирующей группы и составление графика их проведения, ведение заседаний, регистрация всех найденных ошибок и принятие мер по их последующему исправлению.

Инспекционное заседание разбивается на две части:

  1. Программиста просят рассказать о логике работы программы. Во время беседы возникают вопросы, преследующие цель обнаружения ошибки. Практика показала, что даже только чтение своей программы слушателям представляется эффективным методом обнаружения ошибок и многие ошибки находит сам программист, а не другие члены группы.
  2. Программа анализируется по списку вопросов для выявления исторически сложившихся общих ошибок программирования. Ее участники должны сосредоточить свое внимание на нахождении ошибок, а не на их корректировке. Корректировка ошибок выполняется программистом после инспекционного заседания. Список ошибок анализируется и они распределяются по категориям, что позволяет совершенствовать его с целью повышения эффективности будущих инспекций. Можно вести учет типов ошибок, на основании которого следует проводить дополнительную стажировку программиста в слабых областях. Процесс инспектирования в дополнение к своему основному назначению, выполняет еще ряд полезных функций. Результаты инспекции позволяют программисту увидеть сделанные им ошибки и способствуют его обучению на собственных ошибках, он обычно получает возможность оценить свой стиль программирования и выбор алгоритмов и методов тестирования. Остальные участники приобретают опыт, рассматривая ошибки и стиль программирования других программистов. Инспекция является способом раннего выявления наиболее склонных к ошибкам частей программы, позволяющим сконцентрировать внимание на этих частях в процессе выполнения тестирования.

Сквозной просмотр, представляет собой набор процедур и способов обнаружения ошибок, осуществляемых группой лиц, просматривающих текст программы. Метод имеет много общего с процессом инспектирования, но их процедуры несколько отличаются и в нем используются другие методы обнаружения ошибок. Сквозной просмотр проводится как непрерывное заседание, группа состоит из 3–5 человек. Процедура отличается от процедуры инспекционного заседания тем, что участники «выполняют роль компьютера». Комиссии предлагают небольшое число написанных на бумаге тестов, представляющих собой наборы входных данных и ожидаемых выходных данных для программы или модуля. Тестовые данные подвергаются обработке в соответствии с логикой программы, состояние программы и значения переменных отслеживается на бумаге или доске.Тесты сами по себе не играют критической роли, а служат средством для первоначального понимания программы и основой для вопросов программисту о логике проектирования и принятых допущениях.

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

В этом разделе мы опишем различные виды тестирования программного обеспечения. Различные виды тестирования ПО проводятся для достижения разных целей при тестировании программного приложения. Вы также можете прочитать о различных методах тестирования программного обеспечения, которые могут быть связаны с различными видами тестирования ПО. Наши помогут Вам стать специалистом в данной области.

Ad-hoc тестирование

Этот вид тестирования ПО является неформальным и неструктурированным и может выполняться любым заинтересованным лицом, без ссылок на какие-либо тестовые сценарии или тестовые документы.

Лицо, проводящее Ad-hoc-тестирование, хорошо понимает рабочие процессы приложения, при этом пытается найти дефекты и взломать ПО . Специальные проверки предназначены для обнаружения дефектов, которые не были обнаружены в существующих тестовых случаях.

Приемочное тестирование

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

Что такое приемочное тестирование в Agile?

Тестирование доступности

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

Agile тестирование

Agile Testing — это вид тестирования программного обеспечения, который учитывает гибкий подход и методы разработки программного обеспечения. В среде разработки Agile тестирование является неотъемлемой частью разработки ПО и выполняется параллельно с написанием кода. Agile тестирование позволяет проводить постепенное написание кода и его тестирование.

Тестирование API

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

Автоматизированное тестирование

Это подход к тестированию, который использует инструменты тестирования и / или программирование для запуска тестовых примеров с использованием программного обеспечения или специально разработанных тестовых утилит. Большинство автоматизированных средств представляют собой средства записи и воспроизведения, однако есть инструменты, которые требуют написания обширных сценариев или программирования для автоматизации тестовых сценариев.

Парное тестирование

Другими словами, «парное тестирование» — это тестирование методом «черного ящика» и метод тестирования, при котором для каждого входа тестируется пара входных данных, что помогает тестировать работу ПО, как и ожидалось, со всеми возможными комбинациями ввода.

Бета-тестирование

Это формальный вид тестирования программного обеспечения, который выполняется конечными потребителями перед выпуском или передачей программного обеспечения пользователям. Успешное завершение бета-тестирования означает согласие пользователя с программным обеспечением.

Тестирование Черного Ящика

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

Тестирование обратной совместимости

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

Тестирование граничных значений

Тестирование граничных значений — это вид тестирования, основанный на концепции «агрегации ошибок на границах». Тестирование проводится методом тщательного тестирования дефектов в граничных значениях. Если в поле принимается значение от 1 до 100, то тестирование выполняется для значений 0, 1, 2, 99, 100 и 101.

Метод тестирования «большой взрыв»

Это один из подходов интеграционного тестирования. Метод тестирования «большой взрыв» основывается на том, что все или большинство модулей разрабатываются и затем соединяются вместе.

Интеграционное тестирование Снизу вверх (восходящее тестирование)

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

Тестирование ветвей

Является методом тестирования белого ящика для разработки тестовых сценариев для тестирования кода для каждого условия ветвления. Применяется во время модульного тестирования.

Тестирование совместимости браузера

Это один из подвидов тестирования совместимости, выполняемый командой тестирования. Тестирование совместимости браузера выполняется для веб-приложений в комбинациях с различными браузерами и операционными системами.

Тестирование совместимости

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

Тестирование компонентов

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

Тестирование покрытия условий

Тестирование покрытия условий — это методика тестирования, используемая во время модульного тестирования, где разработчик тестирует все условия, такие как if, if-else, case и т. д. в тестируемом модуле кода.

Динамическое тестирование

Тестирование может быть выполнено методом статического тестирования и динамического тестирования. Динамическое тестирование — это подход к тестированию, когда тестирование может быть выполнено только при извлечении кода.

Тестирование покрытия решения

Это методика тестирования, которая используется в модульном тестировании. Цель тестирования покрытия решения состоит в том, чтобы осуществить и проверить каждый блок принятия решения в коде, например. If, if-else, case.

Сквозное тестирование

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

Исследовательское тестирование

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

Эквивалентное разбиение

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

Функциональное тестирование

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

Fuzz тестирование

Fuzz testing или fuzzing — это методика тестирования программного обеспечения, которая включает тестирование с непредвиденными или случайными исходными данными. Программное обеспечение тестируется на предмет ошибок или сообщений об ошибках, которые появляются из-за ошибок при вводе данных.

Тестирование графического интерфейса пользователя

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

Тестирование методом «стеклянного ящика»

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

Gorilla тестирование (хаотическое тестирование)

Этот вид тестирования программного обеспечения выполняется группой тестировщиков ПО. Цель Gorilla тестирования состоит в том, чтобы использовать одну или несколько функциональных возможностей полностью или исчерпывающе, если несколько человек испытывают одни и те же функции.

Тестирование благоприятного пути

Также известный как тестирование Золотого пути, этот вид тестирования фокусируется на успешном прохождении тестов, которые не приведут к ошибкам.

Интеграционное тестирование

Интеграционное тестирование является одним из наиболее распространенных и важных видов тестирования программного обеспечения. После того, как отдельные подразделения или компоненты будут проверены разработчиками как работающие, группа тестировщиков проведет тесты, которые проведут тестирование связи между этими единицами / компонентами или несколькими устройствами / компонентами. Существуют различные подходы к интеграционному тестированию, а именно: интеграционное тестирование сверху вниз, интеграционное тестирование снизу вверх и комбинация этих двух тестов Sand witch.

Тестирование интерфейса

Тестирование интерфейса необходимо, когда программное обеспечение обеспечивает поддержку одного или нескольких интерфейсов, таких как «Графический интерфейс пользователя», «Интерфейс командной строки» или «Интерфейс прикладного программирования», чтобы взаимодействовать со своими пользователями или другим программным обеспечением. Интерфейсы служат средой для ПО, чтобы принимать входные данные от пользователя и предоставлять выходные данные пользователю. Подход к тестированию интерфейса зависит от типа тестируемого интерфейса, такого как GUI или API или CLI.

Тестирование интернационализации

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

Тестирование на основе ключевых слов

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

Нагрузочное тестирование

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

Тестирование локализации

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

Отрицательное тестирование

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

Нефункциональное тестирование

Большинство программных продуктов созданы для удовлетворения функциональных и нефункциональных требований. Нефункциональные требования: производительность, удобство использования, локализация и т. д. Существует множество видов тестирования, таких как тестирование на совместимость, локализацию, удобство, которые выполняются для проверки нефункциональных требований.

Парное тестирование

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

Тестирование производительности

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

Тестирование безопасности

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

Регрессионное тестирование

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

Повторное тестирование

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

Тестирование на основе рисков

Является одним из видов тестирования ПО и другого подхода к тестированию программного обеспечения. При тестировании на основе рисков требования и функциональность тестируемого ПО имеют приоритет как критический, высокий, средний и низкий. В этом подходе тестируются все критические и высокоприоритетные случаи, за ними следует средние. Функциональность с низким приоритетом или с низким уровнем риска тестируется в конце или может вообще не тестироваться, в зависимости от временных рамок.

Smoke тестирование (тестирование «на дым»)

Это вид тестирования, который выполняется тестировщиками ПО для проверки, является ли новая сборка, предоставленная командой разработчиков, достаточно стабильной, т. е. работают так ли основные функции, как ожидается, для проведения дальнейшего или подробного тестирования. Smoke тестирование предназначено для обнаружения дефектов «show stopper», которые могут препятствовать тестированию приложения в деталях. Smoke тестирование также известно как тестирование проверки сборки.

Тестирование защищенности

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

Тестирование работоспособности

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

Тестирование масштабируемости

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

Тестирование стабильности

Является нефункциональным тестом, предназначенным для тестирования одного из атрибутов качества ПО, то есть «Стабильности». Тестирование стабильности фокусируется на тестировании стабильного ПО, когда оно подвергается нагрузкам на приемлемых уровнях, пиковым нагрузкам, нагрузкам, генерируемым в пиках с большим количеством обрабатываемых данных. Тестирование масштабируемости будет включать в себя выполнение различных видов тестов производительности, таких как нагрузочное тестирование, стресс-тестирование, тестирование спайков, тестирование выдержки.

Статическое тестирование

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

Стресс-тестирование

Является одним из видов тестирования производительности, при котором ПО подвергается пиковым нагрузкам, чтобы наблюдать за тем, как программное обеспечение будет вести себя при пиковой нагрузке. Стресс-тестирование также проверяет поведение ПО при недостатке ресурсов, таких как процессор, память, пропускная способность сети, дисковое пространство и т. д. Стресс-тестирование позволяет проверить такой атрибут качества, как надежность.

Тестирование системы

Включает в себя несколько видов тестирования ПО, которые позволят проверить программное обеспечение в целом (программное обеспечение, аппаратное обеспечение и сеть) в соответствии с требованиями, для которых он был создан. Для завершения тестирования системы выполняются различные виды тестов (GUI-тестирование, функциональное тестирование, регрессионное тестирование, тестирование дыма, нагрузочное тестирование, стресс-тестирование, тестирование безопасности, стресс-тестирование, ad-hoc тестирование и т. д.).

Нагрузочное тестирование

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

Тестирование интеграции системы

Известный как SIT (вкратце), является видом тестирования, проводимого командой тестировщиков ПО. Как следует из названия, в фокус тестирования системной интеграции попадают проверка ошибок, связанных с интеграцией между различными приложениями, службами, приложениями сторонних поставщиков и т. д. В рамках SIT проверяются сквозные сценарии, для которых требуется ПО для взаимодействия (Отправлять или получать данные) с другими приложениями вверх, вниз, со сторонними приложениями.

Модульное тестирование

Это вид тестирования, который выполняется разработчиками ПО. Модульное тестирование следует методу тестирования белых полей, где разработчик будет тестировать модули исходного кода, такие как операторы, ветви, функции, методы, интерфейс в ООП (объектно-ориентированное программирование). Модульное тестирование обычно включает в себя разработку драйверов. Модульные тесты — идеальные варианты для автоматизации. Автоматизированные тесты могут выполняться как единичные регрессионные тесты для новых версий или новых версий ПО. Существует множество полезных фреймов, таких как Junit, Nunit и т. д., которые могут сделать модульное тестирование более эффективным.

Тестирование удобства использования

Является типом тестирования ПО, которое выполняется, чтобы понять, насколько ПО удобно для пользователя. Цель тестирования удобства использования заключается в том, чтобы позволить конечным пользователям использовать ПО, наблюдать за их поведением, эмоциональным откликом (понравилось ли пользователям использование программного обеспечения или они подчеркнули его использование и т. Д.) и собрать их отзывы о том, как ПО может быть более удобным для пользователя.

Приемочное тестирование пользователя

Приемочное тестирование пользователя является обязательным для любого проекта. Оно выполняется клиентами / конечными пользователями ПО. Приемочное тестирование позволяет специалистам от клиента тестировать ПО в соответствии с реальными бизнес-сценариями или реальными сценариями и проверять соответствие ПО их бизнес-требованиям.

Тестирование объема

Является нефункциональным видом тестирования, выполняемым группой инженеров по производительности. Тестирование объема — один из видов тестирования производительности. Тестирование объема выполняется для того, чтобы проверить ПО на надежность при работе с различными размерами данных, которые принимаются и обрабатываются программным обеспечением. Например, если вы собираетесь тестировать слово Microsoft, то проверка объема будет заключаться в том, чтобы увидеть, может ли MS Word открыть, сохранить и работать с файлами разных размеров (от 10 до 100 МБ).

Тестирование уязвимости

Включает выявление ПО, оборудования или сети, уязвимости, которые могут быть использованы хакерами и другими вредоносными программами, похожими на вирусы или черви. Тестирование на уязвимость является ключом к обеспечению безопасности и доступности по. С ростом числа хакеров и вредоносных программ, тестирование уязвимостей имеет решающее значение для успеха бизнеса.

Тестирование методом «белого ящика»

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

Хочу отметить, что помогут познакомиться с данными методами тестирования наши .

Запишитесь прямо сейчас или закажите звонок с бесплатной консультацией!

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

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

Существуют определенные правила проведения тестирования и интерпретации полученных результатов. Эти правила достаточно четко проработаны, и основные из них имеют следующий смысл:

1) информирование испытуемого о целях проведения тестирования;

2) ознакомление испытуемого с инструкцией по выполнению тестовых заданий и достижение уверенности исследователя в том, что инструкция понята правильно;

3) обеспечение ситуации спокойного и самостоятельного выполнения заданий испытуемыми; сохранение нейтрального отношения к тестируемым, уход от подсказок и помощи;

4) соблюдение исследователем методических указаний по обработке полученных данных и интерпретации результатов, которыми сопровождается каждый тест или соответствующее задание;

5) предупреждение распространения полученной в результате тестирования психодиагностической информации, обеспечение ее конфиденциальности;

6) ознакомление испытуемого с результатами тестирования, сообщение ему или ответственному лицу соответствующей информации с учетом принципа «Не навреди!»; в этом случае возникает необходимость решения серии этических и нравственных задач;

7) накопление исследователем сведений, полученных другими исследовательскими методами и методиками, их соотнесение друг с другом и определение согласованности между ними; обогащение своего опыта работы с тестом и знаний об особенностях его применения.

Выделяют также несколько типов тестов, каждому из которых сопутствуют соответствующие процедуры тестирования.

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

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

Тесты достижений ориентированы на выявление уровня сформированности конкретных знаний, умений и навыков и как меры успешности выполнения, и как меры готовности к выполнению некоторой деятельности. В качестве примеров могут служить все случаи тестовых экзаменационных испытаний. На практике обычно применяются «батареи» тестов достижений.

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

Имеется группа тестов, называемых проективными, которые позволяют выявить установки, неосознаваемые потребности и побуждения, тревоги и состояние страха.

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

Надежность теста определяется тем, насколько получаемые показатели являются стабильными и насколько они не зависят от случайных факторов. Разумеется, речь идет о сравнении показаний одних и тех же испытуемых. Это значит, что надежному тесту должна быть свойственна согласованность показателей тестирования, полученных при повторном тестировании, и можно быть уверенным в том, что тест выявляет одно и то же

свойство. Применяются разные способы проверки надежности тестов.

Один способ – это только что упомянутое повторное тестирование: если результаты первого и через определенное время проводимого повторного тестирования покажут наличие достаточного уровня корреляции, то это будет свидетельствовать о надежности теста. Второй способ связан с применением другой эквивалентной формы теста и наличием высокой корреляции между ними. Возможно и применение третьего способа оценки надежности, когда тест допускает его расщепление на две части и одна

и та же группа испытуемых обследуется с применением обеих частей теста. Надежность теста показывает, насколько точно измеряются психологические параметры и насколько высокой может быть мера доверия исследователя к полученным результатам.

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

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

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

Изучение продуктов деятельности – это исследовательский метод, который позволяет опосредованно изучать сформированность знаний и навыков, интересов и способностей человека на основе анализа продуктов его деятельности. Особенность этого метода заключается в том, что исследователь не вступает в контакт с самим человеком, а имеет дело с продуктами его предшествующей деятельности или размышлениями о том, какие

изменения произошли в самом испытуемом в процессе и в результате его включенности в некоторую систему взаимодействий и отношений.

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

Тестирование программного обеспечения является неотъемлемой частью цикла разработки программного обеспечения.

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

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

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

Методика тестирования

Широко используемыми методами тестирования являются модульное тестирование, интеграционное тестирование, приемочное тестирование, и тестирование системы. Программное обеспечение подвергается этим испытаниям в определенном порядке.

3) Системное тестирование

4) Приемочные испытания

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


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

Системное тестирование

В этом тестировании, вся система проверяется на наличие ошибок и багов. Этот тест осуществляется путем сопряжения аппаратных и программных компонентов всей системы, и затем выполняется ее проверка. Это тестирование числится под методом тестирования "черного ящика", где проверяются ожидаемые для пользователя условия работы программного обеспечения.

Приемочные испытания

Это последний тест, который проводится перед передачей программного обеспечения клиенту. Он проводится, чтобы гарантировать, что программное обеспечение, которое было разработано отвечает всем требованиям заказчика. Существует два типа приемо-сдаточных испытаний - то, которое осуществляется членами команды разработчиков, известно, как внутреннее приемочное тестирования (Альфа-тестирование), а другое, которое проводится заказчиком, известно, как внешнее приемочное тестирования.

Если тестирование проводится с помощью предполагаемых клиентов, оно называется приемочными испытаниями клиента. В случае если тестирование проводится конечным пользователем программного обеспечения, оно известно, как приемочное тестирование (бета-тестирование).

Есть несколько основных методов тестирования, которые формируют часть режима тестирования программного обеспечения. Эти тесты обычно считаются самодостаточными в поиске ошибок и багов во всей системе.

Тестирование методом черного ящика

Тестирование методом черного ящика осуществляется без каких-либо знаний внутренней работы системы. Тестер будет стимулировать программное обеспечение для пользовательской среды, предоставляя различные входы и тестируя сгенерированные выходы. Этот тест также известен как Black-box, closed-box тестирование или функциональное тестирование.

Тестирование методом белого ящика

Тестирование методом "Белого ящика", в отличие от "черного ящика", учитывает внутреннее функционирование и логику работы кода. Для выполнения этого теста, тестер должен иметь знания кода, чтобы узнать точную часть кода, имеющую ошибки. Этот тест также известен как White-box, Open-Box или Glass box тестирование.

Тестирование методом серого ящика

Тестирование методом серого ящика или Gray box тестирование, это что-то среднее между White Box и Black Box тестированием, где тестер обладает лишь общими знаниями данного продукта, необходимыми для выполнения теста. Эта проверка осуществляется посредством документации и схемы информационных потоков. Тестирование проводится конечным пользователем, или пользователям, которые представляются как конечные.

Нефункциональные тесты

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

Стресс-тестирование является методом, при котором программное обеспечение подвергается воздействию условий, которые выходят за рамки нормальных условий работы программного обеспечения. После достижения критической точки, полученные результаты записываются. Этот тест определяет устойчивость всей системы.


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


Как подсказывает название, эта методика тестирования проверяет объем кода или ресурсов, которые используются программой при выполнении одной операции.

Это тестирование проверяет аспект удобства и практичности программного обеспечения для пользователей. Легкость, с которой пользователь может получить доступ к устройству формирует основную точку тестирования. Юзабилити-тестирование охватывает пять аспектов тестирования, - обучаемость, эффективность, удовлетворенность, запоминаемость, и ошибки.

Тесты в процессе разработки программного обеспечения

Каскадная модель использует подход "сверху-вниз", независимо от того, используется ли она для разработки программного обеспечения или для тестирования.

Основными шагами, участвующими в данной методике тестирования программного обеспечения, являются:

  • Анализ потребностей
  • Тест дизайна
  • Тест реализации
  • Тестирование, отладка и проверка кода или продукта
  • Внедрение и обслуживание

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

Agile Model

Эта методика основана на избирательном сочетании последовательного и итеративного подхода, в дополнение к довольно большому разнообразию новых методов развития. Быстрое и поступательное развитие является одним из ключевых принципов этой методологии. Акцент делается на получение быстрых, практичных, и видимых выходов. Непрерывное взаимодействие с клиентами и участие является неотъемлемой частью всего процесса разработки.

Rapid Application Development (RAD). Методология быстрой разработки приложений

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

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

Спиральная модель

Как видно из названия, спиральная модель основана на подходе, в котором есть целый ряд циклов (или спиралей) из всех последовательных шагов в каскадной модели. После того, как начальный цикл будет завершена, выполняется тщательный анализ и обзор достигнутого продукта или выхода. Если выход не соответствует указанным требованиям или ожидаемым стандартам, производится второй цикл, и так далее.

Rational Unified Process (RUP). Рациональный унифицированный процесс

Методика RUP также похожа на спиральную модель, в том смысле, что вся процедура тестирования разбивается на несколько циклов. Каждый цикл состоит из четырех этапов - создание, разработка, строительство, и переход. В конце каждого цикла продукт/выход пересматривается, и далее цикл (состоящий из тех же четырех фаз) следует при необходимости.

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

Существуют различные методологии динамического тестирования ПО. В зависимости от наличия у тестировщика доступа к исходному коду программы, выделяют следующие методы тестирования:

  • · Метод черного ящика
  • · Метод белого ящика
  • · Метод серого ящика

Метод черного ящика.

Впервые термин «черный ящик» упоминается психиатром У. Р. Эшби в книге "Введение в кибернетику" в 1959 г. Он писал, что метод черного ящика позволяет изучать поведение системы абстрагируясь от ее внутреннего устройства.

В области тестирования метод черного ящика - это техника тестирования, которая основана на работе с внешними интерфейсами программного обеспечения, без знания внутреннего устройства системы .

Данный метод назван “Черным ящиком”, поскольку в этом методе тестируемое программное обеспечение для тестировщика выглядит как черный ящик, внутри которого происходят некоторые процессы, однако тестировщику о них принципиально ничего не известно. Данная техника позволяет обнаружить ошибки в следующих категориях:

  • · Ошибки интерфейса.
  • · Недостающие или неправильно реализованные функции.
  • · Недостаточная производительность или ошибки поведения системы.
  • · Некорректные структуры данных или плохая организация доступа к внешним базам данных.

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

Метод белого ящика.

Как можно догадаться из названия, этот метод тестирования противоположен методу черного ящика. Данный метод тестирования основан на анализе внутренней структуры системы .

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

Метод серого ящика.

Этот метод тестирования системы предполагает комбинацию подходов Белого и Черного ящиков. Таким образом, тестировщику лишь частично известно внутреннее устройство программы. Например, предполагается, наличие доступа к внутренней структуре программного обеспечения для разработки максимально эффективных тест-кейсов, в то время как само тестирование будет проводится методом черного ящика. Или тестировщики могут во всем следовать методу черного ящика, однако для того что бы убедиться в корректной работе отдельных алгоритмов могут смотреть информацию в логах или анализировать записи программы в базе данных.