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

Отла́дка — этап разработки компьютерной программы, на котором обнаруживают, локализуют и устраняют ошибки. Чтобы понять, где возникла ошибка, приходится:
- узнавать текущие значения переменных;
- выяснять, по какому пути выполнялась программа.
Динамический анализ кода — анализ программного обеспечения, производящийся при помощи выполнения программ на реальном или виртуальном процессоре. Утилиты динамического анализа могут требовать загрузки специальных библиотек, перекомпиляцию программного кода. Некоторые утилиты могут инструментировать исполняемый код в процессе исполнения или перед ним. Для большей эффективности динамического анализа требуется подача тестируемой программе достаточного количества входных данных, чтобы получить более полное покрытие кода. Также следует позаботиться о минимизации воздействия инструментирования на исполнение тестируемой программы.
Интеграцио́нное тести́рование — одна из фаз тестирования программного обеспечения, при которой отдельные программные модули объединяются и тестируются в группе. Обычно интеграционное тестирование проводится после модульного тестирования и предшествует системному тестированию.
Тестирование производительности в инженерии программного обеспечения — тестирование, которое проводится с целью определения, как быстро работает вычислительная система или её часть под определённой нагрузкой. Также может служить для проверки и подтверждения других атрибутов качества системы, таких как масштабируемость, надёжность и потребление ресурсов.
Автоматизированное тестирование программного обеспечения — часть процесса тестирования на этапе контроля качества в процессе разработки программного обеспечения. Оно использует программные средства для выполнения тестов и проверки результатов выполнения, что помогает сократить время тестирования и упростить его процесс.
Тестиро́вщик — специалист, принимающий участие в тестировании компонента или системы. В его обязанность входит поиск вероятных ошибок и сбоев в функционировании объекта тестирования. Тестировщик моделирует различные ситуации, которые могут возникнуть в процессе использования предмета тестирования, чтобы разработчики смогли исправить обнаруженные ошибки.
Вариант тестирования, тестовая ситуация в разработке программного обеспечения ― это формально описанный алгоритм тестирования программы, специально созданный для определения возникновения в программе определённой ситуации, определённых выходных данных. Часто варианты тестирования группируют в тестовые наборы.
UniTESK — технология тестирования программного и аппаратного обеспечения на основе формальных спецификаций, разработанная в Институте системного программирования РАН. Технология представляет собой сочетание хорошо зарекомендовавших себя техник, которые могут применяться в различных комбинациях, взаимно сочетаясь и усиливая друг друга. Это делает технологию гибкой и настраиваемой под существующие процессы разработки на всех этапах жизненного цикла разработки программного обеспечения от сбора и анализа требований до сопровождения.
Тестирование белого ящика, также тестирование стеклянного ящика, структурное тестирование — тестирование, которое учитывает внутренние механизмы системы или компонента.
Тестирование чёрного ящика или поведенческое тестирование — стратегия (метод) тестирования функционального поведения объекта с точки зрения внешнего мира, при котором не используется знание о внутреннем устройстве тестируемого объекта. Под стратегией понимаются систематические методы отбора и создания тестов для тестового набора. Стратегия поведенческого теста исходит из технических требований и их спецификаций.
Google C++ Testing Framework — библиотека для модульного тестирования на языке C++. Исходные тексты открыты с середины 2008 года под лицензией BSD. Документация частично переведена на русский язык..
Стресс-тести́рование — один из видов тестирования программного обеспечения, которое оценивает надёжность и устойчивость системы в условиях превышения пределов нормального функционирования. Стресс-тестирование особенно необходимо для «критически важного» ПО, однако также используется и для остального ПО. Обычно стресс-тестирование лучше обнаруживает устойчивость, доступность и обработку исключений системой под большой нагрузкой, чем то, что считается корректным поведением в нормальных условиях.
Мутационное тестирование — это метод тестирования программного обеспечения, который включает небольшие изменения кода программы. Если набор тестов не в состоянии обнаружить такие изменения, то он рассматривается как недостаточный. Эти изменения называются мутациями и основываются на мутационных операторах, которые или имитируют типичные ошибки программистов или требуют создания полезных тестов.
Check — библиотека модульного тестирования в стиле xUnit для программ, написанных на языке Си. Распространяется с открытыми исходными тестами под свободной лицензией. Основной философией проекта является покрытие всех возможностей системы тестирования модульными тестами. Поддерживает запуск тестов в отдельных процессах в ОС Linux) для возможности определения некорректного завершения тестов.
В компьютерных науках (информатике) надёжность — это способность компьютерной системы справляться с ошибочными данными и с ошибками во время выполнения задач. надёжность может охватывать многие области компьютерных наук, например: надежное программирование, надежное машинное обучение и надежная безопасность сети. Формальные методы, такие как нечеткое тестирование, важны для демонстрации надежности, поскольку этот тип тестирования включает неверные или неожиданные входные данные. В качестве альтернативы, неисправность работающей системы может быть использована для проверки устойчивости. Различные коммерческие продукты выполняют тестирование надежности через программный анализ.